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]); } }