fix(REQ-2545): 记录菜单绑定角色关系的日志
This commit is contained in:
parent
f799013c6e
commit
7107a8364c
@ -0,0 +1,36 @@
|
||||
package cn.axzo.tyr.client.common.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum PermissionRelationOperateLogTypeEnum {
|
||||
|
||||
/**
|
||||
* 同步
|
||||
*/
|
||||
SYNC("SYNC", "同步"),
|
||||
|
||||
/**
|
||||
* oms后台更新资源绑定的角色
|
||||
*/
|
||||
OMS_FEATURE_RESOURCE_BIND_ROLE("OMS_FEATURE_RESOURCE_BIND_ROLE", "oms后台更新资源绑定的角色"),
|
||||
|
||||
/**
|
||||
* oms后台更新角色绑定资源绑定的
|
||||
*/
|
||||
OMS_ROLE_BIND_FEATURE_RESOURCE("OMS_ROLE_BIND_FEATURE_RESOURCE", "oms后台更新角色绑定的资源"),
|
||||
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
private final String value;
|
||||
private final String desc;
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
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 SaasPgroupPermissionRelationOperateLogOperateDO {
|
||||
|
||||
/**
|
||||
* 资源ID列表
|
||||
*/
|
||||
private Long featureId;
|
||||
|
||||
/**
|
||||
* 组ID列表
|
||||
*/
|
||||
private List<Long> groupIds;
|
||||
|
||||
/**
|
||||
* 角色code列表
|
||||
*/
|
||||
private List<String> roleCodes;
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPgroupPermissionRelationOperateLogMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public class SaasPgroupPermissionRelationOperateLogDao extends ServiceImpl<SaasPgroupPermissionRelationOperateLogMapper, SaasPgroupPermissionRelationOperateLog> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package cn.axzo.tyr.server.repository.entity;
|
||||
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@ToString
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("saas_pgroup_permission_relation_operate_log")
|
||||
public class SaasPgroupPermissionRelationOperateLog extends BaseEntity<SaasPgroupPermissionRelationOperateLog> {
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
* @see cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogTypeEnum
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 请求ID
|
||||
*/
|
||||
private String traceId;
|
||||
|
||||
/**
|
||||
* 请求参数数据
|
||||
*/
|
||||
private String requestData;
|
||||
|
||||
/**
|
||||
* 操作后数据
|
||||
*/
|
||||
private String operateData;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package cn.axzo.tyr.server.repository.mapper;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface SaasPgroupPermissionRelationOperateLogMapper extends BaseMapper<SaasPgroupPermissionRelationOperateLog> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
public interface SaasPgroupPermissionRelationOperateLogService {
|
||||
|
||||
void batchSave(List<SaasPgroupPermissionRelationOperateLog> logs);
|
||||
}
|
||||
@ -2,6 +2,7 @@ package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.foundation.page.PageResp;
|
||||
import cn.axzo.tyr.client.model.req.PagePgroupPermissionRelationReq;
|
||||
import cn.axzo.tyr.client.model.vo.SaveOrUpdateRoleVO;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -41,6 +42,16 @@ public interface SaasPgroupPermissionRelationService extends IService<SaasPgroup
|
||||
* 关联类型(0:saas_feature,1:saas_feature_resource)
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 操作人ID
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
*/
|
||||
private SaveOrUpdateRoleVO requestData;
|
||||
}
|
||||
|
||||
@Data
|
||||
|
||||
@ -5,28 +5,30 @@ import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.basics.common.util.TreeUtil;
|
||||
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.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.repository.dao.SaasFeatureResourceDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||
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.entity.SaasFeatureResource;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import cn.axzo.tyr.server.repository.entity.*;
|
||||
import cn.axzo.tyr.server.service.FeatureResourceSyncService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import cn.axzo.tyr.server.util.RpcInternalUtil;
|
||||
import cn.azxo.framework.common.constatns.Constants;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
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.stereotype.Service;
|
||||
@ -70,6 +72,8 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
|
||||
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
||||
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
|
||||
@Qualifier("asyncExecutor")
|
||||
@Autowired
|
||||
private ExecutorService asyncExecutor;
|
||||
@ -248,6 +252,9 @@ public class FeatureResourceSyncServiceImpl implements FeatureResourceSyncServic
|
||||
saasPgroupPermissionRelationDao.removeByFeatureIdAndGroupIds(featureResource.getId(), existPermissionRelations.stream().map(SaasPgroupPermissionRelation::getGroupId).collect(Collectors.toList()), operatorId);
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
saveOperateLog(featureResource, roleCodes, operatorId);
|
||||
|
||||
if (CollectionUtils.isEmpty(roleCodes)) {
|
||||
return;
|
||||
}
|
||||
@ -336,4 +343,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();
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ 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.RoleResourceTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.RoleTypeEnum;
|
||||
import cn.axzo.tyr.client.model.enums.IdentityType;
|
||||
@ -37,10 +38,7 @@ import cn.axzo.tyr.client.model.vo.SaasRoleCategoryVO;
|
||||
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.ResourcePermission;
|
||||
import cn.axzo.tyr.server.model.ResourcePermissionQueryDTO;
|
||||
import cn.axzo.tyr.server.model.RoleFeatureRelation;
|
||||
import cn.axzo.tyr.server.model.RoleWithFeature;
|
||||
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;
|
||||
@ -49,24 +47,10 @@ 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.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPermissionGroup;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupRoleRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRole;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleGroup;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleGroupRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasRoleWithUser;
|
||||
import cn.axzo.tyr.server.repository.entity.*;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasRoleMapper;
|
||||
import cn.axzo.tyr.server.service.PermissionGroupService;
|
||||
import cn.axzo.tyr.server.service.RoleService;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationService;
|
||||
import cn.axzo.tyr.server.service.SaasRoleGroupRelationService;
|
||||
import cn.axzo.tyr.server.service.SaasRoleGroupService;
|
||||
import cn.axzo.tyr.server.service.SaasRoleUserRelationService;
|
||||
import cn.axzo.tyr.server.service.*;
|
||||
import cn.azxo.framework.common.constatns.Constants;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
@ -74,6 +58,7 @@ import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -90,6 +75,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -163,6 +149,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
SaasFeatureResourceService saasFeatureResourceService;
|
||||
@Autowired
|
||||
private SaasRoleUserRelationService saasRoleUserRelationService;
|
||||
@Autowired
|
||||
private SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
|
||||
@Value("${groupLeader.code:projectTeamGPLeader}")
|
||||
private String groupLeaderCode;
|
||||
@ -447,6 +435,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
.groupIds(Lists.newArrayList(saasPermissionGroup.getId()))
|
||||
.relations(pgpRelations)
|
||||
.type(NEW_FEATURE)
|
||||
.operatorId(saveOrUpdateRole.getOperatorId())
|
||||
.requestData(saveOrUpdateRole)
|
||||
.build();
|
||||
saasPgroupPermissionRelationService.saveOrUpdate(upsertPermissionRelationParam);
|
||||
}
|
||||
@ -1304,6 +1294,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
saasFeatureResourceService.updateFeatureAuthType(item.getFeatureId(), item.getAuthType());
|
||||
if (CollectionUtil.isEmpty(item.getRoleIds()) || item.getAuthType() == 0) {
|
||||
saasPgroupPermissionRelationDao.removeByPermissionPointIds(Collections.singletonList(item.getFeatureId()));
|
||||
// 记录操作日志
|
||||
saveOperateLog(item.getFeatureId(), operatorId, req);
|
||||
} else {
|
||||
List<Long> existGroupIds = saasPgroupPermissionRelationDao.queryByFeatureIds(Collections.singletonList(item.getFeatureId()))
|
||||
.stream().map(SaasPgroupPermissionRelation::getGroupId).collect(Collectors.toList());
|
||||
@ -1312,7 +1304,8 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
.stream().map(SaasPgroupRoleRelation::getGroupId).collect(Collectors.toList());
|
||||
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);
|
||||
// 新增的
|
||||
if (CollectionUtils.isNotEmpty(insertGroupIds)) {
|
||||
List<SaasPgroupPermissionRelation> insertRelation = new ArrayList<>();
|
||||
@ -1500,6 +1493,37 @@ public class RoleServiceImpl extends ServiceImpl<SaasRoleMapper, SaasRole>
|
||||
Collectors.toList())));
|
||||
}
|
||||
|
||||
private void saveOperateLog(Long featureId, Long operatorId, List<FeatureRoleRelationReq.RelationRoleSettings> req) {
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureId)
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.createBy(operatorId)
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(req) ? null : JSONObject.toJSONString(req))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
.build();
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
private void saveOperateLog(Long featureId, Long operatorId, List<Long> afterGroupIds, List<FeatureRoleRelationReq.RelationRoleSettings> req) {
|
||||
SaasPgroupPermissionRelationOperateLogOperateDO operateAfter = SaasPgroupPermissionRelationOperateLogOperateDO.builder()
|
||||
.featureId(featureId)
|
||||
.groupIds(afterGroupIds)
|
||||
.build();
|
||||
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
|
||||
.type(PermissionRelationOperateLogTypeEnum.OMS_FEATURE_RESOURCE_BIND_ROLE.getValue())
|
||||
.createBy(operatorId)
|
||||
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
|
||||
.requestData(Objects.isNull(req) ? null : JSONObject.toJSONString(req))
|
||||
.operateData(JSONObject.toJSONString(operateAfter))
|
||||
.build();
|
||||
|
||||
saasPgroupPermissionRelationOperateLogService.batchSave(Lists.newArrayList(operateLog));
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationOperateLogDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/7/24
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SaasPgroupPermissionRelationOperateLogServiceImpl implements SaasPgroupPermissionRelationOperateLogService {
|
||||
|
||||
private final SaasPgroupPermissionRelationOperateLogDao saasPgroupPermissionRelationOperateLogDao;
|
||||
|
||||
@Override
|
||||
public void batchSave(List<SaasPgroupPermissionRelationOperateLog> logs) {
|
||||
if (CollectionUtils.isEmpty(logs)) {
|
||||
return;
|
||||
}
|
||||
|
||||
saasPgroupPermissionRelationOperateLogDao.saveBatch(logs);
|
||||
}
|
||||
}
|
||||
@ -6,12 +6,19 @@ 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;
|
||||
@ -19,14 +26,12 @@ 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.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -39,6 +44,7 @@ public class SaasPgroupPermissionRelationServiceImpl
|
||||
extends ServiceImpl<SaasPgroupPermissionRelationMapper, SaasPgroupPermissionRelation>
|
||||
implements SaasPgroupPermissionRelationService {
|
||||
private final SaasPgroupPermissionRelationDao saasPgroupPermissionRelationDao;
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -71,6 +77,9 @@ 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
|
||||
@ -113,4 +122,32 @@ 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