SmsCodeForm.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace merchant\forms;
  3. use Yii;
  4. use yii\base\Model;
  5. use common\helpers\RegularHelper;
  6. use addons\Merchants\common\enums\SmsUsageEnum;
  7. /**
  8. * Class SmsCodeForm
  9. * @package merchant\forms
  10. */
  11. class SmsCodeForm extends Model
  12. {
  13. /**
  14. * @var
  15. */
  16. public $mobile;
  17. /**
  18. * @var
  19. */
  20. public $usage;
  21. /**
  22. * @return array
  23. */
  24. public function rules()
  25. {
  26. return [
  27. [['mobile', 'usage'], 'required'],
  28. [['mobile'], 'isBeforeSend'],
  29. ['mobile', 'match', 'pattern' => RegularHelper::mobile(), 'message' => '请输入正确的手机号'],
  30. ];
  31. }
  32. /**
  33. * @return array
  34. */
  35. public function attributeLabels()
  36. {
  37. return [
  38. 'mobile' => '手机号码',
  39. 'usage' => '用途',
  40. ];
  41. }
  42. /**
  43. * @param $attribute
  44. */
  45. public function isBeforeSend($attribute)
  46. {
  47. if ($this->usage == SmsUsageEnum::REGISTER && Yii::$app->services->merchant->findByCondition(['mobile' => $this->mobile])) {
  48. $this->addError($attribute, '该手机号码已注册');
  49. }
  50. if (
  51. !in_array($this->usage, [SmsUsageEnum::REGISTER]) &&
  52. !Yii::$app->services->merchant->findByCondition(['mobile' => $this->mobile])
  53. ) {
  54. $this->addError($attribute, '该手机号码未注册');
  55. }
  56. }
  57. /**
  58. * @throws \yii\web\UnprocessableEntityHttpException
  59. */
  60. public function send()
  61. {
  62. $code = rand(1000, 9999);
  63. return Yii::$app->services->extendSms->send($this->mobile, $code, $this->usage);
  64. }
  65. }
粤ICP备19079148号