| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- * 发送短信
- */
- namespace app\api\controller\v1;
- use app\api\services\RequestUtilService;
- use app\common\model\NumRecordModel;
- use app\Request;
- use app\services\SmsServices;
- use sms\Verify;
- use think\Exception;
- use think\facade\Db;
- use utils\AES;
- class SendSms
- {
- /**
- * 发送短信
- * @param Request $request
- * @param SmsServices $services
- * @return mixed
- */
- public function index (Request $request)
- {
- $mobile = $request->post('mobile');
- $mobile_sign = $request->post('mobile_sign');
- $type = $request->post('type');
- $ali_verify = $request->post('ali_verify');
- // [$mobile, $mobile_sign, $type, $ali_verify] = $request->getMore([
- // ['mobile', ''],
- // ['mobile_sign', ''],
- // ['type', 'verify'],
- // ['ali_verify', '']
- // ], true);
- // if (_limit_frequency('_limit_frequency_send_sms', $mobile, 3))
- // return app('json')->json_error('操作频繁,请等3秒后再试~');
- // if (!in_array($type, ['register', 'change'])) { // 签名验证
- // if (empty($mobile_sign))
- // return api_error_return('发送失败');
- // $sign = AES::encrypt($mobile);
- // if ($sign != $mobile_sign) // 验证sign
- // return api_error_return('发送失败11');
- // } else { // 人机验证
- // if (empty($ali_verify))
- // return api_error_return('发送失败');
- // $ali_verify = json_decode(html_entity_decode($ali_verify), true);
- //
- // /** @var Verify $verify */
- // $verify = new Verify();
- // $result = $verify->ali_verify($ali_verify['appkey'], $ali_verify['scene'], $ali_verify['csessionid'], $ali_verify['nc_token'], $ali_verify['sig']);
- //
- // if (!$result)
- // return api_error_return('发送失败');
- // }
- if (Db::name('user')->where('mobile', $mobile)->find()){
- return api_error_return('该手机号已注册,请直接登录');
- }
- $m = new NumRecordModel();
- $count = $m->whereDay('create_time', 'today')->where('ip', $request->ip())->count();
- // if ($count > 25){
- // return api_error_return('发送失败,超过同一IP 最大发送短信数量');
- // }
- Db::startTrans();
- try {
- $code = '';
- for ($i=0; $i < 6; $i++) {
- $code .= rand(1, 9);
- }
- $ser_request = new RequestUtilService();
- $result = $ser_request->reqeustSmsCode($mobile, $code);
- if ($result == 0){
- $data = [
- 'type'=>$type,
- 'content'=>$code,
- 'isfrom'=>'h5',
- 'phone'=>$mobile,
- 'uid'=>0,
- 'create_time'=>sr_getcurtime(time()),
- 'ip'=>$request->ip()
- ];
- $m->insert($data);
- }else{
- throw new Exception('22'.$result);
- }
- Db::commit();
- }catch (\Exception $e){
- Db::rollback();
- return api_error_return('发送失败'.$e->getMessage());
- }
- return api_succ_return(['msg'=>'发送成功', 'code'=>0]);
- }
- }
|