补足判断code已使用的逻辑

This commit is contained in:
qinzongqing 2023-04-11 10:58:25 +08:00
parent 5c565a1a50
commit f60aa5235b

View File

@ -23,7 +23,7 @@ class Oauth2Controller extends ControllerBase{
$post_arr = array(); $post_arr = array();
$post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7"; $post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7";
$post_arr['appsecrect'] = "b82015bd-8d4c-4df8-87a8-c25477a8976f"; $post_arr['appsecrect'] = "b82015bd-8d4c-4df8-87a8-c25477a8976f";
$post_arr['code'] = "0db13957334c4244b03267b9ce9ccd7b"; $post_arr['code'] = "j2407ptyalr6is31fc8ogez9quvxhmwd";
$post_json = json_encode($post_arr); $post_json = json_encode($post_arr);
$result = $this->__http_post_request($url, $post_json, true); $result = $this->__http_post_request($url, $post_json, true);
print_r($result); die; print_r($result); die;
@ -325,29 +325,16 @@ class Oauth2Controller extends ControllerBase{
} }
//如果code未使用过 //如果code未使用过
else{ else{
//查询当前接口过去是否有生成过access_token //开启事务
$AccessToken = AccessToken::findFirst("AppId = '$appid'"); $this->db->begin();
//如果当前接口过去未生成过access_token //准备更新临时code
if(empty($AccessToken)){ $TempCode->LastModifiedTime = $current_datetime;
//准备新增AccessToken
$AccessToken = new AccessToken();
$AccessToken->Id = $this->_get_act_code(32);
$AccessToken->AppId = $appid;
$AccessToken->PrevAccessToken = null;
$AccessToken->CreateTime = $current_datetime;
$AccessToken->LastModifiedTime = $current_datetime;
}
//如果当前接口过去有生成过access_token
else{
//准备更新AccessToken
$AccessToken->PrevAccessToken = $AccessToken->AccessToken;
$AccessToken->LastModifiedTime = $current_datetime;
}
//其他字段 //其他字段
$AccessToken->AccessToken = $access_token = $this->_get_act_code(32); $TempCode->IsUsed = 1;
$AccessToken->ExpireTime = date("Y-m-d H:i:s", $current_time+14400);
//如果保存失败 //如果保存失败
if(!($AccessToken->save())){ if(!($TempCode->save())){
//回滚事务
$this->db->rollback();
//告知用户系统繁忙,请稍候再试 //告知用户系统繁忙,请稍候再试
$rs['errmsg'] = "系统繁忙,请稍候再试"; $rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['errcode'] = -1; $rs['errcode'] = -1;
@ -355,12 +342,47 @@ class Oauth2Controller extends ControllerBase{
} }
//如果保存成功 //如果保存成功
else{ else{
//告知用户ok //查询当前接口过去是否有生成过access_token
$rs['errmsg'] = "ok"; $AccessToken = AccessToken::findFirst("AppId = '$appid'");
$rs['errcode'] = 0; //如果当前接口过去未生成过access_token
$rs['data']['access_token'] = $access_token; if(empty($AccessToken)){
$rs['data']['expire_in'] = 14400; //准备新增AccessToken
$rs['data']['refresh_token'] = null; $AccessToken = new AccessToken();
$AccessToken->Id = $this->_get_act_code(32);
$AccessToken->AppId = $appid;
$AccessToken->PrevAccessToken = null;
$AccessToken->CreateTime = $current_datetime;
$AccessToken->LastModifiedTime = $current_datetime;
}
//如果当前接口过去有生成过access_token
else{
//准备更新AccessToken
$AccessToken->PrevAccessToken = $AccessToken->AccessToken;
$AccessToken->LastModifiedTime = $current_datetime;
}
//其他字段
$AccessToken->AccessToken = $access_token = $this->_get_act_code(32);
$AccessToken->ExpireTime = date("Y-m-d H:i:s", $current_time+14400);
//如果保存失败
if(!($AccessToken->save())){
//回滚事务
$this->db->rollback();
//告知用户系统繁忙,请稍候再试
$rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['errcode'] = -1;
$rs['data'] = null;
}
//如果保存成功
else{
//执行事务
$this->db->commit();
//告知用户ok
$rs['errmsg'] = "ok";
$rs['errcode'] = 0;
$rs['data']['access_token'] = $access_token;
$rs['data']['expire_in'] = 14400;
$rs['data']['refresh_token'] = null;
}
} }
} }
} }