Frontmenus.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace app\admin\controller\base\menu;
  3. /**
  4. * @title: 管理端小程序菜单
  5. */
  6. use app\admin\controller\Base;
  7. use app\admin\validate\base\menu\Frontmenus as FrontmenusValidate;
  8. use app\common\model\base\menu\Frontmenus as frontMenuModel;
  9. use app\common\model\base\org\OrgType;
  10. use app\common\model\base\org\Org;
  11. use app\common\model\base\org\OrgRole;
  12. class Frontmenus extends Base
  13. {
  14. protected $frontmenuModel = null;
  15. public function initialize()
  16. {
  17. parent::initialize();
  18. $this->frontmenuModel = new frontMenuModel;
  19. }
  20. /**
  21. * @title: 获取小程序菜单列表
  22. * @param {int} {group_id} {} {小程序页面分类id}
  23. * @return array
  24. * @Author: wangkewei
  25. * @Date: 2021/5/18 9:15
  26. */
  27. public function getList()
  28. {
  29. $list = $this->frontmenuModel->order('sort ASC')->select();
  30. $list = FieldConverList($list,['icon'=>'image']);
  31. return res(1,"获取成功",$list);
  32. }
  33. /**
  34. * @title: 编辑小程序菜单
  35. * @param array
  36. * @return array
  37. * @Author: wangkewei
  38. * @Date: 2021/5/18 9:15
  39. */
  40. public function doEdit()
  41. {
  42. $params = $this->request->param();
  43. $meta = !empty($params['meta'])?$params['meta']:[];
  44. unset($params['meta']);
  45. $params = array_merge($params,$meta);
  46. $check = $this->validate($params,FrontmenusValidate::class);
  47. if(true!==$check){
  48. return Result(0,$check);
  49. }
  50. $pid = !empty($params['pid'])?$params['pid']:0;
  51. $data = [
  52. "name" => $params['name'],
  53. "title" => $params['title'],
  54. "path" => $params['path']??"",
  55. "component" => $params['component']??"",
  56. "is_root" => $pid==0?1:2,
  57. "is_parent" => !empty($params['is_parent'])?1:2,
  58. "pid" => $pid,
  59. "badge" => !empty($params['badge'])?$params['badge']:'',
  60. "icon" => !empty($params['icon'])?str_replace(WEBURL,'',$params['icon']):"",
  61. "redirect" => !empty($params['redirect'])?$params['redirect']:"",
  62. "affix" => !empty($params['affix'])?1:2,
  63. "hidden" => !empty($params['hidden'])?$params['hidden']:2,
  64. "dot" => !empty($params['dot'])?1:2,
  65. "noKeepAlive" => !empty($params['noKeepAlive'])?1:2,
  66. "alwaysShow" => !empty($params['alwaysShow'])?1:2,
  67. "isCustomSvgIcon" => !empty($params['isCustomSvgIcon'])?1:2,
  68. "tabHidden" => !empty($params['tabHidden'])?1:2,
  69. "sort" => !empty($params['sort'])?$params['sort']:0,
  70. "cascade" => !empty($params['cascade'])?$params['cascade']:"",
  71. "status" => !empty($params['status'])?:1,
  72. "desc" => $params['desc']??'',
  73. "group" => $params['group']??0,
  74. ];
  75. if(!empty($params['menu_id'])){
  76. $data['menu_id'] = $params['menu_id'];
  77. }
  78. if(!empty($pid)){
  79. $this->frontmenuModel->where('menu_id',$pid)->update(['is_parent'=>1]);
  80. }
  81. $this->frontmenuModel->replace()->save($data);
  82. slog(1,"编辑了小程序菜单".$data['name']);
  83. return res(1,"保存成功");
  84. }
  85. /**
  86. * @title: 删除小程序菜单
  87. * @param {int} {id} {必填} {小程序菜单ID}
  88. * @return array
  89. * @Author: wangkewei
  90. * @Date: 2021/5/18 9:16
  91. */
  92. public function doDelete(int $id)
  93. {
  94. $where = [];
  95. $where[] = ['menu_id','=',$id];
  96. try{
  97. frontMenuModel::startTrans();
  98. // 删除企业类型相关的菜单和请求
  99. $orgTypeList = OrgType::where('front_ids','FIND IN SET',$id)->select()->toArray();
  100. $orgTypeSaveData = [];
  101. foreach($orgTypeList as $orgTypeItem){
  102. $orgTypeItem['front_ids'] = array_diff($orgTypeItem['front_ids'],[$id]);
  103. $orgTypeSaveData[] = $orgTypeItem;
  104. }
  105. // 删除企业相关的菜单和请求
  106. $orgList = Org::where('front_ids','FIND IN SET',$id)->select()->toArray();
  107. $orgSaveData = [];
  108. foreach($orgList as $orgItem){
  109. $orgItem['front_ids'] = array_diff($orgItem['front_ids'],[$id]);
  110. $orgSaveData[] = $orgItem;
  111. }
  112. // 删除企业角色相关的菜单和请求
  113. $orgRoleList = OrgRole::where('front_ids','FIND IN SET',$id)->select()->toArray();
  114. $orgRoleSaveData = [];
  115. foreach($orgRoleList as $orgRoleItem){
  116. $orgRoleItem['front_ids'] = array_diff($orgRoleItem['front_ids'],[$id]);
  117. $orgRoleSaveData[] = $orgRoleItem;
  118. }
  119. // 保存修改
  120. (new OrgType)->replace()->saveAll($orgTypeSaveData);
  121. (new Org)->replace()->saveAll($orgSaveData);
  122. (new OrgRole)->replace()->saveAll($orgRoleSaveData);
  123. // 删除小程序菜单
  124. $info = frontMenuModel::where($where)->find();
  125. $info->delete();
  126. frontMenuModel::commit();
  127. }catch(\Exception $e){
  128. frontMenuModel::rollback();
  129. return res(2,"删除失败");
  130. }
  131. slog(1,"删除了小程序菜单");
  132. return res(1,"删除成功");
  133. }
  134. /**
  135. * @title: 显示/隐藏小程序菜单
  136. * @desc:
  137. * @param {*}
  138. * @return {*}
  139. * @Author: Rock
  140. * @Date: 2021-09-07 20:20:48
  141. * @LastEditTime: Do not edit
  142. */
  143. public function doHidden()
  144. {
  145. $data = $this->request->param();
  146. if(empty($data['ids'])){
  147. return res(2,'参数错误');
  148. }
  149. $ids = $data['ids'];
  150. $info = $this->frontmenuModel->where('menu_id',$ids)->find();
  151. $info->hidden = abs($info->hidden * 3 - 5);
  152. $info->save();
  153. slog(1,($info->hidden==1?"隐藏":"显示")."了小程序页面".$info->name);
  154. return res(1,"操作成功");
  155. }
  156. /**
  157. * @title: 获取小程序菜单可选项
  158. * @desc:
  159. * @param {*}
  160. * @return {*}
  161. * @Author: Rock
  162. * @Date: 2021-12-28 14:31:43
  163. * @LastEditTime: Do not edit
  164. */
  165. public function getOptions()
  166. {
  167. $data = [
  168. 'hiddenList' => frontMenuModel::hiddenList(),
  169. 'groupList' => frontMenuModel::groupList(),
  170. ];
  171. return res(1,"获取成功",$data);
  172. }
  173. }