Send.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace plugin\ali_sms\validate;
  3. //发送手机短信验证器
  4. use app\service\ConfServiceFacade;
  5. use plugin\ali_sms\model\AliSms;
  6. use think\Validate;
  7. class Send extends Validate
  8. {
  9. //数组顺序就是检测的顺序,比如这里,会先检测code验证码的正确性
  10. protected $rule = [
  11. 'mobile' => 'require|checkMobile:',
  12. 'event' => 'require|checkEvent:',
  13. ];
  14. //定义内置方法检验失败后返回的字符
  15. protected $message = [
  16. 'mobile.require' => '手机号码不能为空',
  17. 'event.require' => '事件名称不能为空',
  18. ];
  19. //自定义密码检验方法
  20. protected function checkMobile($mobile){
  21. $smsModel = new AliSms();
  22. $lastSms = $smsModel->where('mobile','=',$mobile)->order('id','desc')->find();
  23. if($lastSms){
  24. if( time() - strtotime($lastSms['create_time'] ) < ConfServiceFacade::get('plugin.ali_sms.intervalTime') ){
  25. return '发送频繁';
  26. }else{
  27. return true;
  28. }
  29. }else{
  30. return true;
  31. }
  32. }
  33. //事件名称参数检测
  34. protected function checkEvent($event){
  35. $events = array_keys(ConfServiceFacade::get('plugin.ali_sms.template'));
  36. return !in_array($event,$events) ? '事件名称参数错误' : true;
  37. }
  38. }