MenuLogic.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace app\admin\logic;
  3. use app\model\AdminMenuModel;
  4. use app\model\CommonModel;
  5. use think\facade\Db;
  6. use think\response\Json;
  7. class MenuLogic extends BaseLogic
  8. {
  9. //获取用户菜单列表
  10. public static function List(): Json
  11. {
  12. //menu_action是一个视图
  13. $data = Db::name('menu_action')
  14. ->where(['status' => 1, 'cstatus' => 1, 'is_show' => 1])
  15. ->order(['weight' => 'desc', 'id' => 'asc', 'cweight' => 'desc', 'cid' => 'asc'])
  16. ->cursor();
  17. $list = [];
  18. $act = [];
  19. foreach ($data as $value) {
  20. $list[$value['id']]['menu_name'] = $value['menu_name'];
  21. $list[$value['id']]['menu_type'] = $value['menu_type'];
  22. $list[$value['id']]['menu_img'] = $value['menu_img'];
  23. $list[$value['id']]['menu_route'] = $value['menu_route'];
  24. $list[$value['id']]['menu_url'] = $value['menu_url'];
  25. $list[$value['id']]['status'] = $value['status'];
  26. $list[$value['id']]['weight'] = $value['weight'];
  27. $list[$value['id']]['addtime'] = $value['addtime'];
  28. $temp = [];
  29. $temp['menu_name'] = $value['cname'];
  30. $temp['menu_type'] = $value['ctype'];
  31. $temp['menu_img'] = $value['cmenu_img'];
  32. $temp['menu_route'] = $value['cmenu_route'];
  33. $temp['menu_url'] = $value['cmenu_url'];
  34. $temp['status'] = $value['cstatus'];
  35. $temp['weight'] = $value['cweight'];
  36. $temp['addtime'] = $value['caddtime'];
  37. $temp['is_private'] = $value['cprivate'];
  38. $list[$value['id']]['child'][$value['cid']] = $temp;
  39. $act[$value['id']][$value['cid']][] = $value['acode'];
  40. $list[$value['id']]['child'][$value['cid']]['action'] = $act[$value['id']][$value['cid']];
  41. }
  42. array_walk($list, function (&$value) {
  43. $value['child'] = array_values($value['child']);
  44. });
  45. return json_show(CommonModel::$success, '获取成功', array_values($list));
  46. }
  47. //获取全部菜单
  48. public static function All(): Json
  49. {
  50. $list = AdminMenuModel::field('id,menu_name,menu_type,menu_img,menu_route,menu_url,status,weight,addtime,is_private private')
  51. ->where('pid', 0)
  52. ->append(['child'])
  53. ->withAttr('child', function ($val, $data) {
  54. return AdminMenuModel::field('id,menu_name,menu_type,menu_img,menu_route,menu_url,status,weight,addtime,is_private private')
  55. ->where('pid', $data['id'])
  56. ->select()
  57. ->toArray();
  58. })
  59. ->select()
  60. ->toArray();
  61. return json_show(CommonModel::$success, '获取成功', $list);
  62. }
  63. //添加菜单
  64. public static function Add(array $data = []): Json
  65. {
  66. $data = array_merge($data, [
  67. 'is_private' => $data['private'],
  68. 'is_show' => AdminMenuModel::$show,
  69. 'status' => AdminMenuModel::$status_normal,
  70. ]);
  71. $res = AdminMenuModel::create($data)->save();
  72. //write_log('菜单{$data['menu_name']}新建成功',$this->userinfo,'order','add','0');
  73. return $res ? json_show(CommonModel::$success, '添加菜单成功') : json_show(CommonModel::$error_param, '添加菜单失败');
  74. }
  75. //编辑菜单
  76. public static function Edit(array $data = []): Json
  77. {
  78. $rs = AdminMenuModel::field('id')
  79. ->where(['id' => $data['id']])
  80. ->findOrEmpty()
  81. ->isEmpty();
  82. if ($rs) return json_show(CommonModel::$error_param, '菜单信息不存在');
  83. $data = array_merge($data, ['is_private' => $data['private']]);
  84. $res = AdminMenuModel::where('id', $data['id'])->strict(false)->save($data);
  85. return $res ? json_show(CommonModel::$success, '编辑菜单成功') : json_show(CommonModel::$error_param, '编辑菜单失败');
  86. }
  87. //删除菜单
  88. public static function Delete(int $id = 0): Json
  89. {
  90. $rs = AdminMenuModel::field('id')
  91. ->where(['id' => $id, 'is_show' => AdminMenuModel::$show, 'status' => AdminMenuModel::$status_normal])
  92. ->findOrEmpty()
  93. ->isEmpty();
  94. if ($rs) return json_show(CommonModel::$error_param, '菜单信息不存在');
  95. $res = AdminMenuModel::where('id', $id)
  96. ->save([
  97. 'is_show' => AdminMenuModel::$hide,
  98. 'status' => AdminMenuModel::$status_disable
  99. ]);
  100. //write_log('菜单{$data['menu_name']}新建成功',$this->userinfo,'order','add','0');
  101. return $res ? json_show(CommonModel::$success, '删除菜单成功') : json_show(CommonModel::$error_param, '删除菜单失败');
  102. }
  103. //启禁用菜单
  104. public static function Status(array $data = []): Json
  105. {
  106. $rs = AdminMenuModel::field('id')
  107. ->where('id', $data['id'])
  108. ->where('status', '<>', $data['status'])
  109. ->findOrEmpty()
  110. ->isEmpty();
  111. if ($rs) return json_show(CommonModel::$error_param, '菜单信息不存在或重复操作');
  112. $res = AdminMenuModel::where('id', $data['id'])
  113. ->where('status', '<>', $data['status'])
  114. ->save(['status' => $data['status']]);
  115. //write_log('菜单{$data['menu_name']}新建成功',$this->userinfo,'order','add','0');
  116. return $res ? json_show(CommonModel::$success, '状态更新成功') : json_show(CommonModel::$error_param, '状态更新失败');
  117. }
  118. }