all(); $userContext = $this->getUserContext(null); $param['user_id'] = $userContext['loginUser']->id; $param['puser_id'] = $userContext['loginUser']->pid; return WechatMenuService::list($param); } public function add(WechatMenuRequest $request) { $param = $request->validated(); $param['msg_content'] = $request->input('msg_content'); $param = $this->handleParam($param); $userContext = $this->getUserContext(null); $param['user_id'] = $userContext['loginUser']->id; $param['puser_id'] = $userContext['loginUser']->pid; $param['wechat_accounts'] = []; return WechatMenuService::addMenu($param); } public function edit($id, WechatMenuRequest $request) { $param = $request->validated(); $param['msg_content'] = $request->input('msg_content'); $param = $this->handleParam($param); return WechatMenuService::updateMenu($id, $param); } public function detail($id) { return WechatMenuService::detail($id); } public function authList($id) { $userId = $this->getLoginUserId(); return WechatMenuService::authList($id, $userId); } public function del(Request $request) { $ids = $request->input('ids'); if (empty($ids)) { WechatMenuService::throwErrMsg('要删除的数据参数错误'); } $ids = explode(',', $ids); return WechatMenuService::del($ids); } /** * 分配 * name: allocation * @param $id * date 2023/07/12 07:18 */ public function allocation($id, Request $request) { if (!$request->has('wx_auth_ids')) { WechatMenuService::throwErrMsg("参数错误"); } if (!empty($request->input('wx_auth_ids'))) { $wxAuthIds = explode(',', $request->input('wx_auth_ids')); } else { $wxAuthIds = []; } return WechatMenuService::allocation($id, $wxAuthIds); } // 处理参数 private function handleParam($param) { $info = DB::table('miniprogram')->where('id', $param['miniprogram_id'])->first(); if (empty($info)) { WechatMenuService::throwErrMsg("小程序不正确"); } if ($info->status != 1) { WechatMenuService::throwErrMsg("此小程序暂不提供使用"); } if ($info->type != MiniprogramType::WEIXIN->value()) { WechatMenuService::throwErrMsg("关键词回复设置仅支持微信小程序"); } $param['miniprogram_appid'] = $info->appid; $info = DB::table('user_has_miniprograms')->where('uid', $this->getLoginUserId())->where('miniprogram_id', $param['miniprogram_id'])->where('is_enabled', 1)->value('id'); if (empty($info)) { WechatMenuService::throwErrMsg("没有此小程序的使用权限"); } if (count($param['content']) > 3) { WechatMenuService::throwErrMsg("底部菜单不能超过3个"); } // $clicks = []; $msgContent = []; foreach ($param['content'] as &$val) { if (!empty(getProp($val, 'sub_button'))) { foreach ($val['sub_button'] as &$sub) { if (getProp($sub, 'type') == 'miniprogram') { $sub['appid'] = $param['miniprogram_appid']; $sub['pagepath'] = $sub['url']; } if (getProp($sub, 'type') == 'click') { // $clicks[] = $sub['key']; $msgContent[] = [$sub['key'] => $sub['content']]; } if (!in_array(getProp($sub, 'type'), ['view', 'miniprogram'])) { unset($sub['url']); } } } else { if (getProp($val, 'type') == 'miniprogram') { $val['appid'] = $param['miniprogram_appid']; $val['pagepath'] = $val['url']; } if (getProp($val, 'type') == 'click') { // $clicks[] = $val['key']; $msgContent[] = [$val['key'] => $val['content']]; } if (getProp($val, 'type') == 'view') { unset($val['url']); } } } $param['msg_content'] = $msgContent; // unset($val,$sub,$info); // // 有点击事件 // if (!empty($clicks)){ // $msgContent = []; // $msg = getProp($param,'msg_content'); // if (empty($msg) || !is_array($msg)){ // WechatMenuService::throwErrMsg("发送的文本信息不能为空"); // } // foreach ($clicks as $val){ // $temp = getProp($msg,$val); // if (empty($temp) || !is_array($temp)){ // WechatMenuService::throwErrMsg("发送的文本信息格式不正确"); // } // $contents = ""; // foreach ($temp as & $item){ // if (getProp($item,'url')){ // $item['content'] = "{$item['title']}"; // }else{ // $item['content'] = $item['title']; // } // $contents = $contents.$item['content']."\n"; // } // // rtrim($contents, "\n"); // $temp['content'] = $contents; // $msgContent = [$val => $temp]; // } // $param['msg_content'] = $msgContent; // unset($msgContent); // unset($temp,$val,$item); // }else{ // $param['msg_content']= []; // } return $param; } public function test() { $info = WechatOpenPlatformService::getAppInfoById(8); $componentInfo = WechatOpenPlatformService::getComponentInfoByAppid($info->component_appid); $openPlatform = WechatOpenPlatformService::buildApplication($componentInfo); $app = $openPlatform->officialAccount($info->authorizer_appid, getProp($info, 'authorizer_refresh_token')); unset($appInfo); return $app->menu->list(); } }