fix(REQ-2774): 增加操作日志录入接口

This commit is contained in:
李昆鹏 2024-07-25 15:46:02 +08:00
parent 3cd272860d
commit 4784bdcaa3
7 changed files with 124 additions and 1 deletions

View File

@ -38,6 +38,11 @@ public enum PermissionRelationOperateLogSceneEnum {
*/
OMS_PRODUCT_BIND_FEATURE_RESOURCE("OMS_PRODUCT_BIND_FEATURE_RESOURCE", "oms后台更新产品榜的资源"),
/**
* oms后台操作API
*/
OMS_API_UPSERT("OMS_API_UPSERT", "oms后台操作API"),
;
@EnumValue

View File

@ -0,0 +1,22 @@
package cn.axzo.tyr.client.feign;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
/**
* @author likunpeng
* @version 1.0
* @date 2024/7/25
*/
@FeignClient(name = "tyr", url = "${axzo.service.tyr:http://tyr:8080}")
public interface PermissionOperateLogApi {
/** API关联操作日志记录 **/
@PostMapping("/api/permissionOperateLog/saveRouteLog")
ApiResult<Void> saveRouteOperateLog(@RequestBody @Valid PermissionOperateLogReq req);
}

View File

@ -0,0 +1,40 @@
package cn.axzo.tyr.client.model.req;
import com.alibaba.fastjson.JSONObject;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 创建新路由请求
*
* @version V1.0
* @author: ZhanSiHu
* @date: 2023/9/11 10:33
*/
@Builder
@Data
public class PermissionOperateLogReq {
@NotBlank(message = "表名不能为空")
private String tableName;
@NotNull(message = "操作人ID不能为空")
@Min(value = 1, message = "操作人ID有误")
private Long operatorId;
@NotBlank(message = "操作人名不能为空")
private String operatorName;
@NotBlank(message = "场景不能为空")
private String scene;
private String sceneId;
private JSONObject operateData;
}

View File

@ -0,0 +1,28 @@
package cn.axzo.tyr.server.controller.permission;
import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.tyr.client.feign.PermissionOperateLogApi;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;
/**
* @author likunpeng
* @version 1.0
* @date 2024/7/25
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class PermissionOperateLogController implements PermissionOperateLogApi {
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
@Override
public ApiResult<Void> saveRouteOperateLog(PermissionOperateLogReq req) {
saasPgroupPermissionRelationOperateLogService.saveRouteOperateLog(req);
return ApiResult.ok();
}
}

View File

@ -1,5 +1,6 @@
package cn.axzo.tyr.server.service;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import cn.axzo.tyr.server.model.BasicRoleDO;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
@ -15,4 +16,6 @@ public interface SaasPgroupPermissionRelationOperateLogService {
void batchSave(List<SaasPgroupPermissionRelationOperateLog> logs);
List<BasicRoleDO> getPersonBasicRoles(Long personId);
void saveRouteOperateLog(PermissionOperateLogReq req);
}

View File

@ -494,6 +494,7 @@ public class ProductServiceImpl implements ProductService {
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
.tableName(SaasPgroupPermissionRelationOperateLogServiceImpl.TABLE_NAME_PRODUCT)
.scene(PermissionRelationOperateLogSceneEnum.OMS_PRODUCT_BIND_FEATURE_RESOURCE.getValue())
.sceneId(productId.toString())
.createBy(req.getOperator())
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
@ -520,6 +521,7 @@ public class ProductServiceImpl implements ProductService {
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
.tableName(SaasPgroupPermissionRelationOperateLogServiceImpl.TABLE_NAME_PRODUCT)
.scene(PermissionRelationOperateLogSceneEnum.OMS_PRODUCT_BIND_FEATURE_RESOURCE.getValue())
.sceneId(productId.toString())
.createBy(req.getOperator())
.createByName(Objects.isNull(operator) ? "" : operator.getRealName())
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))

View File

@ -3,17 +3,24 @@ package cn.axzo.tyr.server.service.impl;
import cn.axzo.framework.auth.domain.ContextInfo;
import cn.axzo.framework.auth.domain.ContextInfoHolder;
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
import cn.axzo.tyr.server.model.BasicRoleDO;
import cn.axzo.tyr.server.model.RelationOperateLogProductBindResourceDO;
import cn.axzo.tyr.server.repository.dao.SaasPgroupPermissionRelationOperateLogDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleDao;
import cn.axzo.tyr.server.repository.dao.SaasRoleUserRelationDao;
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
import cn.axzo.tyr.server.repository.entity.SaasRoleUserRelation;
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
import cn.axzo.tyr.server.service.SaasRoleUserService;
import cn.azxo.framework.common.constatns.Constants;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.MDC;
import org.springframework.stereotype.Service;
import java.util.Collections;
@ -67,4 +74,20 @@ public class SaasPgroupPermissionRelationOperateLogServiceImpl implements SaasPg
return saasRoleDao.lambdaQuery().in(BaseEntity::getId, relations.stream().map(SaasRoleUserRelation::getRoleId).collect(Collectors.toList())).list()
.stream().map(e -> BasicRoleDO.builder().roleId(e.getId()).roleCode(e.getRoleCode()).roleName(e.getName()).build()).collect(Collectors.toList());
}
@Override
public void saveRouteOperateLog(PermissionOperateLogReq req) {
SaasPgroupPermissionRelationOperateLog operateLog = SaasPgroupPermissionRelationOperateLog.builder()
.tableName(req.getTableName())
.scene(PermissionRelationOperateLogSceneEnum.OMS_API_UPSERT.getValue())
.sceneId(req.getSceneId())
.createBy(req.getOperatorId())
.createByName(req.getOperatorName())
.traceId(MDC.get(Constants.CTX_LOG_ID_MDC))
.requestData(JSONObject.toJSONString(req))
.operateData(Objects.nonNull(req.getOperateData()) ? JSONObject.toJSONString(Lists.newArrayList(req.getOperateData())) : null)
.createByRole(JSONObject.toJSONString(getPersonBasicRoles(req.getOperatorId())))
.build();
batchSave(Lists.newArrayList(operateLog));
}
}