menu = $menu; } public function configAction() { if (Request::method() == 'POST') { $gets = Request::all(); foreach ($gets as $key => $value) { Setting::where('type', 'wechat')->where('key', $key)->update([ 'value' => $value, ]); } return $this->json('保存成功。', true); } $header['tabs'] = Config::$tabs; $app = Setting::where('type', 'wechat')->pluck('value', 'key'); return $this->display([ 'app' => $app, 'header' => $header, ]); } /** * 自定义菜单 */ public function menuAction() { if (Request::ajax()) { $app = WechatService::getApp(); $gets = Request::all(); $data = $gets['data']; // 空菜单认为删除全部菜单 if (empty($data)) { Setting::where('type', 'wechat')->where('key', 'menu')->update(['value' => '']); $app->menu->delete(); return $this->json('保存成功', true); } $menu_type = [ 'view' => '跳转URL', 'click' => '点击推事件', 'scancode_push' => '扫码推事件', 'scancode_waitmsg' => '扫码推事件且弹出“消息接收中”提示框', 'pic_sysphoto' => '弹出系统拍照发图', 'pic_photo_or_album' => '弹出拍照或者相册发图', 'pic_weixin' => '弹出微信相册发图器', 'location_select' => '弹出地理位置选择器', ]; Setting::where('type', 'wechat')->where('key', 'menu')->update([ 'value' => json_encode($data, JSON_UNESCAPED_UNICODE) ]); foreach ($data as &$row) { if (empty($row['content'])) { $row['content'] = uniqid(); } switch ($row['type']) { case 'miniprogram': list($row['appid'], $row['url'], $row['pagepath']) = explode(',', $row['content'].',,'); break; case 'view': $row['url'] = preg_match('#^(\w+:)?//#i', $row['content']) ? $row['content'] : url($row['content']); break; case 'event': if (isset($menu_type[$row['content']])) { $row['type'] = $row['content']; $row['key'] = "wechat_menu#id#{$row['id']}"; } break; case 'media_id': $row['media_id'] = $row['content']; break; default: (!in_array($row['type'], $menu_type)) && $row['type'] = 'click'; $row['key'] = "{$row['content']}"; } unset($row['content']); } $menus = $this->menu->GetTreeByMenu($data, 'index', 'pindex', 'sub_button'); foreach ($menus as &$menu) { unset($menu['index'], $menu['pindex'], $menu['id']); if (empty($menu['sub_button'])) { continue; } foreach ($menu['sub_button'] as &$submenu) { unset($submenu['index'], $submenu['pindex'], $submenu['id']); } unset($menu['type']); } $ret = $app->menu->create($menus); if ($ret['errcode'] == 0) { return $this->json('发布成功', true); } else { return $this->json('errcode:'.$ret['errcode'].' errmsg:'.$ret['errmsg']); } } $app = Setting::where('type', 'wechat')->pluck('value', 'key'); $menus = (array)json_decode($app['menu'], JSON_UNESCAPED_UNICODE); $menus = $this->menu->GetTreeByMenu($menus, 'index', 'pindex'); $header['tabs'] = Config::$tabs; return $this->display([ 'header' => $header, 'menus' => $menus, ]); } }