123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace app\admin\controller\sms;
- use app\model\Member;
- use app\model\MemberQuota;
- use Overtrue\EasySms\EasySms;
- use support\Redis;
- use support\Request;
- use Hhink\WebmanSms\Sms;
- class SmsController
- {
- const KEY_PREFIX = 'SMS:CODE:';
- public function sendSmsCodeByQuota(Request $request)
- {
- $quotaIds = $request->post('quota_id', []);
- if (!$quotaIds) {
- return json_fail("参数异常");
- }
- $quotas = MemberQuota::whereIn('member_quota_id', $quotaIds)->get()->toArray();
- $memberIds = array_column($quotas, 'join_quota_member_id');
- if (count(array_unique($memberIds)) > 1) {
- return json_fail("不可以同时核销多个会员权益");
- }
- try {
- $member = Member::find(current($memberIds));
- $mobile = $member->member_mobile;
- $code = random_string(6, 'number');
- $key = self::KEY_PREFIX . 'QUOTA:' . $mobile;
- Redis::set($key, $code);
- Redis::expire($key, 600);
- // Sms::app()->send(15910622969, [
- // 'template' => 'SMS_173171292',
- // 'data' => [
- // 'code' => $code
- // ],
- // ]);
- $config = [
- // HTTP 请求的超时时间(秒)
- 'timeout' => 5.0,
- // 默认发送配置
- 'default' => [
- // 网关调用策略,默认:顺序调用
- 'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
- // 默认可用的发送网关
- 'gateways' => [
- 'aliyun',
- ],
- ],
- // 可用的网关配置
- 'gateways' => [
- 'errorlog' => [
- 'file' => '/tmp/easy-sms.log',
- ],
- 'aliyun' => [
- 'access_key_id' => 'LTAI4Ff7ZPSG4XWj7pEhMQBB',
- 'access_key_secret' => 'kmXJO9JH33XDstQxEBAmr08bjhsN19',
- 'sign_name' => '',
- ],
- //...
- ],
- ];
- $easySms = new EasySms($config);
- $easySms->send(15910622969, [
- 'content' => '验证码'.$code.',您正在登录,若非本人操作,请勿泄露。',
- 'template' => 'SMS_173171292',
- 'data' => [
- 'code' => $code
- ],
- ]);
- } catch (\Exception $e) {
- dump($e->getTrace());
- return json_fail("短信发送失败,请稍后重试");
- }
- return json_success('success');
- }
- }
|