Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dm_project
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
姚本章
dm_project
Commits
d7b311c3
Commit
d7b311c3
authored
Jan 04, 2021
by
ysongq
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dm_dev' of
http://gitlab.ioubuy.cn/yaobenzhang/dm_project
into dm_dev
parents
2eca6b14
ec3266f6
Changes
72
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
72 changed files
with
2042 additions
and
1607 deletions
+2042
-1607
.gitignore
.gitignore
+0
-1
api_gateway.sql
database/zc/api_gateway.sql
+24
-5
pom.xml
jz-dm-apigateway/pom.xml
+63
-0
BaseCurrentUserObject.java
...ain/java/com/jz/dm/common/base/BaseCurrentUserObject.java
+12
-13
LoggingConstants.java
...main/java/com/jz/dm/common/constant/LoggingConstants.java
+4
-0
GatewayResultCode.java
...c/main/java/com/jz/dm/common/enums/GatewayResultCode.java
+22
-5
SignType.java
...ateway/src/main/java/com/jz/dm/common/enums/SignType.java
+1
-1
ApiStatusEnum.java
...va/com/jz/dm/common/enums/apiInterface/ApiStatusEnum.java
+8
-0
AuthModeEnum.java
...c/main/java/com/jz/dm/common/enums/auth/AuthModeEnum.java
+9
-0
AuthTypeEnum.java
...c/main/java/com/jz/dm/common/enums/auth/AuthTypeEnum.java
+9
-0
DirectionTypeEnum.java
...a/com/jz/dm/common/enums/direction/DirectionTypeEnum.java
+26
-0
OrgStatusEnum.java
...c/main/java/com/jz/dm/common/enums/org/OrgStatusEnum.java
+36
-0
ProducerStatusTypeEnum.java
...om/jz/dm/common/enums/produce/ProducerStatusTypeEnum.java
+37
-0
SignatureException.java
...n/java/com/jz/dm/common/exception/SignatureException.java
+0
-51
DateUtil.java
...gateway/src/main/java/com/jz/dm/common/util/DateUtil.java
+33
-0
JSONWriter.java
...teway/src/main/java/com/jz/dm/common/util/JSONWriter.java
+0
-219
MapUtil.java
...igateway/src/main/java/com/jz/dm/common/util/MapUtil.java
+93
-0
RandomUtil.java
...teway/src/main/java/com/jz/dm/common/util/RandomUtil.java
+34
-5
StreamUtil.java
...teway/src/main/java/com/jz/dm/common/util/StreamUtil.java
+0
-125
WebUtils.java
...gateway/src/main/java/com/jz/dm/common/util/WebUtils.java
+0
-434
ApiDirectionController.java
...ain/java/com/jz/dm/controller/ApiDirectionController.java
+54
-0
ApiLogController.java
.../src/main/java/com/jz/dm/controller/ApiLogController.java
+1
-1
AuthController.java
...ay/src/main/java/com/jz/dm/controller/AuthController.java
+4
-4
OrganizationManageController.java
...va/com/jz/dm/controller/OrganizationManageController.java
+0
-3
ProducerController.java
...rc/main/java/com/jz/dm/controller/ProducerController.java
+9
-9
AuthFilter.java
...apigateway/src/main/java/com/jz/dm/filter/AuthFilter.java
+115
-3
CheckArgsFilter.java
...teway/src/main/java/com/jz/dm/filter/CheckArgsFilter.java
+11
-16
InvokeRouteFilter.java
...way/src/main/java/com/jz/dm/filter/InvokeRouteFilter.java
+12
-15
VerifySignFilter.java
...eway/src/main/java/com/jz/dm/filter/VerifySignFilter.java
+44
-8
DefaultOpenApiDispatcher.java
...main/java/com/jz/dm/gateway/DefaultOpenApiDispatcher.java
+1
-1
ApiAuthMapper.java
...gateway/src/main/java/com/jz/dm/mapper/ApiAuthMapper.java
+1
-1
ApiDirectionMapper.java
...ay/src/main/java/com/jz/dm/mapper/ApiDirectionMapper.java
+13
-0
ApiDirection.java
...y/src/main/java/com/jz/dm/models/domian/ApiDirection.java
+102
-0
ApiInterface.java
...y/src/main/java/com/jz/dm/models/domian/ApiInterface.java
+10
-0
ApiInterfaceFile.java
...c/main/java/com/jz/dm/models/domian/ApiInterfaceFile.java
+3
-3
ApiOrg.java
...gateway/src/main/java/com/jz/dm/models/domian/ApiOrg.java
+1
-1
ApiReqLog.java
...eway/src/main/java/com/jz/dm/models/domian/ApiReqLog.java
+64
-2
DispatchContext.java
...src/main/java/com/jz/dm/models/enity/DispatchContext.java
+5
-96
GatewayRequest.java
.../src/main/java/com/jz/dm/models/enity/GatewayRequest.java
+25
-237
AuthDmpUserApiReq.java
...ain/java/com/jz/dm/models/req/auth/AuthDmpUserApiReq.java
+5
-7
AuthUserApiReq.java
...c/main/java/com/jz/dm/models/req/auth/AuthUserApiReq.java
+9
-11
ApiInterfaceReq.java
.../main/java/com/jz/dm/models/req/make/ApiInterfaceReq.java
+15
-6
MakeCustomApiReq.java
...main/java/com/jz/dm/models/req/make/MakeCustomApiReq.java
+0
-63
MakeDataBankApiReq.java
...in/java/com/jz/dm/models/req/make/MakeDataBankApiReq.java
+15
-11
OrganizationManageAddReq.java
...dels/req/organizationManage/OrganizationManageAddReq.java
+3
-7
OrganizationManageUpdateReq.java
...s/req/organizationManage/OrganizationManageUpdateReq.java
+9
-2
ApiDirectionService.java
.../src/main/java/com/jz/dm/service/ApiDirectionService.java
+32
-0
ApiInterfaceService.java
.../src/main/java/com/jz/dm/service/ApiInterfaceService.java
+31
-0
AuthService.java
...igateway/src/main/java/com/jz/dm/service/AuthService.java
+10
-2
OrganizationManageService.java
...ain/java/com/jz/dm/service/OrganizationManageService.java
+7
-0
ProducerService.java
...eway/src/main/java/com/jz/dm/service/ProducerService.java
+1
-1
ApiDirectionServiceImpl.java
.../java/com/jz/dm/service/impl/ApiDirectionServiceImpl.java
+55
-0
ApiInterfaceServiceImpl.java
.../java/com/jz/dm/service/impl/ApiInterfaceServiceImpl.java
+67
-0
ApiLogServiceImpl.java
...c/main/java/com/jz/dm/service/impl/ApiLogServiceImpl.java
+2
-7
AuthServiceImpl.java
...src/main/java/com/jz/dm/service/impl/AuthServiceImpl.java
+92
-69
OrganizationManageImpl.java
...n/java/com/jz/dm/service/impl/OrganizationManageImpl.java
+42
-19
ProducerServiceImpl.java
...main/java/com/jz/dm/service/impl/ProducerServiceImpl.java
+97
-84
ApiQueryService.java
.../main/java/com/jz/dm/service/request/ApiQueryService.java
+75
-0
SystemLogAspect.java
...y/src/main/java/com/jz/dm/web/aspect/SystemLogAspect.java
+5
-2
application-test.yml
jz-dm-apigateway/src/main/resources/application-test.yml
+4
-3
application.yml
jz-dm-apigateway/src/main/resources/application.yml
+4
-2
ApiAuthMapper.xml
jz-dm-apigateway/src/main/resources/mapper/ApiAuthMapper.xml
+10
-10
ApiDirectionlMapper.xml
...gateway/src/main/resources/mapper/ApiDirectionlMapper.xml
+6
-0
TestOrganizationManage.java
...st/java/com/jz/dm/gateway/org/TestOrganizationManage.java
+0
-1
TestHttpReq.java
...y/src/test/java/com/jz/dm/gateway/orther/TestHttpReq.java
+44
-0
TestMakeApi.java
...y/src/test/java/com/jz/dm/gateway/orther/TestMakeApi.java
+44
-0
TestRedisUserSave.java
...test/java/com/jz/dm/gateway/orther/TestRedisUserSave.java
+35
-0
HttpClientPool.java
...mon/src/main/java/com/jz/common/utils/HttpClientPool.java
+123
-0
HttpsUtils.java
...-common/src/main/java/com/jz/common/utils/HttpsUtils.java
+241
-0
RedisUtils.java
...-common/src/main/java/com/jz/common/utils/RedisUtils.java
+19
-0
UrlUtil.java
jz-dm-common/src/main/java/com/jz/common/utils/UrlUtil.java
+1
-1
pom.xml
pom.xml
+53
-40
No files found.
.gitignore
View file @
d7b311c3
*.iml
*.jar
*.idea
*.class
*.target
database/zc/api_gateway.sql
View file @
d7b311c3
...
...
@@ -9,6 +9,8 @@ CREATE TABLE `t_api_interface` (
`target_url`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'目标url'
,
`api_type`
varchar
(
50
)
NULL
DEFAULT
''
COMMENT
'api类型:1 实时接入 2 数据银行制作API, 3 数据银行制作数据包 6标签查询 9自定义'
,
`api_function`
varchar
(
200
)
DEFAULT
NULL
COMMENT
'接口功能'
,
`join_type`
varchar
(
50
)
NULL
DEFAULT
NULL
COMMENT
'接入类型:字典表对应key值'
,
`test_example`
varchar
(
255
)
NULL
DEFAULT
NULL
COMMENT
'测试实例'
;
`status`
varchar
(
50
)
NOT
NULL
COMMENT
'状态(DRAFT-草稿 ISSUE-发布 OUTMODED-过时 4FREEZE-冻结 EXPIRY-失效)'
,
`version`
varchar
(
20
)
DEFAULT
'1.0'
COMMENT
'版本号'
,
`sign_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'加密方式: MD5 RSA'
,
...
...
@@ -52,10 +54,10 @@ CREATE TABLE `t_api_interface_file` (
`id`
bigint
(
20
)
unsigned
NOT
NULL
AUTO_INCREMENT
COMMENT
'api文件表自增ID'
,
`project_id`
bigint
(
20
)
NOT
NULL
COMMENT
'项目编号'
,
`file_source`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'文件来源:,1 dmp, 2 数据银行'
,
`file_type`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'文件类型
'
,
`file_type`
varchar
(
20
)
DEFAULT
NULL
COMMENT
'文件类型:1 文件夹 ,2 文件
'
,
`file_name`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'文件名称'
,
`file_en_name`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'文件英文名称'
,
`parent_id`
bigint
(
20
)
NO
T
NULL
COMMENT
'父类id'
,
`parent_id`
bigint
(
20
)
DEFAUL
T
NULL
COMMENT
'父类id'
,
`status`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'VALID 有效,UNVALID 无效'
,
`remark`
varchar
(
500
)
DEFAULT
NULL
COMMENT
'备注'
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
...
...
@@ -76,7 +78,7 @@ CREATE TABLE `t_api_org` (
`org_cn_name`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'组织英文名称'
,
`org_phone`
varchar
(
20
)
NULL
DEFAULT
NULL
COMMENT
'组织电话'
,
`org_type`
varchar
(
20
)
NULL
DEFAULT
NULL
COMMENT
'组织类型:OUT 外部组织, IN 内部组织'
,
`status`
varchar
(
100
)
NOT
NULL
COMMENT
'状态(1-正常 2-冻结 3-下架
)'
,
`status`
varchar
(
100
)
NOT
NULL
COMMENT
'状态(NORMAL-正常 FREEZE-冻结 CANCEL-注销
)'
,
`org_mail`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'组织邮箱'
,
`org_sort`
int
(
10
)
DEFAULT
'999'
COMMENT
'组织排序'
,
`parent_id`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'父类组织编码'
,
...
...
@@ -103,7 +105,7 @@ CREATE TABLE `t_api_auth` (
`auth_mode`
varchar
(
50
)
DEFAULT
NULL
COMMENT
'授权方式:POWER_CALL_MODE 按次调用 ,RECORD_TIME_MODE 按时间调用 PERMANENT_TIME_MODE 永久有效'
,
`valid_start_time`
datetime
DEFAULT
NULL
COMMENT
'开始时间'
,
`valid_end_time`
datetime
DEFAULT
NULL
COMMENT
'结束时间'
,
`status`
varchar
(
100
)
NOT
NULL
COMMENT
'状态(1-正常 2-作废
)'
,
`status`
varchar
(
50
)
NOT
NULL
COMMENT
'状态(VALID-正常 UN_VALID-无效
)'
,
`remark`
varchar
(
500
)
DEFAULT
NULL
COMMENT
'备注'
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`create_user`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'创建人'
,
...
...
@@ -244,4 +246,21 @@ CREATE TABLE `t_api_syncing_datasource_type` (
`update_user`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'更新人'
,
`is_deleted`
tinyint
(
2
)
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'是否删除'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'api数据源类型信息表'
;
\ No newline at end of file
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'api数据源类型信息表'
;
#
字典表
DROP
TABLE
IF
EXISTS
`t_api_direction`
;
CREATE
TABLE
`t_api_direction`
(
`id`
bigint
(
20
)
unsigned
NOT
NULL
AUTO_INCREMENT
COMMENT
'自增ID'
,
`key`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'字典key'
,
`value`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'字典value'
,
`code`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'字典编码'
,
`parent`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'父节点'
,
`direction_type`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'字典类型'
,
`level`
int
(
10
)
DEFAULT
NULL
COMMENT
'等级'
,
`is_enabled`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'是否启用:UNABLE 停用,ENABLE 启用'
,
`create_date`
datetime
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`create_user`
varchar
(
100
)
DEFAULT
NULL
COMMENT
'创建人'
,
`is_deleted`
tinyint
(
2
)
unsigned
NOT
NULL
DEFAULT
'0'
COMMENT
'是否删除'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8mb4
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'api字典表信息表'
;
\ No newline at end of file
jz-dm-apigateway/pom.xml
View file @
d7b311c3
...
...
@@ -109,4 +109,67 @@
</dependency>
</dependencies>
<build>
<finalName>
${project.artifactId}
</finalName>
<resources>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<excludes>
<exclude>
static/**
</exclude>
<exclude>
xls/**
</exclude>
<exclude>
conf/**
</exclude>
<exclude>
emails/**
</exclude>
</excludes>
</resource>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
false
</filtering>
<includes>
<include>
static/**
</include>
<include>
xls/**
</include>
<include>
conf/**
</include>
<include>
emails/**
</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
springloaded
</artifactId>
<version>
1.2.8.RELEASE
</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>
true
</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-resources-plugin
</artifactId>
<configuration>
<encoding>
UTF-8
</encoding>
<!-- 过滤后缀为pem、pfx的证书文件 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>
p12
</nonFilteredFileExtension>
<nonFilteredFileExtension>
pem
</nonFilteredFileExtension>
<nonFilteredFileExtension>
pfx
</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
jz-dm-apigateway/src/main/java/com/jz/dm/common/base/BaseCurrentUserObject.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
base
;
import
com.jz.common.bean.SysUserDto
;
import
com.jz.common.constant.RedisMessageConstant
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
/**
* @author ZC
...
...
@@ -13,28 +14,26 @@ import org.springframework.data.redis.core.RedisTemplate;
* @DAY_NAME_SHORT: 周三
* @Description: 获取当前登录用户
**/
@Component
public
class
BaseCurrentUserObject
{
private
static
RedisTemplate
<
String
,
Object
>
REDIS
=
new
RedisTemplate
();
private
volatile
static
SysUserDto
sysUserDto
;
@Autowired
private
RedisTemplate
redisTemplate
;
private
BaseCurrentUserObject
()
{
}
/**
* 获取登录用户
*
* @return
*/
public
static
SysUserDto
getUserInfo
()
{
if
(
sysUserDto
==
null
)
{
synchronized
(
SysUserDto
.
class
)
{
if
(
sysUserDto
==
null
)
{
sysUserDto
=
(
SysUserDto
)
REDIS
.
opsForValue
().
get
(
"USER"
+
RedisMessageConstant
.
SENDTYPE_LOGIN_SYS
);
}
}
}
public
SysUserDto
getUserInfo
()
{
SysUserDto
sysUserDto
=
(
SysUserDto
)
redisTemplate
.
opsForValue
().
get
(
"USER"
+
"004"
);
//RedisMessageConstant.SENDTYPE_LOGIN_SYS);
return
sysUserDto
;
}
//SysUserDto currentUser = (SysUserDto)
// redisTemplate.opsForValue().get("user" + RedisMessageConstant.SENDTYPE_LOGIN_SYS);
/*public static void main(String[] args) {
System.out.println(new BaseCurrentUserObject().getUserInfo());
}*/
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/constant/LoggingConstants.java
View file @
d7b311c3
...
...
@@ -44,4 +44,8 @@ public class LoggingConstants {
/** "@" 符号*/
public
static
final
String
MONKEYS_AT
=
"@"
;
/** "&" 符号*/
public
static
final
String
AND_SPILT
=
"&"
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/GatewayResultCode.java
View file @
d7b311c3
...
...
@@ -27,7 +27,8 @@ public enum GatewayResultCode implements ResultCode {
/** 无效参数 */
ILLEGAL_ARGUMENT
(
"ILLEGAL_ARGUMENT"
,
"无效参数"
),
/** 参数列表为空 */
REQUEST_PARAM_EMPTY
(
"REQUEST_PARAM_EMPTY"
,
"请求参数为空"
),
/** 无效请求 */
ILLEGAL_REQUEST
(
"ILLEGAL_REQUEST"
,
"无效请求"
),
...
...
@@ -35,8 +36,11 @@ public enum GatewayResultCode implements ResultCode {
/** 无效请求 */
ILLEGAL_TIMETEMP
(
"ILLEGAL_TIMETEMP"
,
"无效时间戳"
),
/** 接口未授权 */
//INTERFACE_NO_AUTHORITY("INTERFACE_NO_AUTHORITY", "接口未授权"),
/** 请求次数受限 */
REQUEST_LIMIT_EXCEPTION
(
"REQUEST_LIMIT_EXCEPTION"
,
"请求次数受限"
),
/** 请求超过限制 */
RATE_LIMIT_EXCEEDED
(
"RATE_LIMIT_EXCEEDED"
,
"请求超过限制"
),
...
...
@@ -47,9 +51,22 @@ public enum GatewayResultCode implements ResultCode {
/** ip不允许访问 */
IP_NOT_ALLOW_ACCESS
(
"IP_NOT_ALLOW_ACCESS"
,
"ip不允许访问"
),
/** 提交数据过大 */
POST_DATA_TOO_LARGE
(
"POST_DATA_TOO_LARGE"
,
"提交数据过大"
);
POST_DATA_TOO_LARGE
(
"POST_DATA_TOO_LARGE"
,
"提交数据过大"
),
/** 签名错误 */
SIGN_ERROR
(
"SIGN_EMPTY"
,
"签名错误"
),
/** 请求未授权 */
REQUEST_NOT_AUTH
(
"REQUEST_NOT_AUTH"
,
"请求未授权"
),
/** 请求组织不存在 */
ORG_NOT_EXIST
(
"ORG_NOT_EXIST"
,
"请求组织不存在"
),
/** API状态异常 */
API_STATUS_EXCEPTION
(
"API_STATUS_EXCEPTION"
,
"API状态异常"
),
/** 请求组织状态异常 */
ORG_STATE_EXCEPTION
(
"ORG_STATE_EXCEPTION"
,
"请求组织状态异常"
);
/**
* 初始化保存到map里方便根据code获取
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/common/
util
/SignType.java
→
jz-dm-apigateway/src/main/java/com/jz/dm/common/
enums
/SignType.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
util
;
package
com
.
jz
.
dm
.
common
.
enums
;
/**
* 签名类型
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/apiInterface/ApiStatusEnum.java
View file @
d7b311c3
...
...
@@ -42,4 +42,12 @@ public enum ApiStatusEnum {
return
text
;
}
public
static
ApiStatusEnum
fromApiStatusName
(
String
typeName
)
{
for
(
ApiStatusEnum
type
:
ApiStatusEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/auth/AuthModeEnum.java
View file @
d7b311c3
...
...
@@ -34,4 +34,13 @@ public enum AuthModeEnum {
public
String
getText
()
{
return
text
;
}
public
static
AuthModeEnum
fromTypeModeName
(
String
typeName
)
{
for
(
AuthModeEnum
type
:
AuthModeEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/auth/AuthTypeEnum.java
View file @
d7b311c3
...
...
@@ -29,4 +29,13 @@ public enum AuthTypeEnum {
public
String
getText
()
{
return
text
;
}
public
static
AuthTypeEnum
fromTypeName
(
String
typeName
)
{
for
(
AuthTypeEnum
type
:
AuthTypeEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/direction/DirectionTypeEnum.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
enums
.
direction
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.common.enums
* @PROJECT_NAME: jz-dm-parent
* @NAME: DirectionTypeEnum
* @DATE: 2020-12-31/18:39
* @DAY_NAME_SHORT: 周四
* @Description:
**/
public
enum
DirectionTypeEnum
{
/**
* API类型
*/
API_TYPE
;
public
static
DirectionTypeEnum
fromTypeName
(
String
typeName
)
{
for
(
DirectionTypeEnum
type
:
DirectionTypeEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/org/OrgStatusEnum.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
enums
.
org
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.common.enums.org
* @PROJECT_NAME: jz-dm-parent
* @NAME: OrgStatusEnum
* @DATE: 2021-1-1/11:17
* @DAY_NAME_SHORT: 周五
* @Description:
**/
public
enum
OrgStatusEnum
{
NORMAL
(
"正常"
),
FREEZE
(
"冻结"
),
CANCEL
(
"注销"
);
private
String
text
;
OrgStatusEnum
(
String
text
)
{
this
.
text
=
text
;
}
public
String
getText
()
{
return
text
;
}
public
static
OrgStatusEnum
fromTypeName
(
String
typeName
)
{
for
(
OrgStatusEnum
type
:
OrgStatusEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/enums/produce/ProducerStatusTypeEnum.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
enums
.
produce
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.common.enums.produce
* @PROJECT_NAME: jz-dm-parent
* @NAME: ProducerStatusTypeEnum
* @DATE: 2021-1-1/18:04
* @DAY_NAME_SHORT: 周五
* @Description:
**/
public
enum
ProducerStatusTypeEnum
{
DRAFT
(
"草稿"
),
ISSUE
(
"发布"
),
OUTMODED
(
"过时"
),
FREEZE
(
"冻结"
),
EXPIRY
(
"失效"
);
private
String
text
;
ProducerStatusTypeEnum
(
String
text
)
{
this
.
text
=
text
;
}
public
String
getText
()
{
return
text
;
}
public
static
ProducerStatusTypeEnum
fromTypeName
(
String
typeName
)
{
for
(
ProducerStatusTypeEnum
type
:
ProducerStatusTypeEnum
.
values
())
{
if
(
type
.
name
().
equals
(
typeName
))
{
return
type
;
}
}
return
null
;
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/exception/SignatureException.java
deleted
100644 → 0
View file @
2eca6b14
package
com
.
jz
.
dm
.
common
.
exception
;
import
com.jz.dm.common.util.ResultCode
;
/**
* 签名异常
*
*/
public
class
SignatureException
extends
OpenApiException
{
private
static
final
long
serialVersionUID
=
6551962245794846748L
;
/**
* 构造函数
*
* @param resultCode
*/
public
SignatureException
(
ResultCode
resultCode
)
{
super
(
resultCode
);
}
/**
* 构造函数
* @param resultCode
* @param detailMessage
*/
public
SignatureException
(
ResultCode
resultCode
,
String
detailMessage
)
{
super
(
resultCode
,
detailMessage
);
}
/**
* 构造函数
* @param resultCode
* @param cause
*/
public
SignatureException
(
ResultCode
resultCode
,
Throwable
cause
)
{
super
(
resultCode
,
cause
);
}
/**
* 构造函数
* @param resultCode
* @param detailMessage
* @param cause
*/
public
SignatureException
(
ResultCode
resultCode
,
String
detailMessage
,
Throwable
cause
)
{
super
(
resultCode
,
detailMessage
,
cause
);
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/DateUtil.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
util
;
import
java.util.Calendar
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.common.util
* @PROJECT_NAME: jz-dm-parent
* @NAME: DateUtil
* @DATE: 2021-1-2/21:55
* @DAY_NAME_SHORT: 周六
* @Description: 时间工具类处理时间
**/
public
class
DateUtil
{
/**
* 计算当前距离23:59:59剩余时间
* @return
*/
public
static
long
calculateNowResidueTime
(){
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DAY_OF_YEAR
,
1
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
(
cal
.
getTimeInMillis
()
-
System
.
currentTimeMillis
())
/
1000
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
calculateNowResidueTime
());
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/JSONWriter.java
deleted
100644 → 0
View file @
2eca6b14
package
com
.
jz
.
dm
.
common
.
util
;
import
java.beans.BeanInfo
;
import
java.beans.IntrospectionException
;
import
java.beans.Introspector
;
import
java.beans.PropertyDescriptor
;
import
java.lang.reflect.Array
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.text.CharacterIterator
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.StringCharacterIterator
;
import
java.util.*
;
public
class
JSONWriter
{
/**
* 默认时间格式
**/
public
static
final
String
DATE_TIME_FORMAT
=
"yyyy-MM-dd HH:mm:ss"
;
/**
* Date默认时区
**/
public
static
final
String
DATE_TIMEZONE
=
"GMT+8"
;
private
StringBuffer
buf
=
new
StringBuffer
();
private
Stack
<
Object
>
calls
=
new
Stack
<
Object
>();
private
boolean
emitClassName
=
true
;
private
DateFormat
format
;
public
JSONWriter
(
boolean
emitClassName
)
{
this
.
emitClassName
=
emitClassName
;
}
public
JSONWriter
()
{
this
(
false
);
}
public
JSONWriter
(
DateFormat
format
)
{
this
(
false
);
this
.
format
=
format
;
}
public
String
write
(
Object
object
)
{
buf
.
setLength
(
0
);
value
(
object
);
return
buf
.
toString
();
}
public
String
write
(
long
n
)
{
return
String
.
valueOf
(
n
);
}
public
String
write
(
double
d
)
{
return
String
.
valueOf
(
d
);
}
public
String
write
(
char
c
)
{
return
"\""
+
c
+
"\""
;
}
public
String
write
(
boolean
b
)
{
return
String
.
valueOf
(
b
);
}
private
void
value
(
Object
object
)
{
if
(
object
==
null
||
cyclic
(
object
))
{
add
(
null
);
}
else
{
calls
.
push
(
object
);
if
(
object
instanceof
Class
<?>)
string
(
object
);
else
if
(
object
instanceof
Boolean
)
bool
(((
Boolean
)
object
).
booleanValue
());
else
if
(
object
instanceof
Number
)
add
(
object
);
else
if
(
object
instanceof
String
)
string
(
object
);
else
if
(
object
instanceof
Character
)
string
(
object
);
else
if
(
object
instanceof
Map
<?,
?>)
map
((
Map
<?,
?>)
object
);
else
if
(
object
.
getClass
().
isArray
())
array
(
object
);
else
if
(
object
instanceof
Iterator
<?>)
array
((
Iterator
<?>)
object
);
else
if
(
object
instanceof
Collection
<?>)
array
(((
Collection
<?>)
object
).
iterator
());
else
if
(
object
instanceof
Date
)
date
((
Date
)
object
);
else
bean
(
object
);
calls
.
pop
();
}
}
private
boolean
cyclic
(
Object
object
)
{
Iterator
<
Object
>
it
=
calls
.
iterator
();
while
(
it
.
hasNext
())
{
Object
called
=
it
.
next
();
if
(
object
==
called
)
return
true
;
}
return
false
;
}
private
void
bean
(
Object
object
)
{
add
(
"{"
);
BeanInfo
info
;
boolean
addedSomething
=
false
;
try
{
info
=
Introspector
.
getBeanInfo
(
object
.
getClass
());
PropertyDescriptor
[]
props
=
info
.
getPropertyDescriptors
();
for
(
int
i
=
0
;
i
<
props
.
length
;
++
i
)
{
PropertyDescriptor
prop
=
props
[
i
];
String
name
=
prop
.
getName
();
Method
accessor
=
prop
.
getReadMethod
();
if
((
emitClassName
||
!
"class"
.
equals
(
name
))
&&
accessor
!=
null
)
{
if
(!
accessor
.
isAccessible
())
accessor
.
setAccessible
(
true
);
Object
value
=
accessor
.
invoke
(
object
,
(
Object
[])
null
);
if
(
value
==
null
)
continue
;
if
(
addedSomething
)
add
(
','
);
add
(
name
,
value
);
addedSomething
=
true
;
}
}
}
catch
(
IllegalAccessException
iae
)
{
}
catch
(
InvocationTargetException
ite
)
{
}
catch
(
IntrospectionException
ie
)
{
}
add
(
"}"
);
}
private
void
add
(
String
name
,
Object
value
)
{
add
(
'"'
);
add
(
name
);
add
(
"\":"
);
value
(
value
);
}
private
void
map
(
Map
<?,
?>
map
)
{
add
(
"{"
);
Iterator
<?>
it
=
map
.
entrySet
().
iterator
();
while
(
it
.
hasNext
())
{
Map
.
Entry
<?,
?>
e
=
(
Map
.
Entry
<?,
?>)
it
.
next
();
value
(
e
.
getKey
());
add
(
":"
);
value
(
e
.
getValue
());
if
(
it
.
hasNext
())
add
(
','
);
}
add
(
"}"
);
}
private
void
array
(
Iterator
<?>
it
)
{
add
(
"["
);
while
(
it
.
hasNext
())
{
value
(
it
.
next
());
if
(
it
.
hasNext
())
add
(
","
);
}
add
(
"]"
);
}
private
void
array
(
Object
object
)
{
add
(
"["
);
int
length
=
Array
.
getLength
(
object
);
for
(
int
i
=
0
;
i
<
length
;
++
i
)
{
value
(
Array
.
get
(
object
,
i
));
if
(
i
<
length
-
1
)
add
(
','
);
}
add
(
"]"
);
}
private
void
bool
(
boolean
b
)
{
add
(
b
?
"true"
:
"false"
);
}
private
void
date
(
Date
date
)
{
if
(
this
.
format
==
null
)
{
this
.
format
=
new
SimpleDateFormat
(
DATE_TIME_FORMAT
);
this
.
format
.
setTimeZone
(
TimeZone
.
getTimeZone
(
DATE_TIMEZONE
));
}
add
(
"\""
);
add
(
format
.
format
(
date
));
add
(
"\""
);
}
private
void
string
(
Object
obj
)
{
add
(
'"'
);
CharacterIterator
it
=
new
StringCharacterIterator
(
obj
.
toString
());
for
(
char
c
=
it
.
first
();
c
!=
CharacterIterator
.
DONE
;
c
=
it
.
next
())
{
if
(
c
==
'"'
)
add
(
"\\\""
);
else
if
(
c
==
'\\'
)
add
(
"\\\\"
);
else
if
(
c
==
'/'
)
add
(
"\\/"
);
else
if
(
c
==
'\b'
)
add
(
"\\b"
);
else
if
(
c
==
'\f'
)
add
(
"\\f"
);
else
if
(
c
==
'\n'
)
add
(
"\\n"
);
else
if
(
c
==
'\r'
)
add
(
"\\r"
);
else
if
(
c
==
'\t'
)
add
(
"\\t"
);
else
if
(
Character
.
isISOControl
(
c
))
{
unicode
(
c
);
}
else
{
add
(
c
);
}
}
add
(
'"'
);
}
private
void
add
(
Object
obj
)
{
buf
.
append
(
obj
);
}
private
void
add
(
char
c
)
{
buf
.
append
(
c
);
}
static
char
[]
hex
=
"0123456789ABCDEF"
.
toCharArray
();
private
void
unicode
(
char
c
)
{
add
(
"\\u"
);
int
n
=
c
;
for
(
int
i
=
0
;
i
<
4
;
++
i
)
{
int
digit
=
(
n
&
0xf000
)
>>
12
;
add
(
hex
[
digit
]);
n
<<=
4
;
}
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/MapUtil.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
common
.
util
;
import
com.alibaba.fastjson.JSON
;
import
org.apache.commons.lang3.StringUtils
;
import
java.lang.reflect.Field
;
import
java.util.*
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.common.util
* @PROJECT_NAME: jz-dm-parent
* @NAME: MapUtil
* @DATE: 2021-1-2/14:02
* @DAY_NAME_SHORT: 周六
* @Description:
**/
public
class
MapUtil
{
/**
* 对参数进行字典排序
* @param map
* @return
*/
public
static
List
directSort
(
Map
map
){
List
list
=
new
ArrayList
();
Iterator
iter
=
map
.
entrySet
().
iterator
();
//获得map的Iterator
while
(
iter
.
hasNext
())
{
Map
.
Entry
entry
=
(
Map
.
Entry
)
iter
.
next
();
list
.
add
(
entry
.
getKey
());
}
Collections
.
sort
(
list
);
return
list
;
}
/**
* 将对象转成TreeMap,属性名为key,属性值为value
* @param object 对象
* @return
* @throws IllegalAccessException
*/
public
static
TreeMap
<
String
,
Object
>
objToMap
(
Object
object
)
throws
IllegalAccessException
{
Class
clazz
=
object
.
getClass
();
TreeMap
<
String
,
Object
>
treeMap
=
new
TreeMap
<
String
,
Object
>();
while
(
null
!=
clazz
.
getSuperclass
()
)
{
Field
[]
declaredFields1
=
clazz
.
getDeclaredFields
();
for
(
Field
field
:
declaredFields1
)
{
String
name
=
field
.
getName
();
// 获取原来的访问控制权限
boolean
accessFlag
=
field
.
isAccessible
();
// 修改访问控制权限
field
.
setAccessible
(
true
);
Object
value
=
field
.
get
(
object
);
// 恢复访问控制权限
field
.
setAccessible
(
accessFlag
);
if
(
null
!=
value
&&
StringUtils
.
isNotBlank
(
value
.
toString
()))
{
//如果是List,将List转换为json字符串
if
(
value
instanceof
List
)
{
value
=
JSON
.
toJSONString
(
value
);
}
treeMap
.
put
(
name
,
value
);
}
}
clazz
=
clazz
.
getSuperclass
();
}
return
treeMap
;
}
/**
* 按照指定的分割符将list转换为String
* @param list
* @param separator
* @return
*/
public
static
String
listToString
(
List
list
,
String
separator
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
if
(
i
==
list
.
size
()
-
1
)
{
sb
.
append
(
list
.
get
(
i
));
}
else
{
sb
.
append
(
list
.
get
(
i
));
sb
.
append
(
separator
);
}
}
return
sb
.
toString
();
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/RandomUtil.java
View file @
d7b311c3
...
...
@@ -65,11 +65,11 @@ public class RandomUtil {
log
.
info
(
"----------生成组织编码内容或类型不存在--------------"
);
return
""
;
}
boolean
chineseWord
=
isChineseWord
(
content
);
/*
boolean chineseWord = isChineseWord(content);
if (!chineseWord) {
log.info("----------编码中不能出现英文或者字母--------------");
return "";
}
}
*/
StringBuilder
builder
=
new
StringBuilder
();
if
(
Constants
.
AUTH_INT
.
equalsIgnoreCase
(
type
))
{
builder
.
append
(
"NEI"
);
...
...
@@ -126,12 +126,12 @@ public class RandomUtil {
}
coding
=
getCodeInfo
(
userId
,
coding
,
builder
,
month
,
day
,
hour
,
minute
,
second
);
}
return
coding
;
}
/**
* 拼接内部/外部授权码
*
* @param orgCode
* @param coding
* @param builder
...
...
@@ -262,6 +262,34 @@ public class RandomUtil {
return
str
;
}
/**
* 生成指定版本号
* @param version 旧版本号
* @return
*/
public
static
String
generateVersion
(
String
version
)
{
StringBuilder
builder
=
new
StringBuilder
();
if
(
StringUtils
.
isNotBlank
(
version
))
{
String
[]
split
=
version
.
substring
(
1
).
split
(
"\\."
);
Integer
one
=
Integer
.
parseInt
(
split
[
0
]);
Integer
two
=
Integer
.
parseInt
(
split
[
1
]);
if
(
two
+
1
==
100
)
{
one
=
one
+
1
;
two
=
0
;
}
else
if
(
two
<
100
)
{
two
=
two
+
1
;
}
builder
.
append
(
"v"
);
builder
.
append
(
one
.
toString
());
builder
.
append
(
"."
);
builder
.
append
(
two
.
toString
());
}
else
{
return
""
;
}
return
builder
.
toString
();
}
public
static
void
main
(
String
[]
args
)
{
//System.out.println(getStringRandom(8));
// System.out.println("获取拼音首字母:"+getAllFirstLetter("大中国南昌中大china"));
...
...
@@ -269,7 +297,8 @@ public class RandomUtil {
//System.out.println(generateOrgCoding("九章数据","INT"));
// System.out.println(generateTokenCode("", ""));
//System.out.println(addZeroForNum("1", 8));
System
.
out
.
println
(
"内部授权码:"
+
generateTokenCode
(
"INT"
,
"NEIJZSJ900hx"
,
""
));
//内部授权码
System
.
out
.
println
(
"外部授权码:"
+
generateTokenCode
(
"OUT"
,
""
,
"199"
));
//内部授权码
//System.out.println("内部授权码:" + generateTokenCode("INT", "NEIJZSJ900hx", ""));//内部授权码
//System.out.println("外部授权码:" + generateTokenCode("OUT", "", "199"));//内部授权码
System
.
out
.
println
(
generateVersion
(
"v1.99"
));
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/StreamUtil.java
deleted
100644 → 0
View file @
2eca6b14
package
com
.
jz
.
dm
.
common
.
util
;
import
java.io.*
;
/**
* 流处理工具
*
*/
public
class
StreamUtil
{
private
static
final
int
DEFAULT_BUFFER_SIZE
=
8192
;
public
static
void
io
(
InputStream
in
,
OutputStream
out
)
throws
IOException
{
io
(
in
,
out
,
-
1
);
}
public
static
void
io
(
InputStream
in
,
OutputStream
out
,
int
bufferSize
)
throws
IOException
{
if
(
bufferSize
==
-
1
)
{
bufferSize
=
DEFAULT_BUFFER_SIZE
;
}
byte
[]
buffer
=
new
byte
[
bufferSize
];
int
amount
;
while
((
amount
=
in
.
read
(
buffer
))
>=
0
)
{
out
.
write
(
buffer
,
0
,
amount
);
}
}
public
static
void
io
(
Reader
in
,
Writer
out
)
throws
IOException
{
io
(
in
,
out
,
-
1
);
}
public
static
void
io
(
Reader
in
,
Writer
out
,
int
bufferSize
)
throws
IOException
{
if
(
bufferSize
==
-
1
)
{
bufferSize
=
DEFAULT_BUFFER_SIZE
>>
1
;
}
char
[]
buffer
=
new
char
[
bufferSize
];
int
amount
;
while
((
amount
=
in
.
read
(
buffer
))
>=
0
)
{
out
.
write
(
buffer
,
0
,
amount
);
}
}
public
static
OutputStream
synchronizedOutputStream
(
OutputStream
out
)
{
return
new
SynchronizedOutputStream
(
out
);
}
public
static
OutputStream
synchronizedOutputStream
(
OutputStream
out
,
Object
lock
)
{
return
new
SynchronizedOutputStream
(
out
,
lock
);
}
public
static
String
readText
(
InputStream
in
)
throws
IOException
{
return
readText
(
in
,
null
,
-
1
);
}
public
static
String
readText
(
InputStream
in
,
String
encoding
)
throws
IOException
{
return
readText
(
in
,
encoding
,
-
1
);
}
public
static
String
readText
(
InputStream
in
,
String
encoding
,
int
bufferSize
)
throws
IOException
{
Reader
reader
=
(
encoding
==
null
)
?
new
InputStreamReader
(
in
)
:
new
InputStreamReader
(
in
,
encoding
);
return
readText
(
reader
,
bufferSize
);
}
public
static
String
readText
(
Reader
reader
)
throws
IOException
{
return
readText
(
reader
,
-
1
);
}
public
static
String
readText
(
Reader
reader
,
int
bufferSize
)
throws
IOException
{
StringWriter
writer
=
new
StringWriter
();
io
(
reader
,
writer
,
bufferSize
);
return
writer
.
toString
();
}
private
static
class
SynchronizedOutputStream
extends
OutputStream
{
private
OutputStream
out
;
private
Object
lock
;
SynchronizedOutputStream
(
OutputStream
out
)
{
this
(
out
,
out
);
}
SynchronizedOutputStream
(
OutputStream
out
,
Object
lock
)
{
this
.
out
=
out
;
this
.
lock
=
lock
;
}
public
void
write
(
int
datum
)
throws
IOException
{
synchronized
(
lock
)
{
out
.
write
(
datum
);
}
}
public
void
write
(
byte
[]
data
)
throws
IOException
{
synchronized
(
lock
)
{
out
.
write
(
data
);
}
}
public
void
write
(
byte
[]
data
,
int
offset
,
int
length
)
throws
IOException
{
synchronized
(
lock
)
{
out
.
write
(
data
,
offset
,
length
);
}
}
public
void
flush
()
throws
IOException
{
synchronized
(
lock
)
{
out
.
flush
();
}
}
public
void
close
()
throws
IOException
{
synchronized
(
lock
)
{
out
.
close
();
}
}
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/common/util/WebUtils.java
deleted
100644 → 0
View file @
2eca6b14
This diff is collapsed.
Click to expand it.
jz-dm-apigateway/src/main/java/com/jz/dm/controller/ApiDirectionController.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
controller
;
import
com.jz.common.utils.Result
;
import
com.jz.dm.service.ApiDirectionService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Mono
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.controller
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiLogController
* @DATE: 2020-12-25/14:25
* @DAY_NAME_SHORT: 周五
* @Description:
**/
@RestController
@RequestMapping
(
"api/direction"
)
@Api
(
tags
=
"API字典信息Controller"
)
public
class
ApiDirectionController
{
@Autowired
private
ApiDirectionService
apiDirectionService
;
/**
* @Description:api类型列表
* @return: api类型列表
* @Author: Mr.zhang
* @Date: 2020-12-24
*/
@ApiOperation
(
"api类型列表"
)
@PostMapping
(
value
=
"/getApiTypeList"
)
public
Mono
<
Result
>
getApiTypeList
(
@RequestParam
(
name
=
"parentCode"
)
String
parentCode
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
apiDirectionService
.
getApiType
(
parentCode
)));
}
/**
* @Description:查询某个类型的字典值
* @return: 查询某个类型的字典值
* @Author: Mr.zhang
* @Date: 2020-12-24
*/
@ApiOperation
(
"查询某个类型的字典值"
)
@PostMapping
(
value
=
"/getDirectionVal"
)
public
Mono
<
Result
>
getDirectionVal
(
@RequestParam
(
name
=
"code"
,
required
=
false
)
String
code
,
@RequestParam
(
name
=
"key"
,
required
=
false
)
String
key
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
apiDirectionService
.
getDirectionVal
(
key
,
code
)));
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/controller/ApiLogController.java
View file @
d7b311c3
...
...
@@ -26,7 +26,7 @@ import javax.validation.Valid;
**/
@RestController
@RequestMapping
(
"api/logging"
)
@Api
(
tags
=
"
授权认证
Controller"
)
@Api
(
tags
=
"
日志信息
Controller"
)
public
class
ApiLogController
{
@Autowired
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/controller/AuthController.java
View file @
d7b311c3
...
...
@@ -39,7 +39,7 @@ public class AuthController {
*/
@ApiOperation
(
"商城用户API认证"
)
@PostMapping
(
value
=
"/mall-user-auth-api"
)
public
Mono
<
Result
>
authMallUserApi
(
@RequestBody
@Valid
Auth
Mall
UserApiReq
req
)
{
public
Mono
<
Result
>
authMallUserApi
(
@RequestBody
@Valid
AuthUserApiReq
req
)
{
return
Mono
.
fromSupplier
(()
->
authService
.
addMallUserApiAuth
(
req
));
}
/**
...
...
@@ -50,7 +50,7 @@ public class AuthController {
*/
@ApiOperation
(
"DMP用户API认证"
)
@PostMapping
(
value
=
"dmp-auth-api"
)
public
Mono
<
Result
>
authDmpUserApi
(
@RequestBody
@Valid
Auth
Dmp
UserApiReq
req
)
{
public
Mono
<
Result
>
authDmpUserApi
(
@RequestBody
@Valid
AuthUserApiReq
req
)
{
return
Mono
.
fromSupplier
(()
->
authService
.
addDmpUserApiAuth
(
req
));
}
/**
...
...
@@ -81,8 +81,8 @@ public class AuthController {
* @Author: Mr.zhang
* @Date: 2020-12-26
*/
@ApiOperation
(
"认证信息修改"
)
@PostMapping
(
value
=
"/update-auth-info"
)
//
@ApiOperation("认证信息修改")
//
@PostMapping(value = "/update-auth-info")
public
Mono
<
Result
>
updateAuthListInfo
(
@RequestBody
@Valid
AuthInfoUpdateReq
req
)
{
return
Mono
.
fromSupplier
(()
->
authService
.
updateAuthInfo
(
req
));
}
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/controller/OrganizationManageController.java
View file @
d7b311c3
...
...
@@ -6,7 +6,6 @@ import com.jz.dm.models.req.organizationManage.OrganizationManageDetailQueryReq;
import
com.jz.dm.models.req.organizationManage.OrganizationManageListQueryReq
;
import
com.jz.dm.models.req.organizationManage.OrganizationManageUpdateReq
;
import
com.jz.dm.service.OrganizationManageService
;
import
com.jz.dm.web.annotation.AccessLimit
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -51,8 +50,6 @@ public class OrganizationManageController {
*/
@ApiOperation
(
"组织详情查询"
)
@PostMapping
(
value
=
"/getOrgDetail"
)
@AccessLimit
(
limit
=
1000
,
sec
=
1
)
//@ApiLogAspect
public
Mono
<
Result
>
getOrganizationDetail
(
@RequestBody
@Valid
OrganizationManageDetailQueryReq
req
)
{
return
Mono
.
fromSupplier
(()
->
organizationManageService
.
getOrganizationDetail
(
req
));
}
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/controller/ProducerController.java
View file @
d7b311c3
...
...
@@ -47,7 +47,7 @@ public class ProducerController {
*/
@ApiOperation
(
"Api制作(自定义)"
)
@PostMapping
(
value
=
"/addCustomApi"
)
public
Mono
<
Result
>
makeCustomApi
(
@RequestBody
@Valid
MakeCustomApi
Req
req
)
{
public
Mono
<
Result
>
makeCustomApi
(
@RequestBody
@Valid
ApiInterface
Req
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
addCustomApi
(
req
)));
}
...
...
@@ -59,7 +59,7 @@ public class ProducerController {
@ApiOperation
(
"Api制作(数据银行)"
)
@PostMapping
(
value
=
"/addDataBankApiInfo"
)
public
Mono
<
Result
>
addDataBankApiInfo
(
@RequestBody
@Valid
MakeDataBankApiReq
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
addDataBankApiInfo
(
req
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
addDataBankApiInfo
(
req
));
}
/**
...
...
@@ -81,7 +81,7 @@ public class ProducerController {
@ApiOperation
(
"Api制作(大数据查询/标签查询)"
)
@PostMapping
(
value
=
"/makeBigDataApi"
)
public
Mono
<
Result
>
bigDataMakeApi
(
@RequestBody
@Valid
MakeBigDataApiReq
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
addBigDataMakeApi
(
req
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
addBigDataMakeApi
(
req
));
}
/**
...
...
@@ -93,7 +93,7 @@ public class ProducerController {
@ApiOperation
(
"保存API基本信息"
)
@PostMapping
(
value
=
"/saveInterface"
)
public
Mono
<
Result
>
saveInsetInterface
(
@RequestBody
@Valid
ApiInterfaceReq
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
saveInterfaceAPi
(
req
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
saveInterfaceAPi
(
req
));
}
/**
* @Description:Api制作(大数据查询/标签查询)保存修改的api信息
...
...
@@ -104,7 +104,7 @@ public class ProducerController {
@ApiOperation
(
"保存修改的api信息"
)
@PostMapping
(
value
=
"/保存修改的api信息"
)
public
Mono
<
Result
>
saveUpdateAPiInfo
(
@RequestBody
@Valid
MakeApiSaveInfoReq
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
saveUpdateAPiInfo
(
req
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
saveUpdateAPiInfo
(
req
));
}
...
...
@@ -116,7 +116,7 @@ public class ProducerController {
@ApiOperation
(
"获取数据源配置"
)
@PostMapping
(
value
=
"/getSourceConfig"
)
public
Mono
<
Result
>
getSourceConfig
(
@RequestBody
@Valid
SourceConfigReq
req
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
getSourceConfig
(
req
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
getSourceConfig
(
req
));
}
/**
* @Description:获取索引
...
...
@@ -126,7 +126,7 @@ public class ProducerController {
@ApiOperation
(
"获取索引"
)
@GetMapping
(
value
=
"/getIndicess"
)
public
Mono
<
Result
>
getSourceWarehouseList
(
@RequestParam
(
name
=
"id"
)
Long
id
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
getSourceWarehouseList
(
id
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
getSourceWarehouseList
(
id
));
}
/**
* @Description:获取某个索引下的type
...
...
@@ -137,7 +137,7 @@ public class ProducerController {
@GetMapping
(
value
=
"/getIndicesTypes"
)
public
Mono
<
Result
>
getIndicesTypes
(
@RequestParam
(
name
=
"indices"
)
String
indices
,
@RequestParam
(
name
=
"id"
)
Long
id
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
getIndicesTypes
(
indices
,
id
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
getIndicesTypes
(
indices
,
id
));
}
/**
* @Description:获取某个索引 type的fields
...
...
@@ -149,6 +149,6 @@ public class ProducerController {
public
Mono
<
Result
>
getIndicesTypesFields
(
@RequestParam
(
name
=
"indices"
)
String
indices
,
@RequestParam
(
name
=
"type"
)
String
type
,
@RequestParam
(
name
=
"id"
)
Long
id
)
{
return
Mono
.
fromSupplier
(()
->
Result
.
of_success
(
producerService
.
getIndicesTypesFields
(
indices
,
type
,
id
)
));
return
Mono
.
fromSupplier
(()
->
producerService
.
getIndicesTypesFields
(
indices
,
type
,
id
));
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/filter/AuthFilter.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
filter
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jz.common.utils.RedisUtils
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.common.constant.LoggingConstants
;
import
com.jz.dm.common.enums.GatewayResultCode
;
import
com.jz.dm.common.enums.apiInterface.ApiStatusEnum
;
import
com.jz.dm.common.enums.org.OrgStatusEnum
;
import
com.jz.dm.common.exception.GatewayException
;
import
com.jz.dm.common.util.DateUtil
;
import
com.jz.dm.models.domian.ApiAuth
;
import
com.jz.dm.models.domian.ApiInterface
;
import
com.jz.dm.models.domian.ApiOrg
;
import
com.jz.dm.models.enity.GatewayRequest
;
import
com.jz.dm.models.enity.GatewayResponse
;
import
com.jz.dm.service.ApiInterfaceService
;
import
com.jz.dm.service.AuthService
;
import
com.jz.dm.service.OrganizationManageService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.filter
...
...
@@ -15,8 +36,20 @@ import org.springframework.stereotype.Component;
* @Description: 认证过滤器
**/
@Component
(
"authFilter"
)
@Slf4j
public
class
AuthFilter
extends
AbstractFilter
{
@Autowired
private
AuthService
authService
;
@Autowired
private
OrganizationManageService
organizationManageService
;
@Autowired
private
ApiInterfaceService
apiInterfaceService
;
@Autowired
private
RedisUtils
redisUtils
;
@Value
(
"${request.limit.max}"
)
private
Long
limit
;
@Override
public
String
getFilterName
()
{
...
...
@@ -27,10 +60,89 @@ public class AuthFilter extends AbstractFilter {
public
int
getOrder
()
{
return
Constants
.
FILTER_ORDER_5
;
}
@Override
protected
void
internalDoFilter
(
GatewayRequest
request
,
GatewayResponse
response
,
FilterChain
chain
)
{
//TODO 主要做计费计次验证
@Override
protected
void
internalDoFilter
(
GatewayRequest
request
,
GatewayResponse
response
,
FilterChain
chain
)
{
try
{
ApiInterface
apiInterface
=
apiInterfaceService
.
getApiInfo
(
request
.
getAppKey
());
if
(
null
==
apiInterface
)
{
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_REQUEST
);
}
if
(!
ApiStatusEnum
.
ISSUE
.
name
().
equals
(
apiInterface
.
getStatus
()))
{
throw
new
GatewayException
(
GatewayResultCode
.
API_STATUS_EXCEPTION
);
}
JSONObject
parameter
=
JSONObject
.
parseObject
(
request
.
getParams
());
if
(
null
!=
parameter
)
{
String
authCode
=
parameter
.
getString
(
"authCode"
);
ApiAuth
authAuth
=
authService
.
getAuthUser
(
authCode
);
if
(
null
==
authAuth
)
{
throw
new
GatewayException
(
GatewayResultCode
.
REQUEST_NOT_AUTH
);
}
//查询认证组织信息
ApiOrg
apiOrg
=
organizationManageService
.
getAuthOrganization
(
authAuth
.
getApiOrgId
());
if
(
null
==
apiOrg
)
{
throw
new
GatewayException
(
GatewayResultCode
.
ORG_NOT_EXIST
);
}
checkBill
(
request
,
authCode
,
authAuth
,
apiOrg
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"~~~~~~~~~~~~~~~~认证过滤异常~~~~~~~~~~~~~~~~~"
);
log
.
error
(
"异常信息:{}"
,
e
.
getMessage
());
}
chain
.
doFilter
(
request
,
response
);
}
/**
* 校验计费信息
* @param request
* @param authCode
* @param authAuth
* @param apiOrg
* @throws ParseException
*/
private
void
checkBill
(
GatewayRequest
request
,
String
authCode
,
ApiAuth
authAuth
,
ApiOrg
apiOrg
)
throws
ParseException
{
switch
(
authAuth
.
getAuthMode
())
{
case
"POWER_CALL_MODE"
:
//按次调用
//状态检查(只限制按次请求$$ 不限制按时间请求)
if
(!
OrgStatusEnum
.
NORMAL
.
name
().
equals
(
apiOrg
.
getStatus
()))
{
throw
new
GatewayException
(
GatewayResultCode
.
ORG_STATE_EXCEPTION
);
}
//查询数据银行银行余额是否充足
try
{
//记录请求次数(每天限制请求次数)
String
limitKey
=
request
.
getAppKey
()
+
LoggingConstants
.
AND_SPILT
+
authCode
;
String
reqKey
=
redisUtils
.
get
(
limitKey
);
long
timeOut
=
DateUtil
.
calculateNowResidueTime
();
if
(
null
!=
reqKey
)
{
Integer
value
=
Integer
.
valueOf
(
reqKey
);
if
(
value
>
limit
)
{
//超出最大请求次数
throw
new
GatewayException
(
GatewayResultCode
.
REQUEST_LIMIT_EXCEPTION
);
}
else
if
(
value
<=
limit
)
{
redisUtils
.
delAndAdd
(
limitKey
,
limitKey
,
value
+
1
,
timeOut
);
}
}
else
{
redisUtils
.
set
(
limitKey
,
1
,
timeOut
);
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"~~~~~~~~~~~~~~~~~~~~~~过滤计次信息异常~~~~~~~~~~~~~~~~~~~"
);
log
.
error
(
"异常信息:{}"
,
ex
.
getMessage
());
}
break
;
case
"RECORD_TIME_MODE"
:
//按时间调用
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
Constants
.
DATE_TIME_FORMAT
);
String
formatDate
=
dateFormat
.
format
(
new
Date
());
Date
currentDate
=
dateFormat
.
parse
(
formatDate
);
Date
validEndTime
=
authAuth
.
getValidEndTime
();
//如果 date1 在 date2 之前,before 返回 true,否则返回 false
if
(
currentDate
.
before
(
validEndTime
))
{
//超出时间
throw
new
GatewayException
(
GatewayResultCode
.
RATE_LIMIT_EXCEEDED
);
}
break
;
case
"PERMANENT_TIME_MODE"
:
//永久有效(直接跳出)
break
;
default
:
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_REQUEST
);
}
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/filter/CheckArgsFilter.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
filter
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.common.enums.Format
;
import
com.jz.dm.common.enums.GatewayResultCode
;
import
com.jz.dm.common.exception.GatewayException
;
import
com.jz.dm.common.
util
.SignType
;
import
com.jz.dm.common.
enums
.SignType
;
import
com.jz.dm.common.util.StringUtil
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.models.enity.GatewayRequest
;
import
com.jz.dm.models.enity.GatewayResponse
;
import
com.jz.dm.common.enums.Format
;
import
com.jz.dm.common.enums.GatewayResultCode
;
import
org.springframework.stereotype.Component
;
import
java.nio.charset.Charset
;
/**
* 参数检查过滤器
*
...
...
@@ -22,7 +20,7 @@ public class CheckArgsFilter extends AbstractFilter {
@Override
public
int
getOrder
()
{
return
Constants
.
FILTER_ORDER_
3
;
return
Constants
.
FILTER_ORDER_
2
;
}
@Override
...
...
@@ -34,23 +32,20 @@ public class CheckArgsFilter extends AbstractFilter {
FilterChain
chain
)
{
// 校验参数非空
if
(
StringUtil
.
isEmpty
(
request
.
getAppKey
())
||
StringUtil
.
isEmpty
(
request
.
getMethod
())
||
StringUtil
.
isEmpty
(
request
.
getCharset
())
||
StringUtil
.
isEmpty
(
request
.
getSignType
())
||
StringUtil
.
isEmpty
(
request
.
getSign
())
||
StringUtil
.
isEmpty
(
request
.
getTimestamp
())
||
StringUtil
.
isEmpty
(
request
.
getVersion
())
||
StringUtil
.
isEmpty
(
request
.
getParams
()))
{
//无效参数
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_ARGUMENT
);
}
||
StringUtil
.
isEmpty
(
request
.
getSignType
())||
StringUtil
.
isEmpty
(
request
.
getSign
())
||
StringUtil
.
isEmpty
(
request
.
getTimestamp
())||
StringUtil
.
isEmpty
(
request
.
getParams
()))
{
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_ARGUMENT
);
//无效参数
}
// 设置默认值
if
(
StringUtil
.
isEmpty
(
request
.
getFormat
()))
{
request
.
setFormat
(
Format
.
JSON
.
name
());
}
try
{
request
.
setVersion
(
"v1.0.0"
);
//格式,目前仅支持JSON
Format
.
valueOf
(
request
.
getFormat
());
//请求使用的编码格式,如UTF-8,GBK,GB2312等
Charset
.
forName
(
request
.
getCharset
());
//
Charset.forName(request.getCharset());
//生成签名字符串所使用的签名算法类型
SignType
.
valueOf
(
request
.
getSignType
());
}
catch
(
Exception
ex
)
{
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/filter/InvokeRouteFilter.java
View file @
d7b311c3
...
...
@@ -2,14 +2,13 @@ package com.jz.dm.filter;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jz.dm.common.exception.GatewayException
;
import
com.jz.dm.common.util.LogUtil
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.common.constant.LoggingConstants
;
import
com.jz.dm.common.util.LogUtil
;
import
com.jz.dm.gateway.DefaultOpenApiDispatcher
;
import
com.jz.dm.models.enity.
*
;
import
com.jz.dm.
common.enums.GatewayResultCode
;
import
com.jz.dm.
common.enums.RouteTyp
e
;
import
com.jz.dm.models.enity.
DispatchContext
;
import
com.jz.dm.
models.enity.GatewayRequest
;
import
com.jz.dm.
models.enity.GatewayRespons
e
;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
@@ -45,19 +44,17 @@ public class InvokeRouteFilter extends AbstractFilter {
//当前系统时间戳
long
startTime
=
System
.
currentTimeMillis
();
try
{
OpenApi
openApi
=
(
OpenApi
)
RequestContext
.
getCurrentContext
().
get
(
"openApi"
);
if
(
openApi
.
getRouteType
()
==
null
)
{
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_ROUTE_TYPE
);
}
if
(
openApi
.
getRouteType
()
!=
RouteType
.
SRPING
)
{
chain
.
doFilter
(
request
,
response
);
return
;
}
//
OpenApi openApi = (OpenApi) RequestContext.getCurrentContext().get("openApi");
//
if (openApi.getRouteType() == null) {
//
throw new GatewayException(GatewayResultCode.ILLEGAL_ROUTE_TYPE);
//
}
//
if (openApi.getRouteType() != RouteType.SRPING) {
//
chain.doFilter(request, response);
//
return;
//
}
DispatchContext
context
=
new
DispatchContext
();
context
.
setAppKey
(
request
.
getAppKey
());
//apiKey
context
.
setApplication
(
openApi
.
getApplication
());
//应用
//context.setApplication(openApi.getApplication());//应用
context
.
setOpenApiMethod
(
request
.
getMethod
());
//方法 例如:tradd.add
context
.
setOpenApiParams
(
request
.
getParams
());
//入参
context
.
setOpenApiVersion
(
request
.
getVersion
());
//版本号
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/filter/VerifySignFilter.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
filter
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.common.constant.LoggingConstants
;
import
com.jz.dm.common.enums.GatewayResultCode
;
import
com.jz.dm.common.exception.GatewayException
;
import
com.jz.dm.common.util.MapUtil
;
import
com.jz.dm.common.util.Md5
;
import
com.jz.dm.models.domian.ApiAuth
;
import
com.jz.dm.models.enity.GatewayRequest
;
import
com.jz.dm.models.enity.GatewayResponse
;
import
com.jz.dm.models.enity.OpenApi
;
import
com.jz.dm.models.enity.RequestContext
;
import
com.jz.dm.common.enums.RouteType
;
import
com.jz.dm.service.ApiInterfaceService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.TreeMap
;
/**
* 验签过滤器(验证签名信息)
*/
...
...
@@ -16,9 +26,11 @@ import org.springframework.stereotype.Component;
@Component
public
class
VerifySignFilter
extends
AbstractFilter
{
@Autowired
private
ApiInterfaceService
apiInterfaceService
;
@Override
public
int
getOrder
()
{
return
Constants
.
FILTER_ORDER_
2
;
return
Constants
.
FILTER_ORDER_
3
;
}
@Override
...
...
@@ -28,11 +40,35 @@ public class VerifySignFilter extends AbstractFilter {
@Override
protected
void
internalDoFilter
(
GatewayRequest
request
,
GatewayResponse
response
,
FilterChain
chain
)
{
try
{
TreeMap
<
String
,
Object
>
map
=
MapUtil
.
objToMap
(
request
);
if
(
null
==
map
){
log
.
info
(
"~~~~~~~~~~~~~~~签名数据转换map异常~~~~~~~~~~~~~~~~~~"
);
throw
new
GatewayException
(
GatewayResultCode
.
UNKNOWN_EXCEPTION
);
}
List
signParams
=
MapUtil
.
directSort
(
map
);
if
(
CollectionUtils
.
isNotEmpty
(
signParams
)){
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
request
.
getParams
());
//需要传入授权码
ApiAuth
apiAuthInfo
=
apiInterfaceService
.
getApiAuthInfo
(
request
.
getAppKey
(),
jsonObject
.
getString
(
"authCode"
));
if
(
null
==
apiAuthInfo
){
throw
new
GatewayException
(
GatewayResultCode
.
ILLEGAL_REQUEST
);
}
String
paramStr
=
MapUtil
.
listToString
(
signParams
,
LoggingConstants
.
AND_SPILT
);
String
salt
=
Md5
.
encrypt
(
paramStr
,
apiAuthInfo
.
getSalt
());
if
(!
request
.
getSign
().
equals
(
salt
)){
throw
new
GatewayException
(
GatewayResultCode
.
SIGN_ERROR
);
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"~~~~~~~~~~~~~~签名过滤异常~~~~~~~~~~~~~~~~~~"
);
log
.
error
(
"异常信息:{}"
,
e
.
getMessage
());
}
// 后期再扩展
OpenApi
openApi
=
new
OpenApi
();
openApi
.
setApplication
(
"JZ_API_GATEWAY"
);
//应用
openApi
.
setRouteType
(
RouteType
.
SRPING
);
//漏油类型
RequestContext
.
getCurrentContext
().
set
(
"openApi"
,
openApi
);
//
OpenApi openApi = new OpenApi();
//
openApi.setApplication("JZ_API_GATEWAY");//应用
//
openApi.setRouteType(RouteType.SRPING);//漏油类型
//
RequestContext.getCurrentContext().set("openApi", openApi);
chain
.
doFilter
(
request
,
response
);
}
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/gateway/DefaultOpenApiDispatcher.java
View file @
d7b311c3
...
...
@@ -58,7 +58,7 @@ public class DefaultOpenApiDispatcher implements OpenApiDispatcher {
public
String
doDispatch
(
DispatchContext
context
)
{
OpenApiResponse
response
=
new
OpenApiResponse
();
String
openApiServiceKey
=
getOpenApiServiceKey
(
context
.
getOpenApiMethod
(),
context
.
getOpenApiVersion
());
context
.
getOpenApiVersion
());
OpenApiService
openApiService
=
openApiServices
.
get
(
openApiServiceKey
);
if
(
openApiService
==
null
)
{
response
.
setCode
(
OpenApiResultCode
.
ILLEGAL_INTERFACE
.
getCode
());
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/mapper/ApiAuthMapper.java
View file @
d7b311c3
...
...
@@ -19,7 +19,7 @@ public interface ApiAuthMapper extends BaseMapper<ApiAuth> {
* @param req
* @return
*/
AuthInfoDto
selectAuthDetail
(
@Param
(
"req"
)
AuthDetailInfoReq
req
);
AuthInfoDto
selectAuthDetail
(
AuthDetailInfoReq
req
);
/**
* 分页查询认证列表
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/mapper/ApiDirectionMapper.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.jz.dm.models.domian.ApiDirection
;
/**api授权信息表 mapper
* @author zc
*
*/
public
interface
ApiDirectionMapper
extends
BaseMapper
<
ApiDirection
>
{
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/domian/ApiDirection.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
models
.
domian
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Description:
* @Author: Mr.zhang
* @Date: 2020-12-23
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@TableName
(
"t_api_direction"
)
public
class
ApiDirection
implements
Serializable
{
/**
* 主健ID
*/
@ApiModelProperty
(
"主健ID"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 字典key
*/
@TableField
(
"`key`"
)
private
String
key
;
/**
* 字典value
*/
@TableField
(
"`value`"
)
private
String
value
;
/**
* 字典编码
*/
@TableField
(
"`code`"
)
private
String
code
;
/**
* 父节点
*/
@TableField
(
"parent"
)
private
String
parent
;
/**
* 字典类型
*/
@TableField
(
"direction_type"
)
private
String
directionType
;
/**
* is_enabled
*/
@TableField
(
"`level`"
)
private
Integer
level
;
/**
* 是否启用:UNABLE 停用,ENABLE 启用
*/
@TableField
(
"is_enabled"
)
private
String
isEnabled
;
/**
* 创建日期
*/
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_date"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createDate
;
/**
* 创建人
*/
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_user"
)
private
String
createUser
;
/**
* 是否删除
*/
@TableField
(
"is_deleted"
)
private
Integer
isDeleted
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/domian/ApiInterface.java
View file @
d7b311c3
...
...
@@ -58,6 +58,16 @@ public class ApiInterface extends BaseObject implements Serializable {
*/
@TableField
(
"target_url"
)
private
String
targetUrl
;
/**
* 接入类型:对应字典表key
*/
@TableField
(
"join_type"
)
private
String
joinType
;
/**
* 测试实例
*/
@TableField
(
"test_example"
)
private
String
testExample
;
/**
* 状态(1-草稿 2-发布 3-过时 4-冻结 5-失效)
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/domian/ApiInterfaceFile.java
View file @
d7b311c3
...
...
@@ -28,7 +28,7 @@ public class ApiInterfaceFile extends BaseObject implements Serializable {
* 项目编号
*/
@TableField
(
"project_id"
)
private
Stri
ng
projectId
;
private
Lo
ng
projectId
;
/**
* 文件来源:1 DMP 2 数据银行
...
...
@@ -37,10 +37,10 @@ public class ApiInterfaceFile extends BaseObject implements Serializable {
private
String
fileSource
;
/**
* 文件类型
* 文件类型
:1 文件夹 ,2 文件
*/
@TableField
(
"file_type"
)
private
String
api
Type
;
private
String
file
Type
;
/**
* 文件名称
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/domian/ApiOrg.java
View file @
d7b311c3
...
...
@@ -57,7 +57,7 @@ public class ApiOrg extends BaseObject implements Serializable {
private
String
orgType
;
/**
* 状态(
1-正常 2-冻结 3-下架
)
* 状态(
NORMAL-正常 FREEZE-冻结 CANCEL-注销
)
*/
@TableField
(
"status"
)
private
String
status
;
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/domian/ApiReqLog.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
models
.
domian
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.
jz.dm.common.base.BaseObject
;
import
com.
fasterxml.jackson.annotation.JsonIgnore
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
...
...
@@ -23,7 +25,15 @@ import java.util.Date;
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@TableName
(
"t_api_req_log"
)
public
class
ApiReqLog
extends
BaseObject
implements
Serializable
{
public
class
ApiReqLog
implements
Serializable
{
/**
* 主健ID
*/
@ApiModelProperty
(
"主健ID"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 请求ip
...
...
@@ -93,4 +103,56 @@ public class ApiReqLog extends BaseObject implements Serializable {
*/
@TableField
(
"status"
)
private
String
status
;
/**
* 创建日期
*/
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_date"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createDate
;
/**
* 创建人
*/
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_user"
)
private
String
createUser
;
/**
* 更新人
*/
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_user"
)
@JsonIgnore
private
String
updateUser
;
/**
* 更新日期
*/
@ApiModelProperty
(
"更新日期"
)
@TableField
(
"update_date"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
@JsonIgnore
private
Date
updateDate
;
/**
* 是否删除
*/
@TableField
(
"is_deleted"
)
@JsonIgnore
private
Integer
isDeleted
;
/**
* 备注
*/
@TableField
(
"remark"
)
@JsonIgnore
private
String
remark
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/enity/DispatchContext.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
models
.
enity
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -7,6 +9,7 @@ import java.util.Map;
/**
* Dispatch Context
*/
@Data
public
class
DispatchContext
implements
Serializable
{
/**
...
...
@@ -15,15 +18,10 @@ public class DispatchContext implements Serializable {
private
static
final
long
serialVersionUID
=
-
3448256355423553719L
;
/**
*
商户应用id
*
api唯一标识
*/
private
String
appKey
;
/**
* 应用
*/
private
String
application
;
/**
* openapi接口
*/
...
...
@@ -44,95 +42,6 @@ public class DispatchContext implements Serializable {
*/
private
final
Map
<
String
,
Object
>
extAttributes
=
new
HashMap
<
String
,
Object
>();
/**
* Getter method for property <tt>appId</tt>.
*
* @return property value of appId
*/
public
String
getAppKey
()
{
return
appKey
;
}
/**
* Setter method for property <tt>appId</tt>.
*
* @param appKey value to be assigned to property appId
*/
public
void
setAppKey
(
String
appKey
)
{
this
.
appKey
=
appKey
;
}
/**
* Getter method for property <tt>application</tt>.
*
* @return property value of application
*/
public
String
getApplication
()
{
return
application
;
}
/**
* Setter method for property <tt>application</tt>.
*
* @param application value to be assigned to property application
*/
public
void
setApplication
(
String
application
)
{
this
.
application
=
application
;
}
/**
* Getter method for property <tt>openApiMethod</tt>.
*
* @return property value of openApiMethod
*/
public
String
getOpenApiMethod
()
{
return
openApiMethod
;
}
/**
* Setter method for property <tt>openApiMethod</tt>.
*
* @param openApiMethod value to be assigned to property openApiMethod
*/
public
void
setOpenApiMethod
(
String
openApiMethod
)
{
this
.
openApiMethod
=
openApiMethod
;
}
/**
* Getter method for property <tt>openApiParams</tt>.
*
* @return property value of openApiParams
*/
public
String
getOpenApiParams
()
{
return
openApiParams
;
}
/**
* Setter method for property <tt>openApiParams</tt>.
*
* @param openApiParams value to be assigned to property openApiParams
*/
public
void
setOpenApiParams
(
String
openApiParams
)
{
this
.
openApiParams
=
openApiParams
;
}
/**
* Getter method for property <tt>openApiVersion</tt>.
*
* @return property value of openApiVersion
*/
public
String
getOpenApiVersion
()
{
return
openApiVersion
;
}
/**
* Setter method for property <tt>openApiVersion</tt>.
*
* @param openApiVersion value to be assigned to property openApiVersion
*/
public
void
setOpenApiVersion
(
String
openApiVersion
)
{
this
.
openApiVersion
=
openApiVersion
;
}
/**
* 获取扩展属性
...
...
@@ -169,7 +78,7 @@ public class DispatchContext implements Serializable {
*/
@Override
public
String
toString
()
{
return
"DispatchContext [
application="
+
application
+
",
openApiMethod="
+
openApiMethod
return
"DispatchContext [openApiMethod="
+
openApiMethod
+
", openApiParams="
+
openApiParams
+
", openApiVersion="
+
openApiVersion
+
"]"
;
}
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/enity/GatewayRequest.java
View file @
d7b311c3
...
...
@@ -2,6 +2,9 @@ package com.jz.dm.models.enity;
import
com.jz.dm.web.annotation.ParamName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.HashMap
;
...
...
@@ -9,261 +12,46 @@ import java.util.Map;
/**
* api请求
*
* @author ZC
* @author zc
*/
@ApiModel
(
"api请求实体类"
)
@Data
public
class
GatewayRequest
implements
Serializable
{
/**
* 分配的ID
*/
@ParamName
(
"app_key"
)
private
String
appKey
;
@ApiModelProperty
(
value
=
"appKey API唯一标识"
)
private
String
appKey
;
/**
* 接口名称
*/
private
String
method
;
@ApiModelProperty
(
value
=
"接口名称"
)
private
String
method
;
/**
* 格式,目前仅支持JSON
*/
private
String
format
;
@ApiModelProperty
(
value
=
"格式,目前仅支持JSON"
)
private
String
format
;
/**
* 请求使用的编码格式,如UTF-8,GBK,GB2312等
*/
private
String
charset
;
//private String
charset;
/**
* 生成签名字符串所使用的签名算法类型
*/
@ParamName
(
"sign_type"
)
private
String
signType
;
@ApiModelProperty
(
value
=
"生成签名字符串所使用的签名算法类型"
)
private
String
signType
;
/**
* 请求参数的签名串
*/
private
String
sign
;
@ApiModelProperty
(
value
=
"请求参数的签名串"
)
private
String
sign
;
/**
* 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
*/
private
String
timestamp
;
@ApiModelProperty
(
value
=
"发送请求的时间,格式yyyy-MM-dd HH:mm:ss"
)
private
String
timestamp
;
/**
* 调用的接口版本,固定为:1.0
*/
private
String
version
;
@ApiModelProperty
(
value
=
"调用的接口版本,固定为:1.0"
)
private
String
version
;
/**
* 请求参数,JSON格式
*/
private
String
params
;
@ApiModelProperty
(
value
=
"请求参数,JSON格式"
)
private
String
params
;
/**
* 扩展属性
*/
@ApiModelProperty
(
value
=
"扩展属性"
)
private
final
Map
<
String
,
Attribute
>
extAttributes
=
new
HashMap
<
String
,
Attribute
>();
/**
* Getter method for property <tt>appId</tt>.
*
* @return property value of appId
*/
public
String
getAppKey
()
{
return
appKey
;
}
/**
* Setter method for property <tt>appId</tt>.
*
* @param appKey value to be assigned to property appId
*/
public
void
setAppKey
(
String
appKey
)
{
this
.
appKey
=
appKey
;
}
/**
* Getter method for property <tt>method</tt>.
*
* @return property value of method
*/
public
String
getMethod
()
{
return
method
;
}
/**
* Setter method for property <tt>method</tt>.
*
* @param method value to be assigned to property method
*/
public
void
setMethod
(
String
method
)
{
this
.
method
=
method
;
}
/**
* Getter method for property <tt>format</tt>.
*
* @return property value of format
*/
public
String
getFormat
()
{
return
format
;
}
/**
* Setter method for property <tt>format</tt>.
*
* @param format value to be assigned to property format
*/
public
void
setFormat
(
String
format
)
{
this
.
format
=
format
;
}
/**
* Getter method for property <tt>charset</tt>.
*
* @return property value of charset
*/
public
String
getCharset
()
{
return
charset
;
}
/**
* Setter method for property <tt>charset</tt>.
*
* @param charset value to be assigned to property charset
*/
public
void
setCharset
(
String
charset
)
{
this
.
charset
=
charset
;
}
/**
* Getter method for property <tt>signType</tt>.
*
* @return property value of signType
*/
public
String
getSignType
()
{
return
signType
;
}
/**
* Setter method for property <tt>signType</tt>.
*
* @param signType value to be assigned to property signType
*/
public
void
setSignType
(
String
signType
)
{
this
.
signType
=
signType
;
}
/**
* Getter method for property <tt>sign</tt>.
*
* @return property value of sign
*/
public
String
getSign
()
{
return
sign
;
}
/**
* Setter method for property <tt>sign</tt>.
*
* @param sign value to be assigned to property sign
*/
public
void
setSign
(
String
sign
)
{
this
.
sign
=
sign
;
}
/**
* Getter method for property <tt>timestamp</tt>.
*
* @return property value of timestamp
*/
public
String
getTimestamp
()
{
return
timestamp
;
}
/**
* Setter method for property <tt>timestamp</tt>.
*
* @param timestamp value to be assigned to property timestamp
*/
public
void
setTimestamp
(
String
timestamp
)
{
this
.
timestamp
=
timestamp
;
}
/**
* Getter method for property <tt>version</tt>.
*
* @return property value of version
*/
public
String
getVersion
()
{
return
version
;
}
/**
* Setter method for property <tt>version</tt>.
*
* @param version value to be assigned to property version
*/
public
void
setVersion
(
String
version
)
{
this
.
version
=
version
;
}
/**
* Getter method for property <tt>notifyUrl</tt>.
*
* @return property value of notifyUrl
*/
// public String getNotifyUrl() {
// return notifyUrl;
//}
/**
* Setter method for property <tt>notifyUrl</tt>.
*
* @param notifyUrl value to be assigned to property notifyUrl
*/
//public void setNotifyUrl(String notifyUrl) {
// this.notifyUrl = notifyUrl;
//}
/**
* Getter method for property <tt>returnUrl</tt>.
*
* @return property value of returnUrl
*/
//public String getReturnUrl() {
// return returnUrl;
//}
/**
* Setter method for property <tt>returnUrl</tt>.
*
* @param returnUrl value to be assigned to property returnUrl
*/
// public void setReturnUrl(String returnUrl) {
// this.returnUrl = returnUrl;
// }
/**
* Getter method for property <tt>params</tt>.
*
* @return property value of params
*/
public
String
getParams
()
{
return
params
;
}
/**
* Setter method for property <tt>params</tt>.
*
* @param params value to be assigned to property params
*/
public
void
setParams
(
String
params
)
{
this
.
params
=
params
;
}
/**
* 获取扩展属性
*
...
...
@@ -301,7 +89,7 @@ public class GatewayRequest implements Serializable {
@Override
public
String
toString
()
{
return
"GatewayRequest [appKey="
+
appKey
+
", method="
+
method
+
", format="
+
format
+
",
charset="
+
charset
+
",
signType="
+
signType
+
", sign="
+
sign
+
", signType="
+
signType
+
", sign="
+
sign
+
", timestamp="
+
timestamp
+
", version="
+
version
+
", params="
+
params
+
", extAttributes="
+
extAttributes
+
"]"
;
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/auth/AuthDmpUserApiReq.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
models
.
req
.
auth
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.jz.dm.common.enums.auth.AuthModeEnum
;
import
com.jz.dm.common.enums.auth.AuthTypeEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -16,7 +14,7 @@ import java.util.Date;
* @author ZC
* @PACKAGE_NAME: com.jz.dm.models.req
* @PROJECT_NAME: jz-dm-parent
* @NAME: Auth
Mall
UserApiReq
* @NAME: AuthUserApiReq
* @DATE: 2020-12-26/15:52
* @DAY_NAME_SHORT: 周六
* @Description:
...
...
@@ -33,17 +31,17 @@ public class AuthDmpUserApiReq implements Serializable {
@NotNull
(
message
=
"组织编码不能为空"
)
private
String
orgCode
;
@ApiModelProperty
(
value
=
"组织类型: INT 内部, OUT 外部"
,
required
=
true
)
/*
@ApiModelProperty(value = "组织类型: INT 内部, OUT 外部",required = true)
@NotNull(message = "组织类型不能为空")
private
String
orgType
;
private String orgType;
*/
@ApiModelProperty
(
value
=
"授权类型:DATA_BANK_AUTH 数据银行 , DMP_AUTH dmp授权"
,
required
=
true
)
@NotNull
(
message
=
"授权类型不能为空"
)
private
AuthTypeEnum
authType
;
private
String
authType
;
@ApiModelProperty
(
value
=
"授权方式:POWER_CALL_MODE 按次调用 ,RECORD_TIME_MODE 按时间调用,PERMANENT_TIME_MODE 永久有效"
,
required
=
true
)
@NotNull
(
message
=
"授权方式不能为空"
)
private
AuthModeEnum
authMode
;
private
String
authMode
;
@ApiModelProperty
(
value
=
"开始时间"
,
required
=
false
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/auth/Auth
Mall
UserApiReq.java
→
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/auth/AuthUserApiReq.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
models
.
req
.
auth
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.jz.dm.common.enums.auth.AuthModeEnum
;
import
com.jz.dm.common.enums.auth.AuthTypeEnum
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -16,37 +14,37 @@ import java.util.Date;
* @author ZC
* @PACKAGE_NAME: com.jz.dm.models.req
* @PROJECT_NAME: jz-dm-parent
* @NAME: Auth
Mall
UserApiReq
* @NAME: AuthUserApiReq
* @DATE: 2020-12-26/15:52
* @DAY_NAME_SHORT: 周六
* @Description:
**/
@Data
@ApiModel
(
"商城用户API认证"
)
public
class
Auth
Mall
UserApiReq
implements
Serializable
{
public
class
AuthUserApiReq
implements
Serializable
{
@ApiModelProperty
(
value
=
"apiKey唯一标识"
,
required
=
true
)
@NotNull
(
message
=
"apiKey唯一标识不能为空"
)
private
String
apiKey
;
@ApiModelProperty
(
value
=
"组织类型: INT 内部, OUT 外部"
,
required
=
true
)
@NotNull
(
message
=
"组织类型不能为空"
)
private
String
orgType
;
//
@ApiModelProperty(value = "组织类型: INT 内部, OUT 外部",required = true)
//
@NotNull(message = "组织类型不能为空")
//
private String orgType;
@ApiModelProperty
(
value
=
"用户id"
,
required
=
false
)
@ApiModelProperty
(
value
=
"用户id
-- 数据银行认证时必传
"
,
required
=
false
)
private
String
userId
;
@ApiModelProperty
(
value
=
"组织编码"
,
required
=
true
)
@NotNull
(
message
=
"组织编码不能为空"
)
private
String
orgCode
;
@ApiModelProperty
(
value
=
"授权类型:DATA_BANK_AUTH 数据银行 , DMP_AUTH
dmp
授权"
,
required
=
true
)
@ApiModelProperty
(
value
=
"授权类型:DATA_BANK_AUTH 数据银行 , DMP_AUTH 授权"
,
required
=
true
)
@NotNull
(
message
=
"授权类型不能为空"
)
private
AuthTypeEnum
authType
;
private
String
authType
;
@ApiModelProperty
(
value
=
"授权方式:POWER_CALL_MODE 按次调用 ,RECORD_TIME_MODE 按时间调用,PERMANENT_TIME_MODE 永久有效"
,
required
=
true
)
@NotNull
(
message
=
"授权方式不能为空"
)
private
AuthModeEnum
authMode
;
private
String
authMode
;
@ApiModelProperty
(
value
=
"开始时间"
,
required
=
false
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/make/ApiInterfaceReq.java
View file @
d7b311c3
...
...
@@ -28,9 +28,7 @@ public class ApiInterfaceReq {
@ApiModelProperty
(
value
=
"接口描述"
,
required
=
false
)
public
String
apiDesc
;
/*
@ApiModelProperty(value = "api版本",required = false)
public String version;*/
@ApiModelProperty
(
value
=
"传输方式"
,
required
=
true
)
@NotNull
(
message
=
"传输方式不能为空"
)
...
...
@@ -38,7 +36,11 @@ public class ApiInterfaceReq {
@ApiModelProperty
(
value
=
"加密方式0 无,1:MD5 2:RSA"
,
required
=
true
)
@NotNull
(
message
=
"加密方式不能为空"
)
public
String
type
;
public
String
signType
;
@ApiModelProperty
(
value
=
"接入类型:对应字典表key"
,
required
=
true
)
@NotNull
(
message
=
"接入类型不能为空"
)
public
String
joinType
;
@ApiModelProperty
(
value
=
"目标地址"
,
required
=
true
)
@NotNull
(
message
=
"目标地址不能为空"
)
...
...
@@ -51,8 +53,15 @@ public class ApiInterfaceReq {
@ApiModelProperty
(
value
=
"api描述"
,
required
=
false
)
public
String
apiFunction
;
@ApiModelProperty
(
value
=
"列"
,
required
=
false
)
public
String
columnCode
;
@ApiModelProperty
(
value
=
"文件Id"
,
required
=
true
)
@NotNull
(
message
=
"文件id不能为空"
)
public
Long
fileId
;
@ApiModelProperty
(
value
=
"项目id"
,
required
=
true
)
@NotNull
(
message
=
"项目id不能为空"
)
public
Long
projectId
;
/*@ApiModelProperty(value = "api名称",required = false)
public String apiName;
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/make/MakeCustomApiReq.java
deleted
100644 → 0
View file @
2eca6b14
package
com
.
jz
.
dm
.
models
.
req
.
make
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.models.req
* @PROJECT_NAME: jz-dm-parent
* @NAME: MakeCustomApiReq
* @DATE: 2020-12-26/13:01
* @DAY_NAME_SHORT: 周六
* @Description:
**/
@Data
@ApiModel
(
"制作自定义Api"
)
public
class
MakeCustomApiReq
implements
Serializable
{
@ApiModelProperty
(
value
=
"api类型"
,
required
=
true
)
@NotNull
(
message
=
"api类型不能为空"
)
public
String
apiType
;
/* @ApiModelProperty(value = "apiId 等价于apiKey",required = true)
@NotNull(message = "apiId不能为空")
public String apiId;*/
@ApiModelProperty
(
value
=
"接口描述"
,
required
=
false
)
public
String
apiDesc
;
/* @ApiModelProperty(value = "api版本",required = false)
public String version;*/
@ApiModelProperty
(
value
=
"传输方式"
,
required
=
true
)
@NotNull
(
message
=
"传输方式不能为空"
)
public
String
transMode
;
@ApiModelProperty
(
value
=
"加密方式0 无,1:MD5 2:RSA"
,
required
=
true
)
@NotNull
(
message
=
"加密方式不能为空"
)
public
String
type
;
@ApiModelProperty
(
value
=
"目标地址"
,
required
=
true
)
@NotNull
(
message
=
"目标地址不能为空"
)
public
String
targetUrl
;
@ApiModelProperty
(
value
=
"超时时间"
,
required
=
true
)
@NotNull
(
message
=
"超时时间不能为空"
)
public
String
timeout
;
@ApiModelProperty
(
value
=
"api描述"
,
required
=
false
)
public
String
apiFunction
;
@ApiModelProperty
(
value
=
"列"
,
required
=
false
)
public
String
columnCode
;
/* @ApiModelProperty(value = "状态",required = false)
public String status;*/
@ApiModelProperty
(
value
=
"更新时传入api自增id"
,
required
=
false
)
public
Long
id
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/make/MakeDataBankApiReq.java
View file @
d7b311c3
...
...
@@ -24,23 +24,20 @@ public class MakeDataBankApiReq implements Serializable {
@NotNull
(
message
=
"api类型不能为空"
)
public
String
apiType
;
//@ApiModelProperty(value = "apiKey 等价于apiId",required = true)
//@NotNull(message = "apiKey不能为空")
//public String apiKey;
@ApiModelProperty
(
value
=
"接口描述"
,
required
=
false
)
public
String
apiDesc
;
//@ApiModelProperty(value = "api版本",required = false)
//public String version;
@ApiModelProperty
(
value
=
"传输方式(1为HTTPS,2为HTTP)"
,
required
=
true
)
@NotNull
(
message
=
"传输方式不能为空"
)
public
String
apiProtocl
;
@ApiModelProperty
(
value
=
"加密方式0 无,1:MD5 2:RSA"
,
required
=
true
)
@NotNull
(
message
=
"加密方式不能为空"
)
public
String
type
;
public
String
signType
;
@ApiModelProperty
(
value
=
"接入类型:对应字典表key"
,
required
=
true
)
@NotNull
(
message
=
"接入类型不能为空"
)
public
String
joinType
;
@ApiModelProperty
(
value
=
"接口描述"
,
required
=
false
)
public
String
apiDesc
;
@ApiModelProperty
(
value
=
"目标地址"
,
required
=
false
)
public
String
targetUrl
;
...
...
@@ -70,4 +67,11 @@ public class MakeDataBankApiReq implements Serializable {
//@NotNull(message = "文件id不能为空")
public
Long
fileId
;
//-------------------------前端无效传参----------------------
//@ApiModelProperty(value = "状态",hidden = true)
//public String status;
//
//@ApiModelProperty(value = "创建用户",hidden = true)
//public String createUser;
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/organizationManage/OrganizationManageAddReq.java
View file @
d7b311c3
...
...
@@ -20,9 +20,9 @@ import java.io.Serializable;
@ApiModel
(
"组织管理详情请求体"
)
public
class
OrganizationManageAddReq
implements
Serializable
{
//@ApiModelProperty(value = "组织编码(组织唯一标识)
",required = true)
//@NotNull(message = "组织编码不能为空
")
//private String orgCod
e;
@ApiModelProperty
(
value
=
"组织类型:INT 内部组织 OUT 外部组织
"
,
required
=
true
)
@NotNull
(
message
=
"组织类型不能为空!
"
)
private
String
orgTyp
e
;
@ApiModelProperty
(
value
=
"组织名称"
,
required
=
true
)
@NotNull
(
message
=
"组织名称不能为空"
)
...
...
@@ -40,10 +40,6 @@ public class OrganizationManageAddReq implements Serializable {
@ApiModelProperty
(
value
=
"组织电话"
,
required
=
false
)
private
String
orgPhone
;
@ApiModelProperty
(
value
=
"组织类型"
,
required
=
true
)
@NotNull
(
message
=
"组织类型不能为空!"
)
private
String
orgType
;
@ApiModelProperty
(
value
=
"备注"
,
required
=
false
)
private
String
remark
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/models/req/organizationManage/OrganizationManageUpdateReq.java
View file @
d7b311c3
...
...
@@ -19,23 +19,30 @@ import java.io.Serializable;
@Data
@ApiModel
(
"更新组织请求体"
)
public
class
OrganizationManageUpdateReq
implements
Serializable
{
@ApiModelProperty
(
value
=
"id"
,
required
=
true
)
@NotNull
(
message
=
"id不能为空"
)
private
Long
id
;
@ApiModelProperty
(
value
=
"组织名称"
,
required
=
true
)
/*
@ApiModelProperty(value = "组织名称",required = true)
@NotNull(message = "组织名称不能为空")
private
String
orgName
;
private String orgName;
*/
@ApiModelProperty
(
value
=
"组织描述"
,
required
=
false
)
private
String
orgDesc
;
@ApiModelProperty
(
value
=
"状态(NORMAL-正常 FREEZE-冻结 CANCEL-注销)"
,
required
=
false
)
private
String
status
;
@ApiModelProperty
(
value
=
"组织英文名称"
,
required
=
false
)
private
String
orgCnName
;
@ApiModelProperty
(
value
=
"组织邮箱"
,
required
=
false
)
private
String
orgMail
;
@ApiModelProperty
(
value
=
"组织电话"
,
required
=
false
)
private
String
orgPhone
;
@ApiModelProperty
(
value
=
"备注"
,
required
=
false
)
private
String
remark
;
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/ApiDirectionService.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
;
import
com.jz.dm.models.domian.ApiDirection
;
import
java.util.List
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service.impl
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiDirectionService
* @DATE: 2020-12-31/18:00
* @DAY_NAME_SHORT: 周四
* @Description:
**/
public
interface
ApiDirectionService
{
/**
* 根据类型获取API类型信息
* @param parentCode
* @return
*/
List
<
ApiDirection
>
getApiType
(
String
parentCode
);
/**
* 查询code值信息
* @param code
* @param key
* @return
*/
List
<
ApiDirection
>
getDirectionVal
(
String
key
,
String
code
);
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/ApiInterfaceService.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
;
import
com.jz.dm.models.domian.ApiAuth
;
import
com.jz.dm.models.domian.ApiInterface
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiInterfaceService
* @DATE: 2021-1-2/14:26
* @DAY_NAME_SHORT: 周六
* @Description:
**/
public
interface
ApiInterfaceService
{
/**
* 根据Api授权码获取用户授权信息
* @param apiKey
* @param authCode
* @return
*/
ApiAuth
getApiAuthInfo
(
String
apiKey
,
String
authCode
);
/**
* 获取api信息
* @param appKey
* @return
*/
ApiInterface
getApiInfo
(
String
appKey
);
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/AuthService.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
;
import
com.jz.common.utils.Result
;
import
com.jz.dm.models.domian.ApiAuth
;
import
com.jz.dm.models.req.auth.*
;
/**
...
...
@@ -32,14 +33,14 @@ public interface AuthService {
* @param req
* @return
*/
Result
addDmpUserApiAuth
(
Auth
Dmp
UserApiReq
req
);
Result
addDmpUserApiAuth
(
AuthUserApiReq
req
);
/**
* 添加商城用户api认证
* @param req
* @return
*/
Result
addMallUserApiAuth
(
Auth
Mall
UserApiReq
req
);
Result
addMallUserApiAuth
(
AuthUserApiReq
req
);
/**
* 修改认证信息
...
...
@@ -54,4 +55,11 @@ public interface AuthService {
* @return
*/
Result
updateSaltInfo
(
SaltResetReq
req
);
/**
* 获取API授权信息
* @param authCode
* @return
*/
ApiAuth
getAuthUser
(
String
authCode
);
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/OrganizationManageService.java
View file @
d7b311c3
...
...
@@ -52,4 +52,11 @@ public interface OrganizationManageService {
* @return
*/
Result
delete
(
Long
id
);
/**
* 获取认证组织信息
* @param apiOrgId
* @return
*/
ApiOrg
getAuthOrganization
(
Long
apiOrgId
);
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/ProducerService.java
View file @
d7b311c3
...
...
@@ -20,7 +20,7 @@ public interface ProducerService {
* @param req
* @return
*/
Result
addCustomApi
(
MakeCustomApi
Req
req
);
Result
addCustomApi
(
ApiInterface
Req
req
);
/**
* Api制作(实时接入)
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/ApiDirectionServiceImpl.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.jz.dm.common.enums.GeneralStatusTypeEnum
;
import
com.jz.dm.mapper.ApiDirectionMapper
;
import
com.jz.dm.models.domian.ApiDirection
;
import
com.jz.dm.service.ApiDirectionService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service.impl
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiDirectionServiceImpl
* @DATE: 2020-12-31/18:01
* @DAY_NAME_SHORT: 周四
* @Description:
**/
@Service
(
"apiDirectionService"
)
@Slf4j
public
class
ApiDirectionServiceImpl
implements
ApiDirectionService
{
@Resource
private
ApiDirectionMapper
apiDirectionMapper
;
@Override
public
List
<
ApiDirection
>
getApiType
(
String
parentCode
)
{
QueryWrapper
<
ApiDirection
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"parent"
,
parentCode
);
//父类下的所有子类
query
.
eq
(
"is_enabled"
,
GeneralStatusTypeEnum
.
ENABLE
);
return
apiDirectionMapper
.
selectList
(
query
);
}
@Override
public
List
<
ApiDirection
>
getDirectionVal
(
String
key
,
String
code
)
{
QueryWrapper
<
ApiDirection
>
query
=
new
QueryWrapper
<>();
if
(
StringUtils
.
isNotBlank
(
key
)
&&
StringUtils
.
isNotBlank
(
code
)){
query
.
eq
(
"key"
,
key
);
query
.
eq
(
"code"
,
code
);
query
.
eq
(
"is_enabled"
,
GeneralStatusTypeEnum
.
ENABLE
);
}
else
if
(
StringUtils
.
isNotBlank
(
code
)){
query
.
eq
(
"key"
,
key
);
query
.
eq
(
"is_enabled"
,
GeneralStatusTypeEnum
.
ENABLE
);
}
else
{
query
.
eq
(
"code"
,
code
);
query
.
eq
(
"is_enabled"
,
GeneralStatusTypeEnum
.
ENABLE
);
}
return
apiDirectionMapper
.
selectList
(
query
);
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/ApiInterfaceServiceImpl.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.jz.dm.mapper.ApiAuthMapper
;
import
com.jz.dm.mapper.ApiInterfaceMapper
;
import
com.jz.dm.models.domian.ApiAuth
;
import
com.jz.dm.models.domian.ApiInterface
;
import
com.jz.dm.service.ApiInterfaceService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service.impl
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiInterfaceServiceImpl
* @DATE: 2021-1-2/14:27
* @DAY_NAME_SHORT: 周六
* @Description:
**/
@Service
(
"apiInterfaceService"
)
@Slf4j
public
class
ApiInterfaceServiceImpl
implements
ApiInterfaceService
{
@Resource
private
ApiInterfaceMapper
apiInterfaceMapper
;
@Resource
private
ApiAuthMapper
apiAuthMapper
;
/**
* 获取用户授权信息
* @param apiKey
* @param authCode
* @return
*/
@Override
public
ApiAuth
getApiAuthInfo
(
String
apiKey
,
String
authCode
)
{
QueryWrapper
<
ApiInterface
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"is_deleted"
,
0
);
query
.
eq
(
"api_key"
,
apiKey
);
ApiInterface
apiInterface
=
apiInterfaceMapper
.
selectOne
(
query
);
if
(
null
!=
apiInterface
){
QueryWrapper
<
ApiAuth
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"is_deleted"
,
0
);
queryWrapper
.
eq
(
"auth_code"
,
authCode
);
ApiAuth
apiAuth
=
apiAuthMapper
.
selectOne
(
queryWrapper
);
if
(
null
!=
apiAuth
){
return
apiAuth
;
}
}
return
null
;
}
/**
* 获取API信息
* @param appKey
* @return
*/
@Override
public
ApiInterface
getApiInfo
(
String
appKey
)
{
QueryWrapper
<
ApiInterface
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"is_deleted"
,
0
);
query
.
eq
(
"api_key"
,
appKey
);
return
apiInterfaceMapper
.
selectOne
(
query
);
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/ApiLogServiceImpl.java
View file @
d7b311c3
...
...
@@ -45,6 +45,7 @@ public class ApiLogServiceImpl implements ApiLogService {
public
IPage
<
ApiReqLog
>
listApiLog
(
LogInfoListReq
req
)
{
IPage
<
ApiReqLog
>
page
=
new
Page
<>(
req
.
getPageNum
(),
req
.
getPageSize
());
QueryWrapper
<
ApiReqLog
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"is_deleted"
,
0
);
query
.
orderByDesc
(
"create_date"
);
return
apiReqLogMapper
.
selectPage
(
page
,
query
);
}
...
...
@@ -76,14 +77,12 @@ public class ApiLogServiceImpl implements ApiLogService {
*/
@Override
public
void
updateLog
(
Long
id
,
JSONObject
jsonObject
)
{
//if (!lock.tryLock("apiLog")){
// return;
//}
try
{
ApiReqLog
apiReqLog
=
apiReqLogMapper
.
maxId
(
id
);
if
(
null
!=
apiReqLog
){
ApiReqLog
reqLog
=
new
ApiReqLog
();
reqLog
.
setId
(
apiReqLog
.
getId
());
reqLog
.
setStatus
(
apiReqLog
.
getStatus
());
reqLog
.
setResponseParams
(
jsonObject
.
toString
());
reqLog
.
setUpdateDate
(
new
Date
());
apiReqLogMapper
.
updateById
(
reqLog
);
...
...
@@ -93,9 +92,5 @@ public class ApiLogServiceImpl implements ApiLogService {
}
catch
(
Exception
ex
){
log
.
error
(
"更新日志返回信息异常:{}"
,
ex
.
getMessage
());
}
//finally {
// lock.unlock("apiLog");
//}
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/AuthServiceImpl.java
View file @
d7b311c3
This diff is collapsed.
Click to expand it.
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/OrganizationManageImpl.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.jz.common.bean.SysUserDto
;
import
com.jz.common.constant.RedisMessageConstant
;
import
com.jz.common.constant.ResultMsg
;
import
com.jz.common.utils.Result
;
import
com.jz.dm.common.constant.Constants
;
import
com.jz.dm.common.enums.org.OrgStatusEnum
;
import
com.jz.dm.common.util.RandomUtil
;
import
com.jz.dm.mapper.ApiOrgMapper
;
import
com.jz.dm.models.domian.ApiOrg
;
...
...
@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
static
com
.
jz
.
dm
.
common
.
enums
.
org
.
OrgStatusEnum
.
fromTypeName
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service.impl
...
...
@@ -53,6 +55,7 @@ public class OrganizationManageImpl implements OrganizationManageService {
public
IPage
<
ApiOrg
>
listOrganization
(
OrganizationManageListQueryReq
req
)
{
IPage
<
ApiOrg
>
page
=
new
Page
<>(
req
.
getPageNum
(),
req
.
getPageSize
());
QueryWrapper
<
ApiOrg
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"is_deleted"
,
0
);
query
.
orderByDesc
(
"create_date"
);
return
apiOrgMapper
.
selectPage
(
page
,
query
);
}
...
...
@@ -65,7 +68,10 @@ public class OrganizationManageImpl implements OrganizationManageService {
*/
@Override
public
Result
getOrganizationDetail
(
OrganizationManageDetailQueryReq
req
)
{
return
Result
.
of_success
(
apiOrgMapper
.
selectById
(
req
.
getId
()));
QueryWrapper
<
ApiOrg
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"is_deleted"
,
0
);
query
.
eq
(
"id"
,
req
.
getId
());
return
Result
.
of_success
(
apiOrgMapper
.
selectOne
(
query
));
}
/**
...
...
@@ -76,14 +82,14 @@ public class OrganizationManageImpl implements OrganizationManageService {
*/
@Override
public
Result
add
(
OrganizationManageAddReq
req
)
{
SysUserDto
currentUser
=
(
SysUserDto
)
redisTemplate
.
opsForValue
().
get
(
"user"
+
RedisMessageConstant
.
SENDTYPE_LOGIN_SYS
);
/*
SysUserDto currentUser = (SysUserDto)redisTemplate.opsForValue().get("user"+ RedisMessageConstant.SENDTYPE_LOGIN_SYS);
if (null == currentUser){
return Result.of_error(ResultMsg.USER_NOT_EXIST);
}
}
*/
if
(
StringUtils
.
isNotBlank
(
req
.
getOrgName
()))
{
ApiOrg
orgNameInfo
=
getOrgNameInfo
(
req
.
getOrgName
());
if
(
null
!=
orgNameInfo
)
{
return
Result
.
of_error
(
"组织名称已存在"
);
return
Result
.
of_error
(
"组织名称已存在
!
"
);
}
}
String
coding
=
""
;
...
...
@@ -98,9 +104,9 @@ public class OrganizationManageImpl implements OrganizationManageService {
if
(
StringUtils
.
isBlank
(
coding
))
{
return
Result
.
of_error
(
"生成组织编码异常!"
);
}
apiOrg
.
setOrgCode
(
coding
);
//组织编码
需要生成
apiOrg
.
setStatus
(
"1"
);
//正常
apiOrg
.
setCreateUser
(
currentUser
.
getUserName
());
apiOrg
.
setOrgCode
(
coding
);
//组织编码
apiOrg
.
setStatus
(
OrgStatusEnum
.
NORMAL
.
name
()
);
//正常
//
apiOrg.setCreateUser(currentUser.getUserName());
if
(
apiOrgMapper
.
insert
(
apiOrg
)
>
0
)
{
return
Result
.
of_success
(
ResultMsg
.
INSERT_SUCCESS
);
}
...
...
@@ -109,6 +115,7 @@ public class OrganizationManageImpl implements OrganizationManageService {
/**
* 获取组织编码(去重)
*
* @param orgName 组织名称
* @param type 生成类型
* @return
...
...
@@ -127,30 +134,29 @@ public class OrganizationManageImpl implements OrganizationManageService {
/**
* 更新组织
*
* @param req
* @return
*/
@Override
public
Result
update
(
OrganizationManageUpdateReq
req
)
{
SysUserDto
currentUser
=
(
SysUserDto
)
redisTemplate
.
opsForValue
().
get
(
"user"
+
RedisMessageConstant
.
SENDTYPE_LOGIN_SYS
);
if
(
null
==
currentUser
){
/* SysUserDto currentUser = (SysUserDto) redisTemplate.opsForValue().get("user"
+ RedisMessageConstant.SENDTYPE_LOGIN_SYS);
if (null == currentUser)
{
return Result.of_error(ResultMsg.USER_NOT_EXIST);
}
}
*/
ApiOrg
apiOrg
=
apiOrgMapper
.
selectById
(
req
.
getId
());
if
(
null
==
apiOrg
)
{
return
Result
.
of_error
(
"组织信息不存在!"
);
}
if
(
StringUtils
.
isNotBlank
(
req
.
getOrgName
()))
{
ApiOrg
orgNameInfo
=
getOrgNameInfo
(
req
.
getOrgName
());
if
(
null
!=
orgNameInfo
)
{
return
Result
.
of_error
(
"组织名称已存在"
);
if
(
StringUtils
.
isNotBlank
(
req
.
getStatus
()))
{
if
(
null
==
fromTypeName
(
req
.
getStatus
())){
return
Result
.
of_error
(
"更新组织状态不存在!"
);
}
}
ApiOrg
apiOrgUpdate
=
new
ApiOrg
();
apiOrgUpdate
.
setId
(
apiOrg
.
getId
());
BeanUtils
.
copyProperties
(
req
,
apiOrgUpdate
);
apiOrgUpdate
.
setUpdateDate
(
new
Date
());
apiOrgUpdate
.
setUpdateUser
(
currentUser
.
getUserName
());
//
apiOrgUpdate.setUpdateUser(currentUser.getUserName());
if
(
apiOrgMapper
.
updateById
(
apiOrgUpdate
)
>
0
)
{
return
Result
.
of_success
(
ResultMsg
.
UPDATE_SUCCESS
);
}
...
...
@@ -159,6 +165,7 @@ public class OrganizationManageImpl implements OrganizationManageService {
/**
* 删除组织
*
* @param id
* @return
*/
...
...
@@ -168,12 +175,28 @@ public class OrganizationManageImpl implements OrganizationManageService {
if
(
null
==
apiOrg
)
{
return
Result
.
of_error
(
ResultMsg
.
DATA_NOT_EXIST
);
}
if
(
apiOrgMapper
.
deleteById
(
id
)
>
0
)
{
UpdateWrapper
<
ApiOrg
>
delete
=
new
UpdateWrapper
<>();
delete
.
set
(
"is_deleted"
,
1
);
delete
.
eq
(
"id"
,
id
);
if
(
apiOrgMapper
.
update
(
null
,
delete
)
>
0
)
{
return
Result
.
of_success
(
ResultMsg
.
DELETE_SUCCESS
);
}
return
Result
.
of_success
(
ResultMsg
.
DELETE_FAIL
);
}
/**
* 获取认证组织信息
* @param apiOrgId
* @return
*/
@Override
public
ApiOrg
getAuthOrganization
(
Long
apiOrgId
)
{
QueryWrapper
<
ApiOrg
>
query
=
new
QueryWrapper
<>();
query
.
eq
(
"id"
,
apiOrgId
);
query
.
eq
(
"is_deleted"
,
0
);
return
apiOrgMapper
.
selectOne
(
query
);
}
/**
* 根据名称获取组织信息
*
...
...
jz-dm-apigateway/src/main/java/com/jz/dm/service/impl/ProducerServiceImpl.java
View file @
d7b311c3
This diff is collapsed.
Click to expand it.
jz-dm-apigateway/src/main/java/com/jz/dm/service/
api
request/ApiQueryService.java
→
jz-dm-apigateway/src/main/java/com/jz/dm/service/request/ApiQueryService.java
View file @
d7b311c3
package
com
.
jz
.
dm
.
service
.
api
request
;
package
com
.
jz
.
dm
.
service
.
request
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jz.dm.common.enums.GatewayResultCode
;
import
com.jz.dm.common.util.OpenApiRequest
;
import
com.jz.dm.common.util.OpenApiResponse
;
import
com.jz.dm.gateway.OpenApiService
;
import
com.jz.dm.service.ApiInterfaceService
;
import
com.jz.dm.web.annotation.AccessLimit
;
import
com.jz.dm.web.annotation.ApiLogAspect
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.service.
api
request
* @PACKAGE_NAME: com.jz.dm.service.request
* @PROJECT_NAME: jz-dm-parent
* @NAME: ApiQueryService
* @DATE: 2020-12-23/18:10
...
...
@@ -29,14 +34,42 @@ public class ApiQueryService implements OpenApiService {
@Override
public
String
getOpenApiVersion
()
{
return
"1.0.0"
;
return
"
v
1.0.0"
;
}
@Autowired
private
ApiInterfaceService
apiInterfaceService
;
@Override
@ApiLogAspect
@ApiLogAspect
(
description
=
"API请求日志"
)
@AccessLimit
(
limit
=
10000
,
sec
=
1
)
@Transactional
(
rollbackFor
=
Exception
.
class
,
propagation
=
Propagation
.
REQUIRES_NEW
)
public
void
doService
(
OpenApiRequest
request
,
OpenApiResponse
response
)
{
JSONObject
parameter
=
JSONObject
.
parseObject
(
request
.
getOpenApiParams
());
String
apiType
=
parameter
.
getString
(
"apiType"
);
if
(
StringUtils
.
isNotBlank
(
apiType
)){
try
{
switch
(
apiType
){
case
"QUERY_TAG"
:
//标签查询
//String reqParam = parameter.getString("request_param");
//apiInterfaceService.getTagReqData();
break
;
case
"BIG_DATA_QUERY"
:
//大数据查询
break
;
case
"CUSTOM_QUERY"
:
//自定义查询(三方查询)
break
;
case
"DATA_BAG_QUERY"
:
//数据包查询
break
;
default
:
response
.
setCode
(
GatewayResultCode
.
ILLEGAL_REQUEST
.
getCode
());
response
.
setMsg
(
GatewayResultCode
.
ILLEGAL_REQUEST
.
getMsg
());
break
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"~~~~~~~~~~~~~~~请求api信息异常~~~~~~~~~~~~~"
);
log
.
error
(
"异常信息:{}"
,
e
.
getMessage
());
response
.
setCode
(
GatewayResultCode
.
ILLEGAL_REQUEST
.
getCode
());
response
.
setMsg
(
GatewayResultCode
.
ILLEGAL_REQUEST
.
getMsg
());
}
}
}
}
jz-dm-apigateway/src/main/java/com/jz/dm/web/aspect/SystemLogAspect.java
View file @
d7b311c3
...
...
@@ -4,7 +4,8 @@ package com.jz.dm.web.aspect;
import
com.jz.common.utils.IpUtils
;
import
com.jz.common.utils.JsonUtils
;
import
com.jz.common.utils.UrlUtil
;
import
com.jz.dm.common.util.SignType
;
import
com.jz.dm.common.enums.SignType
;
import
com.jz.dm.mapper.ApiReqLogMapper
;
import
com.jz.dm.models.domian.ApiReqLog
;
import
com.jz.dm.service.ApiLogService
;
import
com.jz.dm.web.annotation.ApiLogAspect
;
...
...
@@ -46,6 +47,8 @@ public class SystemLogAspect {
@Resource
private
ApiLogService
apiLogService
;
@Resource
private
ApiReqLogMapper
apiReqLogMapper
;
/* //前置通知切入点
@Pointcut("@annotation(com.jz.dm.web.annotation.ApiLogAspect)")
...
...
@@ -98,7 +101,7 @@ public class SystemLogAspect {
reqLog
.
setRemark
(
getServiceMethodDescription
(
joinPoint
));
System
.
out
.
println
(
reqLog
);
if
(
null
!=
reqLog
)
{
api
LogService
.
insetLogInfo
(
reqLog
);
api
ReqLogMapper
.
insert
(
reqLog
);
}
Object
result
=
joinPoint
.
proceed
(
joinPoint
.
getArgs
());
JSONObject
jsonObject
=
JSONObject
.
fromObject
(
result
);
...
...
jz-dm-apigateway/src/main/resources/application-test.yml
View file @
d7b311c3
...
...
@@ -52,7 +52,7 @@ spring:
caffeine
:
spec
:
maximumSize=1000,expireAfterWrite=30s
public-key
:
rajZdV0xpCox+2vEHFLsKq2o2XVdMaQq
redis
:
redis
:
#database: 0
host
:
47.115.53.1
port
:
6379
...
...
@@ -74,12 +74,13 @@ spring:
proxy-target-class
:
true
auto
:
true
#rePrefix redis存储的前缀
#ignoreRedis true存入 false不存 api.timeout.default
dmp
:
ignoreRedis
:
true
rePrefix
:
test
openapi
:
timeout
:
default
:
5000
max
:
5000
request
:
#api请求次数
limit
:
max
:
10
jz-dm-apigateway/src/main/resources/application.yml
View file @
d7b311c3
...
...
@@ -13,8 +13,10 @@ logging:
spring
:
application
:
name
:
九章数据平台
aop
:
proxy-target-class
:
true
servlet
:
multipart
:
max-file-size
:
10MB
max-request-size
:
50MB
profiles
:
active
:
test
#默认使用的配置文件
...
...
jz-dm-apigateway/src/main/resources/mapper/ApiAuthMapper.xml
View file @
d7b311c3
...
...
@@ -20,19 +20,19 @@
DATE_FORMAT(au.valid_start_time,'%Y-%m-%d %H:%i:%s') AS validStartTime,
DATE_FORMAT(au.valid_end_time,'%Y-%m-%d %H:%i:%s') AS validEndTime,
(CASE au.status
WHEN '
1
' THEN '正常'
WHEN '
2
' THEN '作废'
WHEN '
VALID
' THEN '正常'
WHEN '
UN_VALID
' THEN '作废'
END) AS status,
au.remark AS remark,
DATE_FORMAT(au.create_date,'%Y-%m-%d %H:%i:%s') AS createDate,
au.create_user AS createUser,
ao.org_name AS orgName,
ai.api_key AS apiKey
FROM t_api_auth AS au
JOIN t_api_interface AS ai ON au.api_interface_id = ai.id AND ai.is_deleted =0 AND ai.`status` ='
2
'
JOIN t_api_org AS ao ON au.api_org_id = ao.id AND ao.`status` ='
1
' AND ao.is_deleted =0
FROM t_api_auth AS au
JOIN t_api_interface AS ai ON au.api_interface_id = ai.id AND ai.is_deleted =0 AND ai.`status` ='
ISSUE
'
JOIN t_api_org AS ao ON au.api_org_id = ao.id AND ao.`status` ='
NORMAL
' AND ao.is_deleted =0
WHERE au.is_deleted =0
AND au.id =#{
req.
id}
AND au.id =#{id}
</select>
<select
id=
"listSelectApiAuth"
resultType=
"com.jz.dm.models.dto.AuthInfoDto"
>
...
...
@@ -48,8 +48,8 @@
DATE_FORMAT(au.valid_start_time,'%Y-%m-%d %H:%i:%s') AS validStartTime,
DATE_FORMAT(au.valid_end_time,'%Y-%m-%d %H:%i:%s') AS validEndTime,
(CASE au.status
WHEN '
1
' THEN '正常'
WHEN '
2
' THEN '作废'
WHEN '
VALID
' THEN '正常'
WHEN '
UN_VALID
' THEN '作废'
END) AS status,
au.remark AS remark,
DATE_FORMAT(au.create_date,'%Y-%m-%d %H:%i:%s') AS createDate,
...
...
@@ -57,8 +57,8 @@
ao.org_name AS orgName,
ai.api_key AS apiKey
FROM t_api_auth AS au
JOIN t_api_interface AS ai ON au.api_interface_id = ai.id AND ai.is_deleted =0 AND ai.`status` ='
2
'
JOIN t_api_org AS ao ON au.api_org_id = ao.id AND ao.`status` ='
1
' AND ao.is_deleted =0
JOIN t_api_interface AS ai ON au.api_interface_id = ai.id AND ai.is_deleted =0 AND ai.`status` ='
ISSUE
'
JOIN t_api_org AS ao ON au.api_org_id = ao.id AND ao.`status` ='
NORMAL
' AND ao.is_deleted =0
${ew.customSqlSegment}
</select>
...
...
jz-dm-apigateway/src/main/resources/mapper/ApiDirectionlMapper.xml
0 → 100644
View file @
d7b311c3
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.jz.dm.mapper.ApiDirectionMapper"
>
</mapper>
jz-dm-apigateway/src/test/java/com/jz/dm/gateway/org/TestOrganizationManage.java
View file @
d7b311c3
...
...
@@ -73,7 +73,6 @@ public class TestOrganizationManage extends SpringTestCase {
public
void
updateOrg
(){
OrganizationManageUpdateReq
req
=
new
OrganizationManageUpdateReq
();
req
.
setId
(
8L
);
req
.
setOrgName
(
"ABCOssO"
);
req
.
setOrgDesc
(
"粗这次002"
);
req
.
setOrgCnName
(
"AOKK33"
);
req
.
setOrgMail
(
"727322JA@QQ.COM"
);
...
...
jz-dm-apigateway/src/test/java/com/jz/dm/gateway/orther/TestHttpReq.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
gateway
.
orther
;
import
com.alibaba.fastjson.JSONObject
;
import
com.jz.common.utils.HttpsUtils
;
import
com.jz.dm.gateway.SpringTestCase
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.HashMap
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.gateway.orther
* @PROJECT_NAME: jz-dm-parent
* @NAME: TestHttpReq
* @DATE: 2021-1-3/10:15
* @DAY_NAME_SHORT: 周日
* @Description:
**/
public
class
TestHttpReq
extends
SpringTestCase
{
private
static
final
String
baseUrl
=
"http://localhost:8081/logInfo/getMallLogDetail/1"
;
private
static
final
String
baseUrlPost
=
"http://localhost:8081/logInfo/getMallLogInfo"
;
@Autowired
private
HttpsUtils
httpsUtils
;
@Test
public
void
getReqTest
(){
String
response
=
httpsUtils
.
doGet
(
baseUrl
,
new
HashMap
<>());
System
.
out
.
println
(
response
);
}
@Test
public
void
postReqTest
(){
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"pageNum"
,
1
);
jsonObject
.
put
(
"pageSize"
,
20
);
HashMap
<
String
,
String
>
headers
=
new
HashMap
<>();
headers
.
put
(
"connection"
,
"keep-alive"
);
headers
.
put
(
"Charsert"
,
"UTF-8"
);
headers
.
put
(
"Accept"
,
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
);
String
response
=
httpsUtils
.
submitPost
(
baseUrlPost
,
jsonObject
,
headers
);
System
.
out
.
println
(
response
);
}
}
jz-dm-apigateway/src/test/java/com/jz/dm/gateway/orther/TestMakeApi.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
gateway
.
orther
;
import
com.jz.common.utils.WebUtils
;
import
com.jz.dm.gateway.SpringTestCase
;
import
com.jz.dm.service.ProducerService
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.gateway.orther
* @PROJECT_NAME: jz-dm-parent
* @NAME: TestMakeApi
* @DATE: 2020-12-31/14:00
* @DAY_NAME_SHORT: 周四
* @Description:
**/
public
class
TestMakeApi
extends
SpringTestCase
{
private
static
final
String
url
=
"http://localhost:8088/api/producer/addDataBankApiInfo"
;
@Autowired
private
ProducerService
producerService
;
@Test
public
void
testApiMake
()
{
Map
headers
=
new
HashMap
<
String
,
String
>();
headers
.
put
(
"Content-Type"
,
"application/json;charset=UTF-8"
);
headers
.
put
(
"User-Agent"
,
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
);
Map
params
=
new
HashMap
<
String
,
String
>();
params
.
put
(
"apiType"
,
"2"
);
params
.
put
(
"apiKey"
,
"www.q99sss9"
);
params
.
put
(
"apiProtocl"
,
"HTTPS"
);
params
.
put
(
"type"
,
"1"
);
try
{
String
result
=
WebUtils
.
post
(
url
,
params
,
headers
);
System
.
out
.
println
(
"接受到的结果为:"
+
result
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
jz-dm-apigateway/src/test/java/com/jz/dm/gateway/orther/TestRedisUserSave.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
dm
.
gateway
.
orther
;
import
com.jz.dm.common.base.BaseCurrentUserObject
;
import
com.jz.dm.gateway.SpringTestCase
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.dm.gateway.orther
* @PROJECT_NAME: jz-dm-parent
* @NAME: TestRedisUserSave
* @DATE: 2021-1-2/11:16
* @DAY_NAME_SHORT: 周六
* @Description:
**/
public
class
TestRedisUserSave
extends
SpringTestCase
{
@Autowired
private
RedisTemplate
redisTemplate
;
@Test
public
void
saveUser
(){
redisTemplate
.
opsForValue
().
set
(
"USER004"
,
"USER9999"
);
}
@Test
public
void
getUser
(){
//String str= (String)redisTemplate.opsForValue().get("USER"+"_99999");
//System.out.println("获取到的用户:"+str);
System
.
out
.
println
(
new
BaseCurrentUserObject
().
getUserInfo
());
}
}
jz-dm-common/src/main/java/com/jz/common/utils/HttpClientPool.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
common
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.config.Registry
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.config.SocketConfig
;
import
org.apache.http.conn.DnsResolver
;
import
org.apache.http.conn.HttpConnectionFactory
;
import
org.apache.http.conn.ManagedHttpClientConnection
;
import
org.apache.http.conn.routing.HttpRoute
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.impl.DefaultConnectionReuseStrategy
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy
;
import
org.apache.http.impl.client.DefaultHttpRequestRetryHandler
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.DefaultHttpResponseParserFactory
;
import
org.apache.http.impl.conn.ManagedHttpClientConnectionFactory
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.impl.conn.SystemDefaultDnsResolver
;
import
org.apache.http.impl.io.DefaultHttpRequestWriterFactory
;
import
java.io.IOException
;
import
java.util.concurrent.TimeUnit
;
/**
* @Description:
* @PROJECT_NAME: fbpay-broker
* @NAME: HttpClientPool
* @author: zc
* @DATE: 2020/9/14/9:37
* @DAY_NAME_SHORT: 周一
* Date Author Version Description
* -----------------------------------------------------*
* 2020/9/14 ZC v1.0.0 创建
**/
@Slf4j
public
class
HttpClientPool
{
private
static
PoolingHttpClientConnectionManager
manager
=
null
;
private
static
CloseableHttpClient
httpClient
=
null
;
public
static
synchronized
CloseableHttpClient
getHttpClient
()
{
if
(
httpClient
==
null
)
{
log
.
info
(
"------------------------创建HttpClient---------------------------------"
);
//注册访问协议相关的Socket工厂
Registry
<
ConnectionSocketFactory
>
socketFactoryRegistry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"http"
,
PlainConnectionSocketFactory
.
INSTANCE
)
.
register
(
"https"
,
SSLConnectionSocketFactory
.
getSystemSocketFactory
())
.
build
();
//HttpConnection 工厂:配置写请求/解析响应处理器
HttpConnectionFactory
<
HttpRoute
,
ManagedHttpClientConnection
>
connectionFactory
=
new
ManagedHttpClientConnectionFactory
(
DefaultHttpRequestWriterFactory
.
INSTANCE
,
DefaultHttpResponseParserFactory
.
INSTANCE
);
//DNS 解析器
DnsResolver
dnsResolver
=
SystemDefaultDnsResolver
.
INSTANCE
;
//创建池化连接管理器
manager
=
new
PoolingHttpClientConnectionManager
(
socketFactoryRegistry
,
connectionFactory
,
dnsResolver
);
//默认为Socket配置
SocketConfig
defaultSocketConfig
=
SocketConfig
.
custom
().
setTcpNoDelay
(
true
).
build
();
manager
.
setDefaultSocketConfig
(
defaultSocketConfig
);
//设置整个连接池的最大连接数
manager
.
setMaxTotal
(
300
);
//每个路由的默认最大连接,每个路由实际最大连接数由DefaultMaxPerRoute控制,而MaxTotal是整个池子的最大数
//设置过小无法支持大并发(ConnectionPoolTimeoutException) Timeout waiting for connection from pool
//每个路由的最大连接数
manager
.
setDefaultMaxPerRoute
(
200
);
//在从连接池获取连接时,连接不活跃多长时间后需要进行一次验证,默认为2s
manager
.
setValidateAfterInactivity
(
5
*
1000
);
//默认请求配置
RequestConfig
defaultRequestConfig
=
RequestConfig
.
custom
()
//设置连接超时时间,2s
.
setConnectTimeout
(
2
*
1000
)
//设置等待数据超时时间,5s
.
setSocketTimeout
(
5
*
1000
)
//设置从连接池获取连接的等待超时时间
.
setConnectionRequestTimeout
(
2000
)
.
build
();
//创建HttpClient
httpClient
=
HttpClients
.
custom
()
.
setConnectionManager
(
manager
)
//连接池不是共享模式
.
setConnectionManagerShared
(
false
)
//定期回收空闲连接
.
evictIdleConnections
(
60
,
TimeUnit
.
SECONDS
)
// 定期回收过期连接
.
evictExpiredConnections
()
//连接存活时间,如果不设置,则根据长连接信息决定
.
setConnectionTimeToLive
(
60
,
TimeUnit
.
SECONDS
)
//设置默认请求配置
.
setDefaultRequestConfig
(
defaultRequestConfig
)
//连接重用策略,即是否能keepAlive
.
setConnectionReuseStrategy
(
DefaultConnectionReuseStrategy
.
INSTANCE
)
//长连接配置,即获取长连接生产多长时间
.
setKeepAliveStrategy
(
DefaultConnectionKeepAliveStrategy
.
INSTANCE
)
//设置重试次数,默认是3次,当前是禁用掉(根据需要开启)
.
setRetryHandler
(
new
DefaultHttpRequestRetryHandler
(
0
,
false
))
.
build
();
//JVM 停止或重启时,关闭连接池释放掉连接(跟数据库连接池类似)
Runtime
.
getRuntime
().
addShutdownHook
(
new
Thread
()
{
@Override
public
void
run
()
{
try
{
if
(
httpClient
!=
null
)
{
httpClient
.
close
();
}
}
catch
(
IOException
e
)
{
log
.
error
(
"error when close httpClient:{}"
,
e
);
}
}
});
}
return
httpClient
;
}
}
jz-dm-common/src/main/java/com/jz/common/utils/HttpsUtils.java
0 → 100644
View file @
d7b311c3
package
com
.
jz
.
common
.
utils
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.Consts
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.ParseException
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
jz
.
common
.
utils
.
HttpClientPool
.
getHttpClient
;
/**
* @author ZC
* @PACKAGE_NAME: com.jz.common.utils
* @PROJECT_NAME: jz-dm-parent
* @NAME: HttpsUtils
* @DATE: 2021-1-3/0:29
* @DAY_NAME_SHORT: 周日
* @Description:
**/
@Slf4j
@Component
public
class
HttpsUtils
{
public
static
final
String
JSON_CONTENT_FORM
=
"application/json; charset=utf-8"
;
public
static
final
String
CONTENT_FORM
=
"application/x-www-form-urlencoded;charset=UTF-8"
;
/**
* Post请求表单提交
* @param url 请求路径
* @param params 请求参数
* @param headers 请求头
* @return
*/
public
String
submitPost
(
String
url
,
JSONObject
params
,
Map
<
String
,
String
>
headers
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
String
body
=
null
;
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
httpPost
=
new
HttpPost
(
url
);
httpPost
.
setHeader
(
"Content-type"
,
JSON_CONTENT_FORM
);
if
(
null
!=
headers
&&
headers
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
String
>
e
:
headers
.
entrySet
())
{
httpPost
.
addHeader
(
e
.
getKey
(),
e
.
getValue
());
}
}
if
(
StringUtils
.
isNotBlank
(
params
.
toString
()))
{
httpPost
.
setEntity
(
new
StringEntity
(
params
.
toString
(),
Consts
.
UTF_8
));
}
response
=
httpClient
.
execute
(
httpPost
);
body
=
getBody
(
response
.
getEntity
());
log
.
info
(
"请求:"
+
url
+
"---->返回结果:"
+
body
);
}
catch
(
IOException
e
)
{
log
.
error
(
"请求:"
+
url
+
"--->异常"
,
e
);
}
finally
{
try
{
// 释放链接
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
body
;
}
/**
* Post请求表单提交
*
* @param url 请求路径
* @param params 请求参数
* @return
*/
public
String
submitPost
(
String
url
,
String
params
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
String
body
=
null
;
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
httpPost
=
new
HttpPost
(
url
);
httpPost
.
setHeader
(
"Content-type"
,
JSON_CONTENT_FORM
);
if
(
StringUtils
.
isNotBlank
(
params
))
{
httpPost
.
setEntity
(
new
StringEntity
(
params
,
Consts
.
UTF_8
));
}
response
=
httpClient
.
execute
(
httpPost
);
body
=
getBody
(
response
.
getEntity
());
log
.
info
(
"请求:"
+
url
+
"---->返回结果:"
+
body
);
}
catch
(
IOException
e
)
{
log
.
error
(
"请求:"
+
url
+
"--->异常"
,
e
);
}
finally
{
try
{
// 释放链接
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
body
;
}
/**
* 验证码实时校验
* 无需cookie和referer时请求接口
*
* @param params 入参
* @param baseUrl 发送请求的URL
* @return URL 所代表远程资源的响应结果
*/
public
String
doGet
(
String
baseUrl
,
Map
<
String
,
String
>
params
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
CloseableHttpResponse
response
=
null
;
String
body
=
null
;
try
{
List
<
String
>
mapList
=
new
ArrayList
<>();
if
(
params
!=
null
)
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
params
.
entrySet
())
{
mapList
.
add
(
entry
.
getKey
()
+
"="
+
entry
.
getValue
());
}
}
if
(
CollectionUtils
.
isNotEmpty
(
mapList
))
{
baseUrl
=
baseUrl
+
"?"
;
String
paramsStr
=
StringUtils
.
join
(
mapList
,
"&"
);
baseUrl
=
baseUrl
+
paramsStr
;
}
HttpGet
httpGet
=
new
HttpGet
(
baseUrl
);
response
=
httpClient
.
execute
(
httpGet
);
body
=
getBody
(
response
.
getEntity
());
log
.
info
(
"获取请求结果为:"
+
body
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"请求接口时-->"
+
baseUrl
+
"发生异常:"
,
e
);
}
finally
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
body
;
}
/**
* 验证码实时校验
* 无需cookie和referer时请求接口
* @param baseUrl 发送请求的URL
* @param params 请求参数
* @return URL 所代表远程资源的响应结果
*/
public
String
doGet
(
String
baseUrl
,
Map
<
String
,
String
>
params
,
Map
<
String
,
String
>
headers
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
CloseableHttpResponse
response
=
null
;
String
body
=
null
;
try
{
List
<
String
>
mapList
=
new
ArrayList
<>();
if
(
params
!=
null
)
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
params
.
entrySet
())
{
mapList
.
add
(
entry
.
getKey
()
+
"="
+
entry
.
getValue
());
}
}
if
(
CollectionUtils
.
isNotEmpty
(
mapList
))
{
baseUrl
=
baseUrl
+
"?"
;
String
paramsStr
=
StringUtils
.
join
(
mapList
,
"&"
);
baseUrl
=
baseUrl
+
paramsStr
;
}
HttpGet
httpGet
=
new
HttpGet
(
baseUrl
);
if
(
headers
!=
null
&&
headers
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
String
>
e
:
headers
.
entrySet
())
{
httpGet
.
addHeader
(
e
.
getKey
(),
e
.
getValue
());
}
}
response
=
httpClient
.
execute
(
httpGet
);
body
=
getBody
(
response
.
getEntity
());
log
.
info
(
"获取请求结果为:"
+
body
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"请求接口时-->"
+
baseUrl
+
"发生异常:"
,
e
);
}
finally
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
body
;
}
/**
* 获取图片二维码
*
* @param url
* @throws IOException
*/
public
CloseableHttpClient
doGetImg
(
String
url
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
HttpGet
httpGet
=
new
HttpGet
(
url
);
try
{
httpClient
.
execute
(
httpGet
);
}
catch
(
IOException
e
)
{
log
.
error
(
"发起http request异常:{}"
,
e
);
}
return
httpClient
;
}
/**
* 获取图片二维码
*
* @param url
* @throws IOException
*/
public
HttpEntity
doGetImg
(
String
url
,
Map
<
String
,
String
>
headers
)
{
CloseableHttpClient
httpClient
=
getHttpClient
();
CloseableHttpResponse
response
=
null
;
HttpGet
httpGet
=
new
HttpGet
(
url
);
if
(
headers
!=
null
&&
headers
.
size
()
>
0
)
{
for
(
Map
.
Entry
<
String
,
String
>
e
:
headers
.
entrySet
())
{
httpGet
.
addHeader
(
e
.
getKey
(),
e
.
getValue
());
}
}
try
{
response
=
httpClient
.
execute
(
httpGet
);
}
catch
(
IOException
e
)
{
log
.
error
(
"发起http request异常:{}"
,
e
);
}
return
response
.
getEntity
();
}
public
static
String
getBody
(
HttpEntity
entity
)
throws
ParseException
,
IOException
{
String
body
=
""
;
if
(
entity
!=
null
)
{
// 按指定编码转换结果实体为String类型
body
=
EntityUtils
.
toString
(
entity
,
Consts
.
UTF_8
);
}
EntityUtils
.
consume
(
entity
);
return
body
;
}
}
jz-dm-common/src/main/java/com/jz/common/utils/RedisUtils.java
View file @
d7b311c3
...
...
@@ -3,6 +3,7 @@
*/
package
com
.
jz
.
common
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.script.RedisScript
;
...
...
@@ -20,6 +21,7 @@ import java.util.concurrent.TimeUnit;
* @version $Id: RedisUtils.java 2019年11月2日 上午8:36:41 $
*/
@Component
(
"redisUtils"
)
@Slf4j
public
class
RedisUtils
{
@Autowired
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
...
...
@@ -238,4 +240,21 @@ public class RedisUtils {
return
redisTemplate
.
opsForList
().
range
(
key
,
0
,
500
);
}
/**
* 删除久key值,添加新key值
* @param nowKey
* @param newKey
* @param value
* @param timeout
* @return
*/
public
void
delAndAdd
(
String
nowKey
,
String
newKey
,
Integer
value
,
long
timeout
){
try
{
redisTemplate
.
delete
(
nowKey
);
redisTemplate
.
opsForValue
().
set
(
newKey
,
value
,
timeout
);
}
catch
(
Exception
e
)
{
log
.
error
(
"~~~~~~~~~~~~~保存redis计次异常~~~~~~~~~~~~~~~~~~~"
);
e
.
printStackTrace
();
}
}
}
jz-dm-common/src/main/java/com/jz/common/utils/UrlUtil.java
View file @
d7b311c3
...
...
@@ -24,7 +24,7 @@ public class UrlUtil {
int
port
=
request
.
getServerPort
();
// 访问项目名
String
contextPath
=
request
.
getContextPath
();
String
url
=
"%s://%s%s%s"
;
String
url
=
"%s://%s%s%s
%s
"
;
String
portStr
=
""
;
if
(
port
!=
80
)
{
portStr
+=
":"
+
port
;
...
...
pom.xml
View file @
d7b311c3
...
...
@@ -220,57 +220,70 @@
<module>
jz-dm-apigateway
</module>
</modules>
<!-- <build>-->
<!-- <defaultGoal>compile</defaultGoal>-->
<!-- <finalName>${project.artifactId}</finalName>-->
<!-- <resources>-->
<!-- <resource>-->
<!-- <directory>src/main/resources</directory>-->
<!-- <filtering>true</filtering>-->
<!-- <excludes>-->
<!-- <exclude>disconf.properties</exclude>-->
<!-- </excludes>-->
<!-- </resource>-->
<!-- </resources>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-compiler-plugin</artifactId>-->
<!-- <version>2.3.2</version>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>default-compile</id>-->
<!-- <phase>compile</phase>-->
<!-- <goals>-->
<!-- <goal>compile</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- <configuration>-->
<!-- <source>1.8</source>-->
<!-- <target>1.8</target>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-resources-plugin</artifactId>-->
<!-- <version>2.5</version>-->
<!-- <configuration>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-eclipse-plugin</artifactId>-->
<!-- <version>2.8</version>-->
<!-- <configuration>-->
<!-- <downloadSources>true</downloadSources>-->
<!-- <downloadJavadocs>false</downloadJavadocs>-->
<!-- <wtpversion>2.0</wtpversion>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
<build>
<defaultGoal>
compile
</defaultGoal>
<finalName>
${project.artifactId}
</finalName>
<resources>
<resource>
<directory>
src/main/resources
</directory>
<filtering>
true
</filtering>
<excludes>
<exclude>
disconf.properties
</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
2.3.2
</version>
<executions>
<execution>
<id>
default-compile
</id>
<phase>
compile
</phase>
<goals>
<goal>
compile
</goal>
</goals>
</execution>
</executions>
<configuration>
<source>
1.8
</source>
<target>
1.8
</target>
<encoding>
UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-resources-plugin
</artifactId>
<version>
2.5
</version>
<configuration>
<encoding>
UTF-8
</encoding>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-eclipse-plugin
</artifactId>
<version>
2.8
</version>
<configuration>
<downloadSources>
true
</downloadSources>
<downloadJavadocs>
false
</downloadJavadocs>
<wtpversion>
2.0
</wtpversion>
<encoding>
${project.build.sourceEncoding}
</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
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