Sms.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace app\common\model\user;
  3. use app\common\library\sms\Driver as SmsDriver;
  4. use app\common\model\BaseModel;
  5. use app\common\model\settings\Setting as SettingModel;
  6. /**
  7. * 短信模型
  8. */
  9. class Sms extends BaseModel
  10. {
  11. protected $pk = 'sms_id';
  12. protected $name = 'sms';
  13. /**
  14. * 短信发送
  15. */
  16. public function send($mobile, $sence = 'login')
  17. {
  18. if (empty($mobile)) {
  19. $this->error = '手机号码或会员号不能为空';
  20. return false;
  21. }
  22. $smsConfig = SettingModel::getItem('sms', self::$app_id);
  23. $template_code = $smsConfig['engine'][$smsConfig['default']];
  24. $send_template = '';
  25. if ($sence == 'login') {
  26. $send_template = $template_code['template_code'];
  27. if (empty($send_template)) {
  28. $this->error = '短信登录未开启';
  29. return false;
  30. }
  31. $where = [[ 'mobile|user_no','=',$mobile]];
  32. $user = (new User)->where($where)->find();
  33. if (empty($user)) {
  34. $this->error = '手机号码或会员号错误';
  35. return false;
  36. }
  37. $mobile = $user['mobile'];
  38. } else if ($sence == 'register') {
  39. $send_template = $template_code['template_code'];
  40. if (empty($send_template)) {
  41. $this->error = '短信登录未开启';
  42. return false;
  43. }
  44. //判断是否已经注册
  45. // $user = (new User)->where('mobile', '=', $mobile)->find();
  46. // if ($user) {
  47. // $this->error = '手机号码已存在';
  48. // return false;
  49. // }
  50. }
  51. $code = str_pad(mt_rand(100000, 999999), 6, "0", STR_PAD_BOTH);
  52. $SmsDriver = new SmsDriver($smsConfig);
  53. $send_data = [
  54. 'code' => $code
  55. ];
  56. //短信模板
  57. $flag = $SmsDriver->sendSms($mobile, $send_template, $send_data);
  58. if ($flag) {
  59. $this->save([
  60. 'mobile' => $mobile,
  61. 'code' => $code,
  62. 'app_id' => self::$app_id
  63. ]);
  64. }
  65. return $flag;
  66. }
  67. /**
  68. * 短信发送
  69. */
  70. public function sendCodeWx($mobile)
  71. {
  72. if (empty($mobile)) {
  73. $this->error = '手机号码或会员号不能为空';
  74. return false;
  75. }
  76. $smsConfig = SettingModel::getItem('sms', self::$app_id);
  77. $template_code = $smsConfig['engine'][$smsConfig['default']];
  78. // 判断会员号如果是手机号,则查询是否有有此会员号
  79. $pattern = '/^1\d{10}$/';
  80. if (!preg_match($pattern, $mobile)) {
  81. $where = [['user_no', '=', $mobile]];
  82. $user = (new User)->where($where)->find();
  83. if (empty($user)) {
  84. $this->error = '手机号码或会员号错误';
  85. return false;
  86. }
  87. $mobile = $user['mobile'];
  88. }
  89. $send_template = $template_code['template_code'];
  90. if (empty($send_template)) {
  91. $this->error = '短信登录未开启';
  92. return false;
  93. }
  94. $code = str_pad(mt_rand(100000, 999999), 6, "0", STR_PAD_BOTH);
  95. $SmsDriver = new SmsDriver($smsConfig);
  96. $send_data = [
  97. 'code' => $code
  98. ];
  99. //短信模板
  100. $flag = $SmsDriver->sendSms($mobile, $send_template, $send_data);
  101. if ($flag) {
  102. $this->save([
  103. 'mobile' => $mobile,
  104. 'code' => $code,
  105. 'app_id' => self::$app_id
  106. ]);
  107. }
  108. return $flag;
  109. }
  110. }