116 lines
4.8 KiB
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());
|
|
}
|
|
|
|
} |