From 4784bdcaa3eed4e28424a46c3b9495052b050a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=98=86=E9=B9=8F?= Date: Thu, 25 Jul 2024 15:46:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(REQ-2774):=20=E5=A2=9E=E5=8A=A0=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E5=BD=95=E5=85=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...PermissionRelationOperateLogSceneEnum.java | 5 +++ .../client/feign/PermissionOperateLogApi.java | 22 ++++++++++ .../model/req/PermissionOperateLogReq.java | 40 +++++++++++++++++++ .../PermissionOperateLogController.java | 28 +++++++++++++ ...upPermissionRelationOperateLogService.java | 3 ++ .../service/impl/ProductServiceImpl.java | 2 + ...rmissionRelationOperateLogServiceImpl.java | 25 +++++++++++- 7 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionOperateLogApi.java create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PermissionOperateLogReq.java create mode 100644 tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionOperateLogController.java diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/PermissionRelationOperateLogSceneEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/PermissionRelationOperateLogSceneEnum.java index 7d3c4f56..bced6a02 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/PermissionRelationOperateLogSceneEnum.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/PermissionRelationOperateLogSceneEnum.java @@ -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 diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionOperateLogApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionOperateLogApi.java new file mode 100644 index 00000000..c114319d --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PermissionOperateLogApi.java @@ -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 saveRouteOperateLog(@RequestBody @Valid PermissionOperateLogReq req); +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PermissionOperateLogReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PermissionOperateLogReq.java new file mode 100644 index 00000000..b38aa6ab --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/PermissionOperateLogReq.java @@ -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; +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionOperateLogController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionOperateLogController.java new file mode 100644 index 00000000..b0058bef --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PermissionOperateLogController.java @@ -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 saveRouteOperateLog(PermissionOperateLogReq req) { + saasPgroupPermissionRelationOperateLogService.saveRouteOperateLog(req); + return ApiResult.ok(); + } +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupPermissionRelationOperateLogService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupPermissionRelationOperateLogService.java index 8ab84bfc..f3a59f7f 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupPermissionRelationOperateLogService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPgroupPermissionRelationOperateLogService.java @@ -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 logs); List getPersonBasicRoles(Long personId); + + void saveRouteOperateLog(PermissionOperateLogReq req); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java index 58730f7a..d84898e6 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/ProductServiceImpl.java @@ -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)) diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationOperateLogServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationOperateLogServiceImpl.java index acf03454..3618969a 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationOperateLogServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPgroupPermissionRelationOperateLogServiceImpl.java @@ -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)); + } }