diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index da0c4e735..4c1e671a3 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -26,7 +26,7 @@
3.5.4.1
3.5.4.1
4.2.0
- 1.4.7.2
+ 1.4.8.1
3.25.0
8.1.3.62
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/pom.xml
index 5792b4cb4..51ea2e04f 100644
--- a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/pom.xml
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/pom.xml
@@ -46,6 +46,13 @@
com.google.guava
guava
+
+
+
+ io.github.mouzt
+ bizlog-sdk
+
+
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/config/YudaoOperateLogV2Configuration.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/config/YudaoOperateLogV2Configuration.java
new file mode 100644
index 000000000..fa907c8f6
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/config/YudaoOperateLogV2Configuration.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.framework.operatelogv2.config;
+
+import cn.iocoder.yudao.framework.operatelogv2.core.service.ILogRecordServiceImpl;
+import cn.iocoder.yudao.module.system.api.logger.OperateLogApi;
+import com.mzt.logapi.service.ILogRecordService;
+import com.mzt.logapi.starter.annotation.EnableLogRecord;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+
+/**
+ * mzt-biz-log 配置类
+ *
+ * @author HUIHUI
+ */
+@EnableLogRecord(tenant = "") // 貌似用不上 tenant 这玩意给个空好啦
+@AutoConfiguration
+@Slf4j
+public class YudaoOperateLogV2Configuration {
+
+ @Bean
+ @Primary
+ public ILogRecordService iLogRecordServiceImpl(OperateLogApi operateLogApi) {
+ return new ILogRecordServiceImpl(operateLogApi);
+ }
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/package-info.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/package-info.java
new file mode 100644
index 000000000..2cc0c2835
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/package-info.java
@@ -0,0 +1 @@
+package cn.iocoder.yudao.framework.operatelogv2.core;
\ No newline at end of file
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/service/ILogRecordServiceImpl.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/service/ILogRecordServiceImpl.java
similarity index 68%
rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/service/ILogRecordServiceImpl.java
rename to yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/service/ILogRecordServiceImpl.java
index 07b25343e..903f5de72 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/service/ILogRecordServiceImpl.java
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/service/ILogRecordServiceImpl.java
@@ -1,38 +1,35 @@
-package cn.iocoder.yudao.module.system.framework.bizlog.service;
+package cn.iocoder.yudao.framework.operatelogv2.core.service;
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
-import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
-import cn.iocoder.yudao.module.system.service.logger.bo.OperateLogV2CreateReqBO;
+import cn.iocoder.yudao.module.system.api.logger.OperateLogApi;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2CreateReqDTO;
import com.mzt.logapi.beans.LogRecord;
import com.mzt.logapi.service.ILogRecordService;
-import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
-// TODO @puhui999:这个应该搞到 operatelog 组件里哈;
/**
* 操作日志 ILogRecordService 实现类
*
- * 基于 {@link OperateLogService} 实现,记录操作日志
+ * 基于 {@link OperateLogApi} 实现,记录操作日志
*
* @author HUIHUI
*/
@Slf4j
-@Service
+@RequiredArgsConstructor
public class ILogRecordServiceImpl implements ILogRecordService {
- @Resource
- private OperateLogService operateLogService;
+ private final OperateLogApi operateLogApi;
@Override
public void record(LogRecord logRecord) {
- OperateLogV2CreateReqBO reqBO = new OperateLogV2CreateReqBO();
+ OperateLogV2CreateReqDTO reqBO = new OperateLogV2CreateReqDTO();
// 补全通用字段
reqBO.setTraceId(TracerUtils.getTraceId());
// 补充用户信息
@@ -42,24 +39,24 @@ public class ILogRecordServiceImpl implements ILogRecordService {
// 补全请求信息
fillRequestFields(reqBO);
// 异步记录日志
- operateLogService.createOperateLogV2(reqBO);
+ operateLogApi.createOperateLogV2(reqBO);
log.info("操作日志 ===> {}", reqBO);
}
- private static void fillUserFields(OperateLogV2CreateReqBO reqBO) {
+ private static void fillUserFields(OperateLogV2CreateReqDTO reqBO) {
reqBO.setUserId(WebFrameworkUtils.getLoginUserId());
reqBO.setUserType(WebFrameworkUtils.getLoginUserType());
}
- public static void fillModuleFields(OperateLogV2CreateReqBO reqBO, LogRecord logRecord) {
- reqBO.setModule(logRecord.getType()); // 大模块类型如 crm-客户
- reqBO.setName(logRecord.getSubType());// 操作名称如 转移客户
+ public static void fillModuleFields(OperateLogV2CreateReqDTO reqBO, LogRecord logRecord) {
+ reqBO.setType(logRecord.getType()); // 大模块类型如 crm-客户
+ reqBO.setSubType(logRecord.getSubType());// 操作名称如 转移客户
reqBO.setBizId(Long.parseLong(logRecord.getBizNo())); // 操作模块业务编号
reqBO.setContent(logRecord.getAction());// 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。
reqBO.setExtra(logRecord.getExtra()); // 拓展字段,有些复杂的业务,需要记录一些字段 ( JSON 格式 ),例如说,记录订单编号,{ orderId: "1"}
}
- private static void fillRequestFields(OperateLogV2CreateReqBO reqBO) {
+ private static void fillRequestFields(OperateLogV2CreateReqDTO reqBO) {
// 获得 Request 对象
HttpServletRequest request = ServletUtils.getRequest();
if (request == null) {
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/vo/OperateLogV2PageReqVO.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/vo/OperateLogV2PageReqVO.java
new file mode 100644
index 000000000..8d7a535ad
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/core/vo/OperateLogV2PageReqVO.java
@@ -0,0 +1,20 @@
+package cn.iocoder.yudao.framework.operatelogv2.core.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 操作日志分页 Request VO")
+@Data
+public class OperateLogV2PageReqVO extends PageParam {
+
+ @Schema(description = "模块数据编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+ private Long bizId;
+
+ @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Long userId;
+
+ @Schema(description = "模块类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private String bizType;
+
+}
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/package-info.java b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/package-info.java
new file mode 100644
index 000000000..439ddc3de
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelogv2/package-info.java
@@ -0,0 +1 @@
+package cn.iocoder.yudao.framework.operatelogv2;
\ No newline at end of file
diff --git a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 04ccab1cd..3fb6d2cc9 100644
--- a/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,2 @@
-cn.iocoder.yudao.framework.operatelog.config.YudaoOperateLogAutoConfiguration
\ No newline at end of file
+cn.iocoder.yudao.framework.operatelog.config.YudaoOperateLogAutoConfiguration
+cn.iocoder.yudao.framework.operatelogv2.config.YudaoOperateLogV2Configuration
\ No newline at end of file
diff --git a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
index ae8c795ab..9435ec27d 100644
--- a/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
+++ b/yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
@@ -22,6 +22,5 @@ public interface LogRecordConstants {
//======================= 客户转移操作日志 =======================
String TRANSFER_CUSTOMER_LOG_SUCCESS = "把客户【{{#crmCustomer.name}}】的负责人从【{getAdminUserById{#crmCustomer.ownerUserId}}】变更为了【{getAdminUserById{#reqVO.newOwnerUserId}}】";
- String TRANSFER_CUSTOMER_LOG_FAIL = ""; // TODO @puhui999:这个可以删除哈,一般不搞失败的日志
}
diff --git a/yudao-module-system/yudao-module-system-api/pom.xml b/yudao-module-system/yudao-module-system-api/pom.xml
index 2a60b20b8..c98baf3dd 100644
--- a/yudao-module-system/yudao-module-system-api/pom.xml
+++ b/yudao-module-system/yudao-module-system-api/pom.xml
@@ -22,32 +22,12 @@
yudao-common
-
-
-
-
- io.github.mouzt
- bizlog-sdk
-
-
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
- com.fasterxml.jackson.core
- jackson-core
-
-
org.springframework.boot
spring-boot-starter-validation
true
-
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApi.java
index ad42c87f7..509d3f0a1 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApi.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApi.java
@@ -1,11 +1,12 @@
package cn.iocoder.yudao.module.system.api.logger;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2CreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO;
import jakarta.validation.Valid;
-import java.util.List;
-
/**
* 操作日志 API 接口
*
@@ -21,12 +22,18 @@ public interface OperateLogApi {
void createOperateLog(@Valid OperateLogCreateReqDTO createReqDTO);
/**
- * 获取指定模块的指定数据的操作日志
+ * 创建操作日志
*
- * @param module 操作模块
- * @param bizId 操作模块编号
- * @return 操作日志
+ * @param createReqDTO 请求
*/
- List getOperateLogByModuleAndBizId(String module, Long bizId);
+ void createOperateLogV2(@Valid OperateLogV2CreateReqDTO createReqDTO);
+
+ /**
+ * 获取指定模块的指定数据的操作日志分页
+ *
+ * @param pageReqVO 请求
+ * @return 操作日志分页
+ */
+ PageResult getOperateLogPage(OperateLogV2PageReqDTO pageReqVO);
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/bo/OperateLogV2CreateReqBO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2CreateReqDTO.java
similarity index 80%
rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/bo/OperateLogV2CreateReqBO.java
rename to yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2CreateReqDTO.java
index d6c44604c..8904bf072 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/bo/OperateLogV2CreateReqBO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2CreateReqDTO.java
@@ -1,7 +1,8 @@
-package cn.iocoder.yudao.module.system.service.logger.bo;
+package cn.iocoder.yudao.module.system.api.logger.dto;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
@@ -10,7 +11,7 @@ import lombok.Data;
* @author HUIHUI
*/
@Data
-public class OperateLogV2CreateReqBO {
+public class OperateLogV2CreateReqDTO {
/**
* 链路追踪编号
@@ -23,29 +24,29 @@ public class OperateLogV2CreateReqBO {
*
* 关联 MemberUserDO 的 id 属性,或者 AdminUserDO 的 id 属性
*/
- @NotEmpty(message = "用户编号不能为空")
+ @NotNull(message = "用户编号不能为空")
private Long userId;
/**
* 用户类型
*
* 关联 {@link UserTypeEnum}
*/
- @NotEmpty(message = "用户类型不能为空")
+ @NotNull(message = "用户类型不能为空")
private Integer userType;
/**
- * 操作模块
+ * 操作模块类型
*/
- @NotEmpty(message = "操作模块不能为空")
- private String module;
+ @NotEmpty(message = "操作模块类型不能为空")
+ private String type;
/**
* 操作名
*/
@NotEmpty(message = "操作名不能为空")
- private String name;
+ private String subType;
/**
* 操作模块业务编号
*/
- @NotEmpty(message = "操作模块业务编号不能为空")
+ @NotNull(message = "操作模块业务编号不能为空")
private Long bizId;
/**
* 操作内容,记录整个操作的明细
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2PageReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2PageReqDTO.java
new file mode 100644
index 000000000..aa54c3f5c
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2PageReqDTO.java
@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.module.system.api.logger.dto;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import lombok.Data;
+
+/**
+ * 操作日志分页 Request DTO
+ *
+ * @author HUIHUI
+ */
+@Data
+public class OperateLogV2PageReqDTO extends PageParam {
+
+ /**
+ * 模块类型
+ */
+ private String bizType;
+ /**
+ * 模块数据编号
+ */
+ private Long bizId;
+
+ /**
+ * 用户编号
+ */
+ private Long userId;
+
+}
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2RespDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2RespDTO.java
index a7670541d..2a3ca002c 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2RespDTO.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/logger/dto/OperateLogV2RespDTO.java
@@ -1,14 +1,7 @@
package cn.iocoder.yudao.module.system.api.logger.dto;
-import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
-import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
-
/**
* 系统操作日志 Resp DTO
*
@@ -25,6 +18,10 @@ public class OperateLogV2RespDTO {
* 用户编号
*/
private Long userId;
+ /**
+ * 用户名称
+ */
+ private String userName;
/**
* 用户类型
*/
@@ -68,20 +65,8 @@ public class OperateLogV2RespDTO {
private String userAgent;
/**
- * 创建时间
+ * 创建时间, 直接返回字符串
*/
- // TODO puhui999: 木得效果怎么肥事
- @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
- private LocalDateTime createTime;
-
- // TODO @puhui999:下面 2 个字段不用返回;用 userId 哈;返回一个 userName
- /**
- * 创建者
- */
- private String creator;
- /**
- * 创建者名称
- */
- private String creatorName;
+ private String createTime;
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApiImpl.java
index d748bcc23..4e0ff0397 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApiImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/logger/OperateLogApiImpl.java
@@ -1,18 +1,22 @@
package cn.iocoder.yudao.module.system.api.logger;
import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2CreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO;
+import cn.iocoder.yudao.module.system.convert.logger.OperateLogConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogV2DO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import jakarta.annotation.Resource;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -39,21 +43,31 @@ public class OperateLogApiImpl implements OperateLogApi {
}
@Override
- public List getOperateLogByModuleAndBizId(String module, Long bizId) {
- List logList = operateLogService.getOperateLogByModuleAndBizId(module, bizId);
- if (CollUtil.isEmpty(logList)) {
- return Collections.emptyList();
+ @Async
+ public void createOperateLogV2(OperateLogV2CreateReqDTO createReqDTO) {
+ operateLogService.createOperateLogV2(createReqDTO);
+ }
+
+ @Override
+ public PageResult getOperateLogPage(OperateLogV2PageReqDTO pageReqVO) {
+ PageResult operateLogPage = operateLogService.getOperateLogPage(pageReqVO);
+ if (CollUtil.isEmpty(operateLogPage.getList())) {
+ return PageResult.empty();
}
// 获取用户
- List userList = adminUserService.getUserList(convertSet(logList, item -> Long.parseLong(item.getCreator())));
+ List userList = adminUserService.getUserList(convertSet(operateLogPage.getList(), OperateLogV2DO::getUserId));
+ return BeanUtils.toBean(operateLogPage, OperateLogV2RespDTO.class).setList(setUserInfo(operateLogPage.getList(), userList));
+ }
+
+ private static List setUserInfo(List logList, List userList) {
Map userMap = convertMap(userList, AdminUserDO::getId);
return convertList(logList, item -> {
- OperateLogV2RespDTO bean = BeanUtils.toBean(item, OperateLogV2RespDTO.class);
- findAndThen(userMap, Long.parseLong(item.getCreator()), user -> {
- bean.setCreatorName(user.getNickname());
+ OperateLogV2RespDTO respDTO = OperateLogConvert.INSTANCE.convert(item);
+ findAndThen(userMap, item.getUserId(), user -> {
+ respDTO.setUserName(user.getNickname());
});
- return bean;
+ return respDTO;
});
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/logger/OperateLogConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/logger/OperateLogConvert.java
index 7b3aff8c0..eebbedc7d 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/logger/OperateLogConvert.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/logger/OperateLogConvert.java
@@ -3,15 +3,20 @@ package cn.iocoder.yudao.module.system.convert.logger;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2RespDTO;
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogV2DO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.List;
import java.util.Map;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
@Mapper
public interface OperateLogConvert {
@@ -25,4 +30,7 @@ public interface OperateLogConvert {
});
}
+ @Mapping(target = "createTime", source = "logV2DO.createTime", dateFormat = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ OperateLogV2RespDTO convert(OperateLogV2DO logV2DO);
+
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogV2DO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogV2DO.java
index 10035c8e9..56845b131 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogV2DO.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogV2DO.java
@@ -42,15 +42,14 @@ public class OperateLogV2DO extends BaseDO {
* 关联 {@link UserTypeEnum}
*/
private Integer userType;
- // TODO @puhui999:module 改成 type,name 改成 subType;
/**
- * 操作模块
+ * 操作模块类型
*/
- private String module;
+ private String type;
/**
* 操作名
*/
- private String name;
+ private String subType;
/**
* 操作模块业务编号
*/
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogV2Mapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogV2Mapper.java
index 362f0d2c4..0b2458106 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogV2Mapper.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/logger/OperateLogV2Mapper.java
@@ -3,28 +3,29 @@ package cn.iocoder.yudao.module.system.dal.mysql.logger;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO;
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogV2DO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
-import java.util.List;
@Mapper
public interface OperateLogV2Mapper extends BaseMapperX {
default PageResult selectPage(OperateLogPageReqVO reqVO, Collection userIds) {
LambdaQueryWrapperX query = new LambdaQueryWrapperX()
- .likeIfPresent(OperateLogV2DO::getModule, reqVO.getModule())
+ .likeIfPresent(OperateLogV2DO::getType, reqVO.getModule())
.inIfPresent(OperateLogV2DO::getUserId, userIds);
query.orderByDesc(OperateLogV2DO::getId); // 降序
return selectPage(reqVO, query);
}
- default List selectListByModuleAndBizId(String module, Long bizId) {
- return selectList(new LambdaQueryWrapperX()
- .eq(OperateLogV2DO::getModule, module)
- .eq(OperateLogV2DO::getBizId, bizId)
+ default PageResult selectPage(OperateLogV2PageReqDTO pageReqVO) {
+ return selectPage(pageReqVO, new LambdaQueryWrapperX()
+ .eqIfPresent(OperateLogV2DO::getType, pageReqVO.getBizType())
+ .eqIfPresent(OperateLogV2DO::getBizId, pageReqVO.getBizId())
+ .eqIfPresent(OperateLogV2DO::getUserId, pageReqVO.getUserId())
.orderByDesc(OperateLogV2DO::getCreateTime));
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/config/YudaoOperateLogV2Configuration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/config/YudaoOperateLogV2Configuration.java
deleted file mode 100644
index a5f3a9eaa..000000000
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/bizlog/config/YudaoOperateLogV2Configuration.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.iocoder.yudao.module.system.framework.bizlog.config;
-
-import com.mzt.logapi.starter.annotation.EnableLogRecord;
-import org.springframework.context.annotation.Configuration;
-
-// TODO @puhui999:挪到 yudao-spring-boot-starter-biz-operatelog 下,搞个 cn.iocoder.yudao.framework.operatelogv2;跑通后,我们直接就删除老的实现了;
-/**
- * mzt-biz-log 配置类
- *
- * @author HUIHUI
- */
-@Configuration(proxyBeanMethods = false)
-@EnableLogRecord(tenant = "") // 貌似用不上 tenant 这玩意给个空好啦
-public class YudaoOperateLogV2Configuration {
-
-}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java
index 971685857..27ced45a0 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogService.java
@@ -2,12 +2,11 @@ package cn.iocoder.yudao.module.system.service.logger;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2CreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO;
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogV2DO;
-import cn.iocoder.yudao.module.system.service.logger.bo.OperateLogV2CreateReqBO;
-
-import java.util.List;
/**
* 操作日志 Service 接口
@@ -38,16 +37,14 @@ public interface OperateLogService {
*
* @param createReqBO 创建请求
*/
- void createOperateLogV2(OperateLogV2CreateReqBO createReqBO);
+ void createOperateLogV2(OperateLogV2CreateReqDTO createReqBO);
- // TODO @puhui999:module 改成 type
/**
- * 获取指定模块的指定数据的操作日志
+ * 获得操作日志分页列表
*
- * @param module 操作模块
- * @param bizId 操作模块编号
- * @return 操作日志
+ * @param pageReqVO 分页条件
+ * @return 操作日志分页列表
*/
- List getOperateLogByModuleAndBizId(String module, Long bizId);
+ PageResult getOperateLogPage(OperateLogV2PageReqDTO pageReqVO);
}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
index 39c84ed33..f66e9a0ae 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/logger/OperateLogServiceImpl.java
@@ -6,13 +6,14 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogCreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2CreateReqDTO;
+import cn.iocoder.yudao.module.system.api.logger.dto.OperateLogV2PageReqDTO;
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogV2DO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogMapper;
import cn.iocoder.yudao.module.system.dal.mysql.logger.OperateLogV2Mapper;
-import cn.iocoder.yudao.module.system.service.logger.bo.OperateLogV2CreateReqBO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -20,7 +21,6 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.Collection;
-import java.util.List;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO.JAVA_METHOD_ARGS_MAX_LENGTH;
@@ -69,14 +69,15 @@ public class OperateLogServiceImpl implements OperateLogService {
// ======================= LOG V2 =======================
@Override
- public void createOperateLogV2(OperateLogV2CreateReqBO createReqBO) {
+ public void createOperateLogV2(OperateLogV2CreateReqDTO createReqBO) {
OperateLogV2DO log = BeanUtils.toBean(createReqBO, OperateLogV2DO.class);
operateLogV2Mapper.insert(log);
}
+
@Override
- public List getOperateLogByModuleAndBizId(String module, Long bizId) {
- return operateLogV2Mapper.selectListByModuleAndBizId(module, bizId);
+ public PageResult getOperateLogPage(OperateLogV2PageReqDTO pageReqVO) {
+ return operateLogV2Mapper.selectPage(pageReqVO);
}
}