api/app/controllers/Oauth2Controller.php
2023-04-10 16:12:59 +08:00

186 lines
5.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Tiffany SMS API重构-接口类
* @author QZQ
*/
header("Content-Type:text/html; Charset=utf-8");
class Oauth2Controller extends ControllerBase{
function initialize(){
parent::initialize();
}
/**
* 测试方法
* http://127.0.0.1/tiffany/api/oauth2/test?qaz=wsx
*/
function testAction(){
$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/oauth2/code";
$url = "http://127.0.0.1/tiffany/api/oauth2/code?qaz=wsx";
$post_arr = array();
//$post_arr['appid'] = 111;
$post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7";
$post_json = json_encode($post_arr);
$result = $this->__http_post_request($url, $post_json, true);
print_r($result); die;
}
/**
* 获取codeGet code
* http://127.0.0.1/tiffany/api/oauth2/code?qaz=wsx
*/
function codeAction(){
//如果未获取到请求数据
if(empty(file_get_contents("php://input"))){
//告知用户系统繁忙,请稍候再试
$rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['errcode'] = -1;
$rs['data'] = null;
}
//如果有获取到请求数据
else{
//准备获取appid
$request_arr = json_decode(file_get_contents("php://input"), true);
//如果未获取到appid
if(empty($request_arr['appid'])){
//告知用户参数错误 error detail:appid is empty;
$rs['errmsg'] = "参数错误 error detail:appid is empty;";
$rs['errcode'] = 61451;
$rs['data'] = null;
}
//如果有获取到appid
else{
//准备判断appid是否有效
$appid = $request_arr['appid'];
//查询接口信息
$app_info = AppInfo::findFirst("AppId = '$appid' AND Enable = 0");
//如果未查询到接口信息
if(empty($app_info)){
//告知用户找不到app配置信息,appid无效,err detail:找不到app配置信息
$rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息";
$rs['errcode'] = 40036;
$rs['data'] = null;
}
//如果有查询到接口信息
else{
//获取上次请求日期
$last_req_time = $app_info->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;
//获取接口请求次数限制
$day_max_req_times = $app_info->DayMaxReqTimes;
//如果上次请求日期是当天日期
if($last_req_date==$current_date){
//如果当天请求次数已达到接口请求次数限制
if($today_req_times>=$day_max_req_times){
//告知用户request today reached the request limit,err detail:超过请求上限限制
$rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制";
$rs['errcode'] = 80102;
$rs['data'] = null;
}
//如果当天请求次数尚未达到接口请求次数限制
else{
//当天请求次数加一
$today_req_times = $today_req_times+1;
}
}
//如果上次请求日期不是当天日期
else{
//如果接口请求次数限制不大于0
if($day_max_req_times<=0){
//告知用户request today reached the request limit,err detail:超过请求上限限制
$rs['errmsg'] = "request today reached the request limit,err detail:超过请求上限限制";
$rs['errcode'] = 80102;
$rs['data'] = null;
}
//如果接口请求次数限制大于0
else{
//初始当天请求次数
$today_req_times = 1;
}
}
//如果以上判断都通过
if(empty($rs['errcode'])){
//准备更新当天请求次数
$app_info->LastModifiedTime = $current_datetime;
//更新字段
$app_info->TodayReqTimes = $today_req_times;
$app_info->LastReqTime = $current_date;
//如果更新失败
if(!($app_info->save())){
//告知用户系统繁忙,请稍候再试
$rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['errcode'] = -1;
$rs['data'] = null;
}
//如果更新成功
else{
//查询当前接口今天是否有生成过code
$temp_code = TempCode::findFirst("AppId = '$appid'");
//如果当前接口过去未生成过code
if(empty($temp_code)){
//准备新增临时code
$temp_code = new TempCode();
$temp_code->AppId = $appid;
$temp_code->CreateTime = $current_datetime;
$temp_code->LastModifiedTime = $current_datetime;
}
//如果当前接口过去有生成过code
else{
//准备更新临时code
$temp_code->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);
//如果保存失败
if(!($temp_code->save())){
//告知用户系统繁忙,请稍候再试
$rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['errcode'] = -1;
$rs['data'] = null;
}
//如果保存成功
else{
//告知用户ok
$rs['errmsg'] = "ok";
$rs['errcode'] = 0;
$rs['data']['code'] = $code;
}
}
}
}
}
}
//返回结果
echo json_encode($rs, JSON_UNESCAPED_UNICODE);
}
/**
* 根据code获取access_tokenGet access token by code
* http://127.0.0.1/tiffany/api/oauth2/accesstoken?qaz=wsx
*/
function accesstokenAction(){
//如果未获取到请求数据
if(empty($this->request->getPost())){
//告知用户系统繁忙,请稍候再试
$rs['errcode'] = -1;
$rs['errmsg'] = "系统繁忙,请稍候再试";
$rs['data'] = null;
}
//如果有获取到请求数据
else{
}
echo json_encode($rs, JSON_UNESCAPED_UNICODE);
}
}
?>