getAdminInfoAll($admin_id); LogService::info('Wxqrcodemenu: Method->reStructWxMenu:Channel_id:' . $admin_id); if($admininfo['wx_menu'] && $oldophost && $new_ophost){ if(is_array($admininfo['wx_menu'])){ $admininfo['wx_menu'] = json_encode($admininfo['wx_menu'], JSON_UNESCAPED_UNICODE); if (strpos($admininfo['wx_menu'], $oldophost)){ $admininfo['wx_menu'] = str_replace($oldophost, $new_ophost, $admininfo['wx_menu']); } } $admininfo['wx_menu'] = json_decode($admininfo['wx_menu'], true); } LogService::info('Wxqrcodemenu: Method->reStructWxMenu:重构微信菜单:遍历微信菜单, 如果是url ,根据url 生成图片 ,上传资源'); //重构微信菜单:遍历微信菜单, 如果是url ,根据url 生成图片 ,上传资源 , if ($admininfo['wx_menu']) { $n_wxmenu = []; foreach ($admininfo['wx_menu'] as $key => $menu) { $n_wxmenu[$key] = $menu; if (!empty($menu['sub_button'])) { foreach ($menu['sub_button'] as $sub_key => $sub_menu) { $n_wxmenu[$key]['sub_button'][$sub_key] = $sub_menu; if($sub_menu['type'] == 'view'){ $eventkey = $this->wxuploadimg($sub_menu['name'], $admin_id, $sub_menu['url']); $n_wxmenu[$key]['sub_button'][$sub_key]['name'] = $sub_menu['name']; $n_wxmenu[$key]['sub_button'][$sub_key]['key'] = $eventkey; $n_wxmenu[$key]['sub_button'][$sub_key]['type'] = 'click'; unset($n_wxmenu[$key]['sub_button'][$sub_key]['url']); } } } else { if ($menu['type'] == 'view') { $eventkey = $this->wxuploadimg($menu['name'], $admin_id, $menu['url']); $n_wxmenu[$key]['name'] = $menu['name']; $n_wxmenu[$key]['key'] = $eventkey; $n_wxmenu[$key]['type'] = 'click'; unset($n_wxmenu[$key]['url']); } } } $adminwxmenu = [ 'admin_id' => $admin_id, 'wx_qrcode_menu' => json_encode($n_wxmenu) ]; LogService::info('Wxqrcodemenu: Method->reStructWxMenu:保存'); if(model('AdminWxmenu')->where('admin_id', 'eq', $admin_id)->find()){ model('AdminWxmenu')->update($adminwxmenu, ['admin_id' => $admin_id]); }else { model('AdminWxmenu')->save($adminwxmenu); } } } /** * @param $admin_id * @param $img_url * @return mixed */ public function wxuploadimg($title, $admin_id, $img_url) { $qrcode_url = DiyQRCode::createQRCodeByUrl($img_url); $admininfo = model('AdminConfig')->getAdminInfoAll($admin_id); $wechat = new WeChatObject($admininfo); $officialAccount = $wechat->getOfficialAccount(); $upload_url = str_replace(config('site.cdnurl'), '', ROOT_PATH . 'public' . $qrcode_url); $result = $officialAccount->material->uploadImage($upload_url); if (!isset($result['media_id'])) { LogService::error('Method:wxuploadimg:图片素材上传微信失败'); } else { $eventkey = $admin_id . '_' . uniqid(); $wechatResonseData = [ 'admin_id' => $admin_id, 'title' => $title, 'eventkey' => $eventkey, 'type' => 'image', 'content' => json_encode($result), 'status' => 'normal', 'createtime' => time(), 'updatetime' => time() ]; model('WechatResponse')->insert($wechatResonseData); return $eventkey; } } /** * 同步微信二维码菜单 */ public function syncQrcodeMenu($admin_id, $ids = NULL) { $hasError = false; $model = model('AdminWxmenu'); $row = $model->get(['admin_id' => $admin_id]); if (!$row) { LogService::error('Method:syncQrcodeMenu:syncQrcodeMenu Fail, param admin_id is not exist'); } $menu = json_decode($row->wx_qrcode_menu, true); /** * 校验menu数据格式 */ foreach ($menu as $k => $v) { $hasError = false; $model = model('AdminWxmenu'); $row = $model->get(['admin_id' => $admin_id]); $menu = json_decode($row->wx_qrcode_menu, true); /** * 校验menu数据格式 */ foreach ($menu as $k => $v) { if (isset($v['sub_button'])) { foreach ($v['sub_button'] as $m => $n) { if (isset($n['key']) && !$n['key']) { $hasError = true; break 2; } } } else if (isset($v['key']) && !$v['key']) { $hasError = true; break; } } } if (!$hasError) { $response = []; try { $adminConfig = model('AdminConfig')->getAdminInfoAll($admin_id); $wechat = new WeChatObject($adminConfig); $officialAccount = $wechat->getOfficialAccount(); $officialAccount->menu->delete(); //删除全部菜单 主要是掌中云个性化菜单 $ret = $officialAccount->menu->create($menu); $response = $ret; } catch (\Exception $e) { LogService::error($e->getMessage()); } if ($response && $response['errcode'] == 0) { LogService::info('syncQrcodeMenu 同步二维码菜单成功'); } else { LogService::error($response['errmsg']); } } else { LogService::error('菜单参数配置不完整,请检查是否有空菜单!'); } } /** * 同步微信二维码菜单 */ public function syncQrcodeMenu2($admin_id, $ids = NULL) { $hasError = false; $model = model('AdminWxmenu'); $row = $model->get(['admin_id' => $admin_id]); if (!$row) { $this->error('syncQrcodeMenu Fail, param admin_id is not exist'); } $menu = json_decode($row->wx_qrcode_menu, true); /** * 校验menu数据格式 */ foreach ($menu as $k => $v) { $hasError = false; $model = model('AdminWxmenu'); $row = $model->get(['admin_id' => $admin_id]); $menu = json_decode($row->wx_qrcode_menu, true); /** * 校验menu数据格式 */ foreach ($menu as $k => $v) { if (isset($v['sub_button'])) { foreach ($v['sub_button'] as $m => $n) { if (isset($n['key']) && !$n['key']) { $hasError = true; break 2; } } } else if (isset($v['key']) && !$v['key']) { $hasError = true; break; } } } if (!$hasError) { $response = []; try{ $adminConfig = model('AdminConfig')->getAdminInfoAll($admin_id); $wechat = new WeChatObject($adminConfig); $officialAccount = $wechat->getOfficialAccount(); $officialAccount->menu->delete(); //删除全部菜单 主要是掌中云个性化菜单 $ret = $officialAccount->menu->create($menu); $response = $ret; }catch (\Exception $e){ $this->error($e->getMessage()); } if($response && $response['errcode'] == 0){ LogService::info('syncQrcodeMenu 同步二维码菜单成功'); $this->success(); }else{ $this->error($response['errmsg']); } } else { $this->error('菜单参数配置不完整,请检查是否有空菜单!'); } } }