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: 服务号为空"); } } } } }