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