From b7b796a31bf6c3e8de34d8d797b66391f2b89fba Mon Sep 17 00:00:00 2001 From: qinzongqing Date: Fri, 14 Apr 2023 16:13:30 +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 | 2 +- app/controllers/SmsController.php | 2 + app/controllers/UrlsController.php | 194 ++++++++++++++++++++++++++- 3 files changed, 196 insertions(+), 2 deletions(-) diff --git a/app/controllers/Oauth2Controller.php b/app/controllers/Oauth2Controller.php index 777bd73..825aaf2 100644 --- a/app/controllers/Oauth2Controller.php +++ b/app/controllers/Oauth2Controller.php @@ -24,7 +24,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'] = "c21ffda53bb349ff9461c92e4371da93"; + $post_arr['code'] = "b4ed9dabbe1f4dd5bc824046d37922d5"; $post_json = json_encode($post_arr); $result = $this->__http_post_request($url, $post_json, true); print_r($result); die; diff --git a/app/controllers/SmsController.php b/app/controllers/SmsController.php index 066cb0d..c12913e 100644 --- a/app/controllers/SmsController.php +++ b/app/controllers/SmsController.php @@ -44,6 +44,7 @@ class SmsController extends ControllerBase{ $post_arr = array(); $post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7"; $post_arr['mobile'] = "13501882318"; + $post_arr['access_token'] = "9d21508a7531430c843cff8063dccb1c"; $post_arr['access_token'] = "ycq9t62einm7usfah1vk4z38djxp5gwl"; $post_arr['content'] = "[$=yzm=$]、[$=params1=$]、[$=params2=$]、[$=params3=$]、[$=params4=$]、[$=params5=$]"; $post_arr['format'] = ""; @@ -639,6 +640,7 @@ class SmsController extends ControllerBase{ /** * 批量查询最新短信发送结果(Batch query for the latest SMS sending result) * http://127.0.0.1/tiffany/api/sms/query_reports?qaz=wsx + * http://weapp.wemediacn.net/d/tiffany/api/sms/query_reports?qaz=wsx */ function queryReportsAction(){ //如果是GET请求 diff --git a/app/controllers/UrlsController.php b/app/controllers/UrlsController.php index 6c6891e..953d1c8 100644 --- a/app/controllers/UrlsController.php +++ b/app/controllers/UrlsController.php @@ -11,12 +11,204 @@ class UrlsController extends ControllerBase{ parent::initialize(); } + /** + * 测试方法 + * http://127.0.0.1/tiffany/api/urls/test?qaz=wsx + * http://weapp.wemediacn.net/d/tiffany/api/urls/test?qaz=wsx + */ + function testAction(){ + //$url = "http://wxapp.wemediacn.com/smsoauth2_qa/api/urls/shorturl"; + $url = "http://127.0.0.1/tiffany/api/urls/shorturl?qaz=wsx"; + $post_arr = array(); + $post_arr['appid'] = "0e355010-67b9-4aa6-a53f-c92c972094a7"; + $post_arr['access_token'] = "ycq9t62einm7usfah1vk4z38djxp5gwl"; + $post_arr['access_token'] = "9d21508a7531430c843cff8063dccb1c"; + $post_arr['url'] = "https://www.baidu.com/"; + $post_json = json_encode($post_arr); + $result = $this->__http_post_request($url, $post_json, true); + print_r($result); die; + } + /** * 长链转短链(Long URL shortening) * http://127.0.0.1/tiffany/api/urls/shorturl?qaz=wsx + * http://weapp.wemediacn.net/d/tiffany/api/urls/shorturl?qaz=wsx */ function shorturlAction(){ - + //如果是GET请求 + if($this->request->isGet()){ + //告知请求的资源不支持 http 方法“GET”。 + $rs['Message'] = "请求的资源不支持 http 方法“GET”。"; + } + //如果未获取到请求数据 + elseif(empty(file_get_contents("php://input"))){ + //告知用户"系统繁忙,请稍候再试" + $rs['errcode'] = -1; + $rs['errmsg'] = "系统繁忙,请稍候再试"; + $rs['data'] = null; + } + //如果有获取到请求数据 + else{ + //准备判断请求数据整体是否为空 + $request_arr = json_decode(file_get_contents("php://input"), true); + //如果请求数据整体为空 + if(empty($request_arr)){ + //告知用户"系统繁忙,请稍候再试" + $rs['errmsg'] = "系统繁忙,请稍候再试"; + $rs['errcode'] = -1; + $rs['data'] = null; + } + //如果请求数据整体不为空 + else{ + //准备获取所传appid、长链接和access_token + $rs['errmsg'] = ""; + //如果未获取到所传appid + if(empty($request_arr['appid'])){ + //告知用户"appid is empty;" + $rs['errmsg'].= "appid is empty;"; + } + //如果未获取到所传长链接 + if(empty($request_arr['url'])){ + //告知用户"url is empty;" + $rs['errmsg'].= "url is empty;"; + } + //如果未获取到所传access_token + if(empty($request_arr['access_token'])){ + //告知用户"access_token is empty;" + $rs['errmsg'].= "access_token is empty;"; + } + //如果以上判断未通过 + if(!empty($rs['errmsg'])){ + //告知用户"参数错误 error detail:".$rs['errmsg'] + $rs['errmsg'] = "参数错误 error detail:".$rs['errmsg']; + $rs['errcode'] = 61451; + $rs['data'] = null; + } + //如果以上判断都通过 + else{ + //准备判断所传appid是否有效 + $appid = $request_arr['appid']; + //查询接口信息 + $AppInfo = AppInfo::findFirst("AppId = '$appid' AND Enable = 0"); + //如果未查询到接口信息 + if(empty($AppInfo)){ + //告知用户"找不到app配置信息,appid无效,err detail:找不到app配置信息" + $rs['errmsg'] = "找不到app配置信息,appid无效,err detail:找不到app配置信息"; + $rs['errcode'] = 40036; + $rs['data'] = null; + } + //如果有查询到接口信息 + else{ + //获取上次请求日期 + $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 = $AppInfo->TodayReqTimes; + //获取接口请求次数限制 + $day_max_req_times = $AppInfo->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'])){ + //准备更新当天请求次数 + $AppInfo->LastModifiedTime = $current_datetime; + //其他字段 + $AppInfo->TodayReqTimes = $today_req_times; + $AppInfo->LastReqTime = $current_date; + //如果更新失败 + if(!($AppInfo->save())){ + //告知用户"系统繁忙,请稍候再试" + $rs['errmsg'] = "系统繁忙,请稍候再试"; + $rs['errcode'] = -1; + $rs['data'] = null; + } + //如果更新成功 + else{ + //准备判断所传access_token是否有效 + $access_token = $request_arr['access_token']; + //查询接口信息 + $AccessToken = AccessToken::findFirst("AppId = '$appid' AND (AccessToken = '$access_token' OR PrevAccessToken = '$access_token')"); + //如果未查询到接口信息 + if(empty($AccessToken)){ + //告知用户"accesstoken 不正确,err detail:找不到accesstoken信息" + $rs['errmsg'] = "accesstoken 不正确,err detail:找不到accesstoken信息"; + $rs['errcode'] = 40039; + $rs['data'] = null; + } + //如果有查询到接口信息 + else{ + //获取现access_token到期时间 + $ExpireTime = $AccessToken->ExpireTime; + //获取前access_token到期时间 + $PrevExpireTime = date("Y-m-d H:i:s", strtotime($AccessToken->ExpireTime)-14400+600); + //如果所传access_token匹配前access_token + if($access_token==$AccessToken->PrevAccessToken){ + //如果前access_token已过期 + //注意: + //原代码逻辑中前access_token似乎也按现access_token的到期时间算 + //此处先遵循文档,按照现access_token生成时间后10分钟算到期时间 + if($current_datetime>$PrevExpireTime){ + //告知用户"access_token is expired,err detail:accesstoken 已过期" + $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; + $rs['errcode'] = 80105; + $rs['data'] = null; + } + } + //如果所传access_token匹配现access_token + else{ + //如果现access_token已过期 + if($current_datetime>$ExpireTime){ + //告知用户"access_token is expired,err detail:accesstoken 已过期" + $rs['errmsg'] = "access_token is expired,err detail:accesstoken 已过期"; + $rs['errcode'] = 80105; + $rs['data'] = null; + } + } + //如果以上判断都通过 + if(empty($rs['errcode'])){ + //{"errmsg":"ok","errcode":0,"data":{"shorturl":"weu.me/FUhGg"}} + } + } + } + } + } + } + } + } + //输出结果 + echo json_encode($rs, JSON_UNESCAPED_UNICODE); } }