142 lines
6.1 KiB
PHP
142 lines
6.1 KiB
PHP
<?php
|
||
|
||
namespace app\command;
|
||
|
||
use app\model\AlibabaSms;
|
||
use app\model\ShopInfo;
|
||
use support\Log;
|
||
use support\think\Db;
|
||
use Symfony\Component\Console\Command\Command;
|
||
use Symfony\Component\Console\Input\InputInterface;
|
||
use Symfony\Component\Console\Input\InputOption;
|
||
use Symfony\Component\Console\Input\InputArgument;
|
||
use Symfony\Component\Console\Output\OutputInterface;
|
||
use ZipArchive;
|
||
|
||
|
||
// 查询短信发送状态
|
||
class QuerySmsStatus extends Command
|
||
{
|
||
protected static $defaultName = 'querysmsstatus';
|
||
protected static $defaultDescription = 'querysmsstatus';
|
||
|
||
/**
|
||
* @return void
|
||
*/
|
||
protected function configure()
|
||
{
|
||
$this->addArgument('name', InputArgument::OPTIONAL, 'Name description');
|
||
}
|
||
|
||
/**
|
||
* 查询短信发送状态
|
||
* @param InputInterface $input
|
||
* @param OutputInterface $output
|
||
* @return int
|
||
*/
|
||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||
{
|
||
// 一条短信的价格
|
||
$sms_price = Db::table('sys_params')->where(['param_code' => 'sms_fee'])->column('param_value');
|
||
if(!$sms_price) {
|
||
Log::info('短信价格未定,停止发送');
|
||
return false;
|
||
}else {
|
||
$sms_price = $sms_price[0];
|
||
}
|
||
$push_resp = '';
|
||
// 生日有礼
|
||
$bir_list = Db::table('mk_birthday_gift_record')->where(['push_status' => 'await_push'])->select()->toArray();
|
||
if($bir_list) {
|
||
Log::info('生日有礼短信发送状态查询开始->' . json_encode($bir_list));
|
||
foreach ($bir_list as $k => $value) {
|
||
$data = [
|
||
'phoneNumber' => $value['phone'],
|
||
'bizId' => $value['biz_id'],
|
||
'sendDate' => date('Ymd'),
|
||
'pageSize' => 10,
|
||
'currentPage' => 1,
|
||
];
|
||
$res = AlibabaSms::QuerySendDetails($data);
|
||
try {
|
||
Db::startTrans();
|
||
if($res['Code'] == 'OK') {
|
||
if($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 3) {
|
||
$push_status = 'success';
|
||
// 扣掉余额
|
||
ShopInfo::moeny($sms_price, $value['main_shop_id'], '生日有礼短信发送,任务ID:' . $value['id'], 2);
|
||
}elseif ($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 2) {
|
||
$push_resp = $res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['ErrCode'];
|
||
$push_status = 'failed';
|
||
}elseif ($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 1) {
|
||
$push_status = 'await_push';
|
||
}
|
||
$update_data = [
|
||
'update_time' => date('Y-m-d H:i:s'),
|
||
'push_status' => $push_status,
|
||
'push_resp' => $push_resp,
|
||
];
|
||
$update_status = Db::table('mk_birthday_gift_record')->where(['id' => $value['id']])->update($update_data);
|
||
Db::commit();
|
||
Log::info('生日有礼短信查询完毕数据库更新结果---》[ID]' . $value['id'] . '更新结果-->' . $update_status . '-->更新数据 . ' . json_encode($update_data));
|
||
}
|
||
}catch (\Exception $e) {
|
||
Db::rollback();
|
||
Log::info('生日有礼短信查询错误---》[ID]' . $e->getMessage());
|
||
}
|
||
sleep(1);
|
||
}
|
||
}else {
|
||
Log::info('没有生日有礼短信状态查询的数据');
|
||
}
|
||
|
||
|
||
// 营销短信
|
||
$bir_list = Db::table('sms_push_event_record')->where(['status' => 1])->select()->toArray();
|
||
if($bir_list) {
|
||
Log::info('营销短信发送状态查询开始->' . json_encode($bir_list));
|
||
foreach ($bir_list as $k => $value) {
|
||
$data = [
|
||
'bizId' => $value['biz_id'],
|
||
'phoneNumber' => $value['user_phone'],
|
||
'sendDate' => date('Ymd'),
|
||
'pageSize' => 10,
|
||
'currentPage' => 1,
|
||
];
|
||
$res = AlibabaSms::QuerySendDetails($data);
|
||
try {
|
||
Db::startTrans();
|
||
if($res['Code'] == 'OK') {
|
||
if($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 3) {
|
||
$push_status = 2;
|
||
// 扣掉余额
|
||
ShopInfo::moeny($sms_price, $value['shop_id'], '营销短信发送,任务ID:' . $value['event_id'], 2);
|
||
}elseif ($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 2) {
|
||
$push_resp = $res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['ErrCode'];
|
||
$push_status = -1;
|
||
}elseif ($res['SmsSendDetailDTOs']['SmsSendDetailDTO'][0]['SendStatus'] == 1) {
|
||
$push_status = 1;
|
||
}
|
||
$update_data = [
|
||
'status' => $push_status,
|
||
'error' => $push_resp,
|
||
];
|
||
$update_status = Db::table('sms_push_event_record')->where(['id' => $value['id']])->update($update_data);
|
||
Db::commit();
|
||
Log::info('营销短信查询完毕数据库更新结果---》[ID]' . $value['id'] . '更新结果-->' . $update_status . '-->更新数据 . ' . json_encode($update_data));
|
||
}
|
||
}catch (\Exception $e) {
|
||
Db::rollback();
|
||
Log::info('短信查询错误---》[ID]' . $e->getMessage());
|
||
}
|
||
|
||
sleep(1);
|
||
}
|
||
}else {
|
||
Log::info('没有营销短信状态查询的数据');
|
||
}
|
||
return self::SUCCESS;
|
||
}
|
||
|
||
}
|