106 lines
3.8 KiB
PHP
106 lines
3.8 KiB
PHP
<?php
|
||
|
||
namespace app\command;
|
||
|
||
use app\common\model\RabbitMqConfig;
|
||
use PhpAmqpLib\Connection\AMQPStreamConnection;
|
||
use Symfony\Component\Console\Command\Command;
|
||
use Symfony\Component\Console\Input\InputInterface;
|
||
use Symfony\Component\Console\Input\InputArgument;
|
||
use Symfony\Component\Console\Output\OutputInterface;
|
||
use support\Log;
|
||
use Webman\RedisQueue\Redis;
|
||
|
||
// 申请新短信模版/营销短信发送
|
||
class ApplySmsTemp extends Command
|
||
{
|
||
protected static $defaultName = 'applysmstemp';
|
||
protected static $defaultDescription = 'applysmstemp';
|
||
|
||
/**
|
||
* @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
|
||
{
|
||
|
||
// $str = '亲爱的${用户昵称}您好,${店铺名称}祝您生日快乐!感谢您一直的陪伴。为您准备了${数量}张超值优惠券,已放入账户,愿我们的礼物能为您增添一份喜悦。拒收请回复R';
|
||
// $templateContent_arr = ShopInfo::handleSmsTemplates($str);
|
||
// $a = '{"店铺名称":"火锅店","用户昵称":"嘿嘿","数量":"123"}';
|
||
// p(replace_json_keys($a, json_encode($templateContent_arr, 256), []));
|
||
// $t_str = replace_placeholder_keys($str, $templateContent_arr);
|
||
// p($templateContent_arr, $t_str);
|
||
// $stortime = strtotime('2025-10-16 19:03:00');
|
||
// \support\Redis::setEx('expired:sms:9995', $stortime - time(), 1);
|
||
// Log::info('定时发送,已存入redis');
|
||
// p(123123);
|
||
$host = config('cons.mq.host');
|
||
$port = config('cons.mq.port');
|
||
$user = config('cons.mq.user');
|
||
$password = config('cons.mq.password');
|
||
$queue = config('cons.mq.queue_t') . '-apply.sms.temp';
|
||
|
||
// 防止空闲时间断线必须设置心跳
|
||
$connection = new AMQPStreamConnection($host, $port, $user, $password,
|
||
'/',
|
||
false,
|
||
'AMQPLAIN',
|
||
null,
|
||
'en_US',
|
||
60,
|
||
60,
|
||
null,
|
||
false,
|
||
30
|
||
);
|
||
$rabbit_channel = $connection->channel();
|
||
$rabbit_channel->queue_declare($queue, false, true, false, false, false, [
|
||
// 'x-message-ttl' => ['I', 180000]
|
||
]);
|
||
|
||
$callback = function ($msg) use ($queue){
|
||
$data = $msg->body;
|
||
Log::info('MQ收到消息[申请新短信模版/营销短信发送/微信模版消息]--->' . $data . "\n");
|
||
$arr = explode(',', $data);
|
||
if(isset($arr[2])) {
|
||
$type = $arr[2];
|
||
if($type == 'applySmsTemp') {
|
||
// 发给队列 短信模版审核
|
||
$a = Redis::send('apply.sms.temp', $data);
|
||
Log::info('消息队列投递结果----》' . $a);
|
||
}elseif ($type == 'sendMarkSms') {
|
||
// 发给队列 营销短信发送
|
||
Redis::send('send.mark.sms', $data);
|
||
}elseif ($type == 'sendWechatTemp') {
|
||
// 发给队列 发送微信模版消息
|
||
Redis::send('send.wechat.temp', $data);
|
||
}
|
||
}else {
|
||
Log::info('MQ收到消息[申请新短信模版/营销短信发送/微信模版消息]格式错误');
|
||
}
|
||
|
||
|
||
|
||
|
||
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
|
||
};
|
||
$rabbit_channel->basic_consume($queue, '', false, false, false, false, $callback);
|
||
while ($rabbit_channel->is_consuming()) {
|
||
$rabbit_channel->wait();
|
||
}
|
||
$rabbit_channel->close();
|
||
$connection->close();
|
||
return self::SUCCESS;
|
||
}
|
||
|
||
}
|