MobileLogin.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace addons\TinyShop\api\modules\v1\forms;
  3. use Yii;
  4. use yii\base\Model;
  5. use common\enums\MemberTypeEnum;
  6. use common\helpers\RegularHelper;
  7. use common\models\member\Member;
  8. use common\enums\SmsUsageEnum;
  9. use addons\TinyShop\common\enums\AccessTokenGroupEnum;
  10. use yii\web\UnprocessableEntityHttpException;
  11. /**
  12. * Class MobileLogin
  13. * @package api\modules\v1\models
  14. * @author jianyan74 <751393839@qq.com>
  15. */
  16. class MobileLogin extends Model
  17. {
  18. /**
  19. * @var
  20. */
  21. public $mobile;
  22. /**
  23. * @var
  24. */
  25. public $code;
  26. /**
  27. * @var
  28. */
  29. public $group;
  30. /**
  31. * @var
  32. */
  33. public $promoter_code;
  34. /**
  35. * @var
  36. */
  37. protected $_user;
  38. /**
  39. * @var Member
  40. */
  41. public $_parent;
  42. /**
  43. * @return array
  44. */
  45. public function rules()
  46. {
  47. return [
  48. [['mobile', 'code', 'group'], 'required'],
  49. ['code', '\common\models\validators\SmsCodeValidator', 'usage' => SmsUsageEnum::LOGIN],
  50. ['code', 'filter', 'filter' => 'trim'],
  51. ['promoter_code', 'promoCodeVerify'],
  52. ['mobile', 'match', 'pattern' => RegularHelper::mobile(), 'message' => '请输入正确的手机号'],
  53. ['group', 'in', 'range' => AccessTokenGroupEnum::getKeys()]
  54. ];
  55. }
  56. /**
  57. * @return array
  58. */
  59. public function attributeLabels()
  60. {
  61. return [
  62. 'mobile' => '手机号码',
  63. 'code' => '验证码',
  64. 'group' => '组别',
  65. ];
  66. }
  67. /**
  68. * 获取用户信息
  69. *
  70. * @return mixed|null|static
  71. */
  72. public function getUser()
  73. {
  74. if ($this->_user == false) {
  75. $this->_user = Yii::$app->services->member->findByCondition([
  76. 'mobile' => $this->mobile,
  77. 'type' => MemberTypeEnum::MEMBER,
  78. ]);
  79. }
  80. return $this->_user;
  81. }
  82. /**
  83. * @param $attribute
  84. * @throws UnprocessableEntityHttpException
  85. */
  86. public function promoCodeVerify($attribute)
  87. {
  88. if ($this->promoter_code && $this->promoter_code != 'undefined') {
  89. $this->_parent = Yii::$app->services->member->findByPromoterCode($this->promoter_code);
  90. if (!$this->_parent) {
  91. throw new UnprocessableEntityHttpException('找不到推广员');
  92. }
  93. }
  94. }
  95. /**
  96. * @return Member
  97. */
  98. public function getParent()
  99. {
  100. return $this->_parent;
  101. }
  102. }
粤ICP备19079148号