Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
7d3b75d3
提交
7d3b75d3
authored
4月 17, 2022
作者:
方治民
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 新增 BasicEntity、抽离 JacksonConfig 与 DateTimeConfig、优化 Swagger 日志输出时机、封装 Auths 公共类等
上级
674dce47
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
202 行增加
和
68 行删除
+202
-68
Permission.java
...in/java/com/yiring/auth/domain/permission/Permission.java
+5
-11
Role.java
...-auth/src/main/java/com/yiring/auth/domain/role/Role.java
+7
-13
User.java
...-auth/src/main/java/com/yiring/auth/domain/user/User.java
+5
-14
Auths.java
basic-auth/src/main/java/com/yiring/auth/util/Auths.java
+64
-0
UserController.java
...rc/main/java/com/yiring/auth/web/user/UserController.java
+7
-20
build.gradle
basic-common/core/build.gradle
+3
-0
DateTimeConfig.java
...rc/main/java/com/yiring/common/config/DateTimeConfig.java
+3
-7
JacksonConfig.java
...src/main/java/com/yiring/common/config/JacksonConfig.java
+33
-0
BasicEntity.java
...e/src/main/java/com/yiring/common/domain/BasicEntity.java
+68
-0
SwaggerConfig.java
...rc/main/java/com/yiring/common/swagger/SwaggerConfig.java
+7
-3
没有找到文件。
basic-auth/src/main/java/com/yiring/auth/domain/permission/Permission.java
浏览文件 @
7d3b75d3
...
@@ -3,6 +3,7 @@ package com.yiring.auth.domain.permission;
...
@@ -3,6 +3,7 @@ package com.yiring.auth.domain.permission;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Objects
;
import
java.util.Objects
;
...
@@ -10,10 +11,9 @@ import javax.persistence.*;
...
@@ -10,10 +11,9 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
/**
/**
* 权限
* 权限
...
@@ -25,7 +25,7 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -25,7 +25,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Getter
@Setter
@Setter
@ToString
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldNameConstants
...
@@ -41,17 +41,11 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -41,17 +41,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Index
(
columnList
=
"uid"
,
unique
=
true
),
@Index
(
columnList
=
"uid"
,
unique
=
true
),
}
}
)
)
public
class
Permission
implements
Serializable
{
public
class
Permission
extends
BasicEntity
implements
Serializable
{
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
2001221843529000953L
;
private
static
final
long
serialVersionUID
=
-
2001221843529000953L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"类型(MENU: 菜单, BUTTON: 按钮)"
)
@Comment
(
"类型(MENU: 菜单, BUTTON: 按钮)"
)
@Enumerated
(
EnumType
.
STRING
)
@Enumerated
(
EnumType
.
STRING
)
Type
type
;
Type
type
;
...
@@ -140,7 +134,7 @@ public class Permission implements Serializable {
...
@@ -140,7 +134,7 @@ public class Permission implements Serializable {
if
(
this
==
o
)
return
true
;
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
Permission
that
=
(
Permission
)
o
;
Permission
that
=
(
Permission
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
that
.
id
);
return
this
.
getId
()
!=
null
&&
Objects
.
equals
(
this
.
getId
(),
that
.
getId
()
);
}
}
@Override
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/domain/role/Role.java
浏览文件 @
7d3b75d3
...
@@ -4,6 +4,7 @@ package com.yiring.auth.domain.role;
...
@@ -4,6 +4,7 @@ package com.yiring.auth.domain.role;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.HashSet
;
import
java.util.HashSet
;
...
@@ -13,10 +14,9 @@ import javax.persistence.*;
...
@@ -13,10 +14,9 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
/**
/**
* 角色
* 角色
...
@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Getter
@Setter
@Setter
@ToString
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldNameConstants
...
@@ -36,17 +36,11 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -36,17 +36,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Entity
@Entity
@Comment
(
"系统角色"
)
@Comment
(
"系统角色"
)
@Table
(
name
=
"SYS_ROLE"
,
indexes
=
{
@Index
(
columnList
=
"uid"
,
unique
=
true
)
})
@Table
(
name
=
"SYS_ROLE"
,
indexes
=
{
@Index
(
columnList
=
"uid"
,
unique
=
true
)
})
public
class
Role
implements
Serializable
{
public
class
Role
extends
BasicEntity
implements
Serializable
{
@Serial
@Serial
private
static
final
long
serialVersionUID
=
910404402503275957L
;
private
static
final
long
serialVersionUID
=
910404402503275957L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"标识"
)
@Comment
(
"标识"
)
@Column
(
unique
=
true
,
nullable
=
false
)
@Column
(
unique
=
true
,
nullable
=
false
)
String
uid
;
String
uid
;
...
@@ -59,7 +53,7 @@ public class Role implements Serializable {
...
@@ -59,7 +53,7 @@ public class Role implements Serializable {
@Comment
(
"权限集合"
)
@Comment
(
"权限集合"
)
@ManyToMany
@ManyToMany
@ToString
.
Exclude
@ToString
.
Exclude
private
Set
<
Permission
>
permissions
=
new
HashSet
<>();
Set
<
Permission
>
permissions
=
new
HashSet
<>();
@JsonIgnore
@JsonIgnore
@EqualsAndHashCode
.
Exclude
@EqualsAndHashCode
.
Exclude
...
@@ -72,14 +66,14 @@ public class Role implements Serializable {
...
@@ -72,14 +66,14 @@ public class Role implements Serializable {
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
)
},
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
)
},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"user_id"
)
}
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"user_id"
)
}
)
)
private
Set
<
User
>
users
=
new
HashSet
<>();
Set
<
User
>
users
=
new
HashSet
<>();
@Override
@Override
public
boolean
equals
(
Object
o
)
{
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
Role
role
=
(
Role
)
o
;
Role
role
=
(
Role
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
role
.
id
);
return
this
.
getId
()
!=
null
&&
Objects
.
equals
(
this
.
getId
(),
role
.
getId
()
);
}
}
@Override
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/domain/user/User.java
浏览文件 @
7d3b75d3
...
@@ -3,6 +3,7 @@ package com.yiring.auth.domain.user;
...
@@ -3,6 +3,7 @@ package com.yiring.auth.domain.user;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
...
@@ -13,10 +14,9 @@ import javax.persistence.*;
...
@@ -13,10 +14,9 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
/**
/**
* 用户
* 用户
...
@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -28,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Getter
@Setter
@Setter
@ToString
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldNameConstants
...
@@ -45,17 +45,11 @@ import org.hibernate.snowflake.SnowflakeId;
...
@@ -45,17 +45,11 @@ import org.hibernate.snowflake.SnowflakeId;
}
}
)
)
@Comment
(
"系统用户"
)
@Comment
(
"系统用户"
)
public
class
User
implements
Serializable
{
public
class
User
extends
BasicEntity
implements
Serializable
{
@Serial
@Serial
private
static
final
long
serialVersionUID
=
-
5787847701210907511L
;
private
static
final
long
serialVersionUID
=
-
5787847701210907511L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"真实姓名"
)
@Comment
(
"真实姓名"
)
String
realName
;
String
realName
;
...
@@ -103,15 +97,12 @@ public class User implements Serializable {
...
@@ -103,15 +97,12 @@ public class User implements Serializable {
@Comment
(
"最后登录时间"
)
@Comment
(
"最后登录时间"
)
LocalDateTime
lastLoginTime
;
LocalDateTime
lastLoginTime
;
@Comment
(
"创建时间"
)
LocalDateTime
createTime
;
@Override
@Override
public
boolean
equals
(
Object
o
)
{
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
User
user
=
(
User
)
o
;
User
user
=
(
User
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
user
.
id
);
return
this
.
getId
()
!=
null
&&
Objects
.
equals
(
this
.
getId
(),
user
.
getId
()
);
}
}
@Override
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/util/Auths.java
0 → 100644
浏览文件 @
7d3b75d3
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
auth
.
util
;
import
cn.dev33.satoken.exception.NotLoginException
;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.common.core.Status
;
import
java.util.Objects
;
import
java.util.Optional
;
import
javax.annotation.Resource
;
import
lombok.NonNull
;
import
org.springframework.stereotype.Component
;
/**
* 认证工具类
*
* @author Jim
* @version 0.1
* 2022/4/8 17:34
*/
@SuppressWarnings
(
"unused"
)
@Component
public
class
Auths
{
@Resource
UserRepository
userRepository
;
/**
* 根据 Token 获取用户信息
* 如果用户未登录或校验失败会抛出 NotLoginException {@link Status#UNAUTHORIZED}
* @param token token
* @return 用户信息
*/
public
User
getUserByToken
(
@NonNull
String
token
)
{
Object
id
=
StpUtil
.
getLoginIdByToken
(
token
);
if
(
id
==
null
)
{
StpUtil
.
logoutByTokenValue
(
token
);
throw
NotLoginException
.
newInstance
(
StpUtil
.
TYPE
,
null
);
}
Optional
<
User
>
optional
=
userRepository
.
findById
(
Long
.
valueOf
(
Objects
.
toString
(
id
)));
if
(
optional
.
isEmpty
())
{
StpUtil
.
logout
(
id
);
throw
NotLoginException
.
newInstance
(
StpUtil
.
TYPE
,
NotLoginException
.
INVALID_TOKEN
);
}
return
optional
.
get
();
}
/**
* 获取当前登录用户
* 如果用户未登录会抛出 NotLoginException {@link Status#UNAUTHORIZED}
*/
public
User
getLoginUser
()
{
String
token
=
StpUtil
.
getTokenValue
();
if
(
token
==
null
)
{
throw
NotLoginException
.
newInstance
(
StpUtil
.
TYPE
,
null
);
}
return
getUserByToken
(
token
);
}
}
basic-auth/src/main/java/com/yiring/auth/web/user/UserController.java
浏览文件 @
7d3b75d3
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
auth
.
web
.
user
;
package
com
.
yiring
.
auth
.
web
.
user
;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.auth.domain.role.RoleRepository
;
import
com.yiring.auth.domain.role.RoleRepository
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.auth.util.Auths
;
import
com.yiring.auth.util.Permissions
;
import
com.yiring.auth.util.Permissions
;
import
com.yiring.auth.vo.permission.MenuVo
;
import
com.yiring.auth.vo.permission.MenuVo
;
import
com.yiring.auth.vo.user.UserInfoVo
;
import
com.yiring.auth.vo.user.UserInfoVo
;
import
com.yiring.auth.vo.user.UserVo
;
import
com.yiring.auth.vo.user.UserVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.exception.FailStatusException
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
import
com.yiring.common.vo.PageVo
;
...
@@ -52,6 +51,9 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -52,6 +51,9 @@ import org.springframework.web.bind.annotation.RestController;
public
class
UserController
{
public
class
UserController
{
@Resource
@Resource
Auths
auths
;
@Resource
UserRepository
userRepository
;
UserRepository
userRepository
;
@Resource
@Resource
...
@@ -60,7 +62,7 @@ public class UserController {
...
@@ -60,7 +62,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取登录用户信息"
)
@ApiOperation
(
value
=
"获取登录用户信息"
)
@GetMapping
(
"getUserInfo"
)
@GetMapping
(
"getUserInfo"
)
public
Result
<
UserInfoVo
>
getUserInfo
()
{
public
Result
<
UserInfoVo
>
getUserInfo
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
UserInfoVo
userInfoVo
=
UserInfoVo
UserInfoVo
userInfoVo
=
UserInfoVo
.
builder
()
.
builder
()
.
userId
(
user
.
getId
())
.
userId
(
user
.
getId
())
...
@@ -76,7 +78,7 @@ public class UserController {
...
@@ -76,7 +78,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取用户菜单"
)
@ApiOperation
(
value
=
"获取用户菜单"
)
@GetMapping
(
"getMenuList"
)
@GetMapping
(
"getMenuList"
)
public
Result
<
ArrayList
<
MenuVo
>>
getMenuList
()
{
public
Result
<
ArrayList
<
MenuVo
>>
getMenuList
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
List
<
Permission
>
permissions
=
Permissions
List
<
Permission
>
permissions
=
Permissions
.
toPermissions
(
user
.
getRoles
())
.
toPermissions
(
user
.
getRoles
())
.
stream
()
.
stream
()
...
@@ -89,7 +91,7 @@ public class UserController {
...
@@ -89,7 +91,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取用户权限"
)
@ApiOperation
(
value
=
"获取用户权限"
)
@GetMapping
(
"getPermCode"
)
@GetMapping
(
"getPermCode"
)
public
Result
<
ArrayList
<
String
>>
getPermCode
()
{
public
Result
<
ArrayList
<
String
>>
getPermCode
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
List
<
Permission
>
permissions
=
Permissions
.
toPermissions
(
user
.
getRoles
());
List
<
Permission
>
permissions
=
Permissions
.
toPermissions
(
user
.
getRoles
());
List
<
String
>
codes
=
permissions
.
stream
().
map
(
Permission:
:
getUid
).
collect
(
Collectors
.
toList
());
List
<
String
>
codes
=
permissions
.
stream
().
map
(
Permission:
:
getUid
).
collect
(
Collectors
.
toList
());
return
Result
.
ok
((
ArrayList
<
String
>)
codes
);
return
Result
.
ok
((
ArrayList
<
String
>)
codes
);
...
@@ -132,19 +134,4 @@ public class UserController {
...
@@ -132,19 +134,4 @@ public class UserController {
PageVo
<
UserVo
>
vo
=
PageVo
.
build
(
data
,
page
.
getTotalElements
());
PageVo
<
UserVo
>
vo
=
PageVo
.
build
(
data
,
page
.
getTotalElements
());
return
Result
.
ok
(
vo
);
return
Result
.
ok
(
vo
);
}
}
/**
* 获取登录用户信息
* @return 用户信息
*/
private
User
getLoginUser
()
{
Long
id
=
StpUtil
.
getLoginIdAsLong
();
Optional
<
User
>
optional
=
userRepository
.
findById
(
id
);
if
(
optional
.
isPresent
())
{
return
optional
.
get
();
}
StpUtil
.
logout
(
id
);
throw
new
FailStatusException
(
Status
.
UNAUTHORIZED
);
}
}
}
basic-common/core/build.gradle
浏览文件 @
7d3b75d3
...
@@ -6,6 +6,9 @@ dependencies {
...
@@ -6,6 +6,9 @@ dependencies {
implementation
'org.springframework.boot:spring-boot-starter-validation'
implementation
'org.springframework.boot:spring-boot-starter-validation'
implementation
'org.springframework.boot:spring-boot-starter-data-jpa'
implementation
'org.springframework.boot:spring-boot-starter-data-jpa'
// 本地依赖
implementation
fileTree
(
dir:
project
.
rootDir
.
getPath
()
+
'\\libs'
,
includes:
[
'*jar'
])
// swagger annotations
// swagger annotations
implementation
"io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
implementation
"io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
...
...
basic-common/core/src/main/java/com/yiring/common/config/DateTimeConfig.java
浏览文件 @
7d3b75d3
/* (C) 2022 YiRing, Inc. */
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
config
;
package
com
.
yiring
.
common
.
config
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
;
...
@@ -28,8 +26,8 @@ import org.springframework.core.convert.converter.Converter;
...
@@ -28,8 +26,8 @@ import org.springframework.core.convert.converter.Converter;
@Configuration
@Configuration
public
class
DateTimeConfig
{
public
class
DateTimeConfig
{
@Bean
(
name
=
"mapperObject"
)
@Bean
public
ObjectMapper
getObjectMapper
()
{
public
JavaTimeModule
javaTimeModule
()
{
JavaTimeModule
timeModule
=
new
JavaTimeModule
();
JavaTimeModule
timeModule
=
new
JavaTimeModule
();
timeModule
.
addSerializer
(
LocalDateTime
.
class
,
new
LocalDateTimeSerializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addSerializer
(
LocalDateTime
.
class
,
new
LocalDateTimeSerializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addSerializer
(
LocalDate
.
class
,
new
LocalDateSerializer
(
DateFormatter
.
DATE
));
timeModule
.
addSerializer
(
LocalDate
.
class
,
new
LocalDateSerializer
(
DateFormatter
.
DATE
));
...
@@ -37,9 +35,7 @@ public class DateTimeConfig {
...
@@ -37,9 +35,7 @@ public class DateTimeConfig {
timeModule
.
addDeserializer
(
LocalDateTime
.
class
,
new
LocalDateTimeDeserializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addDeserializer
(
LocalDateTime
.
class
,
new
LocalDateTimeDeserializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addDeserializer
(
LocalDate
.
class
,
new
LocalDateDeserializer
(
DateFormatter
.
DATE
));
timeModule
.
addDeserializer
(
LocalDate
.
class
,
new
LocalDateDeserializer
(
DateFormatter
.
DATE
));
timeModule
.
addDeserializer
(
LocalTime
.
class
,
new
LocalTimeDeserializer
(
DateFormatter
.
TIME
));
timeModule
.
addDeserializer
(
LocalTime
.
class
,
new
LocalTimeDeserializer
(
DateFormatter
.
TIME
));
// feat: add AdminServerModule
return
timeModule
;
// .setSerializationInclusion(JsonInclude.Include.NON_NULL)
return
new
ObjectMapper
().
setSerializationInclusion
(
JsonInclude
.
Include
.
NON_NULL
).
registerModules
(
timeModule
);
}
}
@Bean
@Bean
...
...
basic-common/core/src/main/java/com/yiring/common/config/JacksonConfig.java
0 → 100644
浏览文件 @
7d3b75d3
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
config
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
javax.annotation.Resource
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* Jackson Config
*
* @author Jim
* @version 0.1
* 2022/4/17 16:54
*/
@Configuration
public
class
JacksonConfig
{
@Resource
JavaTimeModule
javaTimeModule
;
@Bean
public
ObjectMapper
objectMapper
()
{
ObjectMapper
mapper
=
new
ObjectMapper
();
mapper
.
setSerializationInclusion
(
JsonInclude
.
Include
.
NON_NULL
);
mapper
.
registerModule
(
javaTimeModule
);
// feat: add AdminServerModule
return
mapper
;
}
}
basic-common/core/src/main/java/com/yiring/common/domain/BasicEntity.java
0 → 100644
浏览文件 @
7d3b75d3
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
common
.
domain
;
import
java.time.LocalDateTime
;
import
java.util.Objects
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.MappedSuperclass
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotations.Comment
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.annotations.UpdateTimestamp
;
import
org.hibernate.snowflake.SnowflakeId
;
/**
* 基础表抽象类
*
* @author Jim
* @version 0.1
* 2022/4/17 12:11
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@SuperBuilder
(
toBuilder
=
true
)
@MappedSuperclass
public
abstract
class
BasicEntity
{
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"创建时间"
)
@Column
(
nullable
=
false
)
@CreationTimestamp
LocalDateTime
createTime
;
@Comment
(
"最后修改时间"
)
@Column
(
nullable
=
false
)
@UpdateTimestamp
LocalDateTime
updateTime
;
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
BasicEntity
that
=
(
BasicEntity
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
that
.
id
);
}
@Override
public
int
hashCode
()
{
return
getClass
().
hashCode
();
}
}
basic-common/doc/src/main/java/com/yiring/common/swagger/SwaggerConfig.java
浏览文件 @
7d3b75d3
...
@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
...
@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.context.annotation.Import
;
...
@@ -41,7 +42,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
...
@@ -41,7 +42,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@EnableSwagger2WebMvc
@EnableSwagger2WebMvc
@Configuration
@Configuration
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
public
class
SwaggerConfig
implements
CommandLineRunner
{
@Value
(
"${spring.application.name}"
)
@Value
(
"${spring.application.name}"
)
String
applicationName
;
String
applicationName
;
...
@@ -61,8 +62,6 @@ public class SwaggerConfig {
...
@@ -61,8 +62,6 @@ public class SwaggerConfig {
}
}
private
Docket
api
(
Predicate
<
String
>
paths
)
{
private
Docket
api
(
Predicate
<
String
>
paths
)
{
log
.
info
(
"API Doc: http://localhost:{}{}/doc.html"
,
port
,
path
);
String
group
=
"default"
;
String
group
=
"default"
;
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
groupName
(
group
)
.
groupName
(
group
)
...
@@ -99,4 +98,9 @@ public class SwaggerConfig {
...
@@ -99,4 +98,9 @@ public class SwaggerConfig {
.
map
(
status
->
new
ResponseMessageBuilder
().
code
(
status
.
value
()).
message
(
status
.
getReasonPhrase
()).
build
())
.
map
(
status
->
new
ResponseMessageBuilder
().
code
(
status
.
value
()).
message
(
status
.
getReasonPhrase
()).
build
())
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
}
}
@Override
public
void
run
(
String
...
args
)
{
log
.
info
(
"API Doc: http://localhost:{}{}/doc.html"
,
port
,
path
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论