| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- namespace addons\LuckyGroup\common\logic\notify;
- use addons\LuckyGroup\common\models\LuckyGroupOrder;
- use addons\LuckyGroup\common\enums\LuckyGroupEnum;
- use addons\LuckyGroup\common\logic\notify\SmsMessage;
- use common\enums\StatusEnum;
- use common\helpers\FormatHelper;
- use common\helpers\sms\Sms;
- use common\models\common\MallSetting;
- use common\models\order\Order;
- use common\models\user\User;
- use common\traits\ErrorTrait;
- use common\enums\RabbitMqEnum;
- use Overtrue\EasySms\PhoneNumber;
- use yii\helpers\Json;
- use Exception;
- /**
- * Class Notify
- * @Author: hua
- * @DateTime: 2021/10/18 9:39
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @package common\logic\notify
- */
- class Notify
- {
- use ErrorTrait;
- /**
- * @Author: hua
- * @DateTime: 2021/10/18 9:57
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $order_info
- * @return bool
- */
- public function notify($order_info)
- {
- try {
- $order = LuckyGroupOrder::findOne(['order_no' => $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));
- }
- }
- }
|