123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- namespace App\Modules\OfficialAccount\Services;
- use App\Modules\Book\Services\BookConfigService;
- use App\Modules\OfficialAccount\Models\BatchCustomSendMsgs;
- class BatchCustomMsgService
- {
- /**
- * 通过id获取关键字
- */
- static function batchCustomMsgById($prams)
- {
- return BatchCustomSendMsgs::batchCustomMsgById($prams['id']);
- }
-
- /**
- * 更新状态
- */
- static function updateBatchCustomSendMsgStatusById($prams)
- {
- return BatchCustomSendMsgs::updateBatchCustomSendMsgStatusById($prams['id'],$prams['status'],$prams['del_flag']);
- }
-
- /**
- * 获取批次客服消息列表
- */
- static function batchCustomMsgList()
- {
- return BatchCustomSendMsgs::batchCustomMsgList();
- }
-
- //判断1小时内是否有相同的客服消息插入过
- static function isSendCustomerAtSameTime($customerPrams){
-
- return BatchCustomSendMsgs::isSendCustomerAtSameTime($customerPrams['distribution_channel_id'],$customerPrams['appid'],$customerPrams['send_time']);
- }
-
- //判断1小时内是否有相同的客服消息插入过
- static function isSendCustomerAtSameTimeSex($customerPrams){
-
- return BatchCustomSendMsgs::isSendCustomerAtSameTimeSex($customerPrams['send_time'],$customerPrams['sex']);
- }
-
-
- /**
- * 发送客服消息
- */
- static function addBatchCustomSendMsgs($customSendMsgsPrams,&$batch_no)
- {
- \Log::info('addBatchCustomSendMsgs_start');
-
- try {
- //先判断在发送时间段1小时以内,有没有发起过相同的模板消息,如果有发送过,就提示用户已经创建过相同模板消息,不创建新的模板消息
- //$isSendCustomer = BatchCustomSendMsgs::isSendCustomerAtSameTimeSex($customSendMsgsPrams['send_time'],$customSendMsgsPrams['sex']);
- $isSendCustomer = BatchCustomSendMsgs::isSendCustomerAtSameTimeSexName($customSendMsgsPrams['send_time'],$customSendMsgsPrams['sex'],$customSendMsgsPrams['name']);
- if (!empty($isSendCustomer)) {
- \Log::info('addBatchCustomSendMsgs already_send'.json_encode($customSendMsgsPrams));
- return 4;
- }
-
- $batchCustomSendMsgsPrams = array();
- $batchCustomSendMsgsPrams['name'] = $customSendMsgsPrams['name'];
- $batchCustomSendMsgsPrams['send_time'] = $customSendMsgsPrams['send_time'];
- $batchCustomSendMsgsPrams['content'] = $customSendMsgsPrams['content'];
- $batchCustomSendMsgsPrams['redirect_url'] = $customSendMsgsPrams['redirect_url'];
- $batchCustomSendMsgsPrams['sex'] = $customSendMsgsPrams['sex'];
- $batchCustomSendMsgsPrams['subscribe_time'] = $customSendMsgsPrams['subscribe_time'];
- $batchCustomSendMsgsPrams['balance'] = $customSendMsgsPrams['balance'];
- $batchCustomSendMsgsPrams['order_type'] = $customSendMsgsPrams['order_type'];
- $batchCustomSendMsgsPrams['category_id'] = $customSendMsgsPrams['category_id'];
- $batchCustomSendMsgsPrams['status'] = $customSendMsgsPrams['status'];
- $batchCustomSendMsgsPrams['del_flag'] = 0;
- $batch_create_res = BatchCustomSendMsgs::create($customSendMsgsPrams);
- $batch_no = isset($batch_create_res->id)?$batch_create_res->id:'';
- \Log::info('$batch_create_res:'.$batch_no);
- return 1;
-
- } catch (\Exception $e) {
- \Log::info('addBatchCustomSendMsgs_ept:'.$e->getMessage());
- return 0;
- }
-
- }
-
- /**
- * 获取批次客服消息列表
- */
- static function autoSendTrusteeShipCustomerMsg($sex)
- {
- \Log::info('autoSendTrusteeShipCustomerMsg:'.$sex);
-
- // 每天晚上19点
- $customMsgPrams['send_time'] = date('Y-m-d 19:00:00');
- $customMsgPrams['name'] = '自动发送托管客服消息:'.$customMsgPrams['send_time'];
-
- $books = [];
- // 男生
- if($sex == 'a'){
- $books = BookConfigService::getTrusteeShipChannelBook('','男频', 4);
- }
- // 女生
- else{
- $books = BookConfigService::getTrusteeShipChannelBook('','女频', 4);
- }
- $books = CustomMsgService::get_book_full_infos($books,$sex);
-
- // 随机推送内容
- $customMsgPrams['content'] = json_encode($books);
- $customMsgPrams['redirect_url'] = '';
- $customMsgPrams['sex'] = $sex;
- $customMsgPrams['subscribe_time'] = 'g';// 关注1天前,有过交互的
- $customMsgPrams['trusteeship'] = '1'; // 托管
- $customMsgPrams['balance'] = 'z';
- $customMsgPrams['order_type'] = 'z';
- $customMsgPrams['category_id'] = 'z';
- $customMsgPrams['status'] = '1';
- $customMsgPrams['is_show_list'] = '0';// 分销界面不展示
- \Log::info($customMsgPrams);
- $batch_no = '';
-
- $batch_res = BatchCustomMsgService::addBatchCustomSendMsgs($customMsgPrams,$batch_no);
- \Log::info('batch_res:'.$batch_res.' batch_no:'.$batch_no);
- if($batch_res == 1){
- $customMsgPrams['batch_no'] = $batch_no;
- $official_accounts = OfficialAccountService::getTrusteeshipOfficialAccounts();
- \Log::info('getTrusteeshipOfficialAccounts');
- \Log::info($official_accounts);
- // return true;
- foreach($official_accounts as $official_account){
- $customMsgPrams['appid'] = $official_account->appid;
- $customMsgPrams['distribution_channel_id'] = $official_account->distribution_channel_id;
- \Log::info('getTrusteeshipOfficialAccounts:appid:'.$official_account->appid.' distribution_channel_id:'.$official_account->distribution_channel_id);
-
- //先判断在发送时间段1小时以内,有没有发起过相同的模板消息,如果有发送过,就提示用户已经创建过相同模板消息,不创建新的模板消息
- $isSendCustomer = CustomMsgService::isSendCustomerAtSameTimeAndSex($customMsgPrams);
- if (!empty($isSendCustomer)) {
- \Log::info('isSendCustomerAtSameTime already_send:appid:'.$customMsgPrams['appid'].' distribution_channel_id:'.$customMsgPrams['distribution_channel_id']);
- continue;
- }
- $customMsgService = CustomMsgService::addCustomSendMsgs($customMsgPrams);
- }
- }
- }
- }
|