services->setting->addons->get($mall_id, CommunityEnum::ADDONS_NAME, 'basic'); if (!empty($config['is_enable'])) { $mall_ids[] = $mall_id; } } if (!empty($mall_ids)) { foreach (CommunityNotice::find()->where(['mall_id' => $mall_ids]) ->andWhere(['<=', 'send_at', time()]) ->andWhere(['status' => StatusEnum::ENABLED])->each() as $item) { $item->status = StatusEnum::DISABLED; if ($item->save()) { // 入列 \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, [ 'id' => $item->id, ], self::class, 'async_handle'); } } } } public function async_handle(array $params) { if (empty($params)) return; $data = CommunityNotice::getOne([ ['id' => $params['id']] ]); if (empty($data)) return; try { $sms = new Sms($data->mall_id, $data->gateway); $message = new SmsMessage($data->content); // 接受角色不一样,有可能是买家,有可能是团长 $mobile = new PhoneNumber($data->mobile, $data->area_code); $resp = $sms->easySms->send($mobile, $message); $data->status = StatusEnum::DELETE; } catch (\Throwable $e) { $err = [ 'file' => $e->getFile(), 'msg' => $e->getMessage(), 'line' => $e->getLine() ]; } $data->res = [ 'resp' => $resp ?? [], 'err' => $err ?? [], ]; if (!$data->save() || !empty($err)) { \Yii::error(__METHOD__ . " -> " . $data->getErrorMessage()); return false; } return true; } }