Menu.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. /**
  3. * User: nickbai
  4. * Date: 2017/10/23 13:33
  5. * Email: 1902822973@qq.com
  6. */
  7. namespace app\admin\controller;
  8. class Menu extends Base
  9. {
  10. // 菜单列表
  11. public function index()
  12. {
  13. // $token = 'NzgyNTUwIyRAJSFeKi8xNTYxNTQwMzQzLzE=';
  14. // $res = model('Admins')->checktoken($token);
  15. // if($res == -1){
  16. // return $res;
  17. // }
  18. // $admin_id = explode('/',base64_decode($token))['2'];
  19. // $adminInfo = db('admins')->where('id', $admin_id)->find();
  20. if (request()->isAjax()) {
  21. $param = input('param.');
  22. $limit = $param['pageSize'];
  23. $offset = ($param['pageNumber'] - 1) * $limit;
  24. $result = db('menu')->limit($offset, $limit)->select();
  25. //一级菜单
  26. $pmenu = db('menu')->where('p_id',0)->select();
  27. foreach ($result as $key => $vo) {
  28. //$vo['p_menu'] == '11';
  29. for($i=0;$i<count($pmenu);$i++){
  30. if($result[$key]['p_id'] == $pmenu[$i]['id']){
  31. $result[$key]['p_menu'] = $pmenu[$i]['name_cn'];
  32. }
  33. }
  34. // 生成操作按钮
  35. if (0 != $vo['id']) {
  36. $result[$key]['operate'] = $this->makeBtn($vo['id']);
  37. }
  38. }
  39. $return['total'] = db('menu')->count(); //总数据
  40. $return['rows'] = $result;
  41. return json($return);
  42. }
  43. return $this->fetch();
  44. }
  45. // 添加菜单
  46. public function add()
  47. {
  48. if (request()->isPost()) {
  49. $param = input('post.');
  50. $has = db('menu')->where('name_cn', $param['name'])->find();
  51. if (!empty($has)) {
  52. return json(['code' => -1, 'data' => '', 'msg' => '该菜单已经存在']);
  53. }
  54. if($param['p_id'] == -1){
  55. return json(['code' => -2, 'data' => '', 'msg' => '请选择父级菜单']);
  56. }
  57. $info = array();
  58. $powerinfo = array();
  59. $info['name_cn'] = $param['name'];
  60. $info['p_id'] = $param['p_id'];
  61. $info['sort'] = $param['sort'];
  62. if($param['p_id'] == 0){
  63. $info['ico'] = $param['ico'];
  64. }else{
  65. $info['url'] = $param['url'];
  66. }
  67. $admingroup = db('admingroup')->where('group_name', '超级管理员')->find();
  68. try {
  69. $menu_id = db('menu')->insertGetId($info);
  70. $powerinfo['group_id'] = $admingroup['group_id'];
  71. $powerinfo['menu_id'] = $menu_id;
  72. db('admingrouppower')->insert($powerinfo);
  73. } catch (\Exception $e) {
  74. return json(['code' => -3, 'data' => '', 'msg' => $e->getMessage()]);
  75. }
  76. return json(['code' => 1, 'data' => '', 'msg' => '添加菜单成功']);
  77. }
  78. $pmenu = db('menu')->where('p_id',0)->select();
  79. $this->assign([
  80. 'pmenu' => $pmenu,
  81. 'status' => config('kf_status')
  82. ]);
  83. return $this->fetch();
  84. }
  85. // 编辑菜单
  86. public function edit()
  87. {
  88. // 菜单id
  89. $id = input('param.id/d');
  90. if (request()->isAjax()) {
  91. $param = input('post.');
  92. $param['name_cn'] = $param['name'];
  93. $info = array();
  94. $info['name_cn'] = $param['name'];
  95. if(!empty($param['p_id'])){
  96. $info['p_id'] = $param['p_id'];
  97. }
  98. if(!empty($param['url'])){
  99. $info['url'] = $param['url'];
  100. }
  101. if(!empty($param['ico'])){
  102. $info['ico'] = $param['ico'];
  103. }
  104. $info['sort'] = $param['sort'];
  105. try {
  106. db('menu')->where('id', $param['id'])->update($info);
  107. } catch (\Exception $e) {
  108. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  109. }
  110. return json(['code' => 1, 'data' => '', 'msg' => '编辑菜单成功']);
  111. }
  112. $menu = db('menu')->where('id',$id)->find();
  113. $pmenu = db('menu')->where('p_id',0)->select();
  114. $this->assign([
  115. 'menu' => $menu,
  116. 'pmenu' => $pmenu,
  117. 'id' => $id,
  118. 'status' => config('kf_status')
  119. ]);
  120. return $this->fetch();
  121. }
  122. // 删除菜单
  123. public function delMenu()
  124. {
  125. if (request()->isAjax()) {
  126. //菜单id
  127. $id = input('param.id/d');
  128. $menu = db('menu')->where('id', $id)->find();
  129. try {
  130. if($menu['p_id'] == 0){
  131. //父级菜单下的子集菜单id
  132. $menus = db('menu')->where('p_id', $id)->select();
  133. for($i=0;$i<count($menus);$i++){
  134. $ids[] = $menus[$i]['id'];
  135. }
  136. $ids = implode(",",$ids) ;
  137. //删除父级菜单下的子集菜单
  138. db('menu')->where('p_id', $id)->delete();
  139. db('admingrouppower')->where('menu_id', $ids)->delete();
  140. }
  141. db('menu')->where('id', $id)->delete();
  142. db('admingrouppower')->where('menu_id', $id)->delete();
  143. } catch (\Exception $e) {
  144. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  145. }
  146. return json(['code' => 1, 'data' => '', 'msg' => '删除菜单成功']);
  147. }
  148. }
  149. // 生成菜单操作按钮
  150. private function makeBtn($id)
  151. {
  152. $operate = '<a href="' . url('menu/edit', ['id' => $id]) . '">';
  153. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  154. $operate .= '<a href="javascript:menuDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  155. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  156. return $operate;
  157. }
  158. }