From c9cfc49650c4904760cd16f1e9a46c7e7685d5f8 Mon Sep 17 00:00:00 2001 From: qinzongqing Date: Mon, 10 Apr 2023 17:57:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/Oauth2Controller.php | 105 ++++++++++++++++++--------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/app/controllers/Oauth2Controller.php b/app/controllers/Oauth2Controller.php index 347b01f..e26767e 100644 --- a/app/controllers/Oauth2Controller.php +++ b/app/controllers/Oauth2Controller.php @@ -57,9 +57,9 @@ class Oauth2Controller extends ControllerBase{ //准备判断appid是否有效 $appid = $request_arr['appid']; //查询接口信息 - $app_info = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); + $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 - if(empty($app_info)){ + if(empty($AppInfo)){ //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; @@ -68,16 +68,16 @@ class Oauth2Controller extends ControllerBase{ //如果有查询到接口信息 else{ //获取上次请求日期 - $last_req_time = $app_info->LastReqTime; + $last_req_time = $AppInfo->LastReqTime; $last_req_date = date("Y-m-d", strtotime($last_req_time)); //获取当前时间及当天日期 $current_time = time(); $current_datetime = date("Y-m-d H:i:s", $current_time); $current_date = date("Y-m-d", $current_time); //获取上次请求日期所在日的请求次数 - $today_req_times = $app_info->TodayReqTimes; + $today_req_times = $AppInfo->TodayReqTimes; //获取接口请求次数限制 - $day_max_req_times = $app_info->DayMaxReqTimes; + $day_max_req_times = $AppInfo->DayMaxReqTimes; //如果上次请求日期是当天日期 if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 @@ -111,12 +111,12 @@ class Oauth2Controller extends ControllerBase{ //如果以上判断都通过 if(empty($rs['errcode'])){ //准备更新当天请求次数 - $app_info->LastModifiedTime = $current_datetime; + $AppInfo->LastModifiedTime = $current_datetime; //更新字段 - $app_info->TodayReqTimes = $today_req_times; - $app_info->LastReqTime = $current_date; + $AppInfo->TodayReqTimes = $today_req_times; + $AppInfo->LastReqTime = $current_date; //如果更新失败 - if(!($app_info->save())){ + if(!($AppInfo->save())){ //告知用户系统繁忙,请稍候再试 $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; @@ -124,27 +124,27 @@ class Oauth2Controller extends ControllerBase{ } //如果更新成功 else{ - //查询当前接口今天是否有生成过code - $temp_code = TempCode::findFirst("AppId = '$appid'"); + //查询当前接口过去是否有生成过code + $TempCode = TempCode::findFirst("AppId = '$appid'"); //如果当前接口过去未生成过code - if(empty($temp_code)){ + if(empty($TempCode)){ //准备新增临时code - $temp_code = new TempCode(); - $temp_code->AppId = $appid; - $temp_code->CreateTime = $current_datetime; - $temp_code->LastModifiedTime = $current_datetime; + $TempCode = new TempCode(); + $TempCode->AppId = $appid; + $TempCode->CreateTime = $current_datetime; + $TempCode->LastModifiedTime = $current_datetime; } //如果当前接口过去有生成过code else{ //准备更新临时code - $temp_code->LastModifiedTime = $current_datetime; + $TempCode->LastModifiedTime = $current_datetime; } //更新字段 - $temp_code->Code = $code = $this->_get_act_code(32); - $temp_code->IsUsed = 0; - $temp_code->ExpireTime = date("Y-m-d H:i:s", $current_time+300); + $TempCode->Code = $code = $this->_get_act_code(32); + $TempCode->IsUsed = 0; + $TempCode->ExpireTime = date("Y-m-d H:i:s", $current_time+300); //如果保存失败 - if(!($temp_code->save())){ + if(!($TempCode->save())){ //告知用户系统繁忙,请稍候再试 $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; @@ -212,9 +212,9 @@ class Oauth2Controller extends ControllerBase{ //准备判断appid是否有效 $appid = $request_arr['appid']; //查询接口信息 - $app_info = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); + $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); //如果未查询到接口信息 - if(empty($app_info)){ + if(empty($AppInfo)){ //告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息 $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; $rs['errcode'] = 40036; @@ -223,16 +223,16 @@ class Oauth2Controller extends ControllerBase{ //如果有查询到接口信息 else{ //获取上次请求日期 - $last_req_time = $app_info->LastReqTime; + $last_req_time = $AppInfo->LastReqTime; $last_req_date = date("Y-m-d", strtotime($last_req_time)); //获取当前时间及当天日期 $current_time = time(); $current_datetime = date("Y-m-d H:i:s", $current_time); $current_date = date("Y-m-d", $current_time); //获取上次请求日期所在日的请求次数 - $today_req_times = $app_info->TodayReqTimes; + $today_req_times = $AppInfo->TodayReqTimes; //获取接口请求次数限制 - $day_max_req_times = $app_info->DayMaxReqTimes; + $day_max_req_times = $AppInfo->DayMaxReqTimes; //如果上次请求日期是当天日期 if($last_req_date==$current_date){ //如果当天请求次数已达到接口请求次数限制 @@ -266,12 +266,12 @@ class Oauth2Controller extends ControllerBase{ //如果以上判断都通过 if(empty($rs['errcode'])){ //准备更新当天请求次数 - $app_info->LastModifiedTime = $current_datetime; + $AppInfo->LastModifiedTime = $current_datetime; //更新字段 - $app_info->TodayReqTimes = $today_req_times; - $app_info->LastReqTime = $current_date; + $AppInfo->TodayReqTimes = $today_req_times; + $AppInfo->LastReqTime = $current_date; //如果更新失败 - if(!($app_info->save())){ + if(!($AppInfo->save())){ //告知用户系统繁忙,请稍候再试 $rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errcode'] = -1; @@ -282,7 +282,7 @@ class Oauth2Controller extends ControllerBase{ //准备判断appsecrect是否匹配 $appsecrect = $request_arr['appsecrect']; //如果appsecrect不匹配 - if($appsecrect!=$app_info->AppSecret){ + if($appsecrect!=$AppInfo->AppSecret){ //告知用户密钥不匹配,err detail:密钥不匹配 $rs['errmsg'] = "密钥不匹配,err detail:密钥不匹配"; $rs['errcode'] = 40037; @@ -293,9 +293,9 @@ class Oauth2Controller extends ControllerBase{ //准备判断code是否匹配 $code = $request_arr['code']; //查询临时code - $temp_code = TempCode::findFirst("AppId = '$appid' AND Code = '$code'"); + $TempCode = TempCode::findFirst("AppId = '$appid' AND Code = '$code'"); //如果未查询到临时code - if(empty($temp_code)){ + if(empty($TempCode)){ //告知用户code 不正确,err detail:code 不匹配 $rs['errmsg'] = "code 不正确,err detail:code 不匹配"; $rs['errcode'] = 40038; @@ -304,7 +304,7 @@ class Oauth2Controller extends ControllerBase{ //如果有查询到临时code else{ //准备判断code是否已失效 - $expire_time = $temp_code->ExpireTime; + $expire_time = $TempCode->ExpireTime; //如果code已失效 if($current_datetime>=$expire_time){ //告知用户authorize code is expired,err detail:code 已过期 @@ -315,7 +315,7 @@ class Oauth2Controller extends ControllerBase{ //如果code未失效 else{ //准备判断code是否已使用过 - $is_used = $temp_code->IsUsed; + $is_used = $TempCode->IsUsed; //如果code已使用过 if(!empty($is_used)){ //告知用户 @@ -325,7 +325,40 @@ class Oauth2Controller extends ControllerBase{ } //如果code未使用过 else{ - + //查询当前接口过去是否有生成过access_token + $AccessToken = AccessToken::findFirst("AppId = $appid"); + //如果当前接口过去未生成过access_token + if(empty($AccessToken)){ + //准备新增AccessToken + $AccessToken = new AccessToken(); + $AccessToken->AppId = $appid; + $AccessToken->CreateTime = $current_datetime; + $AccessToken->LastModifiedTime = $current_datetime; + } + //如果当前接口过去有生成过access_token + else{ + //准备更新AccessToken + $AccessToken->LastModifiedTime = $current_datetime; + } + //更新字段 + $AccessToken->Code = $code = $this->_get_act_code(32); + $AccessToken->IsUsed = 0; + $AccessToken->ExpireTime = date("Y-m-d H:i:s", $current_time+300); + //如果保存失败 + if(!($AccessToken->save())){ + //告知用户系统繁忙,请稍候再试 + $rs['errmsg'] = "系统繁忙,请稍候再试"; + $rs['errcode'] = -1; + $rs['data'] = null; + } + //如果保存成功 + else{ + //告知用户ok + $rs['errmsg'] = "ok"; + $rs['errcode'] = 0; + $rs['data']['access_token'] = $access_token; + $rs['data']['expire_in'] = 14400; + } } } }