SmsController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace app\admin\controller\sms;
  3. use app\model\Member;
  4. use app\model\MemberQuota;
  5. use support\Redis;
  6. use support\Request;
  7. use Hhink\WebmanSms\Sms;
  8. class SmsController
  9. {
  10. const KEY_PREFIX = 'SMS:CODE:';
  11. /**
  12. * @Desc 核销验证码
  13. * @Author Gorden
  14. * @Date 2024/6/4 8:46
  15. *
  16. * @param Request $request
  17. * @return \support\Response
  18. */
  19. public function sendSmsCodeByQuota(Request $request)
  20. {
  21. $memberId = $request->post('member_id', []);
  22. $componentId = $request->post('component_id', []);
  23. $nbr = $request->post('nbr');
  24. if (!$memberId || !$componentId) {
  25. return json_fail("参数异常");
  26. }
  27. $quotas = MemberQuota::where('join_quota_member_id', $memberId[0])
  28. ->where('join_member_rule_added_component_id', $componentId[0])
  29. ->where('member_quota_status', 'PENDING')
  30. ->limit($nbr)
  31. ->get()
  32. ->toArray();
  33. if (count($quotas) < intval($nbr)) {
  34. return json_fail("可核销数量不足");
  35. }
  36. try {
  37. $member = Member::find(current($memberId));
  38. $mobile = $member->member_mobile;
  39. $code = random_string(6, 'number');
  40. $key = self::KEY_PREFIX . 'QUOTA:' . $mobile;
  41. Redis::set($key, $code);
  42. Redis::expire($key, 600);
  43. Sms::app()->send($mobile, [
  44. 'template' => 'SMS_240865706',
  45. 'data' => [
  46. 'code' => $code
  47. ],
  48. ]);
  49. } catch (\Exception $e) {
  50. return json_fail("短信发送失败,请稍后重试");
  51. }
  52. return json_success('success');
  53. }
  54. }