123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813 |
- <?php
- /**
- * Created by sublime.
- * User: wosinC
- * Date: 2017/12/2
- * Time: 上午11:39
- */
- namespace App\Modules\OfficialAccount\Services;
- use App\Modules\OfficialAccount\Models\ForceSubscribeUsers;
- use App\Modules\OfficialAccount\Models\WechatTemplates;
- use App\Modules\OfficialAccount\Models\OfficialAccount;
- use App\Modules\OfficialAccount\Models\WechatTemplateMsgs;
- use App\Modules\OfficialAccount\Models\CustomSendMsgs;
- use App\Modules\OfficialAccount\Models\WechatPublicTemplates;
- use App\Modules\OfficialAccount\Services\ForceSubscribeService;
- use App\Modules\OfficialAccount\Models\BatchCustomSendMsgs;
- use App\Libs\OSS;
- use Redis;
- use App\Jobs\SendTemplate;
- use GuzzleHttp\Client;
- use App\Jobs\TemplateMsgSendJob;
- class WechatTemplateService
- {
- //-----------模板消息---------------
- /**
- * 通过Appid和common_template_id获取模板
- */
- static function wechatTemplateByAppidAndCommonTemplateId($wechatTemplatePrams)
- {
- return WechatTemplates::wechatTemplateByAppidAndTemplateId($wechatTemplatePrams['appid'],$wechatTemplatePrams['common_template_id']);
- }
- /**
- * wechatTemplateMsgById 通过id获取模板
- */
- static function wechatTemplateMsgById($wechatTemplatePrams)
- {
- return WechatTemplateMsgs::wechatTemplateMsgsById($wechatTemplatePrams['id']);
- }
- /**
- * 获取推送模板消息列表
- */
- static function wechatTemplateMsgBydistributionChannelId($wechatTemplatePrams)
- {
- return WechatTemplateMsgs::wechatTemplateMsgsBydistributionChannelId($wechatTemplatePrams['distribution_channel_id']);
- }
- /**
- * 发送模板消息
- */
- static function add_template_task($wechatTemplateMsgs,$templateMsgs){
-
- try {
- $appid = $wechatTemplateMsgs['appid'];
- $template_id = $wechatTemplateMsgs['template_id'];
- $name = $wechatTemplateMsgs['name'];
- $send_time = $wechatTemplateMsgs['send_time'];
- $template_content = $wechatTemplateMsgs['template_content'];
- \Log::info('================== template_content');
- \Log::info($template_content);
- $redirect_url = $wechatTemplateMsgs['redirect_url'];
- $distribution_channel_id = $wechatTemplateMsgs['distribution_channel_id'];
- $remark = $wechatTemplateMsgs['remark'];
- $task_id = $wechatTemplateMsgs['id'];
- \Log::info('-----------------模板消息参数--------------');
- \Log::info($appid);
- \Log::info($wechatTemplateMsgs['distribution_channel_id']);
- \Log::info($wechatTemplateMsgs['subscribe_time']);
- \Log::info($wechatTemplateMsgs['sex']);
- \Log::info($wechatTemplateMsgs['balance']);
- \Log::info($wechatTemplateMsgs['category_id']);
- \Log::info($wechatTemplateMsgs['order_type']);
- //1,通过筛选得到条件符合的强关用户
- $skip = 0;
- while ( $skip <= 2500000) {
- \Log::info('-------------模板消息-----分页取强关用户,目前页数----------'.$skip);
- $users = ForceSubscribeService::forceUserCountByTemplatePrams($appid,$wechatTemplateMsgs['distribution_channel_id'],$wechatTemplateMsgs['subscribe_time'],$wechatTemplateMsgs['sex'],$wechatTemplateMsgs['balance'],$wechatTemplateMsgs['category_id'],$wechatTemplateMsgs['order_type'],$skip);
- \Log::info('-----------------实际发送模板消息用户数量-------------'.count($users));
- if(count($users)>0){
- for ($i=0; $i < count($users); $i++) {
- //2,循环用户发送模板消息
- //发送到最后一条时,将
- if ($i == count($users)-1) {
- $data = array();
- $data['statusstr'] = (time());
- $data['openid'] = $users[$i]['openid'];
- $data['appid'] = $appid;
- $data['template_id'] = $template_id;
- $templateSendContents = array();
- //3,处理前台传过来的json数据,格式化后转成指定格式的数组在json_encode
- // $templateContentArray = json_decode(str_replace(".DATA","",$template_content),true);
- // for ($j=0; $j < count($templateContentArray); $j++) {
- // $templateSendContents[] = $templateContentArray[$j];
- // }
- //4,通过RebitMQ发送模板消息
- // $data['template_content'] = $templateSendContents;
- $data['template_content'] =str_replace(".DATA","",$template_content);
- $data['type'] = 'last_task';// last_task,one_task
- $data['url'] = $redirect_url;
- $data['task_id'] = $task_id;
- $data['send_time'] = $send_time;
- $send_data=array(
- 'send_time'=>$send_time,
- 'data' => $data
- );
- $now_time = strtotime($send_time)-time();
- \Log::info('------------------!!!发送模板消息时间!!!----------');
- \Log::info($send_time);
- \Log::info($now_time);
- $delay = $now_time;
- try {
- \Log::info('------------------发送最后一条模板消息----------'.$task_id);
- $job = (new SendTemplate($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('send_template_list');
- dispatch($job);
- } catch (\Exception $e) {
- \Log::info($e->getMessage());
- }
- }else{
- $data = array();
- $data['statusstr'] = (time());
- $data['openid'] = $users[$i]['openid'];
- $data['appid'] = $appid;
- $data['template_id'] = $template_id;
- // $templateSendContents = array();
- // $templateContentArray = json_decode(str_replace(".DATA","",$template_content),true);
- // for ($j=0; $j < count($templateContentArray); $j++) {
- // $templateSendContents[] = $templateContentArray[$j];
- // }
- \Log::info('========================[[[[send template message]]]]====================');
- \Log::info(str_replace(".DATA","",$template_content));
- // $data['template_content'] = $templateSendContents;
- $data['template_content'] =str_replace(".DATA","",$template_content);
- $data['type'] = 'one_task';// last_task,one_task
- $data['url'] = $redirect_url;
- $data['task_id'] = $task_id;
- $data['send_time'] = $send_time;
- $send_data=array(
- 'send_time'=>$send_time,
- 'data' => $data
- );
- $now_time = strtotime($send_time)-time();
- \Log::info('------------------!!!发送模板消息时间!!!----------');
- \Log::info($send_time);
- \Log::info($now_time);
- $delay = $now_time;
- // v('delay:'.$delay);die();
- \Log::info('========================发送模板消息2222222===================='.$task_id);
- \Log::info($data['openid']);
- try {
- $job = (new SendTemplate($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('send_template_list');
- dispatch($job);
- } catch (\Exception $e) {
- \Log::info($e->getMessage());
- }
- }
- }
- }else{
- \Log::info('========================发送模板消息_没找到用户===================='.$task_id);
- break;
- }
- $skip += count($users);
- }
- $templateMsgs['user_num'] = $skip;
- $templateMsgs->save();
- $officialAccountArray = $templateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', '[{id:'.$templateMsgs['id'].'},{appid:'.$templateMsgs['appid'].'},{common_template_id:'.$templateMsgs['common_template_id'].'},{name:'.$templateMsgs['name'].'},{send_time:'.$templateMsgs['send_time'].'},{template_content:'.$templateMsgs['template_content'].'},{redirect_url:'.$templateMsgs['redirect_url'].'},{distribution_channel_id:'.$templateMsgs['distribution_channel_id'].'},{remark:'.$templateMsgs['remark'].'},{subscribe_time:'.$templateMsgs['subscribe_time'].'},{sex:'.$templateMsgs['sex'].'},{balance:'.$templateMsgs['balance'].'},{order_type:'.$templateMsgs['order_type'].'},{category_id:'.$templateMsgs['category_id'].'}]');
- } catch (\Exception $e) {
- \Log::info('========================循环用户发送模板消息报错====================');
- \Log::info($e->getMessage());
- }
-
- }
- /**
- * 发送模板消息
- */
- static function addWechatTemplateMsg($wechatTemplatePrams)
- {
- try {
- $appids = $wechatTemplatePrams['appid'];
- \Log::info('addWechatTemplateMsg:appid======'.$appids);
- // $wechatTemplatePrams['template_id'] = $wechatTemplatePrams['template_id'];
- // $wechatTemplatePrams['appid'] = $appidArray[$i];
- // $templateMsgs = WechatTemplateMsgs::create($wechatTemplatePrams);
- $appidArray = explode(',', $appids);
- for ($i=0; $i < count($appidArray); $i++) {
- $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($appidArray[$i],$wechatTemplatePrams['common_template_id']);
- if(empty($wechatTemplates)) {
- \Log::info('addWechatTemplateMsg:======未找到模板');
- // return 2;
- }else{
- $isSendTemplate = WechatTemplateMsgs::isSendTemplateAtSameTime($wechatTemplatePrams['distribution_channel_id'],$wechatTemplatePrams['appid'],$wechatTemplatePrams['send_time'],$wechatTemplates['template_id']);
- if (!empty($isSendTemplate)) {
- \Log::info('addWechatTemplateMsg已经发送过该模板消息');
- \Log::info($isSendTemplate['id']);
- \Log::info($isSendTemplate['template_id']);
- \Log::info($isSendTemplate['status']);
- \Log::info($isSendTemplate['del_flag']);
- return 3;
- }
- $wechatTemplatePrams['template_id'] = $wechatTemplates['template_id'];
- $wechatTemplatePrams['appid'] = $appidArray[$i];
- $wechatTemplatePrams['status'] = '1';
- $wechatTemplatePrams['del_flag'] = 0;
-
- $wechatTemplatePrams['user_num'] = 0;
- \Log::info('save_wechat_template:======');
- \Log::info($wechatTemplatePrams);
-
- $templateMsgs = WechatTemplateMsgs::create($wechatTemplatePrams);
- $officialAccountArray = $templateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplatePrams['id'].'},{appid:'.$wechatTemplatePrams['appid'].'},{common_template_id:'.$wechatTemplatePrams['common_template_id'].'},{name:'.$wechatTemplatePrams['name'].'},{send_time:'.$wechatTemplatePrams['send_time'].'},{template_content:'.$wechatTemplatePrams['template_content'].'},{redirect_url:'.$wechatTemplatePrams['redirect_url'].'},{distribution_channel_id:'.$wechatTemplatePrams['distribution_channel_id'].'},{remark:'.$wechatTemplatePrams['remark'].'},{subscribe_time:'.$wechatTemplatePrams['subscribe_time'].'},{sex:'.$wechatTemplatePrams['sex'].'},{balance:'.$wechatTemplatePrams['balance'].'},{order_type:'.$wechatTemplatePrams['order_type'].'},{category_id:'.$wechatTemplatePrams['category_id'].'}]');
- $wechatTemplatePrams['id'] = $templateMsgs['id'];
- \Log::info('send_template66666666666:======'.$wechatTemplatePrams['template_id']."\n");
- // WechatTemplateService::add_template_task($wechatTemplatePrams,$templateMsgs);
- // /**
- // * 通过Job方式发送模板消息-----queue
- // */
- // $job = (new TemplateMsgSendJob($wechatTemplatePrams))->delay(20);
- // dispatch($job);
- }
- }
- return 1;
-
- } catch (\Exception $e) {
- \Log::info("正式发送模板消息-更新日志:");
- \Log::info($e->getMessage());
-
- return 0;
- }
- }
- /**
- * 单个用户测试发送模板消息
- */
- static function testAddWechatTemplateMsg($wechatTemplatePrams)
- {
- \Log::info('testAddWechatTemplateMsg_start:');
- \Log::info($wechatTemplatePrams);
- // 测试链接加上域名
- $wechatTemplatePrams['redirect_url'] = TemplateCustomSendService::checkAddDomain($wechatTemplatePrams['distribution_channel_id'],$wechatTemplatePrams['redirect_url']);
-
- try {
- //1,获取指定的用户
- $appids = $wechatTemplatePrams['appid'];
-
- $appidArray = explode(',', $appids);
- for ($i=0; $i < count($appidArray); $i++) {
- $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($appidArray[$i],$wechatTemplatePrams['common_template_id']);
- if(empty($wechatTemplates)) {
- \Log::info('testAddWechatTemplateMsg_empty_wechat_template:'.$wechatTemplatePrams['distribution_channel_id']);
- return 2;
- }else{
- \Log::info('testAddWechatTemplateMsg_in:'.$wechatTemplatePrams['distribution_channel_id']);
-
- $forceSubscribeUserPram['uid'] = $wechatTemplatePrams['uid'];
- $forceSubscribeUserPram['appid'] = $appidArray[$i];
- $forceSubscribeUserPram['distribution_channel_id'] = $wechatTemplatePrams['distribution_channel_id'];
-
- $force_user = array();
- $temp_force_user = ForceSubscribeService::forceSubscribeUsersByUidAndAppidAndChannelId($forceSubscribeUserPram);
- \Log::info('temp_force_user');\Log::info($temp_force_user);
- if(count($temp_force_user) == 0){
- \Log::info('testAddWechatTemplateMsg_has_no_user:'.$wechatTemplatePrams['uid']);
- $direct_user = array('openid'=>$wechatTemplatePrams['uid']);
- $force_user[] = $direct_user;
- }else{
- $force_user = $temp_force_user;
- }
- \Log::info('force_user');\Log::info($force_user);
-
- if (count($force_user)>0) {
- for ($j=0; $j < count($force_user); $j++) {
- //2,测试循环用户发送客服消息
- $data = array();
- $data['openid'] = $force_user[$j]['openid'];
- $data['appid'] = $appidArray[$i];
- $data['template_id'] = $wechatTemplates['template_id'];
- \Log::info('testAddWechatTemplateMsg_openid:'.$data['openid']);
-
- // 此处用户昵称统一从接口拿,兼容openid
- $nickname = '';
- try{
- $userinfo = ForceSubscribeService::getUserInfo($data['appid'], $data['openid']);
- $nickname = isset($userinfo['nickname'])?$userinfo['nickname']:'';
- }catch(\Exception $e){
- \Log::info('testAddWechatTemplateMsg_getuserinfo_ept:openid:'.$data['openid'].' ept:'.$e->getMessage());
- }
-
- \Log::info('change_placeholder openid:'.$data['openid']);
- // 占位符替换
- $place_holder_params = array();
- $place_holder_params['nickname'] = $nickname;
- $wechatTemplatePrams['template_content'] = ForceSubscribeService::change_placeholder($wechatTemplatePrams['template_content'],$place_holder_params);
- $data['template_content'] = str_replace(".DATA","",$wechatTemplatePrams['template_content']);
- $data['url'] = $wechatTemplatePrams['redirect_url'];
- $data['type'] = 'last_task';
- $data['task_id'] = 3;
- $data['send_time'] = date("Y-m-d H:i:s");
- $send_data=array(
- 'send_time'=>date("Y-m-d H:i:s"),
- 'data' => $data
- );
- $delay = 0;
- \Log::info('========================[[[[test send template message]]]]====================');
- \Log::info(str_replace(".DATA","",$wechatTemplatePrams['template_content']));
- $job = (new SendTemplate($send_data))->onConnection('rabbitmq')->delay($delay)->onQueue('send_template_list');
- dispatch($job);
- }
-
- }
-
- \Log::info('testAddWechatTemplateMsg_end:'.$wechatTemplatePrams['distribution_channel_id']);
- }
- }
-
- return 1;
-
- } catch (\Exception $e) {
- \Log::info("测试发送模板消息-更新日志:");
- \Log::info($e->getMessage());
-
- return 0;
- }
-
- }
- /**
- * 增加模板
- */
- static function addWechatTemplate($wechatTemplatePrams)
- {
- try {
-
- $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($wechatTemplatePrams['appid'],$wechatTemplatePrams['common_template_id']);
- if(empty($wechatTemplates)) {
-
- $wechatTemplates['appid'] = $wechatTemplatePrams['appid'];
- $wechatTemplates['common_template_id'] = $wechatTemplatePrams['common_template_id'];
- $wechatTemplates['template_id'] = $wechatTemplatePrams['template_id'];
- WechatTemplates::create($wechatTemplates);
- return 1;
- }else{
- return 2;
-
- }
- } catch (\Exception $e) {
- // \Log("增加模板消息-更新日志:".$e);
-
- return 0;
- }
- }
-
- /**
- * 更新模板的template_id
- */
- static function updateWechatTemplateId($wechatTemplatePrams)
- {
-
- try {
-
- $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($wechatTemplatePrams['appid'],$wechatTemplatePrams['common_template_id']);
-
- if(!empty($wechatTemplates)) {
- \Log::info('updateWechatTemplate:old_template_id:'.$wechatTemplates['template_id'].' new_template_id:'.$wechatTemplatePrams['template_id']);
- // 更新映射模板
- WechatTemplates::updateWechatTemplateId($wechatTemplatePrams['appid'],$wechatTemplatePrams['common_template_id'],$wechatTemplatePrams['template_id']);
-
- WechatTemplateMsgs::updateWechatTemplateMsgsByTemplateId($wechatTemplatePrams['template_id'],$wechatTemplates['template_id']);
-
- return 1;
-
- }else{
- \Log::info('updateWechatTemplate_false: new_template_id:'.$wechatTemplatePrams['template_id']);
-
- return 2;
-
- }
-
- } catch (\Exception $e) {
- \Log::info('updateWechatTemplateId,ept::'.$e->getMessage());
-
- return 0;
-
- }
- return 1;
-
- }
- /**
- * 删除模板消息
- */
- static function delWechatTemplateMsg($wechatTemplatePrams)
- {
- try {
- $task_id = $wechatTemplatePrams['id'];
-
- $wechatTemplateMsgs = WechatTemplateMsgs::wechatTemplateMsgsById($wechatTemplatePrams['id']);
- if(!empty($wechatTemplateMsgs)) {
- if($wechatTemplateMsgs['status'] == '8'){
- \Log::info('该模板已经在发送状态,不允许编辑'.$wechatTemplatePrams['id']);
- return 4;
- }
- $wechatTemplateMsgs['status'] = '4';
- $wechatTemplateMsgs['del_flag'] = 1;
- $wechatTemplateMsgs->save();
- $officialAccountArray = $wechatTemplateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplateMsgs['id'].'},{appid:'.$wechatTemplateMsgs['appid'].'},{common_template_id:'.$wechatTemplateMsgs['common_template_id'].'},{name:'.$wechatTemplateMsgs['name'].'},{send_time:'.$wechatTemplateMsgs['send_time'].'},{template_content:'.$wechatTemplateMsgs['template_content'].'},{redirect_url:'.$wechatTemplateMsgs['redirect_url'].'},{distribution_channel_id:'.$wechatTemplateMsgs['distribution_channel_id'].'},{remark:'.$wechatTemplateMsgs['remark'].'},{subscribe_time:'.$wechatTemplateMsgs['subscribe_time'].'},{sex:'.$wechatTemplateMsgs['sex'].'},{balance:'.$wechatTemplateMsgs['balance'].'},{order_type:'.$wechatTemplateMsgs['order_type'].'},{category_id:'.$wechatTemplateMsgs['category_id'].'}]');
- // $templateMsgsArray = $wechatTemplateMsgs->toArray();
- // Redis::hmset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'],$templateMsgsArray);
- return 1;
- }else{
- return 2;
-
- }
- } catch (\Exception $e) {
- // \Log("模板消息状态-更新日志:".$e);
- return 0;
- }
- }
- /**
- * 更新模板消息或者客服消息状态(灵杰 wechat 调用)
- */
- static function updateWechatTemplateStatus($wechatTemplatePrams)
- {
- try {
- \Log::info('==========================更新 模板消息/客服消息推送状态'.$wechatTemplatePrams['id']);
- $task_id = $wechatTemplatePrams['id'];
- $taskidArray = explode('_', $task_id);
- if (count($taskidArray)>1) {
- if ($taskidArray[0] == 'custom') {
- \Log::info('updateWechatTemplateStatus:'.$task_id.' status:'.$wechatTemplatePrams['status']);
- $customSendMsgs = CustomSendMsgs::customSendMsgsByTaskid($task_id);
- if(!empty($customSendMsgs)) {
- $customSendMsgs['status'] = $wechatTemplatePrams['status'];
- $customSendMsgs->save();
- $officialAccountArray = $customSendMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$customSendMsgs['task_id'], 'wechat_msg', json_encode($officialAccountArray));
- // 如果是智能托管有批次号,更新下批次状态
- if($customSendMsgs['trusteeship'] == 1 && $wechatTemplatePrams['status'] == 3){
- \Log::info('try_update_batch_custom_send_msgs_status:'.$customSendMsgs['id']);
- $batchCustomMsg = BatchCustomSendMsgs::batchCustomMsgById($customSendMsgs['batch_no']);
- if(isset($batchCustomMsg->status) && $batchCustomMsg->status !=3 ){
- \Log::info('update_batch_custom_send_msgs_status:'.$customSendMsgs['id'].' batch_no:'.$customSendMsgs['batch_no']);
- BatchCustomSendMsgs::updateBatchCustomSendMsgStatusById($customSendMsgs['batch_no'],3,0);
- }else{
- \Log::info('already_update_batch_custom_send_msgs_status:'.$customSendMsgs['id'].' batch_no:'.$customSendMsgs['batch_no']);
- }
- }else{
- \Log::info('not_update_batch_custom_send_msgs_status:'.$customSendMsgs['id']);
- }
- return 1;
- }else{
- \Log::info('==========================客服消息 数据未找到'.$task_id);
- return 2;
- }
- }
-
- }else{
- \Log::info('==========================模板消息推送'.$task_id);
- $wechatTemplateMsgs = WechatTemplateMsgs::wechatTemplateMsgsById($wechatTemplatePrams['id']);
- if(!empty($wechatTemplateMsgs)) {
-
-
- $wechatTemplateMsgs['status'] = $wechatTemplatePrams['status'];
- $wechatTemplateMsgs->save();
- $officialAccountArray = $wechatTemplateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplateMsgs['id'].'},{appid:'.$wechatTemplateMsgs['appid'].'},{common_template_id:'.$wechatTemplateMsgs['common_template_id'].'},{name:'.$wechatTemplateMsgs['name'].'},{send_time:'.$wechatTemplateMsgs['send_time'].'},{template_content:'.$wechatTemplateMsgs['template_content'].'},{redirect_url:'.$wechatTemplateMsgs['redirect_url'].'},{distribution_channel_id:'.$wechatTemplateMsgs['distribution_channel_id'].'},{remark:'.$wechatTemplateMsgs['remark'].'},{subscribe_time:'.$wechatTemplateMsgs['subscribe_time'].'},{sex:'.$wechatTemplateMsgs['sex'].'},{balance:'.$wechatTemplateMsgs['balance'].'},{order_type:'.$wechatTemplateMsgs['order_type'].'},{category_id:'.$wechatTemplateMsgs['category_id'].'}]');
- return 1;
- }else{
- \Log::info('==========================模板消息 数据未找到'.$task_id);
- return 2;
- }
- }
-
- } catch (\Exception $e) {
- \Log::info($e->getMessage());
- return 0;
- }
- }
- /**
- * 更新模板消息状态(南哥)
- */
- static function wechatTemplateStatusChange($wechatTemplatePrams)
- {
- try {
- \Log::info('==========================修改 模板消息发送状态'.$wechatTemplatePrams['id']);
- $task_id = $wechatTemplatePrams['id'];
- $wechatTemplateMsgs = WechatTemplateMsgs::wechatTemplateMsgsById($wechatTemplatePrams['id']);
- if(!empty($wechatTemplateMsgs)) {
- if($wechatTemplateMsgs['status'] == '8'){
- \Log::info('该模板已经在发送状态,不允许编辑'.$wechatTemplatePrams['id']);
- return 4;
- }
- $wechatTemplateMsgs['status'] = $wechatTemplatePrams['status'];
- $wechatTemplateMsgs->save();
- $officialAccountArray = $wechatTemplateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplateMsgs['id'].'},{appid:'.$wechatTemplateMsgs['appid'].'},{common_template_id:'.$wechatTemplateMsgs['common_template_id'].'},{name:'.$wechatTemplateMsgs['name'].'},{send_time:'.$wechatTemplateMsgs['send_time'].'},{template_content:'.$wechatTemplateMsgs['template_content'].'},{redirect_url:'.$wechatTemplateMsgs['redirect_url'].'},{distribution_channel_id:'.$wechatTemplateMsgs['distribution_channel_id'].'},{remark:'.$wechatTemplateMsgs['remark'].'},{subscribe_time:'.$wechatTemplateMsgs['subscribe_time'].'},{sex:'.$wechatTemplateMsgs['sex'].'},{balance:'.$wechatTemplateMsgs['balance'].'},{order_type:'.$wechatTemplateMsgs['order_type'].'},{category_id:'.$wechatTemplateMsgs['category_id'].'}]');
- return 1;
- }else{
- \Log::info('==========================模板消息 数据未找到'.$task_id);
- return 2;
- }
- } catch (\Exception $e) {
- \Log($e);
- return 0;
- }
- }
- //判断1小时内是否有相同的模板消息插入过
- static function isSendTemplateAtSameTime($wechatTemplatePrams){
- return WechatTemplateMsgs::isSendTemplateAtSameTime($wechatTemplatePrams['distribution_channel_id'],$wechatTemplatePrams['appid'],$wechatTemplatePrams['send_time'],$wechatTemplatePrams['template_id']);
- }
- /**
- * 更新模板消息内容
- */
- static function updateWechatTemplateMsgById($wechatTemplatePrams)
- {
- try {
- $wechatTemplateMsgs = WechatTemplateMsgs::wechatTemplateMsgsById($wechatTemplatePrams['id']);
- if(!empty($wechatTemplateMsgs)) {
- if($wechatTemplateMsgs['status'] == '8'){
- \Log::info('该模板已经在发送状态,不允许编辑'.$wechatTemplatePrams['id']);
- return 4;
- }
- //先停止原来的模板,然后删除
- $wechatTemplateMsgs['status'] = '4';
- $wechatTemplateMsgs['del_flag'] = 1;
- $wechatTemplateMsgs->save();
- $officialAccountArray = $wechatTemplateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$wechatTemplateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplateMsgs['id'].'},{appid:'.$wechatTemplateMsgs['appid'].'},{common_template_id:'.$wechatTemplateMsgs['common_template_id'].'},{name:'.$wechatTemplateMsgs['name'].'},{send_time:'.$wechatTemplateMsgs['send_time'].'},{template_content:'.$wechatTemplateMsgs['template_content'].'},{redirect_url:'.$wechatTemplateMsgs['redirect_url'].'},{distribution_channel_id:'.$wechatTemplateMsgs['distribution_channel_id'].'},{remark:'.$wechatTemplateMsgs['remark'].'},{subscribe_time:'.$wechatTemplateMsgs['subscribe_time'].'},{sex:'.$wechatTemplateMsgs['sex'].'},{balance:'.$wechatTemplateMsgs['balance'].'},{order_type:'.$wechatTemplateMsgs['order_type'].'},{category_id:'.$wechatTemplateMsgs['category_id'].'}]');
- //创建新的模板
- $appids = $wechatTemplatePrams['appid'];
-
- $appidArray = explode(',', $appids);
- for ($i=0; $i < count($appidArray); $i++) {
- $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($appidArray[$i],$wechatTemplatePrams['common_template_id']);
- if(empty($wechatTemplates)) {
-
- }else{
- $wechatTemplatePrams['template_id'] = $wechatTemplates['template_id'];
- $wechatTemplatePrams['appid'] = $appidArray[$i];
- // $users = ForceSubscribeService::forceUserCountByTemplatePrams($appidArray[$i],$wechatTemplatePrams['distribution_channel_id'],$wechatTemplatePrams['subscribe_time'],$wechatTemplatePrams['sex'],$wechatTemplatePrams['balance'],$wechatTemplatePrams['category_id'],$wechatTemplatePrams['order_type']);
- $isSendTemplate = WechatTemplateMsgs::isSendTemplateAtSameTime($wechatTemplatePrams['distribution_channel_id'],$wechatTemplatePrams['appid'],$wechatTemplatePrams['send_time'],$wechatTemplates['template_id']);
- if (!empty($isSendTemplate)) {
- \Log::info('已经发送过该模板消息');
- \Log::info($isSendTemplate['id']);
- \Log::info($isSendTemplate['template_id']);
- \Log::info($isSendTemplate['status']);
- \Log::info($isSendTemplate['del_flag']);
- return 3;
- }
- $skip = 0;
- $userCount = 0;
- $wechatTemplatePrams['status'] = '1';
- $wechatTemplatePrams['user_num'] = 0;
- $wechatTemplatePrams['del_flag'] = 0;
- $templateMsgs = WechatTemplateMsgs::create($wechatTemplatePrams);
- $wechatTemplatePrams['id'] = $templateMsgs['id'];
- // $templateMsgsArray = $templateMsgs->toArray();
- // Redis::hmset('send_wechat_msg:task_id:'.$templateMsgs['id'],$templateMsgsArray);
- $officialAccountArray = $templateMsgs->toArray();
- Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
- // Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', '[{id:'.$wechatTemplatePrams['id'].'},{appid:'.$wechatTemplatePrams['appid'].'},{common_template_id:'.$wechatTemplatePrams['common_template_id'].'},{name:'.$wechatTemplatePrams['name'].'},{send_time:'.$wechatTemplatePrams['send_time'].'},{template_content:'.$wechatTemplatePrams['template_content'].'},{redirect_url:'.$wechatTemplatePrams['redirect_url'].'},{distribution_channel_id:'.$wechatTemplatePrams['distribution_channel_id'].'},{remark:'.$wechatTemplatePrams['remark'].'},{subscribe_time:'.$wechatTemplatePrams['subscribe_time'].'},{sex:'.$wechatTemplatePrams['sex'].'},{balance:'.$wechatTemplatePrams['balance'].'},{order_type:'.$wechatTemplatePrams['order_type'].'},{category_id:'.$wechatTemplatePrams['category_id'].'}]');
- // WechatTemplateService::add_template_task($wechatTemplatePrams,$templateMsgs);
- // /**
- // * 通过Job方式发送模板消息-----queue
- // */
- // $job = (new TemplateMsgSendJob($wechatTemplatePrams))->delay(20);
- // dispatch($job);
- }
- }
- return 1;
- }else{
-
- return 2;
- }
-
- } catch (\Exception $e) {
- // \Log("模板消息-更新日志:".$e);
- return 0;
-
- }
- }
- /**
- * 获取微信公告模板
- */
- static function wechatPublicTemplateList()
- {
- return WechatPublicTemplates::wechatPublicTemplateList();
- }
-
- /**
- * 搜索
- */
- static function searchWechatTemplateMsgs($param,$is_all=false)
- {
-
- return WechatTemplateMsgs::searchWechatTemplateMsgs($param,$is_all);
-
- }
- /**
- * 检测模板状态
- * 1、正常使用
- * 2、检测异常,已修复请重试
- * 3、模板被封,请等待解封
- * 4、模板分类错误,请修改分类至(IT科技->IT软件与服务、文体娱乐->文化|传媒),然后重新授权后再重试
- */
- static function checkTemplateStatus($appids,$common_template_id)
- {
-
- $result = ['code'=>1,'msg'=>''];
- if(!empty($appids)){
- foreach($appids as $appid){
- try {
- $timestamp = time();
- $params = array('gzh_app_id' => $appid,'common_template_id'=>$common_template_id, "timestamp" => $timestamp);
- $sign = get_sign($params);
-
- $resJson = self::getUserClient()->request("POST", "check_template_status",
- ['query' => ['gzh_app_id' => $appid,'common_template_id'=>$common_template_id, 'timestamp' => $timestamp, 'sign' => $sign], 'connect_timeout' => 10]
- )->getBody()->getContents();
- $resJson = object_to_array(json_decode($resJson));
- \Log::info('check_template_status_end,appid:'.$appid.' common_template_id:'.$common_template_id);
- \Log::info($resJson);
- $result = [
- 'code'=>$resJson['code'],
- 'msg'=>$resJson['msg']
- ];
- } catch (\Exception $e) {
- $result = [
- 'code'=>0,
- 'msg'=>'测试请求异常,请稍后重试'
- ];
- \Log::info('checkTemplateStatus_ept:'.$e->getMessage());
- }
- }
- }
-
- \Log::info('check_template_status_end:'.json_encode($result));
- return $result;
- }
-
- static function getUserClient()
- {
- return new Client(['base_uri' => env('MEDIA_API_BASE_URI')]);
- }
- }
|