SmsController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace backend\modules\common\controllers;
  3. use backend\models\AdminRole;
  4. use backend\controllers\BaseController;
  5. use common\helpers\sms\Sms;
  6. use common\models\backend\Menu;
  7. use common\models\rbac\AuthItem;
  8. use common\models\rbac\AuthItemChild;
  9. use common\models\rbac\AuthRole;
  10. use Yii;
  11. /**
  12. * 短信服务
  13. *
  14. * @Author zmz
  15. * @DateTime 2022-10-24 10:29:54
  16. * @copyright: Copyright (c) 2022 广东七件事集团
  17. */
  18. class SmsController extends BaseController
  19. {
  20. /**
  21. * 发送短信验证码
  22. * @Author zmz
  23. * @DateTime 2022-10-24 10:29:54
  24. * @copyright: Copyright (c) 2022 广东七件事集团
  25. * @throws
  26. * @return void
  27. */
  28. public function actionSend()
  29. {
  30. $params = Yii::$app->request->post();
  31. $res = Yii::$app->services->validate->validate($params, [
  32. [['mobile'], 'required', 'message' => '请输入手机号码'],
  33. [['mobile','area_code','mall_id'], 'integer'],
  34. [['sms_type'], 'string'],
  35. [['valid_time'], 'integer'], //有效期:分钟
  36. ]);
  37. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  38. $area_code = '';// 初始化区号
  39. $gateways = 'domestic';// 默认国内短信
  40. // 检测是登录并且区号不为空则使用国际短信
  41. if (!empty($this->user) && !empty($this->user->area_code)) {
  42. $gateways = 'international';
  43. $area_code = $this->user->area_code;
  44. }
  45. // 判断是否有区号
  46. if (!empty($params['area_code']) && $params['area_code'] != 86) {
  47. $gateways = 'international';
  48. $area_code = $params['area_code'];
  49. }
  50. $sms = new Sms($params['mall_id'], $gateways);
  51. Sms::$validityMinutes = $params['valid_time'] ?? 60; //60分钟内有效
  52. try {
  53. if ($sms->sendCaptcha($params['mobile'], $area_code,$params['sms_type']) === false) return $this->error('发送失败');
  54. }catch (\Exception $e){
  55. return $this->error($e->getMessage());
  56. }
  57. return $this->success('发送成功');
  58. }
  59. }