gzh_app_id = $request->get('gzh_app_id'); parent::__construct($this->gzh_app_id); // 方便扩展 $param = array(); $param['app'] = $this->app; $param['WechatApi'] = isset($this->WechatApi) ? $this->WechatApi : null; $param['gzh_app_id'] = $this->gzh_app_id; $this->Qrcode = new QrcodesController($param); $this->Material = new MaterialsController($param); $this->Template = new TemplateBasesController($param); $this->Staff = new StaffsController($this->param); $this->User = $this->app->user; } /** * http://zydy/api/get_qrcode_url?gzh_app_id=wx03d107cd1ee728c2&scene_id=999×tamp=1511503861&sign=74b21f32c094f8d343c9743c196f6a32 * 获取带参二维码 */ public function get_qrcode_url(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $sceneId = $request->get('scene_id'); $gzh_app_id = $request->get('gzh_app_id'); v($request->all()); if (empty($sceneId) || empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $qrcode_url = $this->Qrcode->create_qrcode('temporary', $sceneId); // v($chapters); if (!empty($qrcode_url)) { $result['data'] = $qrcode_url; } else { $result['code'] = 0; $result['msg'] = 'create qrcode url fail'; } json_echo($result); } /** * http://zydy/api/upload_gzh_img?gzh_app_id=wxdbc486f1b4f6a8c3&img_path=http%3A%2F%2Fauth.aizhuishu.com%2Fadmin%2Fimgs%2Fcommon%2Fcontact%2Fcontact_customer.png×tamp=1511503861&sign=74b21f32c094f8d343c9743c196f6a32 * http://zydy/api/upload_gzh_img?gzh_app_id=wxdbc486f1b4f6a8c3&group_nick=zhuishuyun×tamp=1513600581&sign=38693a228ea65fc894c15bc6d76e7287 * http://zydy/api/upload_gzh_img?gzh_app_id=wxdbc486f1b4f6a8c3&is_default=0&img_url=https%3A%2F%2Fimages.csdn.net%2F20171218%2FVCG41103923818.jpg&group_nick=zhuishuyun×tamp=1513600581&sign=38693a228ea65fc894c15bc6d76e7287 * 上传公众号图片 */ public function upload_gzh_img(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => array('media_id' => '', 'url' => '')); $group_nick = $request->get('group_nick'); $gzh_app_id = $request->get('gzh_app_id'); $is_default = $request->has('is_default') ? $request->get('is_default') : 1; $img_url = $request->has('img_url') ? $request->get('img_url') : ''; v($request->all()); if (empty($group_nick) || empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'upload_gzh_img invalid param'; json_echo($result); } v('upload_gzh_img:' . $gzh_app_id); $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } if (!$is_default) { $img_url = DownImage($img_url, public_path('admin/imgs/contact_customer/contact_customer_' . $gzh_app_id . '.png')); } else { $img_url = public_path('admin/imgs/common/contact/contact_customer_' . $group_nick . '.png'); } $upload_result = $this->Material->upload_contact_cusomer_img($group_nick, $img_url); v('$upload_result'); v($upload_result); if (!empty($upload_result)) { $result['data']['media_id'] = $upload_result->media_id; $result['data']['url'] = $upload_result->url; } else { $result['code'] = 0; $result['msg'] = 'upload img fail'; } v('gzh_appid:' . $gzh_app_id . ' result:' . json_encode($result)); json_echo($result); } /** * http://zydy/api/upload_material_img?gzh_app_id=wxdbc486f1b4f6a8c3&img_url=https%3A%2F%2Fimages.csdn.net%2F20171218%2FVCG41103923818.jpg&group_nick=zhuishuyun×tamp=1514453795&sign=35d5a601b9d45d57b648f8574b946274 * 上传公众号素材图片 */ public function upload_material_img(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => array('media_id' => '', 'url' => '')); $group_nick = $request->get('group_nick'); $gzh_app_id = $request->get('gzh_app_id'); $image_type = $request->has('image_type') ? $request->get('image_type') : 'common'; $img_url = $request->has('img_url') ? $request->get('img_url') : ''; $real_img_url = urldecode($img_url); v($request->all()); if (empty($group_nick) || empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'upload_gzh_img invalid param'; json_echo($result); } v('upload_gzh_img:' . $gzh_app_id); $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $path = public_path('admin/imgs/material/temp_' . $gzh_app_id . '_' . md5($img_url) . '.png'); v('DownImage:real_img_url:' . $real_img_url . ' path:' . $path); DownImage($real_img_url, $path); if ($image_type == 'common') { $upload_result = $this->Material->upload_material_img($group_nick, $path); } else { $upload_result = $this->Material->upload_thumb_material_img($group_nick, $path); } if (!empty($upload_result)) { $result['data']['media_id'] = $upload_result->media_id; $result['data']['url'] = $upload_result->url; } else { $result['code'] = 0; $result['msg'] = $this->Material->getErrorMsg('upload_materials', 'upload img fail'); } json_echo($result); } /** * http://zydy/api/upload_gzh_article?show_cover_pic=0&author=%E8%B6%85%E5%93%A5&digest=%E5%8F%AA%E6%98%AF%E4%B8%AA%E6%91%98%E8%A6%81&content=%E5%8F%AA%E6%98%AF%E4%B8%AA%E5%86%85%E5%AE%B9%E8%80%8C%E5%B7%B2&title=testtest&thumb_media_id=XYhErlq3w-hlmwqOB4O5SlIHHHRE3jetv2k1y1iwemE&gzh_app_id=wxdbc486f1b4f6a8c3&group_nick=zhuishuyun×tamp=1514454260&sign=9d708b61806fe5dacb7f632803463da1 * 上传公众号图文素材 */ public function upload_gzh_article(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => array('chapter_media_id' => '', 'chapter_url' => '')); $group_nick = $request->get('group_nick'); $gzh_app_id = $request->get('gzh_app_id'); $title = $request->has('title') ? $request->get('title') : ''; $thumb_media_id = $request->has('thumb_media_id') ? $request->get('thumb_media_id') : ''; $show_cover_pic = $request->has('show_cover_pic') ? $request->get('show_cover_pic') : ''; $author = $request->has('author') ? $request->get('author') : ''; $digest = $request->has('digest') ? $request->get('digest') : ''; $content = $request->has('content') ? $request->get('content') : ''; $content_source_url = $request->has('content_source_url') ? $request->get('content_source_url') : ''; v($request->all()); if (empty($group_nick) || empty($gzh_app_id) || empty($thumb_media_id) || empty($content)) { $result['code'] = 0; $result['msg'] = 'upload_gzh_article invalid param'; json_echo($result); } v('upload_gzh_img:' . $gzh_app_id); $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $article = array(); $article['thumb_media_id'] = $thumb_media_id;//'XYhErlq3w-hlmwqOB4O5SqFAgM6yWcg0u9ttENsjSIg'; $article['title'] = $title; $article['show_cover_pic'] = $show_cover_pic; $article['author'] = $author; $article['digest'] = $digest; $article['content'] = $content; $article['content_source_url'] = $content_source_url; $upload_result = $this->Material->upload_article($article); if (!empty($upload_result)) { $chapter_resource = $this->Material->get_material_resource($upload_result->media_id); if (!empty($chapter_resource)) { $result['data']['chapter_url'] = isset($chapter_resource['news_item'][0]['url']) ? $chapter_resource['news_item'][0]['url'] : ''; $result['data']['chapter_media_id'] = isset($chapter_resource['news_item'][0]['thumb_media_id']) ? $chapter_resource['news_item'][0]['thumb_media_id'] : ''; } else { $result['code'] = 0; $result['msg'] = 'get_material_resource fail'; } } else { $result['code'] = 0; $result['msg'] = 'upload img fail'; } v($result); json_echo($result); } /** * http://zydy/api/upload_gzh_articles?show_cover_pic=0&author=%E8%B6%85%E5%93%A5&digest=%E5%8F%AA%E6%98%AF%E4%B8%AA%E6%91%98%E8%A6%81&content=%E5%8F%AA%E6%98%AF%E4%B8%AA%E5%86%85%E5%AE%B9%E8%80%8C%E5%B7%B2&title=testtest&thumb_media_id=XYhErlq3w-hlmwqOB4O5SlIHHHRE3jetv2k1y1iwemE&gzh_app_id=wxdbc486f1b4f6a8c3&group_nick=zhuishuyun×tamp=1514454260&sign=9d708b61806fe5dacb7f632803463da1 * 上传公众号图文素材 */ public function upload_gzh_articles(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => array('chapter_media_id' => '', 'chapter_url' => '')); $group_nick = $request->get('group_nick'); $gzh_app_id = $request->get('gzh_app_id'); $articles = $request->has('articles') ? $request->get('articles') : ''; v($request->all()); if (empty($group_nick) || empty($gzh_app_id) || empty($articles)) { $result['code'] = 0; $result['msg'] = 'upload_gzh_articles invalid param'; json_echo($result); } v('upload_gzh_articles:' . $gzh_app_id); $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } // $articles = json_decode($articles); $upload_result = $this->Material->upload_articles($gzh_app_id, $articles); if (!empty($upload_result)) { $result['data'] = $upload_result; $chapter_resource = $this->Material->get_material_resource($upload_result->media_id); } else { $result['code'] = 0; $result['msg'] = $this->Material->getErrorMsg('upload_articles', 'upload articles fail'); } v($result); json_echo($result); } /** * 维维读书 wx03d107cd1ee728c2 17 * 纳兰阅读 wx392b782e2a082eb2 16 * 已读攻毒 wx62c7e9290d51eeba 23 * http://zydy/oauth/add_public_template?gzh_app_id=wxd52de911dfef6d92&common_template_id=×tamp=1511509543&sign=98dccc7b29e3c05e4b4367f488ff1966 * http://zsyauth.aizhuishu.com/oauth/auto_set_menu_and_template_test?authorizer_appid=wxdb365b8f2fc8aeb0×tamp=1511509543&sign=98dccc7b29e3c05e4b4367f488ff1966 */ function add_public_template(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); $common_template_id = $request->get('common_template_id'); v('add_public_template_start,gzh_appid:' . $gzh_app_id . ' common_template_id:' . $common_template_id); if (empty($gzh_app_id) || empty($common_template_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $this->Template->add_one_tamplate($common_template_id); v('add_public_template_end,gzh_app_id:' . $gzh_app_id . ' common_template_id:' . $common_template_id); } /** * 嘉言小说 wxdbc486f1b4f6a8c3 * http://zydy/api/get_full_official_account_users?gzh_app_id=wxdbc486f1b4f6a8c3&next_openid=timestamp=1511509543&sign=98dccc7b29e3c05e4b4367f488ff1966 */ function get_full_official_account_users(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => array('total' => '', 'count' => '', 'data' => '', 'next_openid' => '')); $gzh_app_id = $request->get('gzh_app_id'); $next_openid = $request->get('next_openid'); v('get_full_official_account_users_start,gzh_appid:' . $gzh_app_id . ' next_openid:' . $next_openid); if (empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $users = $this->User->lists($next_openid); v($users); $result['data']['total'] = isset($users->total) ? $users->total : ''; $result['data']['count'] = isset($users->count) ? $users->count : ''; $result['data']['data'] = isset($users->data) ? $users->data : ''; $result['data']['next_openid'] = isset($users->next_openid) ? $users->next_openid : ''; v('get_full_official_account_users_end,gzh_app_id:' . $gzh_app_id . ' next_openid:' . $next_openid); json_echo($result); } /** * 维护公众号模板消息(被封,删除等异常情况) * http://zydy/api/check_official_account_templates?gzh_app_id=wxdbc486f1b4f6a8c3×tamp=1523440738&sign=1d9640c40ef0bbb19b5352f60372c300 */ function check_official_account_templates(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); v('check_official_account_templates_start,gzh_appid:' . $gzh_app_id); if (empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } // 微信后台的模板 $wx_backend_templates = $this->Template->get_private_templates(); $wx_template_ids = array(); if (isset($wx_backend_templates->template_list) && !empty($wx_backend_templates->template_list)) { foreach ($wx_backend_templates->template_list as $one_template) { $wx_template_ids[] = $one_template['template_id']; } } v('wx_template_ids:' . json_encode($wx_template_ids)); // 我们目前的基础模板 $base_templates = $this->WechatApi->get_wechat_public_templates($gzh_app_id); // v('base_templates');v($base_templates); if ($base_templates) { foreach ($base_templates as $template) { $this->Template->check_one_tamplate($template['common_template_id'], $wx_template_ids); } } v('maintain_official_account_templates_end,gzh_app_id:' . $gzh_app_id); } /** * 删除菜单 * http://zydy/api/del_menu?gzh_app_id=wxdbc486f1b4f6a8c3×tamp=1523615257&sign=056ea8390b3d5a1a6d2444288c1a0251 */ function del_menu(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); v('del_menu_start,gzh_appid:' . $gzh_app_id); if (empty($gzh_app_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $menu = $this->app->menu; $current_menu = $menu->current(); v('$current_menu'); v($current_menu); $del_menu = $menu->destroy(); v('$del_menu'); v($del_menu); $current_menu = $menu->current(); v('$after_current_menu'); v('del_menu_end,gzh_app_id:' . $gzh_app_id); } /** * 得到用户信息 * http://zydy/api/get_userinfo?gzh_app_id=wxdbc486f1b4f6a8c3&openid=oAcqg1LRHNKN2jaEkJ5v56HOwPEQ×tamp=1524130007&sign=e7ceefdf35ae7eee15e00404fe89c66c */ function get_userinfo(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); $openid = $request->get('openid'); v('get_userinfo,gzh_appid:' . $gzh_app_id . ' openid:' . $openid); if (empty($gzh_app_id) || empty($openid)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $user = $this->app->user; $userinfo = $user->get($openid); v('userinfo'); v($userinfo); $result['data'] = $userinfo; json_echo($result); } /** * 得到用户信息 * http://zydy/api/get_short_url?gzh_app_id=wxdbc486f1b4f6a8c3&url=www.baidu.com×tamp=1524130007&sign=e7ceefdf35ae7eee15e00404fe89c66c */ function get_short_url(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); $url = $request->get('url'); $url = urldecode($url); v('get_short_url,gzh_appid:' . $gzh_app_id . ' $url:' . $url); if (empty($gzh_app_id) || empty($url)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } try { v('get_short_url_start:' . $gzh_app_id); $app_short_url = $this->app->url; $short_result = $app_short_url->shorten($url); v('short_result:' . $gzh_app_id); v($short_result); if (isset($short_result->errcode) && $short_result->errcode == '0' && isset($short_result->errmsg) && $short_result->errmsg == 'ok') { $result['data'] = $short_result->short_url; } else { $result['code'] = 0; $result['msg'] = $short_result->errmsg; } } catch (\Exception $e) { $error_msg = $e->getMessage(); v('get_short_url_ept:' . $error_msg); if (strpos($error_msg, 'api forbidden') !== false) { $result['code'] = 0; $result['msg'] = '公众号微信接口被封,请等待解封!'; } elseif (strpos($error_msg, 'user limited') !== false) { $result['code'] = 0; $result['msg'] = '公众号微信接口被限制,请等待解除!'; } } json_echo($result); } /** * 检查公众号模板消息(被封,删除等异常情况) * http://zydy/api/check_template_status?gzh_app_id=wxdbc486f1b4f6a8c3×tamp=1523440738&sign=1d9640c40ef0bbb19b5352f60372c300 */ function check_template_status(Request $request) { $result = array('code' => 1, 'msg' => '', 'data' => ''); $gzh_app_id = $request->get('gzh_app_id'); $common_template_id = $request->get('common_template_id'); v('check_template_status_start,gzh_appid:' . $gzh_app_id . ' common_template_id:' . $common_template_id); if (empty($gzh_app_id) || empty($common_template_id)) { $result['code'] = 0; $result['msg'] = 'invalid param'; json_echo($result); } $check_result = $this->check_sign_params($request); if ($check_result['code'] == 0) { $result['code'] = 0; $result['msg'] = $check_result['msg']; json_echo($result); } $error_msgs = [ '1' => '模板修复成功', '2' => '模板正常', '3' => '微信模板修复失败!', '4' => '微信模板接口被封,请等待解封!', '5' => '微信后台模板数量达到上限,请删除部分模板后再操作', '6' => '微信模板被封,请等待解封!', '7' => '模板被微信官方取消失效了!', '8' => '号被限制了权限', '9' => '接口未授权', '10' => '分类不正确!', '11' => '号的模板功能被处罚限制中!', ]; // 一、先检查分类 $industry = $this->Template->get_industry(); if ($industry == '4') { $result['msg'] = $error_msgs[$industry]; json_echo($result); } $primary_industry_first_class = $industry->primary_industry['first_class']; $primary_industry_second_class = $industry->primary_industry['second_class']; $secondary_industry_first_class = $industry->secondary_industry['first_class']; $secondary_industry_second_class = $industry->secondary_industry['second_class']; v('$primary_industry_first_class:' . $primary_industry_first_class . ' $primary_industry_second_class:' . $primary_industry_second_class . ' $secondary_industry_first_class:' . $secondary_industry_first_class . ' $secondary_industry_second_class:' . $secondary_industry_second_class); $extra_error_msg = ''; // 存在部分分类异常情况,所以分类错误允许往下走,还能抢救一部分模板消息 if (!($primary_industry_first_class == 'IT科技' && $primary_industry_second_class == 'IT软件与服务' && $secondary_industry_first_class == '文体娱乐' && $secondary_industry_second_class == '文化|传媒')) { v('check_template_status_set_template_dustry:' . $gzh_app_id); $set_res = $this->Template->set_template_dustry_res(2, 37); if ($set_res == 2) { v('modify_dustry_ept:' . $gzh_app_id); // $result['msg'] = '模板分类错误,请修改分类至(IT科技->IT软件与服务、文体娱乐->文化|传媒),如不能修改请等待,分类1个月才能修改一次'; // json_echo($result); $extra_error_msg = '请注意:模板分类错误,请修改分类至(IT科技->IT软件与服务、文体娱乐->文化|传媒),如不能修改请等待,分类1个月才能修改一次'; } else { v('modify_dustry_ok:' . $gzh_app_id); } } // 二、分类正确,检查某一个模板,微信后台是否存在,我们系统后台是否存在 // 微信后台的模板 $wx_backend_templates = $this->Template->get_private_templates(); $wx_template_ids = array(); if (isset($wx_backend_templates->template_list) && !empty($wx_backend_templates->template_list)) { foreach ($wx_backend_templates->template_list as $one_template) { $wx_template_ids[] = $one_template['template_id']; } } v('wx_template_ids:' . json_encode($wx_template_ids)); $check_res = $this->Template->check_one_tamplate_res($common_template_id, $wx_template_ids); $result['msg'] = $error_msgs[$check_res].' '.$extra_error_msg; v('check_template_status_end,gzh_app_id:' . $gzh_app_id); json_echo($result); } public function get_gzh_statistics(Request $request) { $from_date = $request->input('from_date', date('Y-m-d', strtotime('-7 day'))); $to_date = $request->input('to_date', date('Y-m-d', strtotime('-1 day'))); $gzh_app_id = $this->gzh_app_id; if (empty($gzh_app_id)) { return ['code' => 304, 'msg' => 'appid empty']; } $result = array('code' => 1, 'msg' => '', 'data' => array()); try { $result['data']['user_cumulate'] = $this->app->stats->userCumulate($from_date, $to_date);//获取累计用户数据, 最大时间跨度:7; $result['data']['user_summary'] = $this->app->stats->userSummary($from_date, $to_date);//获取用户增减数据, 最大时间跨度:7; v($result); } // 加上\ 全局抓取 catch (\Exception $e) { $result['code'] = 0; $result['msg'] = $e->getMessage(); v('get_gzh_statistics_ept:' . $gzh_app_id . ' info:' . $e->getMessage()); } return $result; } }