You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			217 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| namespace wstmart\admin\model;
 | |
| use think\Db;
 | |
| /**
 | |
|  * ============================================================================
 | |
|  * 微信菜单业务处理
 | |
|  */
 | |
| class WxMenus extends Base{
 | |
| 	/**
 | |
| 	 * 获取树形分类
 | |
| 	 */
 | |
| 	public function pageQuery(){
 | |
| 		$list = $this->where(['dataFlag'=>1,'parentId'=>input('menuId/d',0)])->order('menuSort asc,menuId desc')->paginate(input('post.limit/d'))->toArray();
 | |
| 		foreach($list['Rows'] as $key=>$v){
 | |
| 			$list['Rows'][$key]['menuUrl'] = htmlspecialchars_decode($v['menuUrl']);
 | |
| 		}
 | |
| 		return $list;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 获取列表
 | |
| 	 */
 | |
| 	public function listQuery(){
 | |
| 		$listMenu = $this->where(['dataFlag'=>1,'parentId'=>0])->field('menuId,menuName')->order('menuSort asc')->select();
 | |
| 		for ($i = 0; $i < count($listMenu); $i++) {
 | |
| 			$parentId = $listMenu[$i]["menuId"];
 | |
| 			$listSon = $this->where(['dataFlag'=>1,'parentId'=>$parentId])->field('menuId,menuName')->order('menuSort asc')->select();
 | |
| 			$listMenu[$i]['listSon'] = $listSon;
 | |
| 		}	
 | |
| 		return $listMenu;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 获取指定对象
 | |
| 	 */
 | |
| 	public function getById($id){
 | |
| 		$data = $this->where(['menuId'=>$id])->find();
 | |
| 		$data['menuUrl'] = htmlspecialchars_decode($data['menuUrl']);
 | |
| 		return $data;
 | |
| 	}
 | |
| 	
 | |
|     /**
 | |
|      * 与微信菜单同步
 | |
|      */
 | |
| 	public function synchroWx(){
 | |
| 		$this->where('menuId>0')->delete();
 | |
| 		$wx = WXAdmin();
 | |
| 		$data = $wx->wxMenuGet();
 | |
| 		if(isset($data['errcode'])){
 | |
| 			if($data['errcode']!=0)return WSTReturn('与微信同步失败,请清除缓存重试');
 | |
| 		}
 | |
| 		if($data){
 | |
| 			$data = $data['menu']['button'];
 | |
| 			$type = array('click'=>1,'view'=>2,'scancode_push'=>3,'scancode_waitmsg'=>4,'pic_sysphoto'=>5,'pic_photo_or_album'=>6,'pic_weixin'=>7,'location_select'=>8,'media_id'=>9,'view_limited'=>10);
 | |
| 			$dataList = [];
 | |
| 			foreach( $data as $key=>$v){
 | |
| 				$data = [];
 | |
| 				$data['menuName'] = $v['name'];
 | |
| 				$data['createTime'] = date('Y-m-d H:i:s');
 | |
| 				$data['menuType'] = (isset($v['type']))?$type[$v['type']]:'';
 | |
| 				$data['menuKey'] = (isset($v['key']))?$v['key']:'';
 | |
| 				$data['menuSort'] = $key;
 | |
| 				$data['menuUrl'] = '';
 | |
| 				$rs = $this->insert($data,false,true);
 | |
| 				if($v['sub_button']){
 | |
| 					foreach($v['sub_button'] as $keys=>$vs){
 | |
| 						$datas = [];
 | |
| 						$datas['menuName'] = $vs['name'];
 | |
| 						$datas['parentId'] = $rs;
 | |
| 						$datas['menuSort'] = $keys;
 | |
| 						$datas['createTime'] = date('Y-m-d H:i:s');
 | |
| 						$datas['menuType'] = (isset($vs['type']))?$type[$vs['type']]:'';
 | |
| 						$datas['menuKey'] = (isset($vs['key']))?$vs['key']:'';
 | |
| 						$datas['menuUrl'] = (isset($vs['url']))?$vs['url']:'';
 | |
| 						$dataList[] = $datas;
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			$this->insertAll($dataList);
 | |
| 			return WSTReturn("与微信同步成功", 1);
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
|     /**
 | |
|      * 同步到微信菜单
 | |
|      */
 | |
|     public function synchroAd(){
 | |
|     	$rs = Db::name('wx_menus')->where('dataFlag=1')->order('menuSort asc')->select();
 | |
|     	$arr = $this->makeNewArr($rs,0);
 | |
|     	header('content-type:text/html;charset=utf-8');
 | |
|     	$arr = json_encode($arr,JSON_UNESCAPED_UNICODE);
 | |
|     	$wx = WXAdmin();
 | |
|     	$data = $wx->wxMenuCreate($arr);
 | |
|         if($data['errcode']==0){
 | |
|             return WSTReturn('菜单同步成功',1);
 | |
|         }
 | |
|         return WSTReturn('菜单同步失败,请清除缓存重试');
 | |
|     }
 | |
|     function makeNewArr($data,$pId){
 | |
|     	$type = array(1=>'click',2=>'view',3=>'scancode_push',4=>'scancode_waitmsg',5=>'pic_sysphoto',6=>'pic_photo_or_album',7=>'pic_weixin',8=>'location_select',9=>'media_id',10=>'view_limited');
 | |
|     	$c=0;
 | |
|     	$newArr = [];
 | |
|     	foreach($data as $k=>$v){
 | |
|     		if($v['parentId']==$pId){
 | |
|     			$sub_button = $this->makeNewArr($data,$v['menuId']);
 | |
|     			if($pId==0){
 | |
|     				$arr = ['name'=>$v['menuName']];
 | |
|     				if(!empty($sub_button)){
 | |
|     					$arr['sub_button'] = $sub_button;
 | |
|     				}else{
 | |
|     					$arr['key']=$v['menuKey'];
 | |
|     					$arr['type']=$type[$v['menuType']];
 | |
|                         if($v['menuUrl']!='')
 | |
|     					   $arr['url']= htmlspecialchars_decode($v['menuUrl']);
 | |
|     				}
 | |
|     				$newArr['button'][] = $arr;
 | |
|     			}else{
 | |
|     				$newArr[$c]['name'] = $v['menuName'];
 | |
|     				$newArr[$c]['key'] = $v['menuKey'];
 | |
|     				$newArr[$c]['type'] =$type[$v['menuType']];
 | |
|                     if($v['menuUrl']!='')
 | |
|     				    $newArr[$c]['url'] = htmlspecialchars_decode($v['menuUrl']);
 | |
|     				++$c;
 | |
|     			}
 | |
|     		}
 | |
|     	}
 | |
|     	return $newArr;
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 查询菜单个数
 | |
|      */
 | |
|     function menuNum($parentId){
 | |
|     	$rs = $this->where(['parentId'=>$parentId,'dataFlag'=>1])->field('menuId')->select();
 | |
|     	return count($rs);
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 新增
 | |
|      */
 | |
|     public function add(){
 | |
|     	$data = input('post.');
 | |
|     	if($data['content']==0){
 | |
|     		$data['menuType'] = 2;
 | |
|     	}
 | |
|     	WSTUnset($data,'menuId,dataFlag,content');
 | |
|     	if(!$data['menuName'])return WSTReturn("请输入菜单名称");
 | |
|     	$num = $this->menuNum($data['parentId']);
 | |
|     	if($data['parentId']==0){
 | |
| 			if($num>=3)return WSTReturn("一级菜单数,个数应为1~3个 ");
 | |
|     	}else{
 | |
|     		if($num>=5)return WSTReturn("二级菜单数,个数应为1~5个 ");
 | |
|     	}
 | |
|     	$data['parentId'] = $data['parentId'];
 | |
|     	$data['createTime'] = date('Y-m-d H:i:s');
 | |
|     	$result = $this->allowField(true)->save($data);
 | |
|     	if(false !== $result){
 | |
|     		return WSTReturn("新增成功", 1);
 | |
|     	}else{
 | |
|     		return WSTReturn($this->getError(),-1);
 | |
|     	}
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 编辑
 | |
|      */
 | |
|     public function edit(){
 | |
|     	$menuId = input('post.menuId/d');
 | |
|     	$data = input('post.');
 | |
|     	if($data['content']==0){
 | |
|     		$data['menuType'] = 2;
 | |
|     	}
 | |
|     	WSTUnset($data,'menuId,dataFlag,createTime,content');
 | |
|     	if(!$data['menuName'])return WSTReturn("请输入菜单名称");
 | |
|     	$result = $this->allowField(true)->save($data,['menuId'=>$menuId]);
 | |
|     	if(false !== $result){
 | |
|     		return WSTReturn("修改成功", 1);
 | |
|     	}else{
 | |
|     		return WSTReturn($this->getError(),-1);
 | |
|     	}
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 删除
 | |
|      */
 | |
|     public function del(){
 | |
|     	$ids = array();
 | |
|     	$ids[] = input('post.id/d');
 | |
|     	$ids = $this->getChild($ids,$ids);
 | |
|     	$data = [];
 | |
|     	$data['dataFlag'] = -1;
 | |
|     	$result = $this->where("menuId in(".implode(',',$ids).")")->update($data);
 | |
|     	if(false !== $result){
 | |
|     		return WSTReturn("删除成功", 1);
 | |
|     	}else{
 | |
|     		return WSTReturn($this->getError(),-1);
 | |
|     	}
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 迭代获取下级
 | |
|      */
 | |
|     public function getChild($ids = array(),$pids = array()){
 | |
|     	$result = $this->where("dataFlag=1 and parentId in(".implode(',',$pids).")")->field('menuId')->select();
 | |
|     	if(count($result)>0){
 | |
|     		$cids = array();
 | |
|     		foreach ($result as $key =>$v){
 | |
|     			$cids[] = $v['menuId'];
 | |
|     		}
 | |
|     		$ids = array_merge($ids,$cids);
 | |
|     		return $this->getChild($ids,$cids);
 | |
|     	}else{
 | |
|     		return $ids;
 | |
|     	}
 | |
|     }
 | |
| }
 |