Sms.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. * $sence 场景,login:登录 apply:供应商申请
  16. */
  17. public function send($mobile, $sence = 'login'){
  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['login_template'];
  27. if(empty($template_code)){
  28. $this->error = '短信登录未开启';
  29. return false;
  30. }
  31. }else if($sence == 'apply'){
  32. $send_template = $template_code['apply_template'];
  33. }else if($sence == 'register'){
  34. $send_template = $template_code['login_template'];
  35. if(empty($template_code)){
  36. $this->error = '短信登录未开启';
  37. return false;
  38. }
  39. //判断是否已经注册
  40. $user = (new User)->where('mobile','=',$mobile)->find();
  41. if($user){
  42. $this->error = '手机号码已存在';
  43. return false;
  44. }
  45. }
  46. $code = str_pad(mt_rand(100000, 999999), 6, "0", STR_PAD_BOTH);
  47. $SmsDriver = new SmsDriver($smsConfig);
  48. $send_data = [
  49. 'code' => $code
  50. ];
  51. //短信模板
  52. $flag = $SmsDriver->sendSms($mobile, $send_template, $send_data);
  53. if($flag){
  54. $this->save([
  55. 'mobile' => $mobile,
  56. 'code' => $code,
  57. 'sence' => $sence,
  58. 'app_id' => self::$app_id
  59. ]);
  60. }
  61. return $flag;
  62. }
  63. /**
  64. * 短信发送
  65. */
  66. public function sendTemplate($mobile,$template_code){
  67. if(empty($mobile)){
  68. $this->error = '手机号码不能为空';
  69. return false;
  70. }
  71. $smsConfig = SettingModel::getItem('sms', self::$app_id);
  72. $template_code = $smsConfig['engine'][$smsConfig['default']][$template_code];
  73. if(empty($template_code)){
  74. $this->error = '短信登录未开启';
  75. return false;
  76. }
  77. $SmsDriver = new SmsDriver($smsConfig);
  78. $send_data = [
  79. 'code' => '112'
  80. ];
  81. //短信模板
  82. $flag = $SmsDriver->sendSms($mobile, $template_code,$send_data);
  83. return $flag;
  84. }
  85. }