Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
framework
cloud-backend
Commits
ec39ef8e
Commit
ec39ef8e
authored
Apr 18, 2021
by
袁伟铭
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.0.0
parent
80e3bda4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
24 deletions
+40
-24
api-server/src/main/java/com/zq/api/constant/ApiCodeEnum.java
+3
-1
api-server/src/main/java/com/zq/api/controller/ApiController.java
+26
-8
api-server/src/main/java/com/zq/api/service/ApiService.java
+5
-15
common-utils/src/main/java/com/zq/common/entity/ApiLog.java
+6
-0
No files found.
api-server/src/main/java/com/zq/api/constant/ApiCodeEnum.java
View file @
ec39ef8e
...
...
@@ -25,7 +25,9 @@ public enum ApiCodeEnum {
CHECK_SIGN_VALID_ERROR
(
"108"
,
"签名校验失败"
),
BUSINESS_ERROR
(
"400"
,
"业务处理异常"
),
BUSINESS_ERROR
(
"400"
,
"业务处理失败"
),
SERVER_ERROR
(
"500"
,
"服务器繁忙"
),
;
...
...
api-server/src/main/java/com/zq/api/controller/ApiController.java
View file @
ec39ef8e
package
com
.
zq
.
api
.
controller
;
import
cn.hutool.core.exceptions.ExceptionUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.zq.api.config.ApiTokenUtils
;
import
com.zq.api.constant.ApiCodeEnum
;
import
com.zq.api.form.ApiForm
;
import
com.zq.api.form.ApiResp
;
import
com.zq.api.service.ApiService
;
import
com.zq.api.utils.ApiUtils
;
import
com.zq.common.config.security.ApiTokenUtils
;
import
com.zq.common.utils.ThrowableUtil
;
import
com.zq.common.vo.ApiTokenVo
;
import
com.zq.common.vo.ResultVo
;
import
feign.FeignException
;
import
io.swagger.annotations.Api
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -39,11 +43,10 @@ public class ApiController {
long
start
=
System
.
currentTimeMillis
();
ApiForm
form
=
ServletUtil
.
toBean
(
request
,
ApiForm
.
class
,
true
);
ApiResp
resp
=
new
ApiResp
(
form
);
// 不处理Request Method:OPTIONS的请求
if
(
request
.
getMethod
().
equals
(
"OPTIONS"
))
{
return
resp
;
return
ApiUtils
.
getSuccessResp
(
form
)
;
}
String
method
=
form
.
getMethod
();
...
...
@@ -70,16 +73,31 @@ public class ApiController {
form
.
setApiTokenVo
(
tokenVo
);
}
String
errorInfo
=
""
;
// 调用接口方法
ApiResp
resp
;
try
{
resp
=
apiService
.
action
(
form
);
}
catch
(
Exception
e
)
{
errorInfo
=
ThrowableUtil
.
getStackTrace
(
e
);
e
.
printStackTrace
();
// 判断指定异常是否来自或者包含指定异常
if
(
ExceptionUtil
.
isFromOrSuppressedThrowable
(
e
,
FeignException
.
Unauthorized
.
class
))
{
resp
=
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
fail
(
401
,
"Unauthorized"
));
}
else
{
resp
=
ApiUtils
.
getMethodHandlerError
(
form
);
}
}
// 没有数据输出空
resp
=
resp
==
null
?
new
ApiResp
(
form
)
:
resp
;
String
logType
=
"INFO"
;
if
(!
resp
.
getCode
().
equals
(
ApiCodeEnum
.
SUCCESS
.
code
()))
{
logType
=
"ERROR"
;
String
logType
=
resp
.
isSuccess
()
?
"INFO"
:
"ERROR"
;
// 如果是500错误, 服务会返回错误的堆栈信息
if
(
resp
.
getCode
().
equals
(
ApiCodeEnum
.
SERVER_ERROR
.
code
()))
{
errorInfo
=
resp
.
getMsg
();
resp
.
setMsg
(
ApiCodeEnum
.
SERVER_ERROR
.
msg
());
}
String
respMsg
=
resp
.
getMsg
();
// 调试日志
if
(
ApiUtils
.
DEBUG
)
{
...
...
@@ -88,7 +106,7 @@ public class ApiController {
+
"\n[time="
+
(
System
.
currentTimeMillis
()
-
start
)
+
"ms]"
);
}
apiService
.
addLog
(
form
,
logType
,
resp
Msg
,
System
.
currentTimeMillis
()
-
start
);
apiService
.
addLog
(
form
,
logType
,
resp
.
getMsg
(),
errorInfo
,
System
.
currentTimeMillis
()
-
start
);
return
resp
;
}
...
...
api-server/src/main/java/com/zq/api/service/ApiService.java
View file @
ec39ef8e
package
com
.
zq
.
api
.
service
;
import
c
n.hutool.core.exceptions.ExceptionUtil
;
import
c
om.zq.api.config.ConfigCache
;
import
com.zq.api.constant.ApiCodeEnum
;
import
com.zq.api.dao.ApiLogDao
;
import
com.zq.api.form.ApiForm
;
...
...
@@ -9,8 +9,6 @@ import com.zq.api.utils.ApiUtils;
import
com.zq.api.utils.ReflectionUtils
;
import
com.zq.common.entity.ApiLog
;
import
com.zq.common.utils.DateUtils
;
import
com.zq.common.vo.ResultVo
;
import
feign.FeignException
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
...
...
@@ -49,12 +47,12 @@ public class ApiService {
return
methodList
;
}
public
ApiResp
action
(
ApiForm
form
)
{
public
ApiResp
action
(
ApiForm
form
)
throws
Exception
{
if
(!
methodList
.
contains
(
form
.
getMethod
()))
{
return
ApiUtils
.
getMethodError
(
form
);
}
// 登陆验证标识
boolean
validFlag
=
false
;
//
ConfigCache.getValueToBoolean("API.LOGIN.VALID");
boolean
validFlag
=
ConfigCache
.
getValueToBoolean
(
"API.LOGIN.VALID"
);
IApiLogic
apiLogic
=
getApiLogic
(
form
);
if
(
validFlag
)
{
// 先进行登陆验证。如果验证失败,直接返回错误
...
...
@@ -65,19 +63,10 @@ public class ApiService {
}
// 调用接口方法,利用反射更简洁
try
{
return
(
ApiResp
)
ReflectionUtils
.
invokeMethod
(
apiLogic
,
form
.
getMethod
(),
new
Class
<?>[]{
ApiForm
.
class
},
new
Object
[]{
form
});
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
// 判断指定异常是否来自或者包含指定异常
if
(
ExceptionUtil
.
isFromOrSuppressedThrowable
(
e
,
FeignException
.
Unauthorized
.
class
))
{
return
ApiUtils
.
toApiResp
(
form
,
ResultVo
.
fail
(
401
,
"Unauthorized"
));
}
return
ApiUtils
.
getMethodHandlerError
(
form
);
}
}
public
void
addLog
(
ApiForm
form
,
String
logType
,
String
respMsg
,
Long
timeCost
)
{
public
void
addLog
(
ApiForm
form
,
String
logType
,
String
respMsg
,
String
errorInfo
,
Long
timeCost
)
{
apiLogDao
.
insert
(
ApiLog
.
builder
()
.
appId
(
form
.
getAppId
())
.
userId
(
form
.
getUserId
())
...
...
@@ -86,6 +75,7 @@ public class ApiService {
.
bizContent
(
form
.
getBizContent
())
.
logType
(
logType
)
.
respMsg
(
respMsg
)
.
errorInfo
(
errorInfo
)
.
timeCost
(
String
.
valueOf
(
timeCost
))
.
createTime
(
DateUtils
.
now
())
.
build
());
...
...
common-utils/src/main/java/com/zq/common/entity/ApiLog.java
View file @
ec39ef8e
...
...
@@ -74,6 +74,12 @@ public class ApiLog {
private
String
respMsg
;
/**
* 错误信息
*/
@ApiModelProperty
(
"错误信息"
)
private
String
errorInfo
;
/**
* 耗时-毫秒
*/
@ApiModelProperty
(
"耗时-毫秒"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment