1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Created by: PhpStorm
- * User: lytian
- * Date: 2020/2/25
- * Time: 14:22
- */
- namespace app\admin\command;
- use think\console\Command;
- use think\console\Input;
- use think\console\Output;
- use think\Log;
- use think\Model;
- use think\Request;
- class MessageDispatch extends Command
- {
- /**
- * @var Model
- */
- private $messageModel = null;
- private $earlyTime = 7200;
- protected function configure()
- {
- $this->setName('messageDispatch')
- ->setDescription('高级群发之创建渠道消息');
- }
- protected function execute(Input $input, Output $output)
- {
- Request::instance()->module('admin'); //cli模式下无法获取到当前的项目模块,手动指定一下
- $this->messageModel = model("SendChannelMessage");
- //待处理消息 10分钟前进行素材处理
- $stime = time();
- $maps = [
- 'send_time' => ['<=', $stime+$this->earlyTime],
- 'send_status' => ['eq', 1],
- 'message_status' => ['eq', 1],
- ];
- $messages = model("SendMessage")->where($maps)->select();
- if ($messages) {
- foreach ($messages as $message) {
- $channelIds = array_unique(array_filter(explode(',', $message['subscription_ids'])));
- if ($channelIds) {
- foreach ($channelIds as $channelId) {
- //判断消息是否已经存在
- $data = [
- 'mass_id' => $message['id'],
- 'channel_id' => $channelId,
- 'type' => $message['message_type'],
- 'message_content' => '',
- 'wx_media_id' => '',
- 'send_time' => $message['send_time'],
- 'media_status' => 0,
- 'send_status' => 0,
- 'media_updatetime' => 0,
- 'createtime' => $stime,
- 'updatetime' => $stime,
- 'version' => 0,
- 'amount' => 0
- ];
- $channelMessageId = $this->messageModel->allowField(true)->insertGetId($data);
- if ($channelMessageId == false) {
- Log::error("渠道消息创建失败 error: {$this->messageModel->getError()}");
- }
- }
- //更新状态
- model("SendMessage")->update(['send_status' => 2], ['id' => $message['id']]);
- } else {
- model("SendMessage")->update(['message_status' => 2], ['id' => $message['id']]);
- Log::error("渠道消息创建失败 error: 服务号为空");
- }
- }
- }
- }
- }
|