p_ysk/app/queue/redis/ApplySmsTemp.php

116 lines
4.8 KiB
PHP

<?php
namespace app\queue\redis;
use app\model\AlibabaSms;
use app\model\ShopInfo;
use support\Log;
use support\think\Db;
use Webman\RedisQueue\Consumer;
// 申请新短信模版
class ApplySmsTemp implements Consumer
{
public $queue = 'apply.sms.temp';
public function consume($data)
{
Log::info('消息队列【申请新短信模版】接收到消息' . $data);
// 区分数据
$arr = explode(',', $data);
if(is_array($arr)) {
$shop_id = $arr[0];
$shop_template_id = $arr[1];
}else {
Log::info('apply.sms.temp数据格式错误');
return true;
}
try {
// 查询没有提交审核的模版
$temp = Db::table('sms_shop_template')->where(['id' => $shop_template_id])->where('status', 'in', [0, -2])->find();
if($temp) {
// 处理替换内容
$templateContent_arr = ShopInfo::handleSmsTemplates($temp['content']);
$templateContent_json = json_encode(ShopInfo::handleSmsTemplatesrule($temp['content']), 256);
$content = replace_placeholder_keys($temp['content'], $templateContent_arr);
// 待申请
if($temp['status'] == 0) {
$data = [
'templateName' => $temp['title'],
'templateContent' => $content,
'templateRule' => $templateContent_json,
'remark' => !empty($temp['scene_detail']) ? $temp['scene_detail'] : '',
'templateType' => 2,
'relatedSignName' => config('cons.sms_sign'),
];
// 调用接口
$res = AlibabaSms::CreateSmsTemplate($data);
$template_code = '';
$order_id = '';
if(!empty($res['TemplateCode'])) {
$template_code = $res['TemplateCode'];
}
if(!empty($res['OrderId'])) {
$order_id = $res['OrderId'];
}
if($res['Code'] == 'OK') {
$status = 1;
}else {
$status = -1;
}
$fail_msg = $res['Message'];
$update_data = [
'status' => $status,
'template_code' => $template_code,
'content_json' => $templateContent_json,
'reple_json' => json_encode($templateContent_arr, 256),
'fail_msg' => $fail_msg,
'order_id' => $order_id,
'update_time' => date('Y-m-d H:i:s'),
];
}elseif ($temp['status'] == -2) {
// 修改模版申请
$data = [
'templateCode' => $temp['template_code'],
'templateName' => $temp['title'],
'templateContent' => $content,
'templateRule' => $templateContent_json,
'remark' => !empty($temp['scene_detail']) ? $temp['scene_detail'] : '',
'templateType' => 2,
'relatedSignName' => config('cons.sms_sign'),
];
// 调用接口
$res = AlibabaSms::UpdateSmsTemplate($data);
if($res['Code'] == 'OK') {
$status = 1;
}else {
$status = -1;
}
$fail_msg = $res['Message'];
$update_data = [
'status' => $status,
'content_json' => $templateContent_json,
'reple_json' => json_encode($templateContent_arr, 256),
'fail_msg' => $fail_msg,
'update_time' => date('Y-m-d H:i:s'),
];
}
// 更改状态
$update_status = Db::table('sms_shop_template')->where(['id' => $temp['id']])->update($update_data);
Log::info('模版操作完毕数据库更新结果---》' . $update_status . '-->更新数据 . ' . json_encode($update_data));
}else {
Log::info('【' . $shop_template_id . '】未查询到需要审核的模版');
}
}catch (\Exception $e) {
Log::info('申请/修改短信模版出错' . $e->getMessage());
}
}
public function onConsumeFailure(\Throwable $e, $package)
{
Log::error("消息队列执行异常:" . $e->getMessage());
Log::info($e->getTraceAsString());
}
}