fix(REQ-2545): 记录菜单绑定角色关系的日志
This commit is contained in:
parent
2efcaf9634
commit
45e01d07bd
@ -28,6 +28,11 @@ public enum PermissionRelationOperateLogSceneEnum {
|
||||
*/
|
||||
OMS_ROLE_BIND_FEATURE_RESOURCE("OMS_ROLE_BIND_FEATURE_RESOURCE", "oms后台更新角色绑定的资源"),
|
||||
|
||||
/**
|
||||
* oms后台更新资源绑定的页面元素
|
||||
*/
|
||||
OMS_FEATURE_RESOURCE_BIND_ELEMENT("OMS_FEATURE_RESOURCE_BIND_ELEMENT", "oms后台更新资源绑定的页面元素"),
|
||||
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
package cn.axzo.tyr.server.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
@Builder
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RelationOperateLogResourceBindElementDO {
|
||||
|
||||
/**
|
||||
* 资源编码
|
||||
*/
|
||||
private String uniCode;
|
||||
|
||||
/**
|
||||
* 页面元素code列表
|
||||
*/
|
||||
private List<String> featureCodes;
|
||||
}
|
||||
@ -16,12 +16,12 @@ import java.util.List;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SaasPgroupPermissionRelationOperateLogOperateDO {
|
||||
public class RelationOperateLogResourceBindRoleDO {
|
||||
|
||||
/**
|
||||
* 资源编码
|
||||
*/
|
||||
private List<String> featureCodes;
|
||||
private String uniCode;
|
||||
|
||||
/**
|
||||
* 角色code列表
|
||||
@ -0,0 +1,30 @@
|
||||
package cn.axzo.tyr.server.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
@Builder
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RelationOperateLogRoleBindResourceDO {
|
||||
|
||||
/**
|
||||
* 资源编码
|
||||
*/
|
||||
private List<String> uniCodes;
|
||||
|
||||
/**
|
||||
* 角色code
|
||||
*/
|
||||
private String roleCode;
|
||||
}
|
||||
@ -12,7 +12,7 @@ import cn.axzo.tyr.client.model.req.GetFeatureResourceTreeReq;
|
||||
import cn.axzo.tyr.client.model.req.ResourceSyncReq;
|
||||
import cn.axzo.tyr.client.model.res.FeatureResourceTreeNode;
|
||||
import cn.axzo.tyr.server.inner.feign.BaseFeatureResourceApi;
|
||||
import cn.axzo.tyr.server.model.SaasPgroupPermissionRelationOperateLogOperateDO;
|
||||
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindRoleDO;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationDao;
|
||||
@ -126,7 +126,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
|
||||
private void doSyncFromBase(ResourceSyncReq req) {
|
||||
List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos = Lists.newCopyOnWriteArrayList();
|
||||
List<RelationOperateLogResourceBindRoleDO> operateDos = Lists.newCopyOnWriteArrayList();
|
||||
//TODO:@Zhan 并发处理;同一个parent下同批查询
|
||||
//处理数据缓存:避免同级节点上级重复处理 - 上级code查询
|
||||
final Map<Long, String> codeCache = new ConcurrentHashMap<>();
|
||||
@ -172,7 +172,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
return featureResourceIdCodeMap;
|
||||
}
|
||||
|
||||
private void syncResourceProcess(List<FeatureResourceTreeNode> syncList, Map<Long, String> codeCache, Long operatorId, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
private void syncResourceProcess(List<FeatureResourceTreeNode> syncList, Map<Long, String> codeCache, Long operatorId, List<RelationOperateLogResourceBindRoleDO> operateDos) {
|
||||
|
||||
for (FeatureResourceTreeNode treeNode : syncList) {
|
||||
if (codeCache.containsKey(treeNode.getId())) {
|
||||
@ -243,7 +243,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
}
|
||||
|
||||
private void doFeatureResourceRole(SaasFeatureResource featureResource, List<String> roleCodes, Long operatorId, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
private void doFeatureResourceRole(SaasFeatureResource featureResource, List<String> roleCodes, Long operatorId, List<RelationOperateLogResourceBindRoleDO> operateDos) {
|
||||
if (Objects.isNull(featureResource)) {
|
||||
return;
|
||||
}
|
||||
@ -260,8 +260,8 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
|
||||
// 操作日志
|
||||
operateDos.add(SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureCodes(Lists.newArrayList(featureResource.getUniCode()))
|
||||
operateDos.add(RelationOperateLogResourceBindRoleDO.builder()
|
||||
.uniCode(featureResource.getUniCode())
|
||||
.roleCodes(roleCodes)
|
||||
.build());
|
||||
|
||||
@ -355,7 +355,7 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
}
|
||||
|
||||
|
||||
private void saveOperateLog(ResourceSyncReq req, List<SaasPgroupPermissionRelationOperateLogOperateDO> operateDos) {
|
||||
private void saveOperateLog(ResourceSyncReq req, List<RelationOperateLogResourceBindRoleDO> operateDos) {
|
||||
List<PersonProfileDto> personProfileDtos = RpcInternalUtil.rpcListProcessor(() -> userProfileServiceApi.getPersonProfiles(Lists.newArrayList(req.getOperatorId())), "查询用户信息", req.getOperatorId()).getData();
|
||||
PersonProfileDto operator = CollectionUtils.isEmpty(personProfileDtos) ? null : personProfileDtos.get(0);
|
||||
|
||||
|
||||
@ -1503,8 +1503,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
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()
|
||||
.featureCodes(Lists.newArrayList(saasFeatureResource.getUniCode()))
|
||||
RelationOperateLogResourceBindRoleDO operateAfter = RelationOperateLogResourceBindRoleDO.builder()
|
||||
.uniCode(saasFeatureResource.getUniCode())
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
@ -1528,8 +1528,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
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()
|
||||
.featureCodes(Lists.newArrayList(saasFeatureResource.getUniCode()))
|
||||
RelationOperateLogResourceBindRoleDO operateAfter = RelationOperateLogResourceBindRoleDO.builder()
|
||||
.uniCode(saasFeatureResource.getUniCode())
|
||||
.roleCodes(saasRoles.stream().map(SaasRole::getRoleCode).collect(Collectors.toList()))
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
@ -1552,9 +1552,9 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
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(saasRole.getRoleCode()))
|
||||
RelationOperateLogRoleBindResourceDO operateAfter = RelationOperateLogRoleBindResourceDO.builder()
|
||||
.uniCodes(uniCodes)
|
||||
.roleCode(saasRole.getRoleCode())
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_ROLE_BIND_FEATURE_RESOURCE.getValue())
|
||||
|
||||
@ -3,26 +3,32 @@ package cn.axzo.tyr.server.service.impl;
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.basics.common.util.StopWatchUtil;
|
||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindElementDO;
|
||||
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindRoleDO;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.*;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import cn.axzo.tyr.server.service.TyrSaasAuthService;
|
||||
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
||||
import cn.azxo.framework.common.constatns.Constants;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -31,6 +37,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -59,6 +66,8 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
||||
private final SaasFeatureResourceDao saasFeatureResourceDao;
|
||||
private final TyrSaasAuthService tyrSaasAuthService;
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
private final UserProfileServiceApi userProfileServiceApi;
|
||||
|
||||
@Qualifier("asyncExecutor")
|
||||
@Autowired
|
||||
@ -163,6 +172,9 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
.build()).collect(Collectors.toList());
|
||||
saasPageElementFeatureResourceRelationDao.saveBatch(relations);
|
||||
}
|
||||
|
||||
// 保存操作日志
|
||||
saveOperateLog(modifyPageElementRelation);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -387,4 +399,25 @@ public class SaasPageElementServiceImpl implements SaasPageElementService {
|
||||
.and(w -> pageResources.forEach(p -> w.or().likeRight(SaasFeatureResource::getPath, p.getPath())))
|
||||
.list();
|
||||
}
|
||||
|
||||
private void saveOperateLog(ModifyPageElementRelationDTO relation) {
|
||||
List<PersonProfileDto> personProfileDtos = RpcInternalUtil.rpcListProcessor(() -> userProfileServiceApi.getPersonProfiles(Lists.newArrayList(relation.getOperatorId())), "查询用户信息", relation.getOperatorId()).getData();
|
||||
PersonProfileDto operator = org.apache.commons.collections4.CollectionUtils.isEmpty(personProfileDtos) ? null : personProfileDtos.get(0);
|
||||
|
||||
RelationOperateLogResourceBindElementDO operateAfter = RelationOperateLogResourceBindElementDO.builder()
|
||||
.uniCode(relation.getFeatureResourceUniCode())
|
||||
.featureCodes(relation.getPageElementCodes())
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_FEATURE_RESOURCE_BIND_ELEMENT.getValue())
|
||||
.sceneId(relation.getFeatureResourceUniCode())
|
||||
.createBy(relation.getOperatorId())
|
||||
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(JSONObject.toJSONString(relation))
|
||||
.operateData(JSONObject.toJSONString(Lists.newArrayList(operateAfter)))
|
||||
.build();
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user