Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
one-certificate-system
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
one-certificate-system
Commits
35c01867
Commit
35c01867
authored
Jul 27, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加数据权限
parent
539d40f3
Changes
33
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
5296 additions
and
29 deletions
+5296
-29
one-certificate-manager/src/main/java/com/mortals/xhx/annotation/DataPermission.java
.../main/java/com/mortals/xhx/annotation/DataPermission.java
+24
-0
one-certificate-manager/src/main/java/com/mortals/xhx/base/framework/aspect/DataPermissionAspect.java
...rtals/xhx/base/framework/aspect/DataPermissionAspect.java
+76
-0
one-certificate-manager/src/main/java/com/mortals/xhx/common/utils/DataPermissionUtils.java
...ava/com/mortals/xhx/common/utils/DataPermissionUtils.java
+62
-0
one-certificate-manager/src/main/java/com/mortals/xhx/common/utils/RuleQueryGenerator.java
...java/com/mortals/xhx/common/utils/RuleQueryGenerator.java
+257
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/dao/ChildLicenseDatasetDao.java
.../mortals/xhx/module/child/dao/ChildLicenseDatasetDao.java
+16
-7
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/dao/ibatis/ChildLicenseDatasetDaoImpl.java
...x/module/child/dao/ibatis/ChildLicenseDatasetDaoImpl.java
+37
-7
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseDatasetVo.java
...tals/xhx/module/child/model/vo/ChildLicenseDatasetVo.java
+27
-2
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseInfoFieldVo.java
...ls/xhx/module/child/model/vo/ChildLicenseInfoFieldVo.java
+8
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseVo.java
...com/mortals/xhx/module/child/model/vo/ChildLicenseVo.java
+4
-1
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/ChildLicenseDatasetService.java
.../xhx/module/child/service/ChildLicenseDatasetService.java
+11
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/impl/ChildLicenseDatasetServiceImpl.java
...le/child/service/impl/ChildLicenseDatasetServiceImpl.java
+12
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/impl/ChildLicenseTempleteFieldServiceImpl.java
...ld/service/impl/ChildLicenseTempleteFieldServiceImpl.java
+61
-8
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/web/ChildLicenseDatasetController.java
...s/xhx/module/child/web/ChildLicenseDatasetController.java
+73
-4
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/DimensionDao.java
...va/com/mortals/xhx/module/dimension/dao/DimensionDao.java
+17
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/DimensionResourceRuleDao.java
...ls/xhx/module/dimension/dao/DimensionResourceRuleDao.java
+18
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/ibatis/DimensionDaoImpl.java
...als/xhx/module/dimension/dao/ibatis/DimensionDaoImpl.java
+20
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/ibatis/DimensionResourceRuleDaoImpl.java
...le/dimension/dao/ibatis/DimensionResourceRuleDaoImpl.java
+36
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionEntity.java
...m/mortals/xhx/module/dimension/model/DimensionEntity.java
+52
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionQuery.java
...om/mortals/xhx/module/dimension/model/DimensionQuery.java
+898
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionResourceRuleEntity.java
...x/module/dimension/model/DimensionResourceRuleEntity.java
+78
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionResourceRuleQuery.java
...hx/module/dimension/model/DimensionResourceRuleQuery.java
+1365
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/vo/DimensionResourceRuleVo.java
...hx/module/dimension/model/vo/DimensionResourceRuleVo.java
+21
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/vo/DimensionVo.java
...om/mortals/xhx/module/dimension/model/vo/DimensionVo.java
+21
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/DimensionResourceRuleService.java
...odule/dimension/service/DimensionResourceRuleService.java
+28
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/DimensionService.java
...ortals/xhx/module/dimension/service/DimensionService.java
+17
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/impl/DimensionResourceRuleServiceImpl.java
...ension/service/impl/DimensionResourceRuleServiceImpl.java
+33
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/impl/DimensionServiceImpl.java
...x/module/dimension/service/impl/DimensionServiceImpl.java
+20
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/web/DimensionController.java
...mortals/xhx/module/dimension/web/DimensionController.java
+40
-0
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/web/DimensionResourceRuleController.java
...module/dimension/web/DimensionResourceRuleController.java
+42
-0
one-certificate-manager/src/main/resources/sqlmap/module/child/ChildLicenseDatasetMapperExt.xml
...rces/sqlmap/module/child/ChildLicenseDatasetMapperExt.xml
+356
-0
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionMapper.xml
...ain/resources/sqlmap/module/dimension/DimensionMapper.xml
+639
-0
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionResourceRuleMapper.xml
...s/sqlmap/module/dimension/DimensionResourceRuleMapper.xml
+899
-0
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionResourceRuleMapperExt.xml
...qlmap/module/dimension/DimensionResourceRuleMapperExt.xml
+28
-0
No files found.
one-certificate-manager/src/main/java/com/mortals/xhx/annotation/DataPermission.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.annotation
;
import
java.lang.annotation.*
;
/**
*
* @author: zxfei
* @date: 2024/5/15 16:09
*/
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
({
ElementType
.
TYPE
,
ElementType
.
METHOD
})
@Documented
public
@interface
DataPermission
{
/**
* 数据权限类型
* 1 上下级授权 2 数据范围授权
*/
String
permissionType
()
default
"2"
;
/**
* 配置菜单的组件路径,用于数据权限
*/
String
componentRoute
()
default
""
;
}
one-certificate-manager/src/main/java/com/mortals/xhx/base/framework/aspect/DataPermissionAspect.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.base.framework.aspect
;
import
com.mortals.framework.service.IAuthTokenService
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.xhx.annotation.DataPermission
;
import
com.mortals.xhx.common.utils.RuleQueryGenerator
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
com.mortals.xhx.module.dimension.service.DimensionResourceRuleService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.lang.reflect.Method
;
import
java.util.List
;
@Aspect
@Slf4j
@Component
public
class
DataPermissionAspect
{
@Autowired
private
DimensionResourceRuleService
dimensionResourceRuleService
;
@Autowired
private
IAuthTokenService
authTokenService
;
public
static
final
String
DATA_PERMISSION_SEARCH_SQL
=
"DATA_PERMISSION_SEARCH_SQL"
;
@Pointcut
(
"@annotation(com.mortals.xhx.annotation.DataPermission)"
)
public
void
pointCut
()
{
}
@Around
(
"pointCut()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
String
componentRoute
=
request
.
getServletPath
();
IUser
loginUser
=
authTokenService
.
getLoginUser
(
request
);
MethodSignature
signature
=
(
MethodSignature
)
point
.
getSignature
();
Method
method
=
signature
.
getMethod
();
DataPermission
permissionData
=
method
.
getAnnotation
(
DataPermission
.
class
);
//获取授权方式
String
permissionType
=
permissionData
.
permissionType
();
//获取组件路由 通过controller 获取
// String componentRoute = permissionData.componentRoute();
if
(!
ObjectUtils
.
isEmpty
(
componentRoute
))
{
// 查找当前用户此资源路径下的所有规则
List
<
DimensionResourceRuleEntity
>
componentRules
=
dimensionResourceRuleService
.
getRoleComponentRule
(
loginUser
.
getId
(),
componentRoute
);
if
(!
ObjectUtils
.
isEmpty
(
componentRules
))
{
//在request添加属性
// DataPermissionUtils.installDataSearchConditon(request, componentRules);
//DataPermissionUtils.installUserInfo(request, loginUser);
//todo 构建数据权限sql 并设置到request中。
String
permissionSql
=
RuleQueryGenerator
.
getPermissionSql
(
componentRules
,
loginUser
);
log
.
info
(
"permissionSql:{}"
,
permissionSql
);
request
.
setAttribute
(
DATA_PERMISSION_SEARCH_SQL
,
permissionSql
);
// Map<Long, List<DimensionResourceRuleEntity>> ruleMap = RuleQueryGenerator.getRuleMapByRoleId(componentRules);
}
// String permissionSql = RuleQueryGenerator.getPermissionSql(identityId);
}
return
point
.
proceed
();
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/common/utils/DataPermissionUtils.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.common.utils
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
org.apache.commons.compress.utils.Lists
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
public
class
DataPermissionUtils
{
public
static
final
String
COMPONENT_DATA_RULES
=
"COMPONENT_DATA_RULES"
;
public
static
final
String
SYS_USER_INFO
=
"SYS_USER_INFO"
;
/**
* 往链接请求里面,传入数据查询条件
*
* @param request
* @param componentRules
*/
public
static
void
installDataSearchConditon
(
HttpServletRequest
request
,
List
<
DimensionResourceRuleEntity
>
componentRules
)
{
// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LIST
List
<
DimensionResourceRuleEntity
>
list
=
loadDataSearchCondition
(
request
);
if
(
list
==
null
)
{
// 2.如果不存在,则new一个list
list
=
Lists
.
newArrayList
();
}
list
.
addAll
(
componentRules
);
// 3.往list里面增量存指
request
.
setAttribute
(
COMPONENT_DATA_RULES
,
list
);
}
/**
* 往链接请求里面,传入数据查询条件
*
* @param request
* @param searchSql
*/
public
static
void
installSearchSql
(
HttpServletRequest
request
,
String
searchSql
)
{
// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LIST
// 3.往list里面增量存指
// request.setAttribute(DATA_PERMISSION_SEARCH_SQL, searchSql);
}
/**
* 获取请求对应的数据权限规则
*/
@SuppressWarnings
(
"unchecked"
)
public
static
synchronized
List
<
DimensionResourceRuleEntity
>
loadDataSearchCondition
(
HttpServletRequest
request
)
{
return
(
List
<
DimensionResourceRuleEntity
>)
request
.
getAttribute
(
COMPONENT_DATA_RULES
);
}
public
static
synchronized
void
installUserInfo
(
HttpServletRequest
request
,
IUser
userinfo
)
{
request
.
setAttribute
(
SYS_USER_INFO
,
userinfo
);
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/common/utils/RuleQueryGenerator.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.common.utils
;
import
cn.hutool.core.util.ReflectUtil
;
import
com.google.common.collect.Maps
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.common.code.RuleConditionEnum
;
import
com.mortals.xhx.common.code.RuleTypeEnum
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
lombok.experimental.UtilityClass
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.springframework.util.ObjectUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 权限sql 查询语句实现
*
* @author: zxfei
* @date: 2024/5/15 10:44
*/
@Slf4j
@UtilityClass
public
class
RuleQueryGenerator
{
private
static
final
String
SQL_AND
=
" and "
;
private
static
final
String
SQL_OR
=
" or "
;
private
static
final
String
SQL_JOINT
=
" (%s) "
;
public
static
String
getPermissionSql
(
List
<
DimensionResourceRuleEntity
>
conditionList
,
IUser
loginUser
)
{
//存在权限
//对当前身份根据规则编码分组-去除不同角色中相同编码且规则值为ALL的规则 并根据角色id分组
Map
<
Long
,
List
<
DimensionResourceRuleEntity
>>
ruleMap
=
getRuleMapByRoleId
(
conditionList
);
StringBuilder
sb
=
new
StringBuilder
();
String
roleSql
;
if
(
MapUtils
.
isNotEmpty
(
ruleMap
))
{
//按角色拼接SQL
for
(
Map
.
Entry
<
Long
,
List
<
DimensionResourceRuleEntity
>>
entry
:
ruleMap
.
entrySet
())
{
List
<
DimensionResourceRuleEntity
>
lists
=
entry
.
getValue
();
// 同角色之间使用 AND
roleSql
=
buildRoleSql
(
lists
,
loginUser
);
//角色之间使用 OR
if
(
StringUtils
.
isNotEmpty
(
roleSql
))
{
jointSqlByRoles
(
sb
,
roleSql
);
}
}
}
return
sb
.
toString
();
}
/**
* 获取带有数据权限的SQL
*
* @param identityId 身份ID
*/
public
String
getPermissionSql
(
String
identityId
)
{
//------------------------获取当前身份的数据规则------------------------------------
List
<
DimensionResourceRuleEntity
>
conditionList
=
getCurrentIdentyPermission
(
identityId
);
if
(
ObjectUtils
.
isEmpty
(
conditionList
))
{
//没有权限
return
"1 = 0"
;
}
//存在权限
//对当前身份根据规则编码分组-去除不同角色中相同编码且规则值为ALL的规则 并根据角色id分组
Map
<
Long
,
List
<
DimensionResourceRuleEntity
>>
ruleMap
=
getRuleMapByRoleId
(
conditionList
);
StringBuilder
sb
=
new
StringBuilder
();
String
roleSql
;
if
(
MapUtils
.
isNotEmpty
(
ruleMap
))
{
//按角色拼接SQL
for
(
Map
.
Entry
<
Long
,
List
<
DimensionResourceRuleEntity
>>
entry
:
ruleMap
.
entrySet
())
{
List
<
DimensionResourceRuleEntity
>
lists
=
entry
.
getValue
();
// 同角色之间使用 AND
roleSql
=
buildRoleSql
(
lists
,
null
);
//角色之间使用 OR
if
(
StringUtils
.
isNotEmpty
(
roleSql
))
{
jointSqlByRoles
(
sb
,
roleSql
);
}
}
}
return
sb
.
toString
();
}
private
static
List
<
DimensionResourceRuleEntity
>
getCurrentIdentyPermission
(
String
identityId
)
{
return
null
;
/* //----------------------------获取所有数据规则-----------------------------
List<DimensionResourceRuleEntity> roleRuleList = DataPermissionUtils.loadDataSearchCondition();
if(ObjectUtils.isEmpty(roleRuleList)){
return null;
}
//-----------------------------过滤掉不属于当前身份的规则-----------------------------------
return roleRuleList.stream()
// .filter(item -> item.getIdentityId().equals(identityId))
.collect(Collectors.toList());*/
}
/**
* 构建单角色SQL
*/
private
static
String
buildRoleSql
(
List
<
DimensionResourceRuleEntity
>
lists
,
IUser
loginUser
)
{
StringBuilder
roleSql
=
new
StringBuilder
();
for
(
DimensionResourceRuleEntity
item
:
lists
)
{
//如果出现全选 则 代表全部,不需要限定范围
if
(
"ALL"
.
equals
(
item
.
getRuleValue
()))
{
continue
;
}
//将规则转换成SQL
String
filedSql
=
convertRuleToSql
(
item
,
loginUser
);
if
(!
ObjectUtils
.
isEmpty
(
filedSql
)){
roleSql
.
append
(
SQL_AND
).
append
(
filedSql
);
}
}
return
roleSql
.
toString
();
}
/**
* 将单一规则转化成SQL,默认全部使用 In
* ruleCode : area_test
* ruleValue : 区域1,区域2,区域3
*
* @param rule 规则值
*/
private
static
String
convertRuleToSql
(
DimensionResourceRuleEntity
rule
,
IUser
loginUser
)
{
//判断规则类型
String
ruleValueConvert
=
""
;
if
(
RuleConditionEnum
.
属于
.
getValue
().
equalsIgnoreCase
(
rule
.
getRuleCondition
()))
{
String
whereCondition
=
" in "
;
if
(
RuleTypeEnum
.
系统上下问变量
.
getValue
()==
rule
.
getRuleType
()){
ruleValueConvert
=
getInConditionValue
(
rule
.
getRuleValue
(),
loginUser
);
if
(
ObjectUtils
.
isEmpty
(
ruleValueConvert
))
return
null
;
return
rule
.
getRuleCode
()
+
whereCondition
+
ruleValueConvert
;
}
else
{
ruleValueConvert
=
getInConditionValue
(
rule
.
getRuleValue
());
if
(
ObjectUtils
.
isEmpty
(
ruleValueConvert
))
return
null
;
return
rule
.
getRuleCode
()
+
whereCondition
+
ruleValueConvert
;
}
}
else
if
(
RuleConditionEnum
.
大于
.
getValue
().
equalsIgnoreCase
(
rule
.
getRuleCondition
()))
{
String
whereCondition
=
" > "
;
ruleValueConvert
=
getGreaterConditionValue
(
rule
.
getRuleValue
());
return
rule
.
getRuleCode
()
+
whereCondition
+
ruleValueConvert
;
}
else
{
//todo
//不支持的类型
}
return
null
;
}
/**
* IN字符串转换
* 区域1, 区域2, 区域3 --> ("区域1","区域2","区域3")
* 江西大区 --> ("江西大区")
*/
private
static
String
getInConditionValue
(
String
ruleValue
)
{
String
[]
temp
=
ruleValue
.
split
(
","
);
StringBuilder
res
=
new
StringBuilder
();
for
(
String
string
:
temp
)
{
res
.
append
(
",'"
).
append
(
string
).
append
(
"'"
);
}
return
"("
+
res
.
substring
(
1
)
+
")"
;
}
/**
* IN字符串转换
* 区域1, 区域2, 区域3 --> ("区域1","区域2","区域3")
* 江西大区 --> ("江西大区")
*/
private
static
String
getInConditionValue
(
String
ruleValue
,
IUser
loginUser
)
{
//el表达式 提取变量 再通过反射获取值,最终设置值
Object
fieldValue
=
ReflectUtil
.
getFieldValue
(
loginUser
,
ruleValue
);
if
(
fieldValue
!=
null
){
return
"("
+
fieldValue
+
")"
;
}
return
null
;
}
/**
* > 字符串转换
* 区域1, 区域2, 区域3 --> ("区域1","区域2","区域3")
* 江西大区 --> ("江西大区")
*/
private
static
String
getGreaterConditionValue
(
String
ruleValue
)
{
return
ruleValue
;
}
/**
* 拼接单角色的SQL
*
* @param sqlBuilder 总的SQL
* @param roleSql 单角色SQL
*/
private
static
void
jointSqlByRoles
(
StringBuilder
sqlBuilder
,
String
roleSql
)
{
roleSql
=
roleSql
.
replaceFirst
(
SQL_AND
,
""
);
if
(
StringUtils
.
isEmpty
(
sqlBuilder
.
toString
()))
{
sqlBuilder
.
append
(
String
.
format
(
SQL_JOINT
,
roleSql
));
}
else
{
sqlBuilder
.
append
(
SQL_OR
).
append
(
String
.
format
(
SQL_JOINT
,
roleSql
));
}
}
/**
* 1. 对当前身份根据规则编码分组-去除不同角色中相同编码且规则值为ALL的规则
* 2. 对角色进行分组
*
* @param conditionList 数据规则
* @return 分组后的规则list
*/
public
static
Map
<
Long
,
List
<
DimensionResourceRuleEntity
>>
getRuleMapByRoleId
(
List
<
DimensionResourceRuleEntity
>
conditionList
)
{
//--------过滤掉不属于当前身份的规则,并对条件编码进行分组-----------------------------------
Map
<
String
,
List
<
DimensionResourceRuleEntity
>>
conditionMap
=
conditionList
.
stream
().
collect
(
Collectors
.
groupingBy
(
DimensionResourceRuleEntity:
:
getRuleCode
));
//--------相同编码分组中存在ALL的排除掉-----------------------------------------------
List
<
DimensionResourceRuleEntity
>
newRoleRuleList
=
new
ArrayList
<>();
if
(
MapUtils
.
isNotEmpty
(
conditionMap
))
{
for
(
Map
.
Entry
<
String
,
List
<
DimensionResourceRuleEntity
>>
entry
:
conditionMap
.
entrySet
())
{
boolean
flag
=
true
;
List
<
DimensionResourceRuleEntity
>
lists
=
entry
.
getValue
();
for
(
DimensionResourceRuleEntity
item
:
lists
)
{
if
(
"ALL"
.
equals
(
item
.
getRuleValue
()))
{
flag
=
false
;
break
;
}
}
if
(
flag
)
{
newRoleRuleList
.
addAll
(
lists
);
}
}
}
if
(
CollectionUtils
.
isNotEmpty
(
newRoleRuleList
))
{
return
newRoleRuleList
.
stream
().
collect
(
Collectors
.
groupingBy
(
DimensionResourceRuleEntity:
:
getRoleId
));
}
return
Maps
.
newHashMap
();
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/dao/ChildLicenseDatasetDao.java
View file @
35c01867
package
com.mortals.xhx.module.child.dao
;
package
com.mortals.xhx.module.child.dao
;
import
com.mortals.framework.dao.ICRUDDao
;
import
com.mortals.framework.dao.ICRUDDao
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 行业许可子证数据集Dao
* 行业许可子证数据集Dao
* 行业许可子证数据集 DAO接口
* 行业许可子证数据集 DAO接口
*
*
* @author zxfei
* @author zxfei
* @date 2024-07-27
* @date 2024-07-27
*/
*/
public
interface
ChildLicenseDatasetDao
extends
ICRUDDao
<
ChildLicenseDatasetEntity
,
Long
>
{
public
interface
ChildLicenseDatasetDao
extends
ICRUDDao
<
ChildLicenseDatasetEntity
,
Long
>
{
String
SQLID_CUSTOM_LIST
=
"getCustomList"
;
String
SQLID_CUSTOM_COUNT
=
"getCustomListCount"
;
Result
<
ChildLicenseInfoFieldEntity
>
getCustomList
(
ChildLicenseDatasetQuery
appDatasetQuery
,
PageInfo
pageInfo
);
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/dao/ibatis/ChildLicenseDatasetDaoImpl.java
View file @
35c01867
package
com.mortals.xhx.module.child.dao.ibatis
;
package
com.mortals.xhx.module.child.dao.ibatis
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.ParamDto
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao
;
import
com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
java.util.List
;
import
java.util.List
;
/**
/**
* 行业许可子证数据集DaoImpl DAO接口
* 行业许可子证数据集DaoImpl DAO接口
*
*
* @author zxfei
* @author zxfei
* @date 2024-07-27
* @date 2024-07-27
*/
*/
@Repository
(
"childLicenseDatasetDao"
)
@Repository
(
"childLicenseDatasetDao"
)
public
class
ChildLicenseDatasetDaoImpl
extends
BaseCRUDDaoMybatis
<
ChildLicenseDatasetEntity
,
Long
>
implements
ChildLicenseDatasetDao
{
public
class
ChildLicenseDatasetDaoImpl
extends
BaseCRUDDaoMybatis
<
ChildLicenseDatasetEntity
,
Long
>
implements
ChildLicenseDatasetDao
{
@Override
public
Result
<
ChildLicenseInfoFieldEntity
>
getCustomList
(
ChildLicenseDatasetQuery
appDatasetQuery
,
PageInfo
pageInfo
)
{
Result
<
ChildLicenseInfoFieldEntity
>
result
=
new
Result
();
ParamDto
paramDto
=
this
.
getQueryParam
(
appDatasetQuery
);
int
count
=
this
.
getCustomCount
(
paramDto
);
List
list
=
null
;
if
(
count
==
0
)
{
list
=
new
ArrayList
();
}
else
if
(
pageInfo
.
getPrePageResult
()
==
-
1
)
{
list
=
this
.
getSqlSession
().
selectList
(
this
.
getSqlId
(
SQLID_CUSTOM_LIST
),
paramDto
);
}
else
{
list
=
this
.
getSqlSession
().
selectList
(
this
.
getSqlId
(
SQLID_CUSTOM_LIST
),
paramDto
);
}
pageInfo
.
setTotalResult
(
count
);
result
.
setPageInfo
(
pageInfo
);
result
.
setList
(
list
);
return
result
;
}
public
int
getCustomCount
(
ParamDto
paramDto
)
{
return
this
.
getSqlSession
().
selectOne
(
this
.
getSqlId
(
SQLID_CUSTOM_COUNT
),
this
.
cpyQueryParamDto
(
paramDto
));
}
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseDatasetVo.java
View file @
35c01867
...
@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
...
@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
lombok.Data
;
import
lombok.Data
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.annotation.Excel
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -16,8 +18,31 @@ import java.util.Date;
...
@@ -16,8 +18,31 @@ import java.util.Date;
@Data
@Data
public
class
ChildLicenseDatasetVo
extends
BaseEntityLong
{
public
class
ChildLicenseDatasetVo
extends
BaseEntityLong
{
/** 主键ID,主键,自增长列表 */
/**
private
List
<
Long
>
idList
;
* 字段编码
*/
private
String
fieldCode
;
/**
* 字段名称
*/
private
String
fieldName
;
/**
* 字段值
*/
private
String
fieldValue
;
private
Long
appId
;
private
List
<
Long
>
idList
;
private
List
<
String
>
fieldNameList
;
private
List
<
String
>
fieldValueList
;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private
List
<
ChildLicenseDatasetQuery
>
orConditionList
;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private
List
<
ChildLicenseDatasetQuery
>
andConditionList
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseInfoFieldVo.java
View file @
35c01867
...
@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
...
@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldQuery
;
import
lombok.Data
;
import
lombok.Data
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.annotation.Excel
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -19,5 +21,11 @@ public class ChildLicenseInfoFieldVo extends BaseEntityLong {
...
@@ -19,5 +21,11 @@ public class ChildLicenseInfoFieldVo extends BaseEntityLong {
/** 序号,主键,自增长列表 */
/** 序号,主键,自增长列表 */
private
List
<
Long
>
idList
;
private
List
<
Long
>
idList
;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private
List
<
ChildLicenseInfoFieldQuery
>
orConditionList
;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private
List
<
ChildLicenseInfoFieldQuery
>
andConditionList
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/model/vo/ChildLicenseVo.java
View file @
35c01867
...
@@ -19,5 +19,8 @@ public class ChildLicenseVo extends BaseEntityLong {
...
@@ -19,5 +19,8 @@ public class ChildLicenseVo extends BaseEntityLong {
/** 主键ID,主键,自增长列表 */
/** 主键ID,主键,自增长列表 */
private
List
<
Long
>
idList
;
private
List
<
Long
>
idList
;
/**
* 站点列表
*/
private
List
<
Long
>
siteIdList
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/ChildLicenseDatasetService.java
View file @
35c01867
package
com.mortals.xhx.module.child.service
;
package
com.mortals.xhx.module.child.service
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity
;
import
com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao
;
import
com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
/**
/**
* ChildLicenseDatasetService
* ChildLicenseDatasetService
*
*
...
@@ -13,4 +20,8 @@ import com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao;
...
@@ -13,4 +20,8 @@ import com.mortals.xhx.module.child.dao.ChildLicenseDatasetDao;
public
interface
ChildLicenseDatasetService
extends
ICRUDService
<
ChildLicenseDatasetEntity
,
Long
>{
public
interface
ChildLicenseDatasetService
extends
ICRUDService
<
ChildLicenseDatasetEntity
,
Long
>{
ChildLicenseDatasetDao
getDao
();
ChildLicenseDatasetDao
getDao
();
Result
<
ChildLicenseInfoFieldEntity
>
findCustomList
(
ChildLicenseDatasetQuery
appDatasetQuery
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/impl/ChildLicenseDatasetServiceImpl.java
View file @
35c01867
package
com.mortals.xhx.module.child.service.impl
;
package
com.mortals.xhx.module.child.service.impl
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
...
@@ -16,6 +21,8 @@ import org.springframework.util.ObjectUtils;
...
@@ -16,6 +21,8 @@ import org.springframework.util.ObjectUtils;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
/**
/**
* ChildLicenseDatasetService
* ChildLicenseDatasetService
...
@@ -86,4 +93,9 @@ public class ChildLicenseDatasetServiceImpl extends AbstractCRUDServiceImpl<Chil
...
@@ -86,4 +93,9 @@ public class ChildLicenseDatasetServiceImpl extends AbstractCRUDServiceImpl<Chil
childLicenseInfoFieldService
.
removeList
(
childLicenseInfoFieldlist
,
context
);
childLicenseInfoFieldService
.
removeList
(
childLicenseInfoFieldlist
,
context
);
super
.
removeAfter
(
ids
,
context
,
result
);
super
.
removeAfter
(
ids
,
context
,
result
);
}
}
@Override
public
Result
<
ChildLicenseInfoFieldEntity
>
findCustomList
(
ChildLicenseDatasetQuery
appDatasetQuery
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
{
return
this
.
dao
.
getCustomList
(
appDatasetQuery
,
pageInfo
);
}
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/service/impl/ChildLicenseTempleteFieldServiceImpl.java
View file @
35c01867
package
com.mortals.xhx.module.child.service.impl
;
package
com.mortals.xhx.module.child.service.impl
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.child.model.*
;
import
com.mortals.xhx.module.child.service.ChildLicenseDatasetService
;
import
com.mortals.xhx.module.child.service.ChildLicenseInfoFieldService
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.xhx.module.child.dao.ChildLicenseTempleteFieldDao
;
import
com.mortals.xhx.module.child.dao.ChildLicenseTempleteFieldDao
;
import
com.mortals.xhx.module.child.model.ChildLicenseTempleteFieldEntity
;
import
com.mortals.xhx.module.child.service.ChildLicenseTempleteFieldService
;
import
com.mortals.xhx.module.child.service.ChildLicenseTempleteFieldService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.util.ObjectUtils
;
/**
/**
* ChildLicenseTempleteFieldService
* ChildLicenseTempleteFieldService
* 行业许可子证模板信息字段 service实现
* 行业许可子证模板信息字段 service实现
*
*
* @author zxfei
* @author zxfei
* @date 2024-07-27
* @date 2024-07-27
*/
*/
@Service
(
"childLicenseTempleteFieldService"
)
@Service
(
"childLicenseTempleteFieldService"
)
@Slf4j
@Slf4j
public
class
ChildLicenseTempleteFieldServiceImpl
extends
AbstractCRUDServiceImpl
<
ChildLicenseTempleteFieldDao
,
ChildLicenseTempleteFieldEntity
,
Long
>
implements
ChildLicenseTempleteFieldService
{
public
class
ChildLicenseTempleteFieldServiceImpl
extends
AbstractCRUDServiceImpl
<
ChildLicenseTempleteFieldDao
,
ChildLicenseTempleteFieldEntity
,
Long
>
implements
ChildLicenseTempleteFieldService
{
@Autowired
private
ChildLicenseDatasetService
childLicenseDatasetService
;
@Autowired
private
ChildLicenseInfoFieldService
childLicenseInfoFieldService
;
/**
* @param entity
* @param context
* @throws AppException
*/
@Override
protected
void
saveAfter
(
ChildLicenseTempleteFieldEntity
entity
,
Context
context
)
throws
AppException
{
//同步添加已有模板数据
ChildLicenseDatasetQuery
appDatasetQuery
=
new
ChildLicenseDatasetQuery
();
appDatasetQuery
.
setAppId
(
entity
.
getSubLicenseId
());
List
<
ChildLicenseDatasetEntity
>
childLicenseDatasetEntities
=
childLicenseDatasetService
.
find
(
appDatasetQuery
,
context
);
// 判断该数据集 是否已经存在 没存在 再添加
ArrayList
<
ChildLicenseInfoFieldEntity
>
fieldSaveList
=
new
ArrayList
<>();
for
(
ChildLicenseDatasetEntity
childLicenseDatasetEntity
:
childLicenseDatasetEntities
)
{
ChildLicenseInfoFieldQuery
appInfoFieldQuery
=
new
ChildLicenseInfoFieldQuery
();
appInfoFieldQuery
.
setDatasetId
(
childLicenseDatasetEntity
.
getId
());
appInfoFieldQuery
.
setFieldCode
(
entity
.
getFieldCode
());
appInfoFieldQuery
.
setFieldType
(
entity
.
getFieldType
());
ChildLicenseInfoFieldEntity
childLicenseInfoFieldEntity
=
childLicenseInfoFieldService
.
selectOne
(
appInfoFieldQuery
,
context
);
if
(
ObjectUtils
.
isEmpty
(
childLicenseInfoFieldEntity
))
{
ChildLicenseInfoFieldEntity
fieldEntity
=
new
ChildLicenseInfoFieldEntity
();
fieldEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
entity
,
fieldEntity
,
BeanUtil
.
getNullPropertyNames
(
entity
));
fieldEntity
.
setDatasetId
(
childLicenseDatasetEntity
.
getId
());
fieldEntity
.
setId
(
null
);
fieldSaveList
.
add
(
fieldEntity
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
fieldSaveList
))
{
childLicenseInfoFieldService
.
save
(
fieldSaveList
,
context
);
}
super
.
saveAfter
(
entity
,
context
);
}
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/child/web/ChildLicenseDatasetController.java
View file @
35c01867
package
com.mortals.xhx.module.child.web
;
package
com.mortals.xhx.module.child.web
;
import
cn.hutool.core.collection.ListUtil
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.module.child.model.ChildLicenseDatasetQuery
;
import
com.mortals.xhx.module.child.model.ChildLicenseInfoFieldEntity
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -13,12 +20,10 @@ import com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity;
...
@@ -13,12 +20,10 @@ import com.mortals.xhx.module.child.model.ChildLicenseDatasetEntity;
import
com.mortals.xhx.module.child.service.ChildLicenseDatasetService
;
import
com.mortals.xhx.module.child.service.ChildLicenseDatasetService
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.framework.util.StringUtils
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.*
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
java.util.Arrays
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
...
@@ -46,5 +51,69 @@ public class ChildLicenseDatasetController extends BaseCRUDJsonBodyMappingContro
...
@@ -46,5 +51,69 @@ public class ChildLicenseDatasetController extends BaseCRUDJsonBodyMappingContro
super
.
init
(
model
,
context
);
super
.
init
(
model
,
context
);
}
}
@Override
protected
void
doListBefore
(
ChildLicenseDatasetEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
if
(!
ObjectUtils
.
isEmpty
(
query
.
getOrConditionList
())
||
!
ObjectUtils
.
isEmpty
(
query
.
getAndConditionList
()))
{
ChildLicenseDatasetQuery
appDatasetQuery
=
new
ChildLicenseDatasetQuery
();
if
(!
ObjectUtils
.
isEmpty
(
query
.
getAndConditionList
()))
{
appDatasetQuery
.
setOrConditionList
(
query
.
getAndConditionList
());
}
if
(!
ObjectUtils
.
isEmpty
(
query
.
getOrConditionList
()))
{
appDatasetQuery
.
setOrConditionList
(
query
.
getOrConditionList
());
appDatasetQuery
.
setAppId
(
query
.
getAppId
());
appDatasetQuery
.
setOrderCols
(
query
.
getOrderCols
());
PageInfo
pageInfo
=
this
.
buildPageInfo
(
query
);
Result
<
ChildLicenseInfoFieldEntity
>
customResult
=
this
.
service
.
findCustomList
(
appDatasetQuery
,
pageInfo
,
context
);
//根据查询条件的数量去除数量不足的结果
int
count
=
query
.
getOrConditionList
().
size
();
List
<
Long
>
datasetIdList
=
customResult
.
getList
().
stream
().
map
(
item
->
item
.
getDatasetId
()).
collect
(
Collectors
.
toList
());
Map
<
Long
,
Long
>
collect
=
datasetIdList
.
stream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
,
Collectors
.
counting
()));
List
<
Long
>
dataSets
=
collect
.
entrySet
().
stream
().
map
(
entrySet
->
{
if
(
entrySet
.
getValue
()
==
count
)
{
return
entrySet
.
getKey
();
}
else
{
return
null
;
}
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
dataSets
))
{
//排序-
List
<
Long
>
orderList
=
new
ArrayList
<>();
for
(
Long
dataId
:
datasetIdList
)
{
if
(
dataSets
.
contains
(
dataId
)){
orderList
.
add
(
dataId
);
}
}
query
.
setIdList
(
orderList
);
}
else
{
query
.
setIdList
(
ListUtil
.
toList
(
0L
));
}
query
.
setOrConditionList
(
null
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
query
.
getFieldCode
())
||
!
ObjectUtils
.
isEmpty
(
query
.
getFieldName
()))
{
ChildLicenseDatasetQuery
appDatasetQuery
=
new
ChildLicenseDatasetQuery
();
appDatasetQuery
.
setFieldCode
(
query
.
getFieldCode
());
appDatasetQuery
.
setFieldName
(
query
.
getFieldName
());
appDatasetQuery
.
setAppId
(
query
.
getAppId
());
// String fieldValue = StrUtil.addPrefixIfNot(query.getFieldValue(), "%");
// fieldValue = StrUtil.addSuffixIfNot(fieldValue, "%");
appDatasetQuery
.
setFieldValue
(
query
.
getFieldValue
());
PageInfo
pageInfo
=
this
.
buildPageInfo
(
query
);
Result
<
ChildLicenseInfoFieldEntity
>
customResult
=
this
.
service
.
findCustomList
(
appDatasetQuery
,
pageInfo
,
context
);
List
<
Long
>
datasetIdList
=
customResult
.
getList
().
stream
().
map
(
item
->
item
.
getDatasetId
()).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
datasetIdList
))
{
query
.
setIdList
(
datasetIdList
);
//query.setOrderColList();
}
else
{
query
.
setIdList
(
ListUtil
.
toList
(
0L
));
}
}
super
.
doListBefore
(
query
,
model
,
context
);
}
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/DimensionDao.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.dao
;
import
com.mortals.framework.dao.ICRUDDao
;
import
com.mortals.xhx.module.dimension.model.DimensionEntity
;
/**
* 授权维度Dao
* 授权维度 DAO接口
*
* @author zxfei
* @date 2024-05-16
*/
public
interface
DimensionDao
extends
ICRUDDao
<
DimensionEntity
,
Long
>{
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/DimensionResourceRuleDao.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.dao
;
import
com.mortals.framework.dao.ICRUDDao
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
java.util.List
;
/**
* 角色资源维度规则Dao
* 角色资源维度规则 DAO接口
*
* @author zxfei
* @date 2024-05-16
*/
public
interface
DimensionResourceRuleDao
extends
ICRUDDao
<
DimensionResourceRuleEntity
,
Long
>{
List
<
DimensionResourceRuleEntity
>
getRoleComponentRule
(
Long
userId
,
String
route
);
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/ibatis/DimensionDaoImpl.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.dao.ibatis
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
com.mortals.xhx.module.dimension.dao.DimensionDao
;
import
com.mortals.xhx.module.dimension.model.DimensionEntity
;
import
org.springframework.stereotype.Repository
;
/**
* 授权维度DaoImpl DAO接口
*
* @author zxfei
* @date 2024-05-16
*/
@Repository
(
"dimensionDao"
)
public
class
DimensionDaoImpl
extends
BaseCRUDDaoMybatis
<
DimensionEntity
,
Long
>
implements
DimensionDao
{
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/dao/ibatis/DimensionResourceRuleDaoImpl.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.dao.ibatis
;
import
com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis
;
import
com.mortals.xhx.module.dimension.dao.DimensionResourceRuleDao
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
org.springframework.stereotype.Repository
;
import
java.util.HashMap
;
import
java.util.List
;
/**
* 角色资源维度规则DaoImpl DAO接口
*
* @author zxfei
* @date 2024-05-16
*/
@Repository
(
"dimensionResourceRuleDao"
)
public
class
DimensionResourceRuleDaoImpl
extends
BaseCRUDDaoMybatis
<
DimensionResourceRuleEntity
,
Long
>
implements
DimensionResourceRuleDao
{
/**
* @param userId
* @param route
* @return
*/
@Override
public
List
<
DimensionResourceRuleEntity
>
getRoleComponentRule
(
Long
userId
,
String
route
)
{
return
getSqlSession
().
selectList
(
getSqlId
(
"getRoleComponentRule"
),
new
HashMap
<
String
,
Object
>()
{
{
put
(
"userId"
,
userId
);
put
(
"route"
,
route
);
}
});
}
}
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionEntity.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.model
;
import
com.mortals.xhx.module.dimension.model.vo.DimensionVo
;
import
lombok.Data
;
/**
* 授权维度实体对象
*
* @author zxfei
* @date 2024-05-16
*/
@Data
public
class
DimensionEntity
extends
DimensionVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 维度编码
*/
private
String
dimensionCode
;
/**
* 维度名称
*/
private
String
dimensionName
;
/**
* 维度值
*/
private
String
dimensionValue
;
/**
* 维度类型(1.固定值,2.系统上下问变量)
*/
private
Integer
dimensionType
;
@Override
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
if
(
obj
instanceof
DimensionEntity
)
{
DimensionEntity
tmp
=
(
DimensionEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
}
}
return
false
;
}
public
void
initAttrValue
(){
this
.
dimensionCode
=
""
;
this
.
dimensionName
=
""
;
this
.
dimensionValue
=
""
;
this
.
dimensionType
=
1
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionQuery.java
0 → 100644
View file @
35c01867
This diff is collapsed.
Click to expand it.
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionResourceRuleEntity.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.model
;
import
com.mortals.xhx.module.dimension.model.vo.DimensionResourceRuleVo
;
import
lombok.Data
;
/**
* 角色资源维度规则实体对象
*
* @author zxfei
* @date 2024-05-22
*/
@Data
public
class
DimensionResourceRuleEntity
extends
DimensionResourceRuleVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 角色ID
*/
private
Long
roleId
;
/**
* 资源ID
*/
private
Long
resourceId
;
/**
* 规则编码
*/
private
String
ruleCode
;
/**
* 规则名称
*/
private
String
ruleName
;
/**
* 规则条件(IN.属于,<.小于,>.大于,=.等于,!=.不等于,>=.大于等于,<=.小于等于,like %.左模糊,like %.右模糊)
*/
private
String
ruleCondition
;
/**
* 规则值,固定值或者系统变量
*/
private
String
ruleValue
;
/**
* 规则值类型(1.固定值,2.系统上下问变量)
*/
private
Integer
ruleType
;
/**
* 角色名称
*/
private
String
roleName
;
/**
* 资源名称
*/
private
String
resourceName
;
@Override
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
if
(
obj
instanceof
DimensionResourceRuleEntity
)
{
DimensionResourceRuleEntity
tmp
=
(
DimensionResourceRuleEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
}
}
return
false
;
}
public
void
initAttrValue
(){
this
.
roleId
=
null
;
this
.
resourceId
=
null
;
this
.
ruleCode
=
""
;
this
.
ruleName
=
""
;
this
.
ruleCondition
=
"IN"
;
this
.
ruleValue
=
""
;
this
.
ruleType
=
1
;
this
.
roleName
=
""
;
this
.
resourceName
=
""
;
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/DimensionResourceRuleQuery.java
0 → 100644
View file @
35c01867
This diff is collapsed.
Click to expand it.
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/vo/DimensionResourceRuleVo.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.model.vo
;
import
com.mortals.framework.model.BaseEntityLong
;
import
lombok.Data
;
import
java.util.List
;
/**
* 角色资源维度规则视图对象
*
* @author zxfei
* @date 2024-05-16
*/
@Data
public
class
DimensionResourceRuleVo
extends
BaseEntityLong
{
/** 序号,主键,自增长列表 */
private
List
<
Long
>
idList
;
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/model/vo/DimensionVo.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.model.vo
;
import
com.mortals.framework.model.BaseEntityLong
;
import
lombok.Data
;
import
java.util.List
;
/**
* 授权维度视图对象
*
* @author zxfei
* @date 2024-05-16
*/
@Data
public
class
DimensionVo
extends
BaseEntityLong
{
/** 序号,主键,自增长列表 */
private
List
<
Long
>
idList
;
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/DimensionResourceRuleService.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.service
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.dimension.dao.DimensionResourceRuleDao
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
java.util.List
;
/**
* DimensionResourceRuleService
*
* 角色资源维度规则 service接口
*
* @author zxfei
* @date 2024-05-16
*/
public
interface
DimensionResourceRuleService
extends
ICRUDService
<
DimensionResourceRuleEntity
,
Long
>{
DimensionResourceRuleDao
getDao
();
/**
* 根据当前controller路由获取用户角色资源维度规则
* @param userId
* @param route 当前controller路由
* @return
*/
List
<
DimensionResourceRuleEntity
>
getRoleComponentRule
(
Long
userId
,
String
route
);
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/DimensionService.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.service
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.dimension.dao.DimensionDao
;
import
com.mortals.xhx.module.dimension.model.DimensionEntity
;
/**
* DimensionService
*
* 授权维度 service接口
*
* @author zxfei
* @date 2024-05-16
*/
public
interface
DimensionService
extends
ICRUDService
<
DimensionEntity
,
Long
>{
DimensionDao
getDao
();
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/impl/DimensionResourceRuleServiceImpl.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.service.impl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.xhx.module.dimension.dao.DimensionResourceRuleDao
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
com.mortals.xhx.module.dimension.service.DimensionResourceRuleService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* DimensionResourceRuleService
* 角色资源维度规则 service实现
*
* @author zxfei
* @date 2024-05-16
*/
@Service
(
"dimensionResourceRuleService"
)
@Slf4j
public
class
DimensionResourceRuleServiceImpl
extends
AbstractCRUDServiceImpl
<
DimensionResourceRuleDao
,
DimensionResourceRuleEntity
,
Long
>
implements
DimensionResourceRuleService
{
/**
* @param userId
* @param route 当前controller路由
* @return
*/
@Override
public
List
<
DimensionResourceRuleEntity
>
getRoleComponentRule
(
Long
userId
,
String
route
)
{
return
this
.
getDao
().
getRoleComponentRule
(
userId
,
route
);
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/service/impl/DimensionServiceImpl.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.service.impl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.xhx.module.dimension.dao.DimensionDao
;
import
com.mortals.xhx.module.dimension.model.DimensionEntity
;
import
com.mortals.xhx.module.dimension.service.DimensionService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
/**
* DimensionService
* 授权维度 service实现
*
* @author zxfei
* @date 2024-05-16
*/
@Service
(
"dimensionService"
)
@Slf4j
public
class
DimensionServiceImpl
extends
AbstractCRUDServiceImpl
<
DimensionDao
,
DimensionEntity
,
Long
>
implements
DimensionService
{
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/web/DimensionController.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.web
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.common.code.DimensionTypeEnum
;
import
com.mortals.xhx.module.dimension.model.DimensionEntity
;
import
com.mortals.xhx.module.dimension.service.DimensionService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
/**
*
* 授权维度
*
* @author zxfei
* @date 2024-05-16
*/
@RestController
@RequestMapping
(
"dimension"
)
public
class
DimensionController
extends
BaseCRUDJsonBodyMappingController
<
DimensionService
,
DimensionEntity
,
Long
>
{
@Autowired
private
ParamService
paramService
;
public
DimensionController
(){
super
.
setModuleDesc
(
"授权维度"
);
}
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"dimensionType"
,
DimensionTypeEnum
.
getEnumMap
());
super
.
init
(
model
,
context
);
}
}
\ No newline at end of file
one-certificate-manager/src/main/java/com/mortals/xhx/module/dimension/web/DimensionResourceRuleController.java
0 → 100644
View file @
35c01867
package
com.mortals.xhx.module.dimension.web
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.common.code.RuleConditionEnum
;
import
com.mortals.xhx.common.code.RuleTypeEnum
;
import
com.mortals.xhx.module.dimension.model.DimensionResourceRuleEntity
;
import
com.mortals.xhx.module.dimension.service.DimensionResourceRuleService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Map
;
/**
*
* 角色资源维度规则
*
* @author zxfei
* @date 2024-05-16
*/
@RestController
@RequestMapping
(
"dimension/resource/rule"
)
public
class
DimensionResourceRuleController
extends
BaseCRUDJsonBodyMappingController
<
DimensionResourceRuleService
,
DimensionResourceRuleEntity
,
Long
>
{
@Autowired
private
ParamService
paramService
;
public
DimensionResourceRuleController
(){
super
.
setModuleDesc
(
"角色资源维度规则"
);
}
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"ruleCondition"
,
RuleConditionEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"ruleType"
,
RuleTypeEnum
.
getEnumMap
());
super
.
init
(
model
,
context
);
}
}
\ No newline at end of file
one-certificate-manager/src/main/resources/sqlmap/module/child/ChildLicenseDatasetMapperExt.xml
0 → 100644
View file @
35c01867
This diff is collapsed.
Click to expand it.
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionMapper.xml
0 → 100644
View file @
35c01867
This diff is collapsed.
Click to expand it.
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionResourceRuleMapper.xml
0 → 100644
View file @
35c01867
This diff is collapsed.
Click to expand it.
one-certificate-manager/src/main/resources/sqlmap/module/dimension/DimensionResourceRuleMapperExt.xml
0 → 100644
View file @
35c01867
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mortals.xhx.module.dimension.dao.ibatis.DimensionResourceRuleDaoImpl"
>
<!-- 获取列表 -->
<select
id=
"getRoleComponentRule"
parameterType=
"java.util.HashMap"
resultMap=
"DimensionResourceRuleEntity-Map"
>
SELECT DISTINCT
t1.role_id,
t1.resource_id,
t1.rule_code,
t1.rule_name,
t1.rule_condition,
t1.rule_value,
t1.rule_type,
t2.userId
FROM
mortals_xhx_dimension_resource_rule t1
LEFT JOIN mortals_xhx_role_user t2 ON t1.role_id = t2.roleId
LEFT JOIN mortals_xhx_role_auth t3 ON t1.role_id = t3.roleId
LEFT JOIN mortals_xhx_resource t4 ON t4.id = t3.resourceId
WHERE
FIND_IN_SET( #{route}, t4.url )
AND t2.userId = #{userId}
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
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