93 lines
3.3 KiB
PHP
93 lines
3.3 KiB
PHP
<?php
|
||
|
||
namespace app\command;
|
||
|
||
use app\common\model\MqLog;
|
||
use app\common\model\OrderInfo;
|
||
use app\common\model\RabbitMqConfig;
|
||
use app\model\ShopInfo;
|
||
use ba\Random;
|
||
use PhpAmqpLib\Connection\AMQPStreamConnection;
|
||
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 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 = RabbitMqConfig::$host;
|
||
$port = RabbitMqConfig::$port;
|
||
$user = RabbitMqConfig::$user;
|
||
$password = RabbitMqConfig::$password;
|
||
$queue = RabbitMqConfig::$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){
|
||
$date_time = date('Y-m-d H:i:s');
|
||
$data = $msg->body;
|
||
Log::info('MQ收到消息[申请新短信模版]--->' . $data . '--->' . $date_time . "\n");
|
||
// 发给队列
|
||
Redis::send('apply.sms.temp', $data);
|
||
$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;
|
||
}
|
||
|
||
}
|