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
49f3b0a5
Commit
49f3b0a5
authored
Aug 02, 2020
by
ZhengJie
Browse files
[代码完善](v2.5): 部门查询优化
close
https://github.com/elunez/eladmin/issues/428
parent
bf541e87
Changes
6
Hide whitespace changes
Inline
Side-by-side
eladmin-common/src/main/java/me/zhengjie/utils/SecurityUtils.java
View file @
49f3b0a5
...
@@ -20,6 +20,7 @@ import cn.hutool.json.JSONObject;
...
@@ -20,6 +20,7 @@ import cn.hutool.json.JSONObject;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.utils.enums.DataScopeEnum
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.context.SecurityContextHolder
;
...
@@ -84,4 +85,16 @@ public class SecurityUtils {
...
@@ -84,4 +85,16 @@ public class SecurityUtils {
JSONArray
array
=
JSONUtil
.
parseArray
(
new
JSONObject
(
userDetails
).
get
(
"dataScopes"
));
JSONArray
array
=
JSONUtil
.
parseArray
(
new
JSONObject
(
userDetails
).
get
(
"dataScopes"
));
return
JSONUtil
.
toList
(
array
,
Long
.
class
);
return
JSONUtil
.
toList
(
array
,
Long
.
class
);
}
}
/**
* 获取数据权限级别
* @return 级别
*/
public
static
String
getDataScopeType
()
{
List
<
Long
>
dataScopes
=
getCurrentUserDataScope
();
if
(
dataScopes
.
size
()
!=
0
){
return
""
;
}
return
DataScopeEnum
.
ALL
.
getValue
();
}
}
}
eladmin-
system
/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java
→
eladmin-
common
/src/main/java/me/zhengjie/utils/enums/CodeBiEnum.java
View file @
49f3b0a5
File moved
eladmin-
system
/src/main/java/me/zhengjie/utils/enums/CodeEnum.java
→
eladmin-
common
/src/main/java/me/zhengjie/utils/enums/CodeEnum.java
View file @
49f3b0a5
File moved
eladmin-
system
/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java
→
eladmin-
common
/src/main/java/me/zhengjie/utils/enums/DataScopeEnum.java
View file @
49f3b0a5
File moved
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DataServiceImpl.java
View file @
49f3b0a5
...
@@ -65,7 +65,7 @@ public class DataServiceImpl implements DataService {
...
@@ -65,7 +65,7 @@ public class DataServiceImpl implements DataService {
deptIds
.
addAll
(
getCustomize
(
deptIds
,
role
));
deptIds
.
addAll
(
getCustomize
(
deptIds
,
role
));
break
;
break
;
default
:
default
:
b
re
ak
;
re
turn
new
ArrayList
<>(
deptIds
)
;
}
}
}
}
return
new
ArrayList
<>(
deptIds
);
return
new
ArrayList
<>(
deptIds
);
...
...
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java
View file @
49f3b0a5
...
@@ -25,13 +25,11 @@ import me.zhengjie.modules.system.repository.RoleRepository;
...
@@ -25,13 +25,11 @@ import me.zhengjie.modules.system.repository.RoleRepository;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.modules.system.service.dto.DeptDto
;
import
me.zhengjie.modules.system.service.dto.DeptDto
;
import
me.zhengjie.modules.system.service.dto.DeptQueryCriteria
;
import
me.zhengjie.modules.system.service.dto.DeptQueryCriteria
;
import
me.zhengjie.utils.FileUtil
;
import
me.zhengjie.utils.*
;
import
me.zhengjie.utils.QueryHelp
;
import
me.zhengjie.utils.RedisUtils
;
import
me.zhengjie.utils.ValidationUtil
;
import
me.zhengjie.modules.system.repository.DeptRepository
;
import
me.zhengjie.modules.system.repository.DeptRepository
;
import
me.zhengjie.modules.system.service.DeptService
;
import
me.zhengjie.modules.system.service.DeptService
;
import
me.zhengjie.modules.system.service.mapstruct.DeptMapper
;
import
me.zhengjie.modules.system.service.mapstruct.DeptMapper
;
import
me.zhengjie.utils.enums.DataScopeEnum
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.data.domain.Sort
;
...
@@ -61,8 +59,11 @@ public class DeptServiceImpl implements DeptService {
...
@@ -61,8 +59,11 @@ public class DeptServiceImpl implements DeptService {
@Override
@Override
public
List
<
DeptDto
>
queryAll
(
DeptQueryCriteria
criteria
,
Boolean
isQuery
)
throws
Exception
{
public
List
<
DeptDto
>
queryAll
(
DeptQueryCriteria
criteria
,
Boolean
isQuery
)
throws
Exception
{
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
ASC
,
"deptSort"
);
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
ASC
,
"deptSort"
);
String
dataScopeType
=
SecurityUtils
.
getDataScopeType
();
if
(
isQuery
)
{
if
(
isQuery
)
{
criteria
.
setPidIsNull
(
true
);
if
(
dataScopeType
.
equals
(
DataScopeEnum
.
ALL
.
getValue
())){
criteria
.
setPidIsNull
(
true
);
}
List
<
Field
>
fields
=
QueryHelp
.
getAllFields
(
criteria
.
getClass
(),
new
ArrayList
<>());
List
<
Field
>
fields
=
QueryHelp
.
getAllFields
(
criteria
.
getClass
(),
new
ArrayList
<>());
List
<
String
>
fieldNames
=
new
ArrayList
<
String
>(){{
add
(
"pidIsNull"
);
add
(
"enabled"
);}};
List
<
String
>
fieldNames
=
new
ArrayList
<
String
>(){{
add
(
"pidIsNull"
);
add
(
"enabled"
);}};
for
(
Field
field
:
fields
)
{
for
(
Field
field
:
fields
)
{
...
@@ -78,7 +79,12 @@ public class DeptServiceImpl implements DeptService {
...
@@ -78,7 +79,12 @@ public class DeptServiceImpl implements DeptService {
}
}
}
}
}
}
return
deptMapper
.
toDto
(
deptRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
sort
));
List
<
DeptDto
>
list
=
deptMapper
.
toDto
(
deptRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
sort
));
// 如果为空,就代表为自定义权限或者本级权限,就需要去重,不理解可以注释掉,看查询结果
if
(
StringUtils
.
isBlank
(
dataScopeType
)){
return
deduplication
(
list
);
}
return
list
;
}
}
@Override
@Override
...
@@ -247,6 +253,23 @@ public class DeptServiceImpl implements DeptService {
...
@@ -247,6 +253,23 @@ public class DeptServiceImpl implements DeptService {
}
}
}
}
private
List
<
DeptDto
>
deduplication
(
List
<
DeptDto
>
list
)
{
List
<
DeptDto
>
deptDtos
=
new
ArrayList
<>();
for
(
DeptDto
deptDto
:
list
)
{
boolean
flag
=
true
;
for
(
DeptDto
dto
:
list
)
{
if
(
deptDto
.
getPid
().
equals
(
dto
.
getId
()))
{
flag
=
false
;
break
;
}
}
if
(
flag
){
deptDtos
.
add
(
deptDto
);
}
}
return
deptDtos
;
}
/**
/**
* 清理缓存
* 清理缓存
* @param id /
* @param id /
...
...
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