Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-api-boot
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-api-boot
Commits
5a6ec16c
提交
5a6ec16c
authored
4月 18, 2022
作者:
方治民
浏览文件
操作
浏览文件
下载
差异文件
feat: 合并 basic-api
上级
7f531ed7
f308578a
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
59 个修改的文件
包含
304 行增加
和
135 行删除
+304
-135
.editorConfig
.editorConfig
+1
-1
.gitignore
.gitignore
+2
-0
README.md
README.md
+2
-2
build.gradle
app-push/build.gradle
+2
-2
PushMessage.java
...src/main/java/com/yiring/app/push/domain/PushMessage.java
+1
-1
build.gradle
app/build.gradle
+4
-2
Application.java
app/src/main/java/com/yiring/app/Application.java
+2
-0
GlobalExceptionHandler.java
...in/java/com/yiring/app/config/GlobalExceptionHandler.java
+1
-2
LocationBeacon.java
...n/java/com/yiring/app/domain/location/LocationBeacon.java
+5
-3
LocationFence.java
...in/java/com/yiring/app/domain/location/LocationFence.java
+3
-1
LocationFenceRule.java
...ava/com/yiring/app/domain/location/LocationFenceRule.java
+4
-2
LocationLog.java
...main/java/com/yiring/app/domain/location/LocationLog.java
+3
-1
LocationTag.java
...main/java/com/yiring/app/domain/location/LocationTag.java
+3
-1
Video.java
app/src/main/java/com/yiring/app/domain/video/Video.java
+3
-1
CodeException.java
...src/main/java/com/yiring/app/exception/CodeException.java
+2
-0
application-conf-patch.yml
app/src/main/resources/application-conf-patch.yml
+5
-0
application.yml
app/src/main/resources/application.yml
+2
-2
build.gradle
basic-auth/build.gradle
+1
-1
Department.java
...src/main/java/com/yiring/auth/domain/dept/Department.java
+3
-1
Permission.java
...in/java/com/yiring/auth/domain/permission/Permission.java
+8
-12
Post.java
...-auth/src/main/java/com/yiring/auth/domain/post/Post.java
+3
-1
Role.java
...-auth/src/main/java/com/yiring/auth/domain/role/Role.java
+10
-14
User.java
...-auth/src/main/java/com/yiring/auth/domain/user/User.java
+6
-30
IdsParam.java
basic-auth/src/main/java/com/yiring/auth/param/IdsParam.java
+2
-0
LoginParam.java
.../src/main/java/com/yiring/auth/param/auth/LoginParam.java
+2
-0
RegisterParam.java
...c/main/java/com/yiring/auth/param/auth/RegisterParam.java
+2
-0
PermissionParam.java
...ava/com/yiring/auth/param/permission/PermissionParam.java
+2
-0
RoleParam.java
...h/src/main/java/com/yiring/auth/param/role/RoleParam.java
+2
-0
Auths.java
basic-auth/src/main/java/com/yiring/auth/util/Auths.java
+20
-2
LoginVo.java
...c-auth/src/main/java/com/yiring/auth/vo/auth/LoginVo.java
+2
-0
MenuVo.java
...h/src/main/java/com/yiring/auth/vo/permission/MenuVo.java
+2
-0
PermissionVo.java
...main/java/com/yiring/auth/vo/permission/PermissionVo.java
+2
-0
RoleVo.java
basic-auth/src/main/java/com/yiring/auth/vo/role/RoleVo.java
+2
-0
UserInfoVo.java
...uth/src/main/java/com/yiring/auth/vo/user/UserInfoVo.java
+2
-0
UserMenuListVo.java
...src/main/java/com/yiring/auth/vo/user/UserMenuListVo.java
+2
-0
UserVo.java
basic-auth/src/main/java/com/yiring/auth/vo/user/UserVo.java
+2
-0
AuthController.java
...rc/main/java/com/yiring/auth/web/auth/AuthController.java
+0
-1
UserController.java
...rc/main/java/com/yiring/auth/web/user/UserController.java
+7
-20
init-test-mysql.sql
basic-auth/src/main/resources/init-test-mysql.sql
+0
-0
build.gradle
basic-common/core/build.gradle
+4
-1
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
Result.java
...mon/core/src/main/java/com/yiring/common/core/Result.java
+2
-0
BasicEntity.java
...e/src/main/java/com/yiring/common/domain/BasicEntity.java
+68
-0
FailStatusException.java
...java/com/yiring/common/exception/FailStatusException.java
+2
-0
IdParam.java
...n/core/src/main/java/com/yiring/common/param/IdParam.java
+2
-0
PageParam.java
...core/src/main/java/com/yiring/common/param/PageParam.java
+2
-0
DataVo.java
...ommon/core/src/main/java/com/yiring/common/vo/DataVo.java
+2
-0
KeyValueVo.java
...n/core/src/main/java/com/yiring/common/vo/KeyValueVo.java
+2
-0
PageVo.java
...ommon/core/src/main/java/com/yiring/common/vo/PageVo.java
+2
-0
build.gradle
basic-common/doc/build.gradle
+4
-1
SwaggerConfig.java
...rc/main/java/com/yiring/common/swagger/SwaggerConfig.java
+17
-3
ObjectMappingSerializer.java
...va/com/yiring/common/jackson/ObjectMappingSerializer.java
+2
-0
build.gradle
build.gradle
+15
-17
technique.md
doc/technique.md
+9
-2
gradle.properties
gradle.properties
+7
-0
gradle-wrapper.properties
gradle/wrapper/gradle-wrapper.properties
+1
-1
hibernate-comment-annotation-0.0.3-SNAPSHOT.jar
libs/hibernate-comment-annotation-0.0.3-SNAPSHOT.jar
+0
-0
hibernate-comment-annotation-0.0.4-SNAPSHOT-plain.jar
libs/hibernate-comment-annotation-0.0.4-SNAPSHOT-plain.jar
+0
-0
没有找到文件。
.editorConfig
浏览文件 @
5a6ec16c
...
...
@@ -7,5 +7,5 @@ indent_style = space
end_of_line = lf
insert_final_newline = true
[*
*.yml
]
[*
.{yml,yaml}
]
indent_size = 2
.gitignore
浏览文件 @
5a6ec16c
...
...
@@ -36,3 +36,5 @@ out/
### VS Code ###
.vscode/
node_modules
logs/
README.md
浏览文件 @
5a6ec16c
...
...
@@ -5,8 +5,8 @@
## 开发环境
<!-- prettier-ignore -->
-
JDK 1
.8+ (推荐同时安装最新 LTS 版本)
[
下载
](
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
)
-
NodeJS
[
latest
](
https://nodejs.org/zh-cn/
)
-
JDK 1
7
[
版本管理工具
](
https://github.com/shyiko/jabba
)
-
NodeJS
[
下载
](
https://nodejs.org/zh-cn/
)
-
IDEA
[
下载
](
https://www.jetbrains.com/idea/
)
-
Navicat Premium
[
下载
](
http://www.downcc.com/soft/430673.html
)
-
RedisDesktopManager
[
下载
](
https://github.com/FuckDoctors/rdm-builder
)
...
...
app-push/build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -16,7 +16,7 @@ dependencies {
implementation
"com.alibaba:fastjson:${fastJsonVersion}"
// https://github.com/vladmihalcea/hibernate-types
// hibernate-types-5
2
implementation
"com.vladmihalcea:hibernate-types-5
2
:${hibernateTypesVersion}"
// hibernate-types-5
5
implementation
"com.vladmihalcea:hibernate-types-5
5
:${hibernateTypesVersion}"
}
app-push/src/main/java/com/yiring/app/push/domain/PushMessage.java
浏览文件 @
5a6ec16c
...
...
@@ -9,7 +9,7 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.annotations.Type
;
import
org.hibernate.annotations.TypeDef
;
...
...
app/build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -7,6 +7,7 @@ bootJar {
dependencies
{
implementation
'org.springframework.boot:spring-boot-starter-web'
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-redis'
implementation
'org.springframework.boot:spring-boot-starter-amqp'
...
...
@@ -23,13 +24,14 @@ dependencies {
implementation
project
(
":basic-common:core"
)
implementation
project
(
":basic-common:util"
)
implementation
project
(
":basic-common:redis"
)
implementation
project
(
":app-push"
)
// Optional: Redis
implementation
project
(
":basic-common:redis"
)
// Optional: Doc
implementation
project
(
":basic-common:doc"
)
implementation
"io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
implementation
"org.hibernate.validator:hibernate-validator:${hibernateValidatorVersion}"
// Optional: Auth
implementation
project
(
":basic-auth"
)
...
...
app/src/main/java/com/yiring/app/Application.java
浏览文件 @
5a6ec16c
/* (C) 2021 YiRing, Inc. */
package
com
.
yiring
.
app
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.domain.EntityScan
;
import
org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters
;
import
org.springframework.data.jpa.repository.config.EnableJpaRepositories
;
@MapperScan
(
basePackages
=
Application
.
BASE_PACKAGES
+
".app.mapper"
)
@EnableJpaRepositories
(
basePackages
=
Application
.
BASE_PACKAGES
)
@EntityScan
(
basePackageClasses
=
{
Application
.
class
,
Jsr310JpaConverters
.
class
},
...
...
app/src/main/java/com/yiring/app/config/GlobalExceptionHandler.java
浏览文件 @
5a6ec16c
...
...
@@ -43,8 +43,7 @@ public class GlobalExceptionHandler {
String
error
=
"未知参数校验错误"
;
if
(
e
instanceof
ConstraintViolationException
)
{
ConstraintViolationException
ex
=
(
ConstraintViolationException
)
e
;
error
=
ex
.
getConstraintViolations
().
iterator
().
next
().
getMessage
();
error
=
((
ConstraintViolationException
)
e
).
getConstraintViolations
().
iterator
().
next
().
getMessage
();
}
else
{
BindingResult
result
=
null
;
if
(
e
instanceof
MethodArgumentNotValidException
)
{
...
...
app/src/main/java/com/yiring/app/domain/location/LocationBeacon.java
浏览文件 @
5a6ec16c
...
...
@@ -2,6 +2,7 @@
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.yiring.common.annotation.FieldMapping
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -11,7 +12,7 @@ import lombok.*;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.locationtech.jts.geom.Point
;
...
...
@@ -19,8 +20,8 @@ import org.locationtech.jts.geom.Point;
/**
* 定位信标
* 引用:
* 1. 查询地图分区(定位系统),
https://nl.yz-cloud.com/position/area/list
* 2. 查询信标点(定位系统),
https://nl.yz-cloud.com/position/config/point/list
* 1. 查询地图分区(定位系统),
<a href="https://nl.yz-cloud.com/position/area/list">https://nl.yz-cloud.com/position/area/list</a>
* 2. 查询信标点(定位系统),
<a href="https://nl.yz-cloud.com/position/config/point/list">https://nl.yz-cloud.com/position/config/point/list</a>
*
* @author Jim
* @version 0.1
...
...
@@ -43,6 +44,7 @@ import org.locationtech.jts.geom.Point;
@Comment
(
"定位信标"
)
public
class
LocationBeacon
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5419734189897829250L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFence.java
浏览文件 @
5a6ec16c
...
...
@@ -2,6 +2,7 @@
package
com
.
yiring
.
app
.
domain
.
location
;
import
com.yiring.common.annotation.FieldMapping
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.HashSet
;
...
...
@@ -10,7 +11,7 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.locationtech.jts.geom.Geometry
;
...
...
@@ -37,6 +38,7 @@ import org.locationtech.jts.geom.Geometry;
@Comment
(
"围栏"
)
public
class
LocationFence
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
4155868702188991300L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/domain/location/LocationFenceRule.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.location;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.annotation.FieldMapping
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalTime
;
import
java.util.HashSet
;
...
...
@@ -11,7 +12,7 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
...
...
@@ -33,10 +34,11 @@ import org.hibernate.snowflake.SnowflakeId;
@FieldNameConstants
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@Entity
@Table
(
name
=
"BS_LOCATION_FENCE_RULE"
,
indexes
=
{}
)
@Table
(
name
=
"BS_LOCATION_FENCE_RULE"
)
@Comment
(
"围栏规则"
)
public
class
LocationFenceRule
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
6683465582430417205L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/domain/location/LocationLog.java
浏览文件 @
5a6ec16c
...
...
@@ -4,6 +4,7 @@ package com.yiring.app.domain.location;
import
com.alibaba.fastjson.JSONObject
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.config.converter.JSONObjectConverter
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -15,7 +16,7 @@ import lombok.*;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.locationtech.jts.geom.Point
;
...
...
@@ -42,6 +43,7 @@ import org.locationtech.jts.geom.Point;
@Comment
(
"定位数据"
)
public
class
LocationLog
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3467455881020691989L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/domain/location/LocationTag.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.app.domain.location;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.annotation.FieldMapping
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.Objects
;
...
...
@@ -11,7 +12,7 @@ import lombok.*;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
...
...
@@ -48,6 +49,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Comment
(
"定位标签"
)
public
class
LocationTag
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
5419734189897829250L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/domain/video/Video.java
浏览文件 @
5a6ec16c
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
app
.
domain
.
video
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.locationtech.jts.geom.Point
;
...
...
@@ -33,6 +34,7 @@ import org.locationtech.jts.geom.Point;
@Comment
(
"监控视频"
)
public
class
Video
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
4382898847143469396L
;
@Comment
(
"主键"
)
...
...
app/src/main/java/com/yiring/app/exception/CodeException.java
浏览文件 @
5a6ec16c
...
...
@@ -2,6 +2,7 @@
package
com
.
yiring
.
app
.
exception
;
import
com.yiring.app.constant.Code
;
import
java.io.Serial
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
...
...
@@ -19,6 +20,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
CodeException
extends
RuntimeException
{
@Serial
private
static
final
long
serialVersionUID
=
-
4226669531686389671L
;
/**
...
...
app/src/main/resources/application-conf-patch.yml
0 → 100644
浏览文件 @
5a6ec16c
spring
:
mvc
:
pathmatch
:
# 修复 swagger 插件在 2.6.x 接口路径匹配问题
matching-strategy
:
ant_path_matcher
app/src/main/resources/application.yml
浏览文件 @
5a6ec16c
...
...
@@ -7,8 +7,8 @@ spring:
application
:
name
:
"
kshg-api"
profiles
:
include
:
auth
active
:
dev
include
:
auth
, conf-patch
active
:
mock
# DEBUG
debug
:
false
basic-auth/build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -3,13 +3,13 @@ dependencies {
implementation
project
(
':basic-common:util'
)
implementation
'org.springframework.boot:spring-boot-starter-data-jpa'
implementation
'org.springframework.boot:spring-boot-starter-validation'
// 本地依赖
implementation
fileTree
(
dir:
project
.
rootDir
.
getPath
()
+
'\\libs'
,
includes:
[
'*jar'
])
// swagger annotations
implementation
"io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
implementation
"org.hibernate.validator:hibernate-validator:${hibernateValidatorVersion}"
// sa-token
implementation
"cn.dev33:sa-token-spring-boot-starter:${saTokenVersion}"
...
...
basic-auth/src/main/java/com/yiring/auth/domain/dept/Department.java
浏览文件 @
5a6ec16c
...
...
@@ -4,6 +4,7 @@ package com.yiring.auth.domain.dept;
import
com.yiring.auth.domain.post.Post
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.annotation.FieldMapping
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.HashSet
;
import
java.util.Objects
;
...
...
@@ -13,7 +14,7 @@ import lombok.*;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
...
...
@@ -37,6 +38,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Table
(
name
=
"SYS_DEPARTMENT"
,
indexes
=
{
@Index
(
columnList
=
"pid"
),
@Index
(
columnList
=
"tree"
)
})
public
class
Department
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
5402731145404250150L
;
@Comment
(
"主键"
)
...
...
basic-auth/src/main/java/com/yiring/auth/domain/permission/Permission.java
浏览文件 @
5a6ec16c
...
...
@@ -3,16 +3,17 @@ package com.yiring.auth.domain.permission;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Objects
;
import
javax.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.hibernate.annotations.Comment
;
/**
* 权限
...
...
@@ -24,7 +25,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Setter
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
...
...
@@ -40,16 +41,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Index
(
columnList
=
"uid"
,
unique
=
true
),
}
)
public
class
Permission
implements
Serializable
{
public
class
Permission
extends
BasicEntity
implements
Serializable
{
@Serial
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: 按钮)"
)
@Enumerated
(
EnumType
.
STRING
)
Type
type
;
...
...
@@ -138,7 +134,7 @@ public class Permission implements Serializable {
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
Permission
that
=
(
Permission
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
that
.
id
);
return
this
.
getId
()
!=
null
&&
Objects
.
equals
(
this
.
getId
(),
that
.
getId
()
);
}
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/domain/post/Post.java
浏览文件 @
5a6ec16c
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
auth
.
domain
.
post
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
...
...
@@ -9,7 +10,7 @@ import javax.persistence.Table;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annota
t
ions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
...
...
@@ -33,6 +34,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Table
(
name
=
"SYS_POST"
)
public
class
Post
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
3744892781714515997L
;
@Comment
(
"主键"
)
...
...
basic-auth/src/main/java/com/yiring/auth/domain/role/Role.java
浏览文件 @
5a6ec16c
...
...
@@ -4,6 +4,8 @@ package com.yiring.auth.domain.role;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.HashSet
;
import
java.util.Objects
;
...
...
@@ -12,10 +14,9 @@ import javax.persistence.*;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
lombok.experimental.SuperBuilder
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.hibernate.annotations.Comment
;
/**
* 角色
...
...
@@ -27,7 +28,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Setter
@ToString
@
Builder
@
SuperBuilder
(
toBuilder
=
true
)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
...
...
@@ -35,16 +36,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Entity
@Comment
(
"系统角色"
)
@Table
(
name
=
"SYS_ROLE"
,
indexes
=
{
@Index
(
columnList
=
"uid"
,
unique
=
true
)
})
public
class
Role
implements
Serializable
{
public
class
Role
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
910404402503275957L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
@Comment
(
"标识"
)
@Column
(
unique
=
true
,
nullable
=
false
)
String
uid
;
...
...
@@ -57,7 +53,7 @@ public class Role implements Serializable {
@Comment
(
"权限集合"
)
@ManyToMany
@ToString
.
Exclude
private
Set
<
Permission
>
permissions
=
new
HashSet
<>();
Set
<
Permission
>
permissions
=
new
HashSet
<>();
@JsonIgnore
@EqualsAndHashCode
.
Exclude
...
...
@@ -70,14 +66,14 @@ public class Role implements Serializable {
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
)
},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"user_id"
)
}
)
private
Set
<
User
>
users
=
new
HashSet
<>();
Set
<
User
>
users
=
new
HashSet
<>();
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
Role
role
=
(
Role
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
role
.
id
);
return
this
.
getId
()
!=
null
&&
Objects
.
equals
(
this
.
getId
(),
role
.
getId
()
);
}
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/domain/user/User.java
浏览文件 @
5a6ec16c
...
...
@@ -3,9 +3,10 @@ package com.yiring.auth.domain.user;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
com.yiring.auth.domain.dept.Department
;
import
com.yiring.auth.domain.post.Post
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.common.annotation.FieldMapping
;
import
com.yiring.common.domain.BasicEntity
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.HashSet
;
...
...
@@ -16,9 +17,7 @@ import lombok.*;
import
lombok.experimental.FieldDefaults
;
import
lombok.experimental.FieldNameConstants
;
import
org.hibernate.Hibernate
;
import
org.hibernate.annotaions.Comment
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.hibernate.snowflake.SnowflakeId
;
import
org.hibernate.annotations.Comment
;
/**
* 用户
...
...
@@ -39,7 +38,6 @@ import org.hibernate.snowflake.SnowflakeId;
@Table
(
name
=
"SYS_USER"
,
indexes
=
{
@Index
(
columnList
=
"uuid"
,
unique
=
true
),
@Index
(
columnList
=
"mobile"
,
unique
=
true
),
@Index
(
columnList
=
"username"
,
unique
=
true
),
@Index
(
columnList
=
"email"
,
unique
=
true
),
...
...
@@ -48,16 +46,11 @@ import org.hibernate.snowflake.SnowflakeId;
}
)
@Comment
(
"系统用户"
)
public
class
User
implements
Serializable
{
public
class
User
extends
BasicEntity
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
5787847701210907511L
;
@Comment
(
"主键"
)
@Id
@GeneratedValue
(
generator
=
SnowflakeId
.
GENERATOR
)
@GenericGenerator
(
name
=
SnowflakeId
.
GENERATOR
,
strategy
=
SnowflakeId
.
Strategy
.
LONG
)
Long
id
;
/**
* 数据来源于【真源人员定位系统 - 定位信标】
* 作用: 用于双向联动进行数据同步
...
...
@@ -97,17 +90,6 @@ public class User implements Serializable {
@Comment
(
"头像"
)
String
avatar
;
@Comment
(
"职称"
)
String
title
;
@Comment
(
"岗位"
)
@ManyToOne
@JoinColumn
(
name
=
"post_id"
)
Post
post
;
@Comment
(
"性别(1: 男, 2: 女)"
)
Integer
gender
;
@Comment
(
"是否启用"
)
Boolean
enabled
;
...
...
@@ -148,12 +130,6 @@ public class User implements Serializable {
@Comment
(
"最后登录时间"
)
LocalDateTime
lastLoginTime
;
@Comment
(
"更新时间"
)
LocalDateTime
updateTime
;
@Comment
(
"创建时间"
)
LocalDateTime
createTime
;
@SuppressWarnings
({
"unused"
})
public
enum
Type
{
EMPLOYEES
(
"员工"
),
...
...
@@ -194,7 +170,7 @@ public class User implements Serializable {
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
Hibernate
.
getClass
(
this
)
!=
Hibernate
.
getClass
(
o
))
return
false
;
User
user
=
(
User
)
o
;
return
id
!=
null
&&
Objects
.
equals
(
id
,
user
.
id
);
return
getId
()
!=
null
&&
Objects
.
equals
(
getId
(),
user
.
getId
()
);
}
@Override
...
...
basic-auth/src/main/java/com/yiring/auth/param/IdsParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.auth.param;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Arrays
;
import
java.util.Set
;
...
...
@@ -28,6 +29,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
IdsParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8379896695668632733L
;
@ApiModelProperty
(
value
=
"ids 多个以逗号分割"
,
example
=
"1,2"
,
required
=
true
)
...
...
basic-auth/src/main/java/com/yiring/auth/param/auth/LoginParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.auth.param.auth;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
lombok.*
;
...
...
@@ -23,6 +24,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
LoginParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8690942241103456895L
;
@ApiModelProperty
(
value
=
"账号(支持用户名/手机号/邮箱)"
,
example
=
"admin"
,
required
=
true
)
...
...
basic-auth/src/main/java/com/yiring/auth/param/auth/RegisterParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.auth.param.auth;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
...
...
@@ -24,6 +25,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
RegisterParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8690942241103456895L
;
@ApiModelProperty
(
value
=
"用户名"
,
example
=
"admin"
,
required
=
true
)
...
...
basic-auth/src/main/java/com/yiring/auth/param/permission/PermissionParam.java
浏览文件 @
5a6ec16c
...
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import
com.yiring.auth.domain.permission.Permission
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
...
...
@@ -27,6 +28,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
PermissionParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
6781934969837655538L
;
@ApiModelProperty
(
value
=
"权限类型"
,
example
=
"MENU"
,
required
=
true
)
...
...
basic-auth/src/main/java/com/yiring/auth/param/role/RoleParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.auth.param.role;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.constraints.NotEmpty
;
import
lombok.*
;
...
...
@@ -23,6 +24,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
RoleParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6572751635422870217L
;
@ApiModelProperty
(
value
=
"标识"
,
example
=
"admin"
,
required
=
true
)
...
...
basic-auth/src/main/java/com/yiring/auth/util/Auths.java
浏览文件 @
5a6ec16c
...
...
@@ -5,9 +5,11 @@ 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
;
/**
...
...
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Component;
* 2022/4/8 17:34
*/
@SuppressWarnings
(
"unused"
)
@Component
public
class
Auths
{
...
...
@@ -26,21 +29,36 @@ public class Auths {
/**
* 根据 Token 获取用户信息
* 如果用户未登录或校验失败会抛出 NotLoginException
* 如果用户未登录或校验失败会抛出 NotLoginException
{@link Status#UNAUTHORIZED}
* @param token token
* @return 用户信息
*/
public
User
getUserByToken
(
String
token
)
{
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/vo/auth/LoginVo.java
浏览文件 @
5a6ec16c
...
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
...
...
@@ -25,6 +26,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
LoginVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8690942241103456896L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/vo/permission/MenuVo.java
浏览文件 @
5a6ec16c
...
...
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
lombok.*
;
...
...
@@ -27,6 +28,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
MenuVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
9139328772148985141L
;
@JsonIgnore
...
...
basic-auth/src/main/java/com/yiring/auth/vo/permission/PermissionVo.java
浏览文件 @
5a6ec16c
...
...
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import
com.yiring.auth.domain.permission.Permission
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
lombok.*
;
...
...
@@ -29,6 +30,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
PermissionVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
9139328772148985141L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/vo/role/RoleVo.java
浏览文件 @
5a6ec16c
...
...
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import
com.yiring.auth.vo.permission.PermissionVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.List
;
import
lombok.*
;
...
...
@@ -26,6 +27,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
RoleVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
9154497137563970840L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/vo/user/UserInfoVo.java
浏览文件 @
5a6ec16c
...
...
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import
com.yiring.auth.vo.role.RoleVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -26,6 +27,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserInfoVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
5319037883240327088L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/vo/user/UserMenuListVo.java
浏览文件 @
5a6ec16c
...
...
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import
com.yiring.auth.vo.role.RoleVo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -26,6 +27,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserMenuListVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
5319037883240327088L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/vo/user/UserVo.java
浏览文件 @
5a6ec16c
...
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import
com.fasterxml.jackson.databind.ser.std.ToStringSerializer
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.*
;
...
...
@@ -24,6 +25,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
UserVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
2184378273450466835L
;
@JsonSerialize
(
using
=
ToStringSerializer
.
class
)
...
...
basic-auth/src/main/java/com/yiring/auth/web/auth/AuthController.java
浏览文件 @
5a6ec16c
...
...
@@ -78,7 +78,6 @@ public class AuthController {
.
password
(
SaSecureUtil
.
sha256
(
param
.
getPassword
()))
.
enabled
(
param
.
getEnable
())
.
deleted
(
Boolean
.
FALSE
)
.
createTime
(
LocalDateTime
.
now
())
.
build
();
userRepository
.
saveAndFlush
(
user
);
return
Result
.
ok
();
...
...
basic-auth/src/main/java/com/yiring/auth/web/user/UserController.java
浏览文件 @
5a6ec16c
/* (C) 2022 YiRing, Inc. */
package
com
.
yiring
.
auth
.
web
.
user
;
import
cn.dev33.satoken.stp.StpUtil
;
import
com.yiring.auth.domain.permission.Permission
;
import
com.yiring.auth.domain.role.Role
;
import
com.yiring.auth.domain.role.RoleRepository
;
import
com.yiring.auth.domain.user.User
;
import
com.yiring.auth.domain.user.UserRepository
;
import
com.yiring.auth.param.IdsParam
;
import
com.yiring.auth.util.Auths
;
import
com.yiring.auth.util.Permissions
;
import
com.yiring.auth.vo.permission.MenuVo
;
import
com.yiring.auth.vo.user.UserInfoVo
;
import
com.yiring.auth.vo.user.UserVo
;
import
com.yiring.common.core.Result
;
import
com.yiring.common.core.Status
;
import
com.yiring.common.exception.FailStatusException
;
import
com.yiring.common.param.IdParam
;
import
com.yiring.common.param.PageParam
;
import
com.yiring.common.vo.PageVo
;
...
...
@@ -52,6 +51,9 @@ import org.springframework.web.bind.annotation.RestController;
public
class
UserController
{
@Resource
Auths
auths
;
@Resource
UserRepository
userRepository
;
@Resource
...
...
@@ -60,7 +62,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取登录用户信息"
)
@GetMapping
(
"getUserInfo"
)
public
Result
<
UserInfoVo
>
getUserInfo
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
UserInfoVo
userInfoVo
=
UserInfoVo
.
builder
()
.
userId
(
user
.
getId
())
...
...
@@ -76,7 +78,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取用户菜单"
)
@GetMapping
(
"getMenuList"
)
public
Result
<
ArrayList
<
MenuVo
>>
getMenuList
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
List
<
Permission
>
permissions
=
Permissions
.
toPermissions
(
user
.
getRoles
())
.
stream
()
...
...
@@ -89,7 +91,7 @@ public class UserController {
@ApiOperation
(
value
=
"获取用户权限"
)
@GetMapping
(
"getPermCode"
)
public
Result
<
ArrayList
<
String
>>
getPermCode
()
{
User
user
=
getLoginUser
();
User
user
=
auths
.
getLoginUser
();
List
<
Permission
>
permissions
=
Permissions
.
toPermissions
(
user
.
getRoles
());
List
<
String
>
codes
=
permissions
.
stream
().
map
(
Permission:
:
getUid
).
collect
(
Collectors
.
toList
());
return
Result
.
ok
((
ArrayList
<
String
>)
codes
);
...
...
@@ -132,19 +134,4 @@ public class UserController {
PageVo
<
UserVo
>
vo
=
PageVo
.
build
(
data
,
page
.
getTotalElements
());
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-auth/src/main/resources/init-test-mysql.sql
浏览文件 @
5a6ec16c
差异被折叠。
点击展开。
basic-common/core/build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -3,11 +3,14 @@ dependencies {
implementation
'org.springframework.boot:spring-boot-starter-aop'
implementation
'org.springframework.boot:spring-boot-starter-web'
implementation
'org.springframework.boot:spring-boot-starter-validation'
implementation
'org.springframework.boot:spring-boot-starter-data-jpa'
// 本地依赖
implementation
fileTree
(
dir:
project
.
rootDir
.
getPath
()
+
'\\libs'
,
includes:
[
'*jar'
])
// swagger annotations
implementation
"io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
implementation
"org.hibernate.validator:hibernate-validator:${hibernateValidatorVersion}"
// hutool-extra
implementation
"cn.hutool:hutool-extra:${hutoolVersion}"
...
...
basic-common/core/src/main/java/com/yiring/common/config/DateTimeConfig.java
浏览文件 @
5a6ec16c
/* (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
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer
;
import
com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
;
...
...
@@ -28,8 +26,8 @@ import org.springframework.core.convert.converter.Converter;
@Configuration
public
class
DateTimeConfig
{
@Bean
(
name
=
"mapperObject"
)
public
ObjectMapper
getObjectMapper
()
{
@Bean
public
JavaTimeModule
javaTimeModule
()
{
JavaTimeModule
timeModule
=
new
JavaTimeModule
();
timeModule
.
addSerializer
(
LocalDateTime
.
class
,
new
LocalDateTimeSerializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addSerializer
(
LocalDate
.
class
,
new
LocalDateSerializer
(
DateFormatter
.
DATE
));
...
...
@@ -37,9 +35,7 @@ public class DateTimeConfig {
timeModule
.
addDeserializer
(
LocalDateTime
.
class
,
new
LocalDateTimeDeserializer
(
DateFormatter
.
DATE_TIME
));
timeModule
.
addDeserializer
(
LocalDate
.
class
,
new
LocalDateDeserializer
(
DateFormatter
.
DATE
));
timeModule
.
addDeserializer
(
LocalTime
.
class
,
new
LocalTimeDeserializer
(
DateFormatter
.
TIME
));
// feat: add AdminServerModule
// .setSerializationInclusion(JsonInclude.Include.NON_NULL)
return
new
ObjectMapper
().
setSerializationInclusion
(
JsonInclude
.
Include
.
NON_NULL
).
registerModules
(
timeModule
);
return
timeModule
;
}
@Bean
...
...
basic-common/core/src/main/java/com/yiring/common/config/JacksonConfig.java
0 → 100644
浏览文件 @
5a6ec16c
/* (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/core/Result.java
浏览文件 @
5a6ec16c
...
...
@@ -4,6 +4,7 @@ package com.yiring.common.core;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.AccessLevel
;
import
lombok.Builder
;
...
...
@@ -28,6 +29,7 @@ import lombok.extern.slf4j.Slf4j;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
Result
<
T
extends
Serializable
>
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
4802543396830024571L
;
/**
...
...
basic-common/core/src/main/java/com/yiring/common/domain/BasicEntity.java
0 → 100644
浏览文件 @
5a6ec16c
/* (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/core/src/main/java/com/yiring/common/exception/FailStatusException.java
浏览文件 @
5a6ec16c
...
...
@@ -2,6 +2,7 @@
package
com
.
yiring
.
common
.
exception
;
import
com.yiring.common.core.Status
;
import
java.io.Serial
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
@@ -22,6 +23,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
FailStatusException
extends
RuntimeException
{
@Serial
private
static
final
long
serialVersionUID
=
-
4226669531686389671L
;
/**
...
...
basic-common/core/src/main/java/com/yiring/common/param/IdParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.common.param;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
...
...
@@ -25,6 +26,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
IdParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
8690942241103456893L
;
@ApiModelProperty
(
value
=
"id"
,
example
=
"1"
,
required
=
true
)
...
...
basic-common/core/src/main/java/com/yiring/common/param/PageParam.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.common.param;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Objects
;
import
javax.validation.constraints.DecimalMin
;
...
...
@@ -32,6 +33,7 @@ import org.springframework.data.domain.Sort;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
PageParam
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6103761701912769946L
;
@ApiModelProperty
(
value
=
"分页条数"
,
example
=
"10"
,
required
=
true
)
...
...
basic-common/core/src/main/java/com/yiring/common/vo/DataVo.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.common.vo;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.*
;
...
...
@@ -22,6 +23,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
DataVo
<
T
extends
Serializable
>
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
2472779197432240431L
;
@ApiModelProperty
(
value
=
"数据"
)
...
...
basic-common/core/src/main/java/com/yiring/common/vo/KeyValueVo.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.common.vo;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
...
...
@@ -23,6 +24,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
KeyValueVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
-
5238793972067296346L
;
@ApiModelProperty
(
value
=
"key"
,
example
=
"key"
)
...
...
basic-common/core/src/main/java/com/yiring/common/vo/PageVo.java
浏览文件 @
5a6ec16c
...
...
@@ -3,6 +3,7 @@ package com.yiring.common.vo;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.List
;
...
...
@@ -22,6 +23,7 @@ import lombok.experimental.FieldDefaults;
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
PageVo
<
T
extends
Serializable
>
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
6103761701912769946L
;
@ApiModelProperty
(
value
=
"数据"
)
...
...
basic-common/doc/build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -2,9 +2,12 @@ dependencies {
implementation
project
(
":basic-common:core"
)
implementation
'org.springframework.boot:spring-boot-starter-web'
implementation
'org.springframework.boot:spring-boot-starter-validation'
// swagger(knife4j)
implementation
"com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
implementation
"org.hibernate.validator:hibernate-validator:${hibernateValidatorVersion}"
// hutool-core
implementation
"cn.hutool:hutool-core:${hutoolVersion}"
}
basic-common/doc/src/main/java/com/yiring/common/swagger/SwaggerConfig.java
浏览文件 @
5a6ec16c
/* (C) 2021 YiRing, Inc. */
package
com
.
yiring
.
common
.
swagger
;
import
cn.hutool.core.net.NetUtil
;
import
com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver
;
import
com.yiring.common.core.Status
;
import
io.swagger.annotations.Api
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.function.Predicate
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
...
...
@@ -41,7 +45,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@EnableSwagger2WebMvc
@Configuration
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
public
class
SwaggerConfig
implements
CommandLineRunner
{
@Value
(
"${spring.application.name}"
)
String
applicationName
;
...
...
@@ -61,8 +65,6 @@ public class SwaggerConfig {
}
private
Docket
api
(
Predicate
<
String
>
paths
)
{
log
.
info
(
"API Doc: http://localhost:{}{}/doc.html"
,
port
,
path
);
String
group
=
"default"
;
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
groupName
(
group
)
...
...
@@ -99,4 +101,16 @@ public class SwaggerConfig {
.
map
(
status
->
new
ResponseMessageBuilder
().
code
(
status
.
value
()).
message
(
status
.
getReasonPhrase
()).
build
())
.
collect
(
Collectors
.
toList
());
}
@Override
public
void
run
(
String
...
args
)
{
Set
<
String
>
hosts
=
new
HashSet
<>();
hosts
.
add
(
"localhost"
);
hosts
.
addAll
(
NetUtil
.
localIpv4s
());
String
link
=
hosts
.
stream
()
.
map
(
host
->
"> http://"
+
host
+
":"
+
port
+
path
+
"/doc.html"
)
.
collect
(
Collectors
.
joining
(
"\n\t\t"
));
System
.
out
.
println
(
"\n\t📖 API Doc (Swagger2): \n\t\t"
+
link
+
"\n"
);
}
}
basic-common/util/src/main/java/com/yiring/common/jackson/ObjectMappingSerializer.java
浏览文件 @
5a6ec16c
...
...
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.SerializerProvider;
import
com.fasterxml.jackson.databind.ser.ContextualSerializer
;
import
com.fasterxml.jackson.databind.ser.std.StdSerializer
;
import
java.io.IOException
;
import
java.io.Serial
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
...
...
@@ -21,6 +22,7 @@ import java.util.Objects;
*/
public
class
ObjectMappingSerializer
extends
StdSerializer
<
Object
>
implements
ContextualSerializer
{
@Serial
private
static
final
long
serialVersionUID
=
-
1924851196524453827L
;
protected
ObjectMappingSerializer
()
{
...
...
build.gradle
浏览文件 @
5a6ec16c
...
...
@@ -7,10 +7,6 @@ buildscript {
knife4jVersion
=
'2.0.9'
// https://mvnrepository.com/artifact/io.swagger/swagger-annotations
swaggerAnnotationsVersion
=
'1.6.6'
// https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator
hibernateValidatorVersion
=
'7.0.4.Final'
// https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-spatial
hibernateSpatialVersion
=
'5.4.33.Final'
// https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot-starter
saTokenVersion
=
'1.29.1.trial'
// https://mvnrepository.com/artifact/cn.hutool/hutool-all
...
...
@@ -22,27 +18,29 @@ buildscript {
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
okhttpVersion
=
'4.9.3'
// https://mvnrepository.com/artifact/io.minio/minio
minioVersion
=
'8.3.7'
minioVersion
=
'8.3.8'
// https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter
mybatisPlusVersion
=
'3.5.1'
// https://mvnrepository.com/artifact/org.hibernate/hibernate-spatial
hibernateSpatialVersion
=
'5.6.8.Final'
// https://mvnrepository.com/artifact/org.locationtech.jts/jts-core
jtsVersion
=
'1.18.2'
// https://mvnrepository.com/artifact/com.vladmihalcea/hibernate-types-5
2
hibernateTypesVersion
=
'2.16.
0
'
// https://mvnrepository.com/artifact/com.vladmihalcea/hibernate-types-5
5
hibernateTypesVersion
=
'2.16.
1
'
}
}
plugins
{
id
'java'
id
'org.springframework.boot'
version
'2.
5.12
'
id
'org.springframework.boot'
version
'2.
6.6
'
// https://plugins.gradle.org/plugin/io.spring.dependency-management
id
'io.spring.dependency-management'
version
'1.0.11.RELEASE'
// https://plugins.gradle.org/plugin/com.diffplug.spotless
id
"com.diffplug.spotless"
version
"6.
3.0
"
id
"com.diffplug.spotless"
version
"6.
4.2
"
// https://plugins.gradle.org/plugin/com.github.spotbugs
// id "com.github.spotbugs" version "
4.7.10
"
// id "com.github.spotbugs" version "
5.0.6
"
}
sourceCompatibility
=
'1.8'
allprojects
{
repositories
{
mavenLocal
()
...
...
@@ -51,12 +49,15 @@ allprojects {
maven
{
url
'https://maven.aliyun.com/repository/public'
}
mavenCentral
()
}
sourceCompatibility
=
JavaVersion
.
VERSION_17
targetCompatibility
=
JavaVersion
.
VERSION_17
}
subprojects
{
apply
plugin:
'java'
apply
plugin:
'org.springframework.boot'
apply
plugin:
'io.spring.dependency-management'
apply
plugin:
'java'
apply
plugin:
"com.diffplug.spotless"
// apply plugin: "com.github.spotbugs"
...
...
@@ -110,7 +111,7 @@ subprojects {
licenseHeader
'/* (C) $YEAR YiRing, Inc. */'
// https://www.npmjs.com/package/prettier
// https://www.npmjs.com/package/prettier-plugin-java
prettier
([
'prettier'
:
'2.6.
0
'
,
'prettier-plugin-java'
:
'1.6.1'
]).
config
([
prettier
([
'prettier'
:
'2.6.
2
'
,
'prettier-plugin-java'
:
'1.6.1'
]).
config
([
'parser'
:
'java'
,
'tabWidth'
:
4
,
'printWidth'
:
120
,
...
...
@@ -120,9 +121,6 @@ subprojects {
}
}
// format
spotlessApply
// GitHook pre-commit (spotless, spotbugs)
def
hook
=
new
File
(
"$rootProject.projectDir/.git/hooks/pre-commit"
)
hook
.
text
=
"""#!/bin/bash
...
...
doc/technique.md
浏览文件 @
5a6ec16c
...
...
@@ -3,10 +3,11 @@
### 基础
<!-- prettier-ignore -->
-
[
SpringBoot v2.
5
.x
](
https://spring.io/projects/spring-boot
)
-
[
SpringBoot v2.
6
.x
](
https://spring.io/projects/spring-boot
)
-
[
Lombok
](
https://projectlombok.org/
)
-
[
Spring Web
](
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html
)
-
[
Spring Data Jpa
](
https://spring.io/projects/spring-data-jpa
)
-
[
Spring Data Redis
](
https://spring.io/projects/spring-data-redis
)
### SQL
...
...
@@ -42,6 +43,7 @@
<!-- prettier-ignore -->
-
[
Hutool
](
https://www.hutool.cn/
)
工具包
-
[
FastJson
](
https://github.com/alibaba/fastjson
)
JSON 工具包
### Doc
...
...
@@ -52,7 +54,12 @@
<!-- prettier-ignore -->
-
[
sa-token
](
https://sa-token.dev33.cn/
)
权限认证框架
-
[
MinIO
](
https://docs.min.io/
)
MinIO S3 文件存储
-
[
MinIO
](
https://docs.min.io/
)
文件存储
### 可选
<!-- prettier-ignore -->
-
[
MyBatis Plus
](
https://baomidou.com/
)
MyBatis 增强包(允许与 JPA 混合使用)
### 构建工具
...
...
gradle.properties
0 → 100644
浏览文件 @
5a6ec16c
# https://github.com/diffplug/spotless/issues/834
# fix: jdk16+
org.gradle.jvmargs
=
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
\
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
\
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
\
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
\
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
gradle/wrapper/gradle-wrapper.properties
浏览文件 @
5a6ec16c
distributionBase
=
GRADLE_USER_HOME
distributionPath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-7.
2
-bin.zip
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-7.
4.1
-bin.zip
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
libs/hibernate-comment-annotation-0.0.3-SNAPSHOT.jar
deleted
100644 → 0
浏览文件 @
7f531ed7
File deleted
libs/hibernate-comment-annotation-0.0.4-SNAPSHOT-plain.jar
0 → 100644
浏览文件 @
5a6ec16c
File added
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论