Sms.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace app\api\controller;
  3. use ali\AliyunSMS;
  4. use app\api\ApiBaseController;
  5. use app\common\model\SmsAuthModel;
  6. use app\common\model\SmsLogModel;
  7. use app\common\service\SmsService;
  8. use think\facade\Log;
  9. class Sms extends ApiBaseController
  10. {
  11. public function send()
  12. {
  13. //权限校验
  14. $token = $this->request->header('token');
  15. $ip = $this->request->ip();
  16. if (empty($token)) {
  17. ajax_success();
  18. }
  19. $auth = SmsAuthModel::where('token', $token)->find();
  20. if (empty($auth)) {
  21. Log::error("无权限token访问,token:{$token},ip:{$ip}");
  22. ajax_success();
  23. }
  24. if ($auth['ip'] != $ip) {
  25. Log::error("无权限ip访问,token:{$token},ip:{$ip}");
  26. ajax_success();
  27. }
  28. //发送短信
  29. $type = input('post.type', '');
  30. $mobile = input('post.mobile', '');
  31. $content = input('post.content', '');
  32. $template_code = input('post.template_code', '');
  33. $template_param = input('post.template_param', '');
  34. if ($type == 'ali') {
  35. if (empty($mobile) || empty($template_code) || empty($template_param)) {
  36. ajax_error('手机号或模板号或模板参数不能为空!');
  37. }
  38. } else {
  39. if (empty($mobile) || empty($content)) {
  40. ajax_error('手机号或内容不能为空!');
  41. }
  42. }
  43. $res = SmsService::apiSend($mobile, $content, $type, $template_code, $template_param);
  44. //记录日志
  45. $log = [
  46. 'ip' => $ip,
  47. 'token' => $token,
  48. 'mobile' => $mobile,
  49. 'content' => $content,
  50. 'template_code' => $template_code,
  51. 'template_param' => json_encode($template_param),
  52. 'status' => $res['code'] ? 2 : 1,
  53. 'error' => $res['code'] ? $res['msg'] : '',
  54. ];
  55. SmsLogModel::create($log);
  56. //返回结果
  57. if ($res['code']) {
  58. ajax_error($res['msg']);
  59. }
  60. ajax_success();
  61. }
  62. }