Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
9f43851e
Commit
9f43851e
authored
Apr 11, 2019
by
zhengjie
Browse files
1.7版本发布,详情查看版本说明
parent
1402e584
Changes
89
Hide whitespace changes
Inline
Side-by-side
eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java
View file @
9f43851e
...
...
@@ -34,7 +34,6 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
throws
ServletException
,
IOException
{
log
.
debug
(
"processing authentication for '{}'"
,
request
.
getRequestURL
());
final
String
requestHeader
=
request
.
getHeader
(
this
.
tokenHeader
);
...
...
@@ -49,10 +48,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
}
}
log
.
debug
(
"checking authentication for user '{}'"
,
username
);
if
(
username
!=
null
&&
SecurityContextHolder
.
getContext
().
getAuthentication
()
==
null
)
{
log
.
debug
(
"security context was null, so authorizating user"
);
// It is not compelling necessary to load the use details from the database. You could also store the information
// in the token and read it from it. It's up to you ;)
...
...
eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtUser.java
View file @
9f43851e
...
...
@@ -30,8 +30,14 @@ public class JwtUser implements UserDetails {
private
final
String
email
;
private
final
String
phone
;
private
final
String
dept
;
private
final
String
job
;
@JsonIgnore
private
final
Collection
<
?
extends
GrantedAuthority
>
authorities
;
private
final
Collection
<
GrantedAuthority
>
authorities
;
private
final
boolean
enabled
;
...
...
eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtPermissionService.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.security.service
;
import
me.zhengjie.modules.system.domain.Permission
;
import
me.zhengjie.modules.system.domain.Role
;
import
me.zhengjie.modules.system.domain.User
;
import
me.zhengjie.modules.system.repository.PermissionRepository
;
import
me.zhengjie.modules.system.repository.RoleRepository
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
import
org.springframework.stereotype.Service
;
import
java.util.Collection
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Service
@CacheConfig
(
cacheNames
=
"role"
)
public
class
JwtPermissionService
{
@Autowired
private
RoleRepository
roleRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
@Cacheable
(
key
=
"'loadPermissionByUser:' + #p0.username"
)
public
Collection
<
GrantedAuthority
>
mapToGrantedAuthorities
(
User
user
)
{
System
.
out
.
println
(
"--------------------loadPermissionByUser:"
+
user
.
getUsername
()
+
"---------------------"
);
Set
<
Role
>
roles
=
roleRepository
.
findByUsers_Id
(
user
.
getId
());
Set
<
Permission
>
permissions
=
new
HashSet
<>();
for
(
Role
role
:
roles
)
{
Set
<
Role
>
roleSet
=
new
HashSet
<>();
roleSet
.
add
(
role
);
permissions
.
addAll
(
permissionRepository
.
findByRoles_Id
(
role
.
getId
()));
}
return
permissions
.
stream
()
.
map
(
permission
->
new
SimpleGrantedAuthority
(
permission
.
getName
()))
.
collect
(
Collectors
.
toList
());
}
}
eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java
View file @
9f43851e
...
...
@@ -6,10 +6,10 @@ import me.zhengjie.modules.system.domain.User;
import
me.zhengjie.exception.EntityNotFoundException
;
import
me.zhengjie.modules.system.repository.PermissionRepository
;
import
me.zhengjie.modules.system.repository.RoleRepository
;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.modules.security.security.JwtUser
;
import
me.zhengjie.
utils.ValidationUtil
;
import
me.zhengjie.
modules.system.service.UserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.authority.SimpleGrantedAuthority
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
...
@@ -31,56 +31,36 @@ import java.util.stream.Collectors;
public
class
JwtUserDetailsService
implements
UserDetailsService
{
@Autowired
private
User
Repository
userRepository
;
private
User
Service
userService
;
@Autowired
private
RoleRepository
roleRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
private
JwtPermissionService
permissionService
;
@Override
public
UserDetails
loadUserByUsername
(
String
username
){
User
user
=
null
;
if
(
ValidationUtil
.
isEmail
(
username
)){
user
=
userRepository
.
findByEmail
(
username
);
}
else
{
user
=
userRepository
.
findByUsername
(
username
);
}
User
user
=
userService
.
findByName
(
username
);
if
(
user
==
null
)
{
throw
new
EntityNotFoundException
(
User
.
class
,
"name"
,
username
);
}
else
{
return
create
(
user
);
return
create
JwtUser
(
user
);
}
}
public
UserDetails
create
(
User
user
)
{
public
UserDetails
create
JwtUser
(
User
user
)
{
return
new
JwtUser
(
user
.
getId
(),
user
.
getUsername
(),
user
.
getPassword
(),
user
.
getAvatar
(),
user
.
getEmail
(),
mapToGrantedAuthorities
(
roleRepository
.
findByUsers_Id
(
user
.
getId
()),
permissionRepository
),
user
.
getPhone
(),
user
.
getDept
().
getName
(),
user
.
getJob
().
getName
(),
permissionService
.
mapToGrantedAuthorities
(
user
),
user
.
getEnabled
(),
user
.
getCreateTime
(),
user
.
getLastPasswordResetTime
()
);
}
private
static
List
<
GrantedAuthority
>
mapToGrantedAuthorities
(
Set
<
Role
>
roles
,
PermissionRepository
permissionRepository
)
{
Set
<
Permission
>
permissions
=
new
HashSet
<>();
for
(
Role
role
:
roles
)
{
Set
<
Role
>
roleSet
=
new
HashSet
<>();
roleSet
.
add
(
role
);
permissions
.
addAll
(
permissionRepository
.
findByRoles_Id
(
role
.
getId
()));
}
return
permissions
.
stream
()
.
map
(
permission
->
new
SimpleGrantedAuthority
(
permission
.
getName
()))
.
collect
(
Collectors
.
toList
());
}
}
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dept.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Data
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
import
java.util.Set
;
/**
* @author jie
* @date 2019-03-25
*/
@Entity
@Data
@Table
(
name
=
"dept"
)
public
class
Dept
implements
Serializable
{
/**
* ID
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
@NotNull
(
groups
=
Update
.
class
)
private
Long
id
;
/**
* 名称
*/
@Column
(
name
=
"name"
,
nullable
=
false
)
@NotBlank
private
String
name
;
@NotNull
private
Boolean
enabled
;
/**
* 上级部门
*/
@Column
(
name
=
"pid"
,
nullable
=
false
)
@NotNull
private
Long
pid
;
@Column
(
name
=
"create_time"
)
@CreationTimestamp
private
Timestamp
createTime
;
@ManyToMany
(
mappedBy
=
"depts"
)
@JsonIgnore
private
Set
<
Role
>
roles
;
public
@interface
Update
{}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Dict.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Data
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author jie
* @date 2019-04-10
*/
@Entity
@Data
@Table
(
name
=
"dict"
)
public
class
Dict
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
@NotNull
(
groups
=
Update
.
class
)
private
Long
id
;
/**
* 字典名称
*/
@Column
(
name
=
"name"
,
nullable
=
false
,
unique
=
true
)
@NotBlank
private
String
name
;
/**
* 描述
*/
@Column
(
name
=
"remark"
)
private
String
remark
;
@OneToMany
(
mappedBy
=
"dict"
,
cascade
={
CascadeType
.
PERSIST
,
CascadeType
.
REMOVE
})
private
List
<
DictDetail
>
dictDetails
;
public
@interface
Update
{}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/DictDetail.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.domain
;
import
lombok.Data
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @author jie
* @date 2019-04-10
*/
@Entity
@Data
@Table
(
name
=
"dict_detail"
)
public
class
DictDetail
implements
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
@NotNull
(
groups
=
Update
.
class
)
private
Long
id
;
/**
* 字典标签
*/
@Column
(
name
=
"label"
,
nullable
=
false
)
private
String
label
;
/**
* 字典值
*/
@Column
(
name
=
"value"
,
nullable
=
false
)
private
String
value
;
/**
* 排序
*/
@Column
(
name
=
"sort"
)
private
String
sort
=
"999"
;
/**
* 字典id
*/
@ManyToOne
@JoinColumn
(
name
=
"dict_id"
)
private
Dict
dict
;
public
@interface
Update
{}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Job.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.domain
;
import
lombok.Data
;
import
org.hibernate.annotations.*
;
import
javax.persistence.*
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
/**
* @author jie
* @date 2019-03-29
*/
@Entity
@Data
@Table
(
name
=
"job"
)
public
class
Job
implements
Serializable
{
/**
* ID
*/
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
@NotNull
(
groups
=
Update
.
class
)
private
Long
id
;
/**
* 名称
*/
@Column
(
name
=
"name"
,
nullable
=
false
)
@NotBlank
private
String
name
;
@Column
(
unique
=
true
)
@NotNull
private
Long
sort
;
/**
* 状态
*/
@Column
(
name
=
"enabled"
,
nullable
=
false
)
@NotNull
private
Boolean
enabled
;
@OneToOne
@JoinColumn
(
name
=
"dept_id"
)
private
Dept
dept
;
/**
* 创建日期
*/
@Column
(
name
=
"create_time"
)
@CreationTimestamp
private
Timestamp
createTime
;
public
@interface
Update
{}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java
View file @
9f43851e
...
...
@@ -30,6 +30,7 @@ public class Menu implements Serializable {
private
String
name
;
@Column
(
unique
=
true
)
@NotNull
private
Long
sort
;
@Column
(
name
=
"path"
)
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java
View file @
9f43851e
...
...
@@ -32,6 +32,10 @@ public class Role implements Serializable {
@NotBlank
private
String
name
;
// 数据权限类型 全部 、 本级 、 自定义
@Column
(
name
=
"data_scope"
)
private
String
dataScope
=
"本级"
;
@Column
private
String
remark
;
...
...
@@ -47,6 +51,10 @@ public class Role implements Serializable {
@JoinTable
(
name
=
"roles_menus"
,
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"menu_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Menu
>
menus
;
@ManyToMany
@JoinTable
(
name
=
"roles_depts"
,
joinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"dept_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Dept
>
depts
;
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java
View file @
9f43851e
...
...
@@ -29,6 +29,7 @@ public class User implements Serializable {
private
Long
id
;
@NotBlank
@Column
(
unique
=
true
)
private
String
username
;
private
String
avatar
;
...
...
@@ -37,6 +38,9 @@ public class User implements Serializable {
@Pattern
(
regexp
=
"([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}"
,
message
=
"格式错误"
)
private
String
email
;
@NotBlank
private
String
phone
;
@NotNull
private
Boolean
enabled
;
...
...
@@ -53,6 +57,14 @@ public class User implements Serializable {
@JoinTable
(
name
=
"users_roles"
,
joinColumns
=
{
@JoinColumn
(
name
=
"user_id"
,
referencedColumnName
=
"id"
)},
inverseJoinColumns
=
{
@JoinColumn
(
name
=
"role_id"
,
referencedColumnName
=
"id"
)})
private
Set
<
Role
>
roles
;
@OneToOne
@JoinColumn
(
name
=
"job_id"
)
private
Job
job
;
@OneToOne
@JoinColumn
(
name
=
"dept_id"
)
private
Dept
dept
;
@Override
public
String
toString
()
{
return
"User{"
+
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DeptRepository.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.repository
;
import
me.zhengjie.modules.system.domain.Dept
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author jie
* @date 2019-03-25
*/
public
interface
DeptRepository
extends
JpaRepository
<
Dept
,
Long
>,
JpaSpecificationExecutor
{
/**
* findByPid
* @param id
* @return
*/
List
<
Dept
>
findByPid
(
Long
id
);
Set
<
Dept
>
findByRoles_Id
(
Long
id
);
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictDetailRepository.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.repository
;
import
me.zhengjie.modules.system.domain.DictDetail
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author jie
* @date 2019-04-10
*/
public
interface
DictDetailRepository
extends
JpaRepository
<
DictDetail
,
Long
>,
JpaSpecificationExecutor
{
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/DictRepository.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.repository
;
import
me.zhengjie.modules.system.domain.Dict
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author jie
* @date 2019-04-10
*/
public
interface
DictRepository
extends
JpaRepository
<
Dict
,
Long
>,
JpaSpecificationExecutor
{
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/JobRepository.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.repository
;
import
me.zhengjie.modules.system.domain.Job
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author jie
* @date 2019-03-29
*/
public
interface
JobRepository
extends
JpaRepository
<
Job
,
Long
>,
JpaSpecificationExecutor
{
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java
View file @
9f43851e
...
...
@@ -20,4 +20,6 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
Role
findByName
(
String
name
);
Set
<
Role
>
findByUsers_Id
(
Long
id
);
Set
<
Role
>
findByMenus_Id
(
Long
id
);
}
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java
View file @
9f43851e
package
me.zhengjie.modules.system.repository
;
import
me.zhengjie.modules.system.domain.User
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author jie
...
...
@@ -29,28 +33,28 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
/**
* 修改密码
* @param
id
* @param
username
* @param pass
*/
@Modifying
@Query
(
value
=
"update user set password = ?2 , last_password_reset_time = ?3 where
id
= ?1"
,
nativeQuery
=
true
)
void
updatePass
(
Long
id
,
String
pass
,
Date
lastPasswordResetTime
);
@Query
(
value
=
"update user set password = ?2 , last_password_reset_time = ?3 where
username
= ?1"
,
nativeQuery
=
true
)
void
updatePass
(
String
username
,
String
pass
,
Date
lastPasswordResetTime
);
/**
* 修改头像
* @param
id
* @param
username
* @param url
*/
@Modifying
@Query
(
value
=
"update user set avatar = ?2 where
id
= ?1"
,
nativeQuery
=
true
)
void
updateAvatar
(
Long
id
,
String
url
);
@Query
(
value
=
"update user set avatar = ?2 where
username
= ?1"
,
nativeQuery
=
true
)
void
updateAvatar
(
String
username
,
String
url
);
/**
* 修改邮箱
* @param
id
* @param
username
* @param email
*/
@Modifying
@Query
(
value
=
"update user set email = ?2 where
id
= ?1"
,
nativeQuery
=
true
)
void
updateEmail
(
Long
id
,
String
email
);
@Query
(
value
=
"update user set email = ?2 where
username
= ?1"
,
nativeQuery
=
true
)
void
updateEmail
(
String
username
,
String
email
);
}
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DeptController.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.rest
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.config.DataScope
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.modules.system.domain.Dept
;
import
me.zhengjie.modules.system.service.DeptService
;
import
me.zhengjie.modules.system.service.dto.DeptDTO
;
import
me.zhengjie.modules.system.service.query.DeptQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author jie
* @date 2019-03-25
*/
@RestController
@RequestMapping
(
"api"
)
public
class
DeptController
{
@Autowired
private
DeptService
deptService
;
@Autowired
private
DeptQueryService
deptQueryService
;
@Autowired
private
DataScope
dataScope
;
private
static
final
String
ENTITY_NAME
=
"dept"
;
@Log
(
"查询部门"
)
@GetMapping
(
value
=
"/dept"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','USER_ALL','USER_SELECT','DEPT_ALL','DEPT_SELECT')"
)
public
ResponseEntity
getDepts
(
DeptDTO
resources
){
// 数据权限
Set
<
Long
>
deptIds
=
dataScope
.
getDeptIds
();
List
<
DeptDTO
>
deptDTOS
=
deptQueryService
.
queryAll
(
resources
,
deptIds
);
return
new
ResponseEntity
(
deptService
.
buildTree
(
deptDTOS
),
HttpStatus
.
OK
);
}
@Log
(
"新增部门"
)
@PostMapping
(
value
=
"/dept"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DEPT_ALL','DEPT_CREATE')"
)
public
ResponseEntity
create
(
@Validated
@RequestBody
Dept
resources
){
if
(
resources
.
getId
()
!=
null
)
{
throw
new
BadRequestException
(
"A new "
+
ENTITY_NAME
+
" cannot already have an ID"
);
}
return
new
ResponseEntity
(
deptService
.
create
(
resources
),
HttpStatus
.
CREATED
);
}
@Log
(
"修改部门"
)
@PutMapping
(
value
=
"/dept"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DEPT_ALL','DEPT_EDIT')"
)
public
ResponseEntity
update
(
@Validated
(
Dept
.
Update
.
class
)
@RequestBody
Dept
resources
){
deptService
.
update
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@Log
(
"删除部门"
)
@DeleteMapping
(
value
=
"/dept/{id}"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DEPT_ALL','DEPT_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
Long
id
){
deptService
.
delete
(
id
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictController.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.rest
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.modules.system.domain.Dict
;
import
me.zhengjie.modules.system.service.DictService
;
import
me.zhengjie.modules.system.service.dto.DictDTO
;
import
me.zhengjie.modules.system.service.query.DictQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author jie
* @date 2019-04-10
*/
@RestController
@RequestMapping
(
"api"
)
public
class
DictController
{
@Autowired
private
DictService
dictService
;
@Autowired
private
DictQueryService
dictQueryService
;
private
static
final
String
ENTITY_NAME
=
"dict"
;
@Log
(
"查询字典"
)
@GetMapping
(
value
=
"/dict"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_SELECT')"
)
public
ResponseEntity
getDicts
(
DictDTO
resources
,
Pageable
pageable
){
return
new
ResponseEntity
(
dictQueryService
.
queryAll
(
resources
,
pageable
),
HttpStatus
.
OK
);
}
@Log
(
"新增字典"
)
@PostMapping
(
value
=
"/dict"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')"
)
public
ResponseEntity
create
(
@Validated
@RequestBody
Dict
resources
){
if
(
resources
.
getId
()
!=
null
)
{
throw
new
BadRequestException
(
"A new "
+
ENTITY_NAME
+
" cannot already have an ID"
);
}
return
new
ResponseEntity
(
dictService
.
create
(
resources
),
HttpStatus
.
CREATED
);
}
@Log
(
"修改字典"
)
@PutMapping
(
value
=
"/dict"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')"
)
public
ResponseEntity
update
(
@Validated
(
Dict
.
Update
.
class
)
@RequestBody
Dict
resources
){
dictService
.
update
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@Log
(
"删除字典"
)
@DeleteMapping
(
value
=
"/dict/{id}"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
Long
id
){
dictService
.
delete
(
id
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
\ No newline at end of file
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/DictDetailController.java
0 → 100644
View file @
9f43851e
package
me.zhengjie.modules.system.rest
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.modules.system.domain.DictDetail
;
import
me.zhengjie.modules.system.service.DictDetailService
;
import
me.zhengjie.modules.system.service.dto.DictDetailDTO
;
import
me.zhengjie.modules.system.service.query.DictDetailQueryService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.web.PageableDefault
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author jie
* @date 2019-04-10
*/
@RestController
@RequestMapping
(
"api"
)
public
class
DictDetailController
{
@Autowired
private
DictDetailService
dictDetailService
;
@Autowired
private
DictDetailQueryService
dictDetailQueryService
;
private
static
final
String
ENTITY_NAME
=
"dictDetail"
;
@Log
(
"查询字典详情"
)
@GetMapping
(
value
=
"/dictDetail"
)
public
ResponseEntity
getDictDetails
(
DictDetailDTO
resources
,
@PageableDefault
(
value
=
10
,
sort
=
{
"sort"
},
direction
=
Sort
.
Direction
.
ASC
)
Pageable
pageable
){
return
new
ResponseEntity
(
dictDetailQueryService
.
queryAll
(
resources
,
pageable
),
HttpStatus
.
OK
);
}
@Log
(
"新增字典详情"
)
@PostMapping
(
value
=
"/dictDetail"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_CREATE')"
)
public
ResponseEntity
create
(
@Validated
@RequestBody
DictDetail
resources
){
if
(
resources
.
getId
()
!=
null
)
{
throw
new
BadRequestException
(
"A new "
+
ENTITY_NAME
+
" cannot already have an ID"
);
}
return
new
ResponseEntity
(
dictDetailService
.
create
(
resources
),
HttpStatus
.
CREATED
);
}
@Log
(
"修改字典详情"
)
@PutMapping
(
value
=
"/dictDetail"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_EDIT')"
)
public
ResponseEntity
update
(
@Validated
(
DictDetail
.
Update
.
class
)
@RequestBody
DictDetail
resources
){
dictDetailService
.
update
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@Log
(
"删除字典详情"
)
@DeleteMapping
(
value
=
"/dictDetail/{id}"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','DICT_ALL','DICT_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
Long
id
){
dictDetailService
.
delete
(
id
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
\ No newline at end of file
Prev
1
2
3
4
5
Next
Write
Preview
Supports
Markdown
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