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;
 | |
|     }
 | |
| } |