$order_info['order_no']]); $res = LuckyGroupOrder::pay($order, $order_info['pay_type']); if ($res === false) throw new Exception(Order::getStaticError()); return true; } catch (Exception $e) { \Yii::error('addons\LuckyGroup\common\logic\notify->notify;Exception'.$e->getMessage().$e->getFile().$e->getLine()); \Yii::error('addons\LuckyGroup\common\logic\notify->notify'.json_encode($order_info)); echo $e->getMessage(); $this->setStaticError($e->getMessage()); return false; } } /** * @param array $params * @return void * @throws \Exception */ public function send(array $params) { \Yii::$app->custom->logs(__METHOD__ . "幸运拼团发送短信 " . Json::encode($params)); \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $params, self::class, 'async_handle'); } public function async_handle($params) { if (empty($params['id'])) return; try { $order = LuckyGroupOrder::find() ->where(['id' => $params['id'], 'status' => StatusEnum::ENABLED]) ->one(); if (empty($order) || !in_array($order->group_status, [LuckyGroupEnum::GROUP_SUCCESS, LuckyGroupEnum::GROUP_FAIL])) { return; } $sms_key = LuckyGroupEnum::SMS_KEY_SUCCESS; if ($order->group_status == LuckyGroupEnum::GROUP_FAIL) { $sms_key = LuckyGroupEnum::SMS_KEY_FAIL; } //获取主商城短信配置 $mall_config = MallSetting::getConfByGroup($order->mall_id, ['notice_sms'], true); $mall_sms = $mall_config['notice_sms']['platform']['value']; if ($mall_sms != 'aliyun') $sms_key = $sms_key.'_'.$mall_sms; $sms = \Yii::$app->services->setting->addons->get($order->mall_id, LuckyGroupEnum::ADDONS_NAME, "sms.$sms_key") ?? '[]'; $sms_config = !empty($sms) ? Json::decode($sms) : null; $sms_config = $sms_config['data'] ?? null; if (empty($sms_config) || empty($sms_config['template_id']) || empty($sms_config['content'])) { \Yii::error(__METHOD__ . " 未配置短信模板 {$params['id']}"); return true; } $user = User::find() ->where([ 'id' => $order->user_id ]) ->select('id,mobile,area_code') ->one(); $mobile = $user->mobile; $sms_message_attr = [ 'content' => $sms_config['content'], 'template' => $sms_config['template_id'], 'data' => [], 'mall_sms' => $mall_sms, ]; $area_code = '86';// 初始化区号 $gateways = 'domestic';// 默认国内短信 // 检测是登录并且区号不为空则使用国际短信 if (!empty($user->area_code) && $user->area_code != $area_code) { $gateways = 'international'; $area_code = $user->area_code; } $this->sendSms([ 'mall_id' => $order->mall_id, 'area_code' => $area_code, 'mobile' => $mobile, 'gateways' => $gateways, 'content' => $sms_message_attr, ]); return true; } catch (\Exception $e) { var_dump($e->getMessage(), $e->getFile(), $e->getLine()); \Yii::error(FormatHelper::exception($e, __METHOD__)); \Yii::$app->custom->logs(__METHOD__ . "幸运拼团发送短信失败 " . $e->getMessage()); return false; } } public function sendSms($data) { try { $sms = new Sms($data['mall_id'], $data['gateways']); $message = new SmsMessage($data['content']); $mobile = new PhoneNumber($data['mobile'], $data['area_code']); if ($message->mall_sms != 'qcloud') { $resp = $sms->easySms->send($mobile, $message); } else { $resp = $sms->easySms->send($data['mobile'], $message); } return true; } catch (\Throwable $e) { // $exceptions = $e->getExceptions(); // foreach($exceptions as $ex) { // echo"错误类型: " . get_class($ex)."\n"; echo"错误信息:".$ex->getMessage()."\n"; // } $err = [ 'file' => $e->getFile(), 'msg' => $e->getMessage(), 'line' => $e->getLine() ]; \Yii::$app->custom->logs(__METHOD__ . "幸运拼团发送短信失败 " . Json::encode($err)); } } }