123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <?php
- namespace app\admin\controller\base\menu;
- /**
- * @title: 管理端小程序菜单
- */
- use app\admin\controller\Base;
- use app\admin\validate\base\menu\Frontmenus as FrontmenusValidate;
- use app\common\model\base\menu\Frontmenus as frontMenuModel;
- use app\common\model\base\org\OrgType;
- use app\common\model\base\org\Org;
- use app\common\model\base\org\OrgRole;
- class Frontmenus extends Base
- {
- protected $frontmenuModel = null;
- public function initialize()
- {
- parent::initialize();
- $this->frontmenuModel = new frontMenuModel;
- }
- /**
- * @title: 获取小程序菜单列表
- * @param {int} {group_id} {} {小程序页面分类id}
- * @return array
- * @Author: wangkewei
- * @Date: 2021/5/18 9:15
- */
- public function getList()
- {
- $list = $this->frontmenuModel->order('sort ASC')->select();
- $list = FieldConverList($list,['icon'=>'image']);
- return res(1,"获取成功",$list);
- }
- /**
- * @title: 编辑小程序菜单
- * @param array
- * @return array
- * @Author: wangkewei
- * @Date: 2021/5/18 9:15
- */
- public function doEdit()
- {
- $params = $this->request->param();
- $meta = !empty($params['meta'])?$params['meta']:[];
- unset($params['meta']);
- $params = array_merge($params,$meta);
- $check = $this->validate($params,FrontmenusValidate::class);
- if(true!==$check){
- return Result(0,$check);
- }
- $pid = !empty($params['pid'])?$params['pid']:0;
- $data = [
- "name" => $params['name'],
- "title" => $params['title'],
- "path" => $params['path']??"",
- "component" => $params['component']??"",
- "is_root" => $pid==0?1:2,
- "is_parent" => !empty($params['is_parent'])?1:2,
- "pid" => $pid,
- "badge" => !empty($params['badge'])?$params['badge']:'',
- "icon" => !empty($params['icon'])?str_replace(WEBURL,'',$params['icon']):"",
- "redirect" => !empty($params['redirect'])?$params['redirect']:"",
- "affix" => !empty($params['affix'])?1:2,
- "hidden" => !empty($params['hidden'])?$params['hidden']:2,
- "dot" => !empty($params['dot'])?1:2,
- "noKeepAlive" => !empty($params['noKeepAlive'])?1:2,
- "alwaysShow" => !empty($params['alwaysShow'])?1:2,
- "isCustomSvgIcon" => !empty($params['isCustomSvgIcon'])?1:2,
- "tabHidden" => !empty($params['tabHidden'])?1:2,
- "sort" => !empty($params['sort'])?$params['sort']:0,
- "cascade" => !empty($params['cascade'])?$params['cascade']:"",
- "status" => !empty($params['status'])?:1,
- "desc" => $params['desc']??'',
- "group" => $params['group']??0,
- ];
- if(!empty($params['menu_id'])){
- $data['menu_id'] = $params['menu_id'];
- }
- if(!empty($pid)){
- $this->frontmenuModel->where('menu_id',$pid)->update(['is_parent'=>1]);
- }
- $this->frontmenuModel->replace()->save($data);
- slog(1,"编辑了小程序菜单".$data['name']);
- return res(1,"保存成功");
- }
- /**
- * @title: 删除小程序菜单
- * @param {int} {id} {必填} {小程序菜单ID}
- * @return array
- * @Author: wangkewei
- * @Date: 2021/5/18 9:16
- */
- public function doDelete(int $id)
- {
- $where = [];
- $where[] = ['menu_id','=',$id];
- try{
- frontMenuModel::startTrans();
- // 删除企业类型相关的菜单和请求
- $orgTypeList = OrgType::where('front_ids','FIND IN SET',$id)->select()->toArray();
- $orgTypeSaveData = [];
- foreach($orgTypeList as $orgTypeItem){
- $orgTypeItem['front_ids'] = array_diff($orgTypeItem['front_ids'],[$id]);
- $orgTypeSaveData[] = $orgTypeItem;
- }
- // 删除企业相关的菜单和请求
- $orgList = Org::where('front_ids','FIND IN SET',$id)->select()->toArray();
- $orgSaveData = [];
- foreach($orgList as $orgItem){
- $orgItem['front_ids'] = array_diff($orgItem['front_ids'],[$id]);
- $orgSaveData[] = $orgItem;
- }
- // 删除企业角色相关的菜单和请求
- $orgRoleList = OrgRole::where('front_ids','FIND IN SET',$id)->select()->toArray();
- $orgRoleSaveData = [];
- foreach($orgRoleList as $orgRoleItem){
- $orgRoleItem['front_ids'] = array_diff($orgRoleItem['front_ids'],[$id]);
- $orgRoleSaveData[] = $orgRoleItem;
- }
- // 保存修改
- (new OrgType)->replace()->saveAll($orgTypeSaveData);
- (new Org)->replace()->saveAll($orgSaveData);
- (new OrgRole)->replace()->saveAll($orgRoleSaveData);
- // 删除小程序菜单
- $info = frontMenuModel::where($where)->find();
- $info->delete();
- frontMenuModel::commit();
- }catch(\Exception $e){
- frontMenuModel::rollback();
- return res(2,"删除失败");
- }
- slog(1,"删除了小程序菜单");
- return res(1,"删除成功");
- }
- /**
- * @title: 显示/隐藏小程序菜单
- * @desc:
- * @param {*}
- * @return {*}
- * @Author: Rock
- * @Date: 2021-09-07 20:20:48
- * @LastEditTime: Do not edit
- */
- public function doHidden()
- {
- $data = $this->request->param();
- if(empty($data['ids'])){
- return res(2,'参数错误');
- }
- $ids = $data['ids'];
- $info = $this->frontmenuModel->where('menu_id',$ids)->find();
- $info->hidden = abs($info->hidden * 3 - 5);
- $info->save();
- slog(1,($info->hidden==1?"隐藏":"显示")."了小程序页面".$info->name);
- return res(1,"操作成功");
- }
- /**
- * @title: 获取小程序菜单可选项
- * @desc:
- * @param {*}
- * @return {*}
- * @Author: Rock
- * @Date: 2021-12-28 14:31:43
- * @LastEditTime: Do not edit
- */
- public function getOptions()
- {
- $data = [
- 'hiddenList' => frontMenuModel::hiddenList(),
- 'groupList' => frontMenuModel::groupList(),
- ];
- return res(1,"获取成功",$data);
- }
- }
|