* @version : HuoMp 1.0 */ namespace huoMpMsg\controller; use huolib\constant\WeiXinMenuConst; use huomp\model\common\CommonModel; use huoMpMsg\model\MpMenuModel; class MpMenuLogic extends CommonModel { /** * 获取菜单列表 * * @param int $conf_id * * @return array */ public function getMenu($conf_id) { $_map = [ 'conf_id' => $conf_id, 'is_menu' => WeiXinMenuConst::IS_MENU_2, ]; $_model = new MpMenuModel(); $_order = 'list_order DESC'; $_data = $_model->where($_map)->order($_order)->select(); if (is_object($_data)) { $_data = $_data->toArray(); } if (empty($_data)) { return []; } $_button = []; foreach ($_data as $_k => $_v) { if (empty($_v['parent_id'])) { //一级菜单 $_button[$_v['id']] = empty($_button[$_v['id']]) ? $_v : array_merge($_button[$_v['id']], $_v); } else { $_button[$_v['parent_id']]['sub_button'][] = $_v; } } return $_button; } /** * 获取菜单数据用于提交微信 * * @param $conf_id * * @return array */ public function getMenuData($conf_id) { $_data = $this->getMenu($conf_id); $_button = []; foreach ($_data as $_k => $_v) { $_data = []; $_data['name'] = $_v['name']; if (empty($_v['sub_button'])) { //一级菜单 $_data['type'] = $_v['type']; if (WeiXinMenuConst::MENU_TYPE_CLICK == $_data['type']) { $_data['key'] = $_v['key']; } elseif (WeiXinMenuConst::MENU_TYPE_VIEW == $_data['type']) { $_data['url'] = $_v['url']; } elseif (WeiXinMenuConst::MENU_TYPE_MP == $_data['type']) { $_data['appid'] = $_v['mini_app_id']; $_data['url'] = $_v['url']; $_data['pagepath'] = $_v['pagepath']; } } else { $_data['sub_button'] = []; foreach ($_v['sub_button'] as $_k2 => $_v2) { $_data2 = []; $_data2['name'] = $_v2['name']; $_data2['type'] = $_v2['type']; if (WeiXinMenuConst::MENU_TYPE_CLICK == $_data2['type']) { $_data2['key'] = $_v2['key']; } elseif (WeiXinMenuConst::MENU_TYPE_VIEW == $_data2['type']) { $_data2['url'] = $_v2['url']; } elseif (WeiXinMenuConst::MENU_TYPE_MP == $_data2['type']) { $_data2['appid'] = $_v2['mini_app_id']; $_data2['url'] = $_v2['url']; $_data2['pagepath'] = $_v2['pagepath']; } $_data['sub_button'][] = $_data2; } } $_button['button'][] = $_data; } return $_button; } /** * 获取一级菜单idname * * @param $conf_id * * @return array */ public function getFirstLevel($conf_id) { $_map = [ 'conf_id' => $conf_id, 'is_menu' => WeiXinMenuConst::IS_MENU_2, 'parent_id' => 0, ]; $_arr = (new MpMenuModel())->where($_map)->column('name', 'id'); return $_arr; } /** * 获取菜单个数 * * @param $conf_id * @param int $parent_id * * @return int|string */ public function getMenuCount($conf_id, $parent_id = 0) { $_map = [ 'conf_id' => $conf_id, 'is_menu' => WeiXinMenuConst::IS_MENU_2, 'parent_id' => $parent_id, ]; return (new MpMenuModel())->where($_map)->count('id'); } /** * 获取一级菜单的子菜单数 * * @param int $parent_id * * @return int|string */ public function getSubMenuCount($parent_id = 0) { $_map = [ 'is_menu' => WeiXinMenuConst::IS_MENU_2, 'parent_id' => $parent_id, ]; return (new MpMenuModel())->where($_map)->count('id'); } /** * 获取配置关键词列表 * * @param int $conf_id * * @param array $_param * @param string $page * * @return array */ public function getKeyList($conf_id, $_param = [], $page = '1,10') { $_rdata = ['count' => 0, 'list' => []]; $_map = [ 'conf_id' => $conf_id, 'is_menu' => WeiXinMenuConst::IS_MENU_1, 'key' => ['neq', ''] ]; if (!empty($_param['key'])) { $_map['key'] = $_param['key']; } $_model = new MpMenuModel(); $_count = $_model->where($_map)->count('id'); if (empty($_count)) { return $_rdata; } $_order = 'list_order DESC'; $_data = $_model->where($_map)->order($_order)->page($page)->select(); if (is_object($_data)) { $_data = $_data->toArray(); } if (empty($_data)) { return $_rdata; } $_rdata['count'] = $_count; $_rdata['list'] = $_data; return $_rdata; } }