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
0f0392d7
Commit
0f0392d7
authored
Sep 26, 2019
by
dqjdda
Browse files
Merge branch '2.2DEV'
parents
d0ffe1a8
f9bb8cf2
Changes
72
Hide whitespace changes
Inline
Side-by-side
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java
View file @
0f0392d7
...
...
@@ -27,6 +27,12 @@ public class MenuDTO {
private
Boolean
iFrame
;
private
Boolean
cache
;
private
Boolean
hidden
;
private
String
componentName
;
private
String
icon
;
private
List
<
MenuDTO
>
children
;
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
View file @
0f0392d7
package
me.zhengjie.modules.system.service.impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.StrUtil
;
import
me.zhengjie.modules.system.domain.Menu
;
import
me.zhengjie.modules.system.domain.vo.MenuMetaVo
;
...
...
@@ -8,11 +10,13 @@ import me.zhengjie.exception.BadRequestException;
import
me.zhengjie.exception.EntityExistException
;
import
me.zhengjie.modules.system.repository.MenuRepository
;
import
me.zhengjie.modules.system.service.MenuService
;
import
me.zhengjie.modules.system.service.RoleService
;
import
me.zhengjie.modules.system.service.dto.MenuDTO
;
import
me.zhengjie.modules.system.service.dto.MenuQueryCriteria
;
import
me.zhengjie.modules.system.service.dto.RoleSmallDTO
;
import
me.zhengjie.modules.system.service.mapper.MenuMapper
;
import
me.zhengjie.utils.QueryHelp
;
import
me.zhengjie.utils.StringUtils
;
import
me.zhengjie.utils.ValidationUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -31,6 +35,9 @@ public class MenuServiceImpl implements MenuService {
@Autowired
private
MenuMapper
menuMapper
;
@Autowired
private
RoleService
roleService
;
@Override
public
List
queryAll
(
MenuQueryCriteria
criteria
){
return
menuMapper
.
toDto
(
menuRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
...
...
@@ -58,6 +65,11 @@ public class MenuServiceImpl implements MenuService {
if
(
menuRepository
.
findByName
(
resources
.
getName
())
!=
null
){
throw
new
EntityExistException
(
Menu
.
class
,
"name"
,
resources
.
getName
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getComponentName
())){
if
(
menuRepository
.
findByComponentName
(
resources
.
getComponentName
())
!=
null
){
throw
new
EntityExistException
(
Menu
.
class
,
"componentName"
,
resources
.
getComponentName
());
}
}
if
(
resources
.
getIFrame
()){
if
(!(
resources
.
getPath
().
toLowerCase
().
startsWith
(
"http://"
)||
resources
.
getPath
().
toLowerCase
().
startsWith
(
"https://"
)))
{
throw
new
BadRequestException
(
"外链必须以http://或者https://开头"
);
...
...
@@ -85,6 +97,13 @@ public class MenuServiceImpl implements MenuService {
if
(
menu1
!=
null
&&
!
menu1
.
getId
().
equals
(
menu
.
getId
())){
throw
new
EntityExistException
(
Menu
.
class
,
"name"
,
resources
.
getName
());
}
if
(
StringUtils
.
isNotBlank
(
resources
.
getComponentName
())){
menu1
=
menuRepository
.
findByComponentName
(
resources
.
getComponentName
());
if
(
menu1
!=
null
&&
!
menu1
.
getId
().
equals
(
menu
.
getId
())){
throw
new
EntityExistException
(
Menu
.
class
,
"componentName"
,
resources
.
getComponentName
());
}
}
menu
.
setName
(
resources
.
getName
());
menu
.
setComponent
(
resources
.
getComponent
());
menu
.
setPath
(
resources
.
getPath
());
...
...
@@ -92,12 +111,32 @@ public class MenuServiceImpl implements MenuService {
menu
.
setIFrame
(
resources
.
getIFrame
());
menu
.
setPid
(
resources
.
getPid
());
menu
.
setSort
(
resources
.
getSort
());
menu
.
setCache
(
resources
.
getCache
());
menu
.
setHidden
(
resources
.
getHidden
());
menu
.
setComponentName
(
resources
.
getComponentName
());
menuRepository
.
save
(
menu
);
}
@Override
public
void
delete
(
Long
id
)
{
menuRepository
.
deleteById
(
id
);
public
Set
<
Menu
>
getDeleteMenus
(
List
<
Menu
>
menuList
,
Set
<
Menu
>
menuSet
)
{
// 递归找出待删除的菜单
for
(
Menu
menu1
:
menuList
)
{
menuSet
.
add
(
menu1
);
List
<
Menu
>
menus
=
menuRepository
.
findByPid
(
menu1
.
getId
());
if
(
menus
!=
null
&&
menus
.
size
()!=
0
){
getDeleteMenus
(
menus
,
menuSet
);
}
}
return
menuSet
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Set
<
Menu
>
menuSet
)
{
for
(
Menu
menu
:
menuSet
)
{
roleService
.
untiedMenu
(
menu
.
getId
());
menuRepository
.
deleteById
(
menu
.
getId
());
}
}
@Override
...
...
@@ -127,24 +166,26 @@ public class MenuServiceImpl implements MenuService {
@Override
public
Map
buildTree
(
List
<
MenuDTO
>
menuDTOS
)
{
List
<
MenuDTO
>
trees
=
new
ArrayList
<
MenuDTO
>();
Set
<
Long
>
ids
=
new
HashSet
<>();
for
(
MenuDTO
menuDTO
:
menuDTOS
)
{
if
(
"0"
.
equals
(
menuDTO
.
getPid
().
toString
()))
{
if
(
menuDTO
.
getPid
()
==
0
)
{
trees
.
add
(
menuDTO
);
}
for
(
MenuDTO
it
:
menuDTOS
)
{
if
(
it
.
getPid
().
equals
(
menuDTO
.
getId
()))
{
if
(
menuDTO
.
getChildren
()
==
null
)
{
menuDTO
.
setChildren
(
new
ArrayList
<
MenuDTO
>());
}
menuDTO
.
getChildren
().
add
(
it
);
ids
.
add
(
it
.
getId
());
}
}
}
Map
map
=
new
HashMap
();
map
.
put
(
"content"
,
trees
.
size
()
==
0
?
menuDTOS:
trees
);
if
(
trees
.
size
()
==
0
){
trees
=
menuDTOS
.
stream
().
filter
(
s
->
!
ids
.
contains
(
s
.
getId
())).
collect
(
Collectors
.
toList
());
}
map
.
put
(
"content"
,
trees
);
map
.
put
(
"totalElements"
,
menuDTOS
!=
null
?
menuDTOS
.
size
():
0
);
return
map
;
}
...
...
@@ -156,26 +197,25 @@ public class MenuServiceImpl implements MenuService {
if
(
menuDTO
!=
null
){
List
<
MenuDTO
>
menuDTOList
=
menuDTO
.
getChildren
();
MenuVo
menuVo
=
new
MenuVo
();
menuVo
.
setName
(
menuDTO
.
getName
());
menuVo
.
setPath
(
menuDTO
.
getPath
());
menuVo
.
setName
(
ObjectUtil
.
isNotEmpty
(
menuDTO
.
getComponentName
())
?
menuDTO
.
getComponentName
()
:
menuDTO
.
getName
());
// 一级目录需要加斜杠,不然会报警告
menuVo
.
setPath
(
menuDTO
.
getPid
()
==
0
?
"/"
+
menuDTO
.
getPath
()
:
menuDTO
.
getPath
());
menuVo
.
setHidden
(
menuDTO
.
getHidden
());
// 如果不是外链
if
(!
menuDTO
.
getIFrame
()){
if
(
menuDTO
.
getPid
().
equals
(
0L
)){
//一级目录需要加斜杠,不然访问 会跳转404页面
menuVo
.
setPath
(
"/"
+
menuDTO
.
getPath
());
if
(
menuDTO
.
getPid
()
==
0
){
menuVo
.
setComponent
(
StrUtil
.
isEmpty
(
menuDTO
.
getComponent
())?
"Layout"
:
menuDTO
.
getComponent
());
}
else
if
(!
StrUtil
.
isEmpty
(
menuDTO
.
getComponent
())){
menuVo
.
setComponent
(
menuDTO
.
getComponent
());
}
}
menuVo
.
setMeta
(
new
MenuMetaVo
(
menuDTO
.
getName
(),
menuDTO
.
getIcon
()));
menuVo
.
setMeta
(
new
MenuMetaVo
(
menuDTO
.
getName
(),
menuDTO
.
getIcon
()
,!
menuDTO
.
getCache
()
));
if
(
menuDTOList
!=
null
&&
menuDTOList
.
size
()!=
0
){
menuVo
.
setAlwaysShow
(
true
);
menuVo
.
setRedirect
(
"noredirect"
);
menuVo
.
setChildren
(
buildMenus
(
menuDTOList
));
// 处理是一级菜单并且没有子菜单的情况
}
else
if
(
menuDTO
.
getPid
()
.
equals
(
0L
)
){
}
else
if
(
menuDTO
.
getPid
()
==
0
){
MenuVo
menuVo1
=
new
MenuVo
();
menuVo1
.
setMeta
(
menuVo
.
getMeta
());
// 非外链
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java
View file @
0f0392d7
...
...
@@ -5,6 +5,7 @@ import me.zhengjie.exception.BadRequestException;
import
me.zhengjie.exception.EntityExistException
;
import
me.zhengjie.modules.system.repository.PermissionRepository
;
import
me.zhengjie.modules.system.service.PermissionService
;
import
me.zhengjie.modules.system.service.RoleService
;
import
me.zhengjie.modules.system.service.dto.PermissionDTO
;
import
me.zhengjie.modules.system.service.dto.PermissionQueryCriteria
;
import
me.zhengjie.modules.system.service.mapper.PermissionMapper
;
...
...
@@ -30,6 +31,9 @@ public class PermissionServiceImpl implements PermissionService {
@Autowired
private
PermissionMapper
permissionMapper
;
@Autowired
private
RoleService
roleService
;
@Override
public
List
<
PermissionDTO
>
queryAll
(
PermissionQueryCriteria
criteria
)
{
return
permissionMapper
.
toDto
(
permissionRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
...
...
@@ -74,14 +78,26 @@ public class PermissionServiceImpl implements PermissionService {
permissionRepository
.
save
(
permission
);
}
@Override
public
Set
<
Permission
>
getDeletePermission
(
List
<
Permission
>
permissions
,
Set
<
Permission
>
permissionSet
)
{
// 递归找出待删除的菜单
for
(
Permission
permission
:
permissions
)
{
permissionSet
.
add
(
permission
);
List
<
Permission
>
permissionList
=
permissionRepository
.
findByPid
(
permission
.
getId
());
if
(
permissionList
!=
null
&&
permissionList
.
size
()!=
0
){
getDeletePermission
(
permissionList
,
permissionSet
);
}
}
return
permissionSet
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Long
id
)
{
List
<
Permission
>
permission
List
=
permission
Repository
.
findByPid
(
id
);
for
(
Permission
p
ermission
:
permission
List
)
{
public
void
delete
(
Set
<
Permission
>
permissions
)
{
for
(
Permission
permission
:
permission
s
)
{
roleService
.
untiedP
ermission
(
permission
.
getId
());
permissionRepository
.
delete
(
permission
);
}
permissionRepository
.
deleteById
(
id
);
}
@Override
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java
View file @
0f0392d7
package
me.zhengjie.modules.system.service.impl
;
import
me.zhengjie.modules.system.domain.Menu
;
import
me.zhengjie.modules.system.domain.Role
;
import
me.zhengjie.exception.EntityExistException
;
import
me.zhengjie.modules.system.repository.RoleRepository
;
...
...
@@ -44,6 +43,11 @@ public class RoleServiceImpl implements RoleService {
return
roleMapper
.
toDto
(
roleRepository
.
findAll
(
pageable
).
getContent
());
}
@Override
public
List
<
RoleDTO
>
queryAll
(
RoleQueryCriteria
criteria
)
{
return
roleMapper
.
toDto
(
roleRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
}
@Override
public
Object
queryAll
(
RoleQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
Role
>
page
=
roleRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
...
...
@@ -104,13 +108,15 @@ public class RoleServiceImpl implements RoleService {
}
@Override
public
void
untiedMenu
(
Menu
menu
)
{
Set
<
Role
>
roles
=
roleRepository
.
findByMenus_Id
(
menu
.
getId
());
for
(
Role
role
:
roles
)
{
menu
.
getRoles
().
remove
(
role
);
role
.
getMenus
().
remove
(
menu
);
roleRepository
.
save
(
role
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
untiedMenu
(
Long
id
)
{
roleRepository
.
untiedMenu
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
untiedPermission
(
Long
id
)
{
roleRepository
.
untiedPermission
(
id
);
}
@Override
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java
View file @
0f0392d7
package
me.zhengjie.modules.system.service.impl
;
import
cn.hutool.core.io.IoUtil
;
import
cn.hutool.poi.excel.ExcelUtil
;
import
cn.hutool.poi.excel.ExcelWriter
;
import
me.zhengjie.modules.monitor.service.RedisService
;
import
me.zhengjie.modules.system.domain.User
;
import
me.zhengjie.exception.EntityExistException
;
import
me.zhengjie.exception.EntityNotFoundException
;
import
me.zhengjie.modules.system.domain.UserAvatar
;
import
me.zhengjie.modules.system.repository.UserAvatarRepository
;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.modules.system.service.UserService
;
import
me.zhengjie.modules.system.service.dto.RoleSmallDTO
;
import
me.zhengjie.modules.system.service.dto.UserDTO
;
import
me.zhengjie.modules.system.service.dto.UserQueryCriteria
;
import
me.zhengjie.modules.system.service.mapper.UserMapper
;
import
me.zhengjie.utils.PageUtil
;
import
me.zhengjie.utils.QueryHelp
;
import
me.zhengjie.utils.ValidationUtil
;
import
me.zhengjie.utils.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Date
;
import
java.util.Optional
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* @author Zheng Jie
...
...
@@ -38,12 +49,24 @@ public class UserServiceImpl implements UserService {
@Autowired
private
RedisService
redisService
;
@Autowired
private
UserAvatarRepository
userAvatarRepository
;
@Value
(
"${file.avatar}"
)
private
String
avatar
;
@Override
public
Object
queryAll
(
UserQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
User
>
page
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
userMapper:
:
toDto
));
}
@Override
public
List
<
UserDTO
>
queryAll
(
UserQueryCriteria
criteria
)
{
List
<
User
>
users
=
userRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
));
return
userMapper
.
toDto
(
users
);
}
@Override
public
UserDTO
findById
(
long
id
)
{
Optional
<
User
>
user
=
userRepository
.
findById
(
id
);
...
...
@@ -65,7 +88,6 @@ public class UserServiceImpl implements UserService {
// 默认密码 123456,此密码是加密后的字符
resources
.
setPassword
(
"e10adc3949ba59abbe56e057f20f883e"
);
resources
.
setAvatar
(
"https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg"
);
return
userMapper
.
toDto
(
userRepository
.
save
(
resources
));
}
...
...
@@ -135,8 +157,20 @@ public class UserServiceImpl implements UserService {
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
updateAvatar
(
String
username
,
String
url
)
{
userRepository
.
updateAvatar
(
username
,
url
);
public
void
updateAvatar
(
MultipartFile
multipartFile
)
{
User
user
=
userRepository
.
findByUsername
(
SecurityUtils
.
getUsername
());
UserAvatar
userAvatar
=
user
.
getUserAvatar
();
String
oldPath
=
""
;
if
(
userAvatar
!=
null
){
oldPath
=
userAvatar
.
getPath
();
}
File
file
=
FileUtil
.
upload
(
multipartFile
,
avatar
);
userAvatar
=
userAvatarRepository
.
save
(
new
UserAvatar
(
userAvatar
,
file
.
getName
(),
file
.
getPath
(),
FileUtil
.
getSize
(
multipartFile
.
getSize
())));
user
.
setUserAvatar
(
userAvatar
);
userRepository
.
save
(
user
);
if
(
StringUtils
.
isNotBlank
(
oldPath
)){
FileUtil
.
del
(
oldPath
);
}
}
@Override
...
...
@@ -144,4 +178,25 @@ public class UserServiceImpl implements UserService {
public
void
updateEmail
(
String
username
,
String
email
)
{
userRepository
.
updateEmail
(
username
,
email
);
}
@Override
public
void
download
(
List
<
UserDTO
>
queryAll
,
HttpServletResponse
response
)
throws
IOException
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
UserDTO
userDTO
:
queryAll
)
{
List
roles
=
userDTO
.
getRoles
().
stream
().
map
(
RoleSmallDTO:
:
getName
).
collect
(
Collectors
.
toList
());
Map
map
=
new
LinkedHashMap
();
map
.
put
(
"用户名"
,
userDTO
.
getUsername
());
map
.
put
(
"头像"
,
userDTO
.
getAvatar
());
map
.
put
(
"邮箱"
,
userDTO
.
getEmail
());
map
.
put
(
"状态"
,
userDTO
.
getEnabled
()
?
"启用"
:
"禁用"
);
map
.
put
(
"手机号码"
,
userDTO
.
getPhone
());
map
.
put
(
"角色"
,
roles
);
map
.
put
(
"部门"
,
userDTO
.
getDept
().
getName
());
map
.
put
(
"岗位"
,
userDTO
.
getJob
().
getName
());
map
.
put
(
"最后修改密码的时间"
,
userDTO
.
getLastPasswordResetTime
());
map
.
put
(
"创建日期"
,
userDTO
.
getCreateTime
());
list
.
add
(
map
);
}
FileUtil
.
downloadExcel
(
list
,
response
);
}
}
eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java
View file @
0f0392d7
...
...
@@ -4,8 +4,11 @@ import me.zhengjie.modules.system.domain.User;
import
me.zhengjie.mapper.EntityMapper
;
import
me.zhengjie.modules.system.service.dto.UserDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
org.mapstruct.ReportingPolicy
;
import
java.util.List
;
/**
* @author Zheng Jie
* @date 2018-11-23
...
...
@@ -13,4 +16,6 @@ import org.mapstruct.ReportingPolicy;
@Mapper
(
componentModel
=
"spring"
,
uses
=
{
RoleMapper
.
class
,
DeptMapper
.
class
,
JobMapper
.
class
},
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
UserMapper
extends
EntityMapper
<
UserDTO
,
User
>
{
@Mapping
(
source
=
"user.userAvatar.realName"
,
target
=
"avatar"
)
UserDTO
toDto
(
User
user
);
}
eladmin-system/src/main/resources/config/application-dev.yml
View file @
0f0392d7
...
...
@@ -45,8 +45,8 @@ spring:
jwt
:
header
:
Authorization
secret
:
mySecret
# token 过期时间
2
个小时
expiration
:
7
200000
# token 过期时间
6
个小时
expiration
:
2
10
00000
auth
:
# 授权路径
path
:
/login
...
...
@@ -59,4 +59,12 @@ generator:
#是否开启 swagger-ui
swagger
:
enabled
:
true
\ No newline at end of file
enabled
:
true
# 文件存储路径
file
:
path
:
C:\eladmin\file\
avatar
:
C:\eladmin\avatar\
# 文件大小 /M
maxSize
:
100
avatarMaxSize
:
5
\ No newline at end of file
eladmin-system/src/main/resources/config/application-prod.yml
View file @
0f0392d7
...
...
@@ -68,4 +68,12 @@ generator:
#是否开启 swagger-ui
swagger
:
enabled
:
false
\ No newline at end of file
enabled
:
false
# 文件存储路径
file
:
path
:
/home/eladmin/file/
avatar
:
/home/eladmin/avatar/
# 文件大小 /M
maxSize
:
100
avatarMaxSize
:
5
\ No newline at end of file
eladmin-system/src/main/resources/generator.properties
View file @
0f0392d7
#
Êý¾Ý¿âÀàÐÍת»»
³ÉjavaÀàÐÍ
#
数据库类型转Java类型
tinyint
=
Integer
smallint
=
Integer
mediumint
=
Integer
...
...
eladmin-system/src/main/resources/logback.xml
View file @
0f0392d7
...
...
@@ -24,7 +24,8 @@
<appender-ref
ref=
"console"
/>
</logger>
<logger
name=
"jdbc.resultsettable"
level=
"INFO"
additivity=
"false"
>
<!-- 如想看到表格数据,将OFF改为INFO -->
<logger
name=
"jdbc.resultsettable"
level=
"OFF"
additivity=
"false"
>
<appender-ref
ref=
"console"
/>
</logger>
...
...
eladmin-system/src/main/resources/template/generator/admin/Service.ftl
View file @
0f0392d7
...
...
@@ -3,10 +3,12 @@ package ${package}.service;
import
$
{
package
}
.domain.$
{
className
}
;
import
$
{
package
}
.service.dto.$
{
className
}
DTO;
import
$
{
package
}
.service.dto.$
{
className
}
QueryCriteria;
//
import
org.springframework.cache.annotation.CacheConfig;
//
import
org.springframework.cache.annotation.CacheEvict;
//
import
org.springframework.cache.annotation.Cacheable;
import
org.springframework.cache.annotation.CacheConfig;
import
org.springframework.cache.annotation.CacheEvict;
import
org.springframework.cache.annotation.Cacheable;
import
org.springframework.data.domain.Pageable;
import
java.util.Map;
import
java.util.List;
/**
*
@author $
{
author
}
...
...
@@ -16,24 +18,24 @@ import org.springframework.data.domain.Pageable;
public
interface $
{
className
}
Service
{
/
**
*
queryAll
分页
*
查询数据
分页
*
@
param
criteria
*
@
param
pageable
*
@
return
*
/
//@
C
acheable
(
keyGenerator
=
"keyGenerator"
)
O
bject
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
,
P
ageable
pageable
)
;
//@
C
acheable
M
ap
<
S
tring
,
O
bject
>
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
,
P
ageable
pageable
)
;
/
**
*
queryAll
不分页
*
查询所有数据
不分页
*
@
param
criteria
*
@
return
*
/
//@
C
acheable
(
keyGenerator
=
"keyGenerator"
)
public
O
bject
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
)
;
//@
C
acheable
L
ist
<$
{
className
}
DTO
>
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
)
;
/
**
*
findById
*
根据
ID
查询
*
@
param
$
{
pkChangeColName
}
*
@
return
*
/
...
...
@@ -41,7 +43,7 @@ public interface ${className}Service {
$
{
className
}
DTO
findById
(
$
{
pkColumnType
}
$
{
pkChangeColName
})
;
/
**
*
create
*
创建
*
@
param
resources
*
@
return
*
/
...
...
@@ -49,14 +51,14 @@ public interface ${className}Service {
$
{
className
}
DTO
create
(
$
{
className
}
resources
)
;
/
**
*
update
*
编辑
*
@
param
resources
*
/
//@
C
acheEvict
(
allEntries
=
true
)
void
update
(
$
{
className
}
resources
)
;
/
**
*
delete
*
删除
*
@
param
$
{
pkChangeColName
}
*
/
//@
C
acheEvict
(
allEntries
=
true
)
...
...
eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl
View file @
0f0392d7
...
...
@@ -32,6 +32,8 @@ import org.springframework.data.domain.Page;
import
org.springframework.data.domain.Pageable;
import
me.zhengjie.utils.PageUtil;
import
me.zhengjie.utils.QueryHelp;
import
java.util.List;
import
java.util.Map;
/**
*
@author $
{
author
}
...
...
@@ -48,13 +50,13 @@ public class ${className}ServiceImpl implements ${className}Service {
private
$
{
className
}
M
apper
$
{
changeClassName
}
M
apper
;
@
O
verride
public
O
bject
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
,
P
ageable
pageable
){
public
M
ap
<
S
tring
,
O
bject
>
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
,
P
ageable
pageable
){
P
age
<$
{
className
}
>
page
=
$
{
changeClassName
}
R
epository
.findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
Q
ueryHelp
.getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
)
;
return
P
ageUtil
.toPage
(
page
.map
(
$
{
changeClassName
}
M
apper
::
toDto
))
;
}
@
O
verride
public
O
bject
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
){
public
L
ist
<$
{
className
}
DTO
>
queryAll
(
$
{
className
}
Q
ueryCriteria
criteria
){
return
$
{
changeClassName
}
M
apper
.toDto
(
$
{
changeClassName
}
R
epository
.findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
Q
ueryHelp
.getPredicate
(
root
,
criteria
,
criteriaBuilder
)))
;
}
...
...
eladmin-system/src/main/resources/template/generator/front/eForm.ftl
View file @
0f0392d7
<
template
>
<el-dialog :append-to-body="true" :visible.sync="dialog" :title="isAdd ? '新增' : '编辑'" width="500px">
<el-dialog :append-to-body="true"
:close-on-click-modal="false" :before-close="cancel"
:visible.sync="dialog" :title="isAdd ? '新增' : '编辑'" width="500px">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<#
if
columns??>
<#list columns as column>
...
...
eladmin-tools/pom.xml
View file @
0f0392d7
...
...
@@ -10,6 +10,7 @@
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
eladmin-tools
</artifactId>
<name>
工具模块
</name>
<properties>
<mail.version>
1.4.7
</mail.version>
...
...
eladmin-tools/src/main/java/me/zhengjie/domain/LocalStorage.java
0 → 100644
View file @
0f0392d7
package
me.zhengjie.domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
lombok.NoArgsConstructor
;
import
org.hibernate.annotations.CreationTimestamp
;
import
org.hibernate.annotations.UpdateTimestamp
;
import
javax.persistence.*
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
/**
* @author Zheng Jie
* @date 2019-09-05
*/
@Entity
@Data
@Table
(
name
=
"local_storage"
)
@AllArgsConstructor
@NoArgsConstructor
public
class
LocalStorage
implements
Serializable
{
// ID
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Long
id
;
// 真实文件名
@Column
(
name
=
"real_name"
)
private
String
realName
;
// 文件名
@Column
(
name
=
"name"
)
private
String
name
;
// 后缀
@Column
(
name
=
"suffix"
)
private
String
suffix
;
// 路径
@Column
(
name
=
"path"
)
private
String
path
;
// 类型
@Column
(
name
=
"type"
)
private
String
type
;
// 大小
@Column
(
name
=
"size"
)
private
String
size
;
// 操作人
@Column
(
name
=
"operate"
)
private
String
operate
;
// 创建日期
@Column
(
name
=
"create_time"
)
@CreationTimestamp
private
Timestamp
createTime
;
// 修改日期
@Column
(
name
=
"update_time"
)
@UpdateTimestamp
private
Timestamp
updateTime
;
public
LocalStorage
(
String
realName
,
String
name
,
String
suffix
,
String
path
,
String
type
,
String
size
,
String
operate
)
{
this
.
realName
=
realName
;
this
.
name
=
name
;
this
.
suffix
=
suffix
;
this
.
path
=
path
;
this
.
type
=
type
;
this
.
size
=
size
;
this
.
operate
=
operate
;
}
public
void
copy
(
LocalStorage
source
){
BeanUtil
.
copyProperties
(
source
,
this
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
));
}
}
\ No newline at end of file
eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java
View file @
0f0392d7
...
...
@@ -42,6 +42,8 @@ public class QiniuContent implements Serializable {
*/
private
String
url
;
private
String
suffix
;
/**
* 空间类型:公开/私有
*/
...
...
eladmin-tools/src/main/java/me/zhengjie/repository/LocalStorageRepository.java
0 → 100644
View file @
0f0392d7
package
me.zhengjie.repository
;
import
me.zhengjie.domain.LocalStorage
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
/**
* @author Zheng Jie
* @date 2019-09-05
*/
public
interface
LocalStorageRepository
extends
JpaRepository
<
LocalStorage
,
Long
>,
JpaSpecificationExecutor
{
}
\ No newline at end of file
eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java
View file @
0f0392d7
...
...
@@ -2,10 +2,16 @@ package me.zhengjie.repository;
import
me.zhengjie.domain.QiniuConfig
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
/**
* @author Zheng Jie
* @date 2018-12-31
*/
public
interface
QiNiuConfigRepository
extends
JpaRepository
<
QiniuConfig
,
Long
>
{
@Modifying
@Query
(
value
=
"update qiniu_content set type = ?1"
,
nativeQuery
=
true
)
void
update
(
String
type
);
}
eladmin-tools/src/main/java/me/zhengjie/rest/LocalStorageController.java
0 → 100644
View file @
0f0392d7
package
me.zhengjie.rest
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.domain.LocalStorage
;
import
me.zhengjie.service.LocalStorageService
;
import
me.zhengjie.service.dto.LocalStorageQueryCriteria
;
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.*
;
import
io.swagger.annotations.*
;
import
org.springframework.web.multipart.MultipartFile
;
/**
* @author Zheng Jie
* @date 2019-09-05
*/
@Api
(
tags
=
"本地存储管理"
)
@RestController
@RequestMapping
(
"api"
)
public
class
LocalStorageController
{
@Autowired
private
LocalStorageService
localStorageService
;
@ApiOperation
(
value
=
"查询文件"
)
@GetMapping
(
value
=
"/localStorage"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_SELECT')"
)
public
ResponseEntity
getLocalStorages
(
LocalStorageQueryCriteria
criteria
,
Pageable
pageable
){
return
new
ResponseEntity
(
localStorageService
.
queryAll
(
criteria
,
pageable
),
HttpStatus
.
OK
);
}
@ApiOperation
(
value
=
"上传文件"
)
@PostMapping
(
value
=
"/localStorage"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_CREATE')"
)
public
ResponseEntity
create
(
@RequestParam
String
name
,
@RequestParam
(
"file"
)
MultipartFile
file
){
return
new
ResponseEntity
(
localStorageService
.
create
(
name
,
file
),
HttpStatus
.
CREATED
);
}
@ApiOperation
(
value
=
"修改文件"
)
@PutMapping
(
value
=
"/localStorage"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_EDIT')"
)
public
ResponseEntity
update
(
@Validated
@RequestBody
LocalStorage
resources
){
localStorageService
.
update
(
resources
);
return
new
ResponseEntity
(
HttpStatus
.
NO_CONTENT
);
}
@ApiOperation
(
value
=
"删除文件"
)
@DeleteMapping
(
value
=
"/localStorage/{id}"
)
@PreAuthorize
(
"hasAnyRole('ADMIN','LOCALSTORAGE_ALL','LOCALSTORAGE_DELETE')"
)
public
ResponseEntity
delete
(
@PathVariable
Long
id
){
localStorageService
.
delete
(
id
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
/**
* 删除多张图片
* @param ids
* @return
*/
@Log
(
"删除图片"
)
@DeleteMapping
(
value
=
"/localStorage"
)
public
ResponseEntity
deleteAll
(
@RequestBody
Long
[]
ids
)
{
localStorageService
.
deleteAll
(
ids
);
return
new
ResponseEntity
(
HttpStatus
.
OK
);
}
}
\ No newline at end of file
eladmin-tools/src/main/java/me/zhengjie/rest/PictureController.java
View file @
0f0392d7
...
...
@@ -45,7 +45,7 @@ public class PictureController {
public
ResponseEntity
upload
(
@RequestParam
MultipartFile
file
){
String
userName
=
SecurityUtils
.
getUsername
();
Picture
picture
=
pictureService
.
upload
(
file
,
userName
);
Map
map
=
new
HashMap
(
3
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>
(
3
);
map
.
put
(
"errno"
,
0
);
map
.
put
(
"id"
,
picture
.
getId
());
map
.
put
(
"data"
,
new
String
[]{
picture
.
getUrl
()});
...
...
Prev
1
2
3
4
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