MenuController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 09/03/2017
  6. * Time: 11:00
  7. */
  8. namespace app\backend\controllers;
  9. use app\backend\models\Menu;
  10. use app\common\components\BaseController;
  11. use app\common\helpers\Url;
  12. use app\common\models\MenuSelect;
  13. use app\frontend\modules\finance\services\BalanceService;
  14. use Ixudra\Curl\Facades\Curl;
  15. class MenuController extends BaseController
  16. {
  17. /**
  18. * 菜单功能停止对外使用,(菜单表示控制权限js,随意修改会导致js失效,同时路由比对权限)
  19. *
  20. * @Author YiTian
  21. * @Date 2017_06_08
  22. */
  23. public function index()
  24. {
  25. /*if(request()->getHost() != 'test.yunzshop.com' && env('APP_ENV') != 'production') {*/
  26. $menu = new Menu();
  27. $menuList = $menu->getDescendants(0);
  28. return view('menu.index', [
  29. 'menuList' => $menuList
  30. ])->render();
  31. /*}*/
  32. }
  33. public function add()
  34. {
  35. /*if(request()->getHost() != 'test.yunzshop.com' && env('APP_ENV') != 'production') {*/
  36. $model = new MenuSelect();
  37. $parentId = intval(\YunShop::request()->parent_id);
  38. $data = \YunShop::request()->menu;
  39. if ($data) {
  40. $model->fill($data);
  41. $validator = $model->validator();
  42. if ($validator->fails()) {
  43. $this->error($validator->messages());
  44. } else {
  45. if ($model->save()) {
  46. \Cache::forget('db_menu');
  47. return $this->message('添加菜单成功', Url::absoluteWeb('menu.index'));
  48. } else {
  49. $this->error('添加菜单失败');
  50. }
  51. }
  52. }
  53. $parentId && $model->setAttribute('parent_id', $parentId);
  54. $parentMenu = [0 => '请选择上级'] + $model->toSelectArray(0);
  55. return view('menu.form', [
  56. 'parentMenu' => $parentMenu,
  57. 'model' => $model
  58. ])->render();
  59. /*}*/
  60. }
  61. public function edit()
  62. {
  63. /*if(request()->getHost() != 'test.yunzshop.com' && env('APP_ENV') != 'production') {*/
  64. $id = \YunShop::request()->id;
  65. $data = \YunShop::request()->menu;
  66. $model = MenuSelect::getMenuInfoById($id);
  67. if (!$model) {
  68. return $this->message('无此记录', '', 'error');
  69. }
  70. if ($data) {
  71. $model->fill($data);
  72. $validator = $model->validator();
  73. if ($validator->fails()) {
  74. $this->error($validator->messages());
  75. } else {
  76. if ($model->save()) {
  77. \Cache::forget('db_menu');
  78. return $this->message('菜单修改成功', Url::absoluteWeb('menu.index'));
  79. } else {
  80. $this->error('菜单修改失败');
  81. }
  82. }
  83. }
  84. $parentMenu = [0 => '请选择上级'] + $model->toSelectArray(0);
  85. return view('menu.form', [
  86. 'model' => $model,
  87. 'parentMenu' => $parentMenu,
  88. ])->render();
  89. /*}*/
  90. }
  91. public function del()
  92. {
  93. /*if(request()->getHost() != 'test.yunzshop.com' && env('APP_ENV') != 'production') {*/
  94. $id = \YunShop::request()->id;
  95. $model = Menu::getMenuInfoById($id);
  96. if (empty($model)) {
  97. return $this->message('菜单不存在', '', 'error');
  98. }
  99. if ($model->childs->count() > 0) {
  100. return $this->message('存在子菜单不可删除', '', 'error');
  101. }
  102. if ($model->delete()) {
  103. \Cache::forget('db_menu');
  104. return $this->message('菜单删除成功', Url::absoluteWeb('menu.index'));
  105. } else {
  106. $this->error('菜单删除失败');
  107. }
  108. /* }*/
  109. }
  110. public function getRemoteUpdate()
  111. {
  112. /*if (request()->getHost() != 'test.yunzshop.com' && env('APP_ENV') != 'production') {*/
  113. $url = "http://test.yunzshop.com" . config('app.webPath') . "/api.php?i=2&route=menu.to-list";
  114. $responseData = Curl::to($url)->get();
  115. if ($responseData) {
  116. $data = json_decode($responseData);
  117. if ($data->data && $menu = objectArray($data->data)) {
  118. try {
  119. (new Menu())->where('id', '>', 0)->forceDelete();
  120. foreach ($menu as $v) {
  121. Menu::create($v);
  122. }
  123. //菜单生成
  124. \Cache::forget('db_menu');
  125. } catch (\Exception $e) {
  126. throw new \Exception($e);
  127. }
  128. }
  129. }
  130. return $this->message('更新远程菜单成功');
  131. }
  132. /*}*/
  133. }