Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qa-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
qa-platform
Commits
ec249ccd
Commit
ec249ccd
authored
Mar 18, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增加密和返回类型判断
parent
20e71a04
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
123 additions
and
77 deletions
+123
-77
Mock.java
src/main/java/cn/qg/qaplatform/mock/entity/Mock.java
+11
-0
YeebaoInterceptor.java
.../cn/qg/qaplatform/mock/interceptor/YeebaoInterceptor.java
+112
-77
No files found.
src/main/java/cn/qg/qaplatform/mock/entity/Mock.java
View file @
ec249ccd
...
...
@@ -15,7 +15,18 @@ public class Mock {
private
String
description
;
private
String
success
;
private
String
fail
;
/**
* 0-返回失败,1-返回成功
*/
private
Integer
flag
;
/**
* 0-不加密,1-加密
*/
private
Integer
encrypt
;
/**
* 1-json,2-字符串
*/
private
Integer
type
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
...
...
src/main/java/cn/qg/qaplatform/mock/interceptor/YeebaoInterceptor.java
View file @
ec249ccd
...
...
@@ -69,6 +69,12 @@ public class YeebaoInterceptor implements HandlerInterceptor {
return
map
;
}
/**
* 解析从数据库获取的响应,赋对应的值
* @param requestMap
* @param responseMap
* @return
*/
public
Map
<
String
,
Object
>
handleResponseMap
(
Map
<
String
,
Object
>
requestMap
,
Map
<
String
,
Object
>
responseMap
)
{
for
(
Map
.
Entry
<
String
,
Object
>
entry:
responseMap
.
entrySet
())
{
if
(
entry
.
getValue
()
instanceof
List
)
{
...
...
@@ -103,13 +109,59 @@ public class YeebaoInterceptor implements HandlerInterceptor {
SwitchDataSource
.
dataSourceSwitch
(
namespace
,
"qa"
);
String
uri
=
request
.
getRequestURI
().
substring
(
5
);
Map
<
String
,
String
[]>
parameterMap
=
request
.
getParameterMap
();
log
.
info
(
"打印请求参数:{}"
,
parameterMap
);
QueryWrapper
<
Mock
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"url"
,
uri
);
Mock
mock
=
mockMapper
.
selectOne
(
queryWrapper
);
response
.
setHeader
(
"Content-type"
,
"application/json;charset=UTF-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
// PrintWriter printWriter = response.getWriter();
Map
<
String
,
Object
>
requestMap
;
Map
<
String
,
Object
>
responseMap
=
new
HashMap
<>();
String
responseStr
=
null
;
if
(
mock
.
getFlag
().
equals
(
1
))
{
if
(
mock
.
getType
()
==
2
)
{
responseStr
=
mock
.
getSuccess
();
}
else
if
(
mock
.
getType
()
==
1
)
{
responseMap
=
JsonTransUtils
.
strToMap
(
mock
.
getSuccess
());
}
}
else
if
(
mock
.
getFlag
().
equals
(
0
))
{
if
(
mock
.
getType
()
==
2
)
{
responseStr
=
mock
.
getSuccess
();
}
else
if
(
mock
.
getType
()
==
1
)
{
responseMap
=
JsonTransUtils
.
strToMap
(
mock
.
getSuccess
());
}
}
if
(
mock
.
getEncrypt
()
==
1
)
{
EncryptConvertor
encryptConvertor
=
EncryptFactory
.
produce
(
"yeebao"
);
requestMap
=
JsonTransUtils
.
strToMap
(
encryptConvertor
.
decrypt
(
JsonTransUtils
.
mapToJson
(
requestMapTrans
(
parameterMap
))));
// 针对 /tzt-api/api/bankcard/check 接口特殊处理
if
(
uri
.
equals
(
"/tzt-api/api/bankcard/check"
))
{
String
cardNo
=
requestMap
.
get
(
"cardno"
).
toString
();
String
merchantno
=
requestMap
.
get
(
"merchantno"
).
toString
();
responseMap
=
getBankcardCheckResponse
(
cardNo
,
merchantno
);
modifyResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
return
true
;
}
if
(
uri
.
equals
(
"/tzt-api/api/bindcard/confirm"
))
{
responseMap
.
put
(
"bankcode"
,
"ABC"
);
modifyResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
return
true
;
}
// 判断返回是字符串还是json,1-字符串,2-json
if
(
mock
.
getType
()
==
1
)
{
modifyResponse
(
response
,
encryptConvertor
.
encrypt
(
responseStr
));
return
true
;
}
else
if
(
mock
.
getType
()
==
2
)
{
responseMap
=
handleResponseMap
(
requestMap
,
responseMap
);
if
(
uri
.
equals
(
"/tzt-api/api/bindcard/request"
))
{
requestMap
.
put
(
"yborderid"
,
"TZAUba0c7b8"
+
requestMap
.
get
(
"requestno"
)
+
"95c929ca802e"
);
}
modifyResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)),
"application/json; charset=utf-8"
);
return
true
;
}
}
else
if
(
mock
.
getEncrypt
()
==
0
)
{
if
(
uri
.
equals
(
"/tzt-api/api/divide/record"
))
{
responseStr
=
"{\"dividelist\":[{\"divideamount\":\"0.01\",\"dividevalue\":\"0.01\",\"dividemode\":\"AMOUNT\",\"ledgerno\":\"10000449633\"}],\"errorcode\":\"\",\"errormsg\":\"\",\"free1\":\"\",\"free2\":\"\",\"free3\":\"\",\"merchantno\":\"10000449592\",\"requestno\":\"67467179200514\",\"sign\":\"RzhX1vUEQp1nI5lDCeroMr0VgOJ1pQknwN++Y7oyTUAvHErLUtZcNQulCUlh3iwlzRHWL5uJain6NQ79Z2T38MZ8hqDohpReFH31YMWoDytJJpS5B2zLTVZIyHq4GmjmS/HXDpvZnMgoZibOESLsKLbS7dTnhdxy8ceDliJhBQ4=\",\"status\":\"DIVIDE_SUCCESS\",\"yborderid\":\"TZNC19ec1bd4222e489c9409854452b31138\"}"
;
modifyResponse
(
response
,
responseStr
);
return
true
;
}
// 针对 /balance-board/transfer 接口特殊处理
if
(
uri
.
equals
(
"/balance-board/transfer"
))
{
BufferedReader
br
=
request
.
getReader
();
...
...
@@ -133,68 +185,51 @@ public class YeebaoInterceptor implements HandlerInterceptor {
//放款结果查询的返回值
transferResponse
=
"<data><cmd>BatchDetailQuery</cmd><hmac>MIIE6QYJKoZIhvcNAQcCoIIE2jCCBNYCAQExCzAJBgUrDgMCGgUAMC8GCSqGSIb3DQEHAaAiBCA2ZWU1ODE3Y2UwNDg4NDczNmJlNWFlNGM0MDViZGNlYaCCA7EwggOtMIIDFqADAgECAhAuyfCgPbMcigfvVyGazeQRMA0GCSqGSIb3DQEBBQUAMCQxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxDRkNBIFRFU1QgQ0EwHhcNMTExMTI4MDcwOTUzWhcNMTMxMTI4MDcwOTUzWjBzMQswCQYDVQQGEwJDTjEVMBMGA1UEChMMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLEwZZRUVQQVkxEjAQBgNVBAsTCUN1c3RvbWVyczEoMCYGA1UEAxQfMDQxQFoxMjNxd2VAemhpd2VuLm1laUAwMDAwMDAwMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzrITNElBaFF7xPXtPguWeTnGOI1gVMMkUDI57ZQz+Gg9PPcfF+ExrtDgMQEOwfRs7X4XiraPE2l6ub0Xkpl0ftu8ELnii91wUKAqsvp88NIdAdLQnC7PeveWlquVSAf//2WtAkdBI7xnhXaL/ObUkhHheT0aR5miYmDyLAkTBj8CAwEAAaOCAY8wggGLMB8GA1UdIwQYMBaAFEZy3CVynwJOVYO1gPkL2+mTs/RFMB0GA1UdDgQWBBS0k6A7ZSwLRwbIhFsgcChrYd27PDALBgNVHQ8EBAMCBaAwDAYDVR0TBAUwAwEBADA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwgfAGA1UdHwSB6DCB5TBPoE2gS6RJMEcxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxDRkNBIFRFU1QgQ0ExDDAKBgNVBAsTA0NSTDETMBEGA1UEAxMKY3JsMTI2XzE5NDCBkaCBjqCBi4aBiGxkYXA6Ly90ZXN0bGRhcC5jZmNhLmNvbS5jbjozODkvQ049Y3JsMTI2XzE5NCxPVT1DUkwsTz1DRkNBIFRFU1QgQ0EsQz1DTj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Y2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwDQYJKoZIhvcNAQEFBQADgYEAKX4CXCPQEE4RWGsZTXZXLBct2gcPYEjqpgPZ5ERiUrYLTDGuIT90ECfSoxCrcTJEeY7EJBojig9gLRoMn/4xXW/XscGarQ3XxyZw8VxTMFkotuUkAPoaacYlIrc34t2DR0DqvU6umgFL3yTMYxl5WLjOh47OH7Aw7VPscmrtzEIxgd0wgdoCAQEwODAkMQswCQYDVQQGEwJDTjEVMBMGA1UEChMMQ0ZDQSBURVNUIENBAhAuyfCgPbMcigfvVyGazeQRMAkGBSsOAwIaBQAwDQYJKoZIhvcNAQEBBQAEgYCD/g83n6KyattYAEPqff/9z613+4AaZDHVxY9xEb3lBGRRosVQptgkZItEc9cM2Em/o9GfV/mqj5T6CP5glvbbtFnrz2Z0GGNbDR/gqOIPhpACRZozZipwUeQESVhRCiCJa4sPuoEkgSSq5XvL5nIvAxc59DeKWIv/LGqYq9dK8Q==</hmac><ret_Code>1</ret_Code><batch_No>' + batchNo + '</batch_No><total_Num>1</total_Num><end_Flag>Y</end_Flag><list><items><item><remarksInfo></remarksInfo><amount>0.01</amount><fee></fee><abstractInfo>提现打款</abstractInfo><note/><order_Id>PAYMENT78162155286528</order_Id><payee_Bank_Account>1506213009022200623</payee_Bank_Account><refund_Date></refund_Date><real_pay_amount>0.01</real_pay_amount><payee_BankName>工商银行</payee_BankName><complete_Date>2020-01-16 18:20:09</complete_Date><request_Date>2020-01-16 18:20:08</request_Date><payee_Name>蒋素霞</payee_Name><bank_Status>S</bank_Status><r1_Code>0026</r1_Code><fail_Desc></fail_Desc></item></items></list></data>"
;
}
// printWriter.write(transferResponse);
returnResponse
(
response
,
transferResponse
);
modifyResponse
(
response
,
transferResponse
);
return
false
;
}
// 对request进行解密
EncryptConvertor
encryptConvertor
=
EncryptFactory
.
produce
(
"yeebao"
);
Map
<
String
,
Object
>
requestMap
=
JsonTransUtils
.
strToMap
(
encryptConvertor
.
decrypt
(
JsonTransUtils
.
mapToJson
(
requestMapTrans
(
parameterMap
))));
Map
<
String
,
Object
>
responseMap
=
new
HashMap
<>();
// 针对 /tzt-api/api/bankcard/check 接口特殊处理
if
(
uri
.
equals
(
"/tzt-api/api/bankcard/check"
))
{
String
cardNo
=
requestMap
.
get
(
"cardno"
).
toString
();
String
merchantno
=
requestMap
.
get
(
"merchantno"
).
toString
();
responseMap
=
getBankcardCheckResponse
(
cardNo
,
merchantno
);
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
if
(
mock
.
getType
()
==
1
)
{
modifyResponse
(
response
,
responseStr
);
return
true
;
}
if
(
uri
.
equals
(
"/tzt-api/api/bindcard/confirm"
))
{
responseMap
.
put
(
"bankcode"
,
"ABC"
);
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
}
else
if
(
mock
.
getType
()
==
2
)
{
modifyResponse
(
response
,
JsonTransUtils
.
mapToJson
(
responseMap
));
return
true
;
}
if
(
uri
.
equals
(
"/tzt-api/api/divide/record"
))
{
String
responseStr
=
"{\"dividelist\":[{\"divideamount\":\"0.01\",\"dividevalue\":\"0.01\",\"dividemode\":\"AMOUNT\",\"ledgerno\":\"10000449633\"}],\"errorcode\":\"\",\"errormsg\":\"\",\"free1\":\"\",\"free2\":\"\",\"free3\":\"\",\"merchantno\":\"10000449592\",\"requestno\":\"67467179200514\",\"sign\":\"RzhX1vUEQp1nI5lDCeroMr0VgOJ1pQknwN++Y7oyTUAvHErLUtZcNQulCUlh3iwlzRHWL5uJain6NQ79Z2T38MZ8hqDohpReFH31YMWoDytJJpS5B2zLTVZIyHq4GmjmS/HXDpvZnMgoZibOESLsKLbS7dTnhdxy8ceDliJhBQ4=\",\"status\":\"DIVIDE_SUCCESS\",\"yborderid\":\"TZNC19ec1bd4222e489c9409854452b31138\"}"
;
returnResponse
(
response
,
responseStr
);
}
return
true
;
}
if
(
mock
.
getFlag
().
equals
(
1
))
{
responseMap
=
JsonTransUtils
.
strToMap
(
mock
.
getSuccess
());
}
else
if
(
mock
.
getFlag
().
equals
(
0
))
{
responseMap
=
JsonTransUtils
.
strToMap
(
mock
.
getFail
());
}
// 如果response中存在变量,则使用requestMap中对应变量进行替换
// for (Map.Entry<String, Object> entry: responseMap.entrySet()) {
// String value = (String) entry.getValue();
// if (value.startsWith("$request")) {
// entry.setValue(requestMap.get(value.split("\\.")[1]));
// }
// if (uri.equals("/tzt-api/api/bindcard/request")) {
// requestMap.put("yborderid", "TZAUba0c7b8" + requestMap.get("requestno") + "95c929ca802e");
// }
// }
responseMap
=
handleResponseMap
(
requestMap
,
responseMap
);
if
(
uri
.
equals
(
"/tzt-api/api/bindcard/request"
))
{
requestMap
.
put
(
"yborderid"
,
"TZAUba0c7b8"
+
requestMap
.
get
(
"requestno"
)
+
"95c929ca802e"
);
/**
* 修改返回响应
* @param response HttpServletResponse
* @param result 返回的json或字符串
*/
private
void
modifyResponse
(
HttpServletResponse
response
,
String
result
)
{
PrintWriter
writer
=
null
;
response
.
setCharacterEncoding
(
"UTF-8"
);
// response.setContentType("application/json; charset=utf-8");
try
{
writer
=
response
.
getWriter
();
writer
.
print
(
result
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
writer
!=
null
)
{
writer
.
close
();
}
}
// 对response加密
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse
(
response
,
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
return
true
;
}
/**
*
* @param response
* @param result
* 修改返回响应
* @param response HttpServletResponse
* @param result 返回的json或字符串
* @param contentType content-type
*/
private
void
returnResponse
(
HttpServletResponse
response
,
String
result
)
{
private
void
modifyResponse
(
HttpServletResponse
response
,
String
result
,
String
contentType
)
{
PrintWriter
writer
=
null
;
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html; charset=utf-8"
);
response
.
setContentType
(
contentType
);
try
{
writer
=
response
.
getWriter
();
writer
.
print
(
result
);
...
...
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