82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace app\api\validate; | ||
|  | 
 | ||
|  | use app\api\logic\LoginLogic; | ||
|  | use app\common\basics\Validate; | ||
|  | use app\common\enum\NoticeEnum; | ||
|  | use app\common\model\Client_; | ||
|  | use app\common\model\shop\Shop; | ||
|  | use app\common\model\SmsLog; | ||
|  | use app\common\model\user\User; | ||
|  | use app\common\server\sms\Driver; | ||
|  | use think\facade\Db; | ||
|  | 
 | ||
|  | class SmsSend extends Validate | ||
|  | { | ||
|  |     protected $rule = [ | ||
|  |         'mobile'    => 'require|mobile|checkSms', | ||
|  |         'key'       => 'checkMobile', | ||
|  |     ]; | ||
|  |     protected $message = [ | ||
|  |         'mobile.require' => '请输入手机号码', | ||
|  |         'mobile.mobile' => '请输入正确的手机号码', | ||
|  |     ]; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //限制验证码发送频率
 | ||
|  |     protected function checkSms($value, $rule, $data) | ||
|  |     { | ||
|  |         $message_key = NoticeEnum::SMS_SCENE[$data['key']]; | ||
|  |         $send_time = SmsLog::where(['message_key' => $message_key, 'mobile' => $value, 'is_verify' => 0]) | ||
|  |             ->order('id desc') | ||
|  |             ->value('send_time'); | ||
|  |         //一分钟内不能频繁发送
 | ||
|  |         if ($send_time && $send_time + 60 > time()) { | ||
|  |             return '验证码发送频繁,请稍后在发送'; | ||
|  |         } | ||
|  |         return true; | ||
|  |     } | ||
|  | 
 | ||
|  |     //验证手机号
 | ||
|  |     protected function checkMobile($value, $rule, $data) | ||
|  |     { | ||
|  |         if($data['client'] == Client_::pc && $data['key'] == 'BGSJHM'){ | ||
|  |             $data['new_mobile'] =  $data['mobile']; | ||
|  |             $mobile = Db::name('user')->where(['id' => $data['user_id']])->value('mobile'); | ||
|  |             $data['mobile'] =  $mobile; | ||
|  |         } | ||
|  |         $user = User::where(['mobile' => $data['mobile'], 'del' => 0])->findOrEmpty(); | ||
|  |         switch ($value) { | ||
|  |             case 'ZCYZ':    //注册验证
 | ||
|  |             case 'BDSJHM':  //绑定手机号码
 | ||
|  |                 if (!$user->isEmpty()) { | ||
|  |                     return '该手机号码已存在'; | ||
|  |                 } | ||
|  |                 break; | ||
|  |             case 'YZMDL':   //验证码登录
 | ||
|  |                 if ($user->isEmpty()) { //账号不存在, 给他注册
 | ||
|  |                     $post = request()->post(); | ||
|  |                     $post['password'] = ''; | ||
|  |                     LoginLogic::register($post); | ||
|  |                 } | ||
|  |                 break; | ||
|  |             case 'ZHMM':    //找回密码
 | ||
|  |             case 'BGSJHM':  //变更手机号码
 | ||
|  |             case 'ZHZFMM':  // 找回支付密码
 | ||
|  |                 if ($user->isEmpty()) { | ||
|  |                     return '手机号码不存在'; | ||
|  |                 } | ||
|  |                 break; | ||
|  |             case 'SJSQYZ':  //商家入驻
 | ||
|  |                 $shop = Shop::where(['mobile' => $data['mobile'], 'del' => 0])->findOrEmpty(); | ||
|  |                 if(!$shop->isEmpty()) { | ||
|  |                     return '该手机号码已存在!'; | ||
|  |                 } | ||
|  |                 break; | ||
|  |             default: | ||
|  |                 return '场景错误'; | ||
|  |         } | ||
|  |         return true; | ||
|  |     } | ||
|  | } |