fix(REQ-2545): 记录菜单绑定角色关系的日志
This commit is contained in:
parent
7107a8364c
commit
6952d6f4ef
@ -11,7 +11,7 @@ import lombok.Getter;
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum PermissionRelationOperateLogTypeEnum {
|
||||
public enum PermissionRelationOperateLogSceneEnum {
|
||||
|
||||
/**
|
||||
* 同步
|
||||
@ -19,14 +19,9 @@ import java.util.List;
|
||||
public class SaasPgroupPermissionRelationOperateLogOperateDO {
|
||||
|
||||
/**
|
||||
* 资源ID列表
|
||||
* 资源编码
|
||||
*/
|
||||
private Long featureId;
|
||||
|
||||
/**
|
||||
* 组ID列表
|
||||
*/
|
||||
private List<Long> groupIds;
|
||||
private List<String> featureCodes;
|
||||
|
||||
/**
|
||||
* 角色code列表
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.tyr.server.repository.entity;
|
||||
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
@ -18,10 +19,15 @@ import lombok.*;
|
||||
public class SaasPgroupPermissionRelationOperateLog extends BaseEntity<SaasPgroupPermissionRelationOperateLog> {
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
* @see cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogTypeEnum
|
||||
* 操作场景
|
||||
* @see PermissionRelationOperateLogSceneEnum
|
||||
*/
|
||||
private String type;
|
||||
private String scene;
|
||||
|
||||
/**
|
||||
* 操作场景ID
|
||||
*/
|
||||
private String sceneId;
|
||||
|
||||
/**
|
||||
* 请求ID
|
||||
@ -42,4 +48,9 @@ public class SaasPgroupPermissionRelationOperateLog extends BaseEntity<SaasPgrou
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 操作人名
|
||||
*/
|
||||
private String createByName;
|
||||
}
|
||||
|
||||
@ -3,9 +3,11 @@ package cn.axzo.tyr.server.service.impl;
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.basics.common.util.TreeUtil;
|
||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
||||
import cn.axzo.tyr.client.model.req.ResourceSyncReq;
|
||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||
@ -73,6 +75,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
||||
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
private final UserProfileServiceApi userProfileServiceApi;
|
||||
|
||||
@Qualifier("asyncExecutor")
|
||||
@Autowired
|
||||
@ -123,6 +126,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
|
||||
private void doSyncFromBase(ResourceSyncReq req) {
|
||||
List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos = Lists.newCopyOnWriteArrayList();
|
||||
//TODO:@Zhan 并发处理;同一个parent下同批查询
|
||||
//处理数据缓存:避免同级节点上级重复处理 - 上级code查询
|
||||
final Map<Long, String> codeCache = new ConcurrentHashMap<>();
|
||||
@ -131,8 +135,11 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
//获取基准环境配置数据:同步某个ID的数据 需要同步处理它所有上级及下级组件
|
||||
List<FeatureResourceTreeNode> syncList = RpcInternalUtil.rpcProcessor(() -> baseFeatureResourceApi.getSyncTreeById(id),
|
||||
"get base sync tree by id", id).getData();
|
||||
syncResourceProcess(syncList, codeCache, req.getOperatorId());
|
||||
syncResourceProcess(syncList, codeCache, req.getOperatorId(), operateDos);
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
saveOperateLog(req, operateDos);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -165,7 +172,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
return featureResourceIdCodeMap;
|
||||
}
|
||||
|
||||
private void syncResourceProcess(List<FeatureResourceTreeNode> syncList, Map<Long, String> codeCache, Long operatorId) {
|
||||
private void syncResourceProcess(List<FeatureResourceTreeNode> syncList, Map<Long, String> codeCache, Long operatorId, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
|
||||
for (FeatureResourceTreeNode treeNode : syncList) {
|
||||
if (codeCache.containsKey(treeNode.getId())) {
|
||||
@ -173,7 +180,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
log.info("already sync resource:{}", treeNode.getId());
|
||||
//递归子节点
|
||||
if (CollectionUtils.isNotEmpty(treeNode.getChildren())) {
|
||||
syncResourceProcess(treeNode.getChildren(), codeCache, operatorId);
|
||||
syncResourceProcess(treeNode.getChildren(), codeCache, operatorId, operateDos);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@ -208,11 +215,11 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
|
||||
// 处理资源关联的权限
|
||||
doFeatureResourceRole(baseResource, treeNode.getRoleCodes(), operatorId);
|
||||
doFeatureResourceRole(baseResource, treeNode.getRoleCodes(), operatorId, operateDos);
|
||||
|
||||
//递归子节点
|
||||
if (CollectionUtils.isNotEmpty(treeNode.getChildren())) {
|
||||
syncResourceProcess(treeNode.getChildren(), codeCache, operatorId);
|
||||
syncResourceProcess(treeNode.getChildren(), codeCache, operatorId, operateDos);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -236,7 +243,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
}
|
||||
|
||||
private void doFeatureResourceRole(SaasFeatureResource featureResource, List<String> roleCodes, Long operatorId) {
|
||||
private void doFeatureResourceRole(SaasFeatureResource featureResource, List<String> roleCodes, Long operatorId, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
if (Objects.isNull(featureResource)) {
|
||||
return;
|
||||
}
|
||||
@ -252,8 +259,11 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
saasPgroupPermissionRelationDao.removeByFeatureIdAndGroupIds(featureResource.getId(), existPermissionRelations.stream().map(SaasPgroupPermissionRelation::getGroupId).collect(Collectors.toList()), operatorId);
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
saveOperateLog(featureResource, roleCodes, operatorId);
|
||||
// 操作日志
|
||||
operateDos.add(SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureCodes(Lists.newArrayList(featureResource.getUniCode()))
|
||||
.roleCodes(roleCodes)
|
||||
.build());
|
||||
|
||||
if (CollectionUtils.isEmpty(roleCodes)) {
|
||||
return;
|
||||
@ -344,18 +354,19 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
return featureRoleMap;
|
||||
}
|
||||
|
||||
private void saveOperateLog(SaasFeatureResource featureResource, List<String> roleCodes, Long operatorId) {
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureResource.getId())
|
||||
.roleCodes(roleCodes)
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.SYNC.getValue())
|
||||
.createBy(operatorId)
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
.build();
|
||||
|
||||
private void saveOperateLog(ResourceSyncReq req, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
List<PersonProfileDto> personProfileDtos = RpcInternalUtil.rpcListProcessor(() -> userProfileServiceApi.getPersonProfiles(Lists.newArrayList(req.getOperatorId())), "查询用户信息", req.getOperatorId()).getData();
|
||||
PersonProfileDto operator = CollectionUtils.isEmpty(personProfileDtos) ? null : personProfileDtos.get(0);
|
||||
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.scene(PermissionRelationOperateLogSceneEnum.SYNC.getValue())
|
||||
.createBy(req.getOperatorId())
|
||||
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(JSONObject.toJSONString(req))
|
||||
.operateData(JSONObject.toJSONString(operateDos))
|
||||
.build();
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,11 +2,13 @@ package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.basics.common.exception.ServiceException;
|
||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.foundation.dao.support.converter.PageConverter;
|
||||
import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import cn.axzo.tyr.client.common.enums.RoleResourceTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
@ -39,17 +41,11 @@ import cn.axzo.tyr.client.model.vo.SaasRoleGroupCodeVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaasRoleVO;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
import cn.axzo.tyr.server.model.*;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPermissionGroupDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupRoleRelationDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasRoleGroupDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasRoleGroupRelationDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
|
||||
import cn.axzo.tyr.server.repository.dao.*;
|
||||
import cn.axzo.tyr.server.repository.entity.*;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
|
||||
import cn.axzo.tyr.server.service.*;
|
||||
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
||||
import cn.azxo.framework.common.constatns.Constants;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
@ -151,6 +147,10 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
private SaasRoleUserRelationService saasRoleUserRelationService;
|
||||
@Autowired
|
||||
private SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
@Autowired
|
||||
private UserProfileServiceApi userProfileServiceApi;
|
||||
@Autowired
|
||||
private SaasFeatureResourceDao saasFeatureResourceDao;
|
||||
|
||||
@Value("${groupLeader.code:projectTeamGPLeader}")
|
||||
private String groupLeaderCode;
|
||||
@ -1305,7 +1305,7 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
List<Long> insertGroupIds = groupIds.stream().filter(role -> !existGroupIds.contains(role)).collect(Collectors.toList());
|
||||
List<Long> deleteGroupIds = existGroupIds.stream().filter(role -> !groupIds.contains(role)).collect(Collectors.toList());
|
||||
// 记录操作日志
|
||||
saveOperateLog(item.getFeatureId(), operatorId, groupIds, req);
|
||||
saveOperateLog(item.getFeatureId(), operatorId, item.getRoleIds(), req);
|
||||
// 新增的
|
||||
if (CollectionUtils.isNotEmpty(insertGroupIds)) {
|
||||
List<SaasPgroupPermissionRelation> insertRelation = new ArrayList<>();
|
||||
@ -1494,12 +1494,21 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
}
|
||||
|
||||
private void saveOperateLog(Long featureId, Long operatorId, List<FeatureRoleRelationReq.RelationRoleSettings> req) {
|
||||
SaasFeatureResource saasFeatureResource = saasFeatureResourceService.featureResourceById(featureId);
|
||||
if (Objects.isNull(saasFeatureResource)) {
|
||||
return;
|
||||
}
|
||||
List<PersonProfileDto> personProfileDtos = RpcInternalUtil.rpcListProcessor(() -> userProfileServiceApi.getPersonProfiles(Lists.newArrayList(operatorId)), "查询用户信息", operatorId).getData();
|
||||
PersonProfileDto operator = org.apache.commons.collections4.CollectionUtils.isEmpty(personProfileDtos) ? null : personProfileDtos.get(0);
|
||||
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureId)
|
||||
.featureCodes(Lists.newArrayList(saasFeatureResource.getUniCode()))
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.sceneId(saasFeatureResource.getUniCode())
|
||||
.createBy(operatorId)
|
||||
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(req) ? null : JSONObject.toJSONString(req))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
@ -1508,14 +1517,24 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
private void saveOperateLog(Long featureId, Long operatorId, List<Long> afterGroupIds, List<FeatureRoleRelationReq.RelationRoleSettings> req) {
|
||||
private void saveOperateLog(Long featureId, Long operatorId, List<Long> roleIds, List<FeatureRoleRelationReq.RelationRoleSettings> req) {
|
||||
SaasFeatureResource saasFeatureResource = saasFeatureResourceService.featureResourceById(featureId);
|
||||
if (Objects.isNull(saasFeatureResource)) {
|
||||
return;
|
||||
}
|
||||
List<PersonProfileDto> personProfileDtos = RpcInternalUtil.rpcListProcessor(() -> userProfileServiceApi.getPersonProfiles(Lists.newArrayList(operatorId)), "查询用户信息", operatorId).getData();
|
||||
PersonProfileDto operator = org.apache.commons.collections4.CollectionUtils.isEmpty(personProfileDtos) ? null : personProfileDtos.get(0);
|
||||
List<SaasRole> saasRoles = saasRoleDao.lambdaQuery().in(BaseEntity::getId, roleIds).list();
|
||||
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureId)
|
||||
.groupIds(afterGroupIds)
|
||||
.featureCodes(Lists.newArrayList(saasFeatureResource.getUniCode()))
|
||||
.roleCodes(saasRoles.stream().map(SaasRole::getRoleCode).collect(Collectors.toList()))
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.sceneId(saasFeatureResource.getUniCode())
|
||||
.createBy(operatorId)
|
||||
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(req) ? null : JSONObject.toJSONString(req))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
@ -1524,6 +1543,29 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
private void saveOperateLog4RoleBindFeatureResource(SaveOrUpdateRoleVO saveOrUpdateRole) {
|
||||
List<String> uniCodes = null;
|
||||
if (CollectionUtils.isNotEmpty(saveOrUpdateRole.getPermissionIds())) {
|
||||
uniCodes = saasFeatureResourceDao.lambdaQuery().in(BaseEntity::getId, saveOrUpdateRole.getPermissionIds()).list().stream().map(SaasFeatureResource::getUniCode).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureCodes(uniCodes)
|
||||
.roleCodes(Lists.newArrayList(saveOrUpdateRole.getRoleCode()))
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_ROLE_BIND_FEATURE_RESOURCE.getValue())
|
||||
.sceneId(saveOrUpdateRole.getRoleCode())
|
||||
.createBy(saveOrUpdateRole.getOperatorId())
|
||||
.createByName(saveOrUpdateRole.getOperatorName())
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(saveOrUpdateRole) ? null : JSONObject.toJSONString(saveOrUpdateRole))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
.build();
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -6,19 +6,12 @@ import cn.axzo.foundation.dao.support.mysql.QueryWrapperHelper;
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.framework.auth.domain.TerminalInfo;
|
||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogTypeEnum;
|
||||
import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
import cn.axzo.tyr.server.model.SaasPgroupPermissionRelationOperateLogOperateDO;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPgroupPermissionRelationMapper;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationService;
|
||||
import cn.azxo.framework.common.constatns.Constants;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -26,12 +19,14 @@ import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -44,7 +39,6 @@ public class SaasPgroupPermissionRelationServiceImpl
|
||||
extends ServiceImpl<SaasPgroupPermissionRelationMapper, SaasPgroupPermissionRelation>
|
||||
implements SaasPgroupPermissionRelationService {
|
||||
private final SaasPgroupPermissionRelationDao saasPgroupPermissionRelationDao;
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -77,9 +71,6 @@ public class SaasPgroupPermissionRelationServiceImpl
|
||||
if (CollectionUtils.isNotEmpty(deleteList)) {
|
||||
saasPgroupPermissionRelationDao.removeByIds(deleteList.stream().map(SaasPgroupPermissionRelation::getId).sorted().collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
saveOperateLog(param.getOperatorId(), param.getRequestData(), relations);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -122,32 +113,4 @@ public class SaasPgroupPermissionRelationServiceImpl
|
||||
}
|
||||
this.removeByIds(param.getIds());
|
||||
}
|
||||
|
||||
private void saveOperateLog(Long operatorId, SaveOrUpdateRoleVO requestData, List<SaasPgroupPermissionRelation> newRelations) {
|
||||
if (Objects.isNull(operatorId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Long, List<Long>> newFeatureResourceIdMap = newRelations.stream()
|
||||
.collect(Collectors.groupingBy(SaasPgroupPermissionRelation::getFeatureId,
|
||||
Collectors.mapping(SaasPgroupPermissionRelation::getGroupId, Collectors.toList())));
|
||||
|
||||
List<SaasPgroupPermissionRelationOperateLog> operateLogs = Lists.newArrayList();
|
||||
newFeatureResourceIdMap.entrySet().forEach(e -> {
|
||||
Long featureId = e.getKey();
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureId)
|
||||
.groupIds(e.getValue())
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.OMS_ROLE_BIND_FEATURE_RESOURCE.getValue())
|
||||
.createBy(operatorId)
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(requestData) ? null : JSONObject.toJSONString(requestData))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
.build();
|
||||
operateLogs.add(operateLog);
|
||||
});
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(operateLogs);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user