86], [['mobile', 'code', 'cx_mch_id', 'password', 'password_repeat'], 'required'], [['password','password_repeat'], 'string', 'min' => 6], [['password'],'match', 'pattern' => '/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[-#_*%$])^.{6,16}$/', 'message' => '密码需包含大小写字母以及字符殊符号 #-_*%$组成', ], ['password', 'compare', 'message' => '两次密码必须一致'], ]; } public function attributeLabels() { return [ 'mobile' => '手机号', 'mobile_prefix' => '手机号国家代码', 'code' => '验证码', 'password' => '密码', 'password_repeat' => '重复密码' ]; } public function reset() { if(!$this->validate()){ return $this->getModelError(); } $mobile_phone = EncryptHelper::encryptMobilePhone($this->mobile); if(!$mobile_phone){ return [ 'code' => 1, 'msg' => '系统内部异常' ]; } $user = User::findOne([ 'cx_mch_id' => $this->cx_mch_id, 'mobile_phone' => $mobile_phone, 'mobile_prefix' => $this->mobile_prefix, 'is_delete' => 0, 'status' => User::STATUS_NORMAL ]); if($user == null){ return [ 'code' => 1, 'msg' => '手机号未绑定任何账号', ]; } //验证码校验 $sms_sender = new SmsMsgHelper($this->cx_mch_id); $res = $sms_sender->validate($this->mobile, $this->code, SmsTpl::TYPE_MODIFY_PASSWORD, $this->mobile_prefix); if($res['code'] != 0){ return $res; } //重置密码 $user->password = \Yii::$app->security->generatePasswordHash($this->password); if(!$user->save()){ return $this->getModelError($user); } return [ 'code' => 0, 'msg' => '密码重置成功' ]; } }