You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
216
hyhproject/admin/model/Wxmenus.php
Executable file
216
hyhproject/admin/model/Wxmenus.php
Executable file
@ -0,0 +1,216 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user