SmsController.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. public function sendSmsCodeByQuota(Request $request)
  12. {
  13. $quotaIds = $request->post('quota_id', []);
  14. if (!$quotaIds) {
  15. return json_fail("参数异常");
  16. }
  17. $quotas = MemberQuota::whereIn('member_quota_id', $quotaIds)->get()->toArray();
  18. $memberIds = array_column($quotas, 'join_quota_member_id');
  19. if (count(array_unique($memberIds)) > 1) {
  20. return json_fail("不可以同时核销多个会员权益");
  21. }
  22. try {
  23. $member = Member::find(current($memberIds));
  24. $mobile = $member->member_mobile;
  25. $code = random_string(6, 'number');
  26. $key = self::KEY_PREFIX . 'QUOTA:' . $mobile;
  27. Redis::set($key, $code);
  28. Redis::expire($key, 600);
  29. Sms::app()->send($mobile, [
  30. 'template' => 'SMS_240865706',
  31. 'data' => [
  32. 'code' => $code
  33. ],
  34. ]);
  35. } catch (\Exception $e) {
  36. // dump($e->getTrace());
  37. return json_fail("短信发送失败,请稍后重试");
  38. }
  39. return json_success('success');
  40. }
  41. }