SmsService.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Services\Sms;
  3. use App\Dao\Sms\SmsDao;
  4. use App\Libs\AliSMS;
  5. class SmsService
  6. {
  7. private $smsDao;
  8. public function __construct(SmsDao $smsDao)
  9. {
  10. $this->smsDao = $smsDao;
  11. }
  12. /**
  13. * 发送短信
  14. *
  15. * @param $phone
  16. * @param $templateType
  17. * @param array $param
  18. * @return bool
  19. */
  20. public function sendSms($phone, $templateType, array $param = []): bool
  21. {
  22. // 测试环境不发验证码
  23. // if (env('APP_ENV') === 'local') {
  24. // return true;
  25. // }
  26. // 根据类型找模板
  27. $smsTemplate = $this->smsDao->getSmsTemplate($templateType);
  28. if (empty($smsTemplate)) {
  29. return false;
  30. }
  31. // 模板id
  32. $sign = env('SMS_SIGN');
  33. $templateCode = getProp($smsTemplate, 'template_id');
  34. $response = AliSMS::sendSms($phone, $templateCode, $param, $sign);
  35. $status = $response->statusCode == 200 ? 1 : 0;
  36. // 记录日志
  37. $this->smsDao->recordSmsLog([
  38. 'template_id' => $smsTemplate->id,
  39. 'template_type' => $templateType,
  40. 'template_name' => $smsTemplate->name,
  41. 'phone' => $phone,
  42. 'template_param' => json_encode($param),
  43. 'status' => $status,
  44. ]);
  45. return (bool)$status;
  46. }
  47. }