From ffaaa55c3c04dacb565292efc7a1ebd421d3e92a Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Fri, 16 Jan 2026 15:04:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogApiController.java          |    1 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.java            |   29 +++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/GenericConverter.java              |   28 +++
 drone-ops/drone-log/pom.xml                                                                   |    4 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.xml             |   43 +++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/IdParam.java                       |   40 +++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogUsualController.java        |    1 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/dto/OperationLogDTO.java                  |   37 ++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/feign/LogClient.java                      |    2 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/vo/OperationLogVO.java                    |   47 +++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/IOperationLogService.java         |   24 +++
 drone-ops/drone-swagger/src/main/resources/application-dev.yml                                |    7 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/wrapper/OperationLogWrapper.java          |   32 ++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/OperationLogController.java    |   74 +++++++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/model/OperationLog.java                   |   30 +++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/impl/OperationLogServiceImpl.java |   43 +++++
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogErrorController.java        |    1 
 drone-ops/drone-log/src/main/java/org/sxkj/core/log/param/OperationLogPageParam.java          |   27 +++
 18 files changed, 468 insertions(+), 2 deletions(-)

diff --git a/drone-ops/drone-log/pom.xml b/drone-ops/drone-log/pom.xml
index 27ce4a3..d64c5ee 100644
--- a/drone-ops/drone-log/pom.xml
+++ b/drone-ops/drone-log/pom.xml
@@ -25,6 +25,10 @@
         </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-swagger</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
             <artifactId>blade-starter-tenant</artifactId>
         </dependency>
         <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/GenericConverter.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/GenericConverter.java
new file mode 100644
index 0000000..d638094
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/GenericConverter.java
@@ -0,0 +1,28 @@
+package org.sxkj.core.log.common;
+
+import org.springblade.core.tool.utils.BeanUtil;
+
+import java.io.Serializable;
+
+/**
+ * @Description 通用转换工具类
+ * @Author AIX
+ * @Date 2026/1/12 10:22
+ * @Version 1.0
+ */
+public class GenericConverter implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    public static <S, T> T convert(S source, Class<T> targetType) {
+        T target = BeanUtil.newInstance(targetType);
+        BeanUtil.copy(source, target);
+        return target;
+    }
+
+    public static <S, T> T copy(S source, T target) {
+        BeanUtil.copy(source, target);
+        return target;
+    }
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/IdParam.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/IdParam.java
new file mode 100644
index 0000000..371cd19
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/common/IdParam.java
@@ -0,0 +1,40 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.sxkj.core.log.common;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 设备跟踪流转表 数据传输对象实体类
+ *
+ * @author aix
+ * @since 2026-01-08
+ */
+@Data
+public class IdParam implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "主键", required = true)
+	@NotNull
+	private Long id;
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogApiController.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogApiController.java
index 1e6d1ac..1912213 100644
--- a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogApiController.java
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogApiController.java
@@ -45,6 +45,7 @@
 @RestController
 @AllArgsConstructor
 @RequestMapping("/api")
+@ApiIgnore
 public class LogApiController {
 
 	private final ILogApiService logService;
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogErrorController.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogErrorController.java
index 9af3dd9..dacb5a1 100644
--- a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogErrorController.java
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogErrorController.java
@@ -42,6 +42,7 @@
 @RestController
 @AllArgsConstructor
 @RequestMapping("/error")
+@ApiIgnore
 public class LogErrorController {
 
 	private final ILogErrorService errorLogService;
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogUsualController.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogUsualController.java
index 34a18a1..03d90ef 100644
--- a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogUsualController.java
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/LogUsualController.java
@@ -44,6 +44,7 @@
 @RestController
 @AllArgsConstructor
 @RequestMapping("/usual")
+@ApiIgnore
 public class LogUsualController {
 
 	private final ILogUsualService logService;
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/OperationLogController.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/OperationLogController.java
new file mode 100644
index 0000000..d66b9ee
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/controller/OperationLogController.java
@@ -0,0 +1,74 @@
+package org.sxkj.core.log.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+import org.sxkj.core.log.dto.OperationLogDTO;
+import org.sxkj.core.log.model.OperationLog;
+import org.sxkj.core.log.param.OperationLogPageParam;
+import org.sxkj.core.log.service.IOperationLogService;
+import org.sxkj.core.log.vo.OperationLogVO;
+import org.sxkj.core.log.wrapper.OperationLogWrapper;
+
+import javax.validation.Valid;
+
+/**
+ * @Description 操作日志控制器
+ * @Author AIX
+ * @Date 2026/1/15 17:33
+ * @Version 1.0
+ */
+@NonDS
+@RestController
+@AllArgsConstructor
+@RequestMapping("/log/operationLog")
+@Api(value = "操作日志", tags = "操作日志")
+public class OperationLogController extends BladeController {
+
+    private final IOperationLogService operationLogService;
+
+    /**
+     * 查询单条
+     */
+    @GetMapping("/detail")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "详情", notes = "详情")
+    public R<OperationLog> detail(OperationLog log) {
+        return R.data(operationLogService.getOne(Condition.getQueryWrapper(log)));
+    }
+
+    /**
+     * 自定义分页查询
+     * @param operationLogPageParam
+     * @param query
+     * @return
+     */
+    @GetMapping("/page")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "分页", notes = "分页")
+    public R<IPage<OperationLogVO>> page(OperationLogPageParam operationLogPageParam, Query query) {
+        IPage<OperationLogVO> pages = operationLogService.selectOperationLogPage(Condition.getPage(query),
+                operationLogPageParam);
+        return R.data(pages);
+    }
+
+    /**
+     * 新增操作日志
+     */
+    @PostMapping("/save")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "新增操作日志", notes = "新增操作日志")
+    public R<Boolean> save(@Valid @RequestBody OperationLogDTO operationLogDTO) {
+        OperationLog operationLog = OperationLogWrapper.build().entityDTO(operationLogDTO);
+        return R.status(operationLogService.save(operationLog));
+    }
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/dto/OperationLogDTO.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/dto/OperationLogDTO.java
new file mode 100644
index 0000000..8fa5c87
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/dto/OperationLogDTO.java
@@ -0,0 +1,37 @@
+package org.sxkj.core.log.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description 操作日志DTO
+ * @Author AIX
+ * @Date 2026/1/15 17:42
+ * @Version 1.0
+ */
+@Data
+public class OperationLogDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "当前菜单地址", required = true)
+    @NotNull
+    private String requestUri;
+
+    /**
+     * 日志类型(0菜单/1按钮)
+     */
+    @ApiModelProperty(value = "日志类型(0菜单/1按钮)", required = true)
+    @NotNull
+    private String type;
+    /**
+     * 日志标题
+     */
+    @ApiModelProperty(value = "日志标题", required = true)
+    @NotNull
+    private String title;
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/feign/LogClient.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/feign/LogClient.java
index 47939fb..b7829de 100644
--- a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/feign/LogClient.java
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/feign/LogClient.java
@@ -29,6 +29,7 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
 
 import java.util.Date;
 
@@ -40,6 +41,7 @@
 @NonDS
 @RestController
 @AllArgsConstructor
+@ApiIgnore
 public class LogClient implements ILogClient {
 
 	private final ILogUsualService usualLogService;
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.java
new file mode 100644
index 0000000..5c06bfc
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.java
@@ -0,0 +1,29 @@
+package org.sxkj.core.log.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.sxkj.core.log.dto.OperationLogDTO;
+import org.sxkj.core.log.model.OperationLog;
+import org.sxkj.core.log.param.OperationLogPageParam;
+import org.sxkj.core.log.vo.LogApiVO;
+import org.sxkj.core.log.vo.OperationLogVO;
+
+import java.util.List;
+
+/**
+ * 操作日志 Mapper 接口
+ *
+ * @author Aix
+ */
+public interface OperationLogMapper extends BaseMapper<OperationLog> {
+
+    /**
+     * 自定义分页查询
+     * @param param
+     * @param page
+     * @return
+     */
+    List<OperationLogVO> selectOperationLogPage(IPage<OperationLogVO> page, @Param("param") OperationLogPageParam param);
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.xml b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.xml
new file mode 100644
index 0000000..9835383
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/mapper/OperationLogMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.sxkj.core.log.mapper.OperationLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="logResultMap" type="org.sxkj.core.log.model.OperationLog">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="service_id" property="serviceId"/>
+        <result column="server_host" property="serverHost"/>
+        <result column="server_ip" property="serverIp"/>
+        <result column="env" property="env"/>
+        <result column="type" property="type"/>
+        <result column="title" property="title"/>
+        <result column="method" property="method"/>
+        <result column="request_uri" property="requestUri"/>
+        <result column="user_agent" property="userAgent"/>
+        <result column="remote_ip" property="remoteIp"/>
+        <result column="method_class" property="methodClass"/>
+        <result column="method_name" property="methodName"/>
+        <result column="params" property="params"/>
+        <result column="create_by" property="createBy"/>
+    </resultMap>
+
+    <!--自定义分页查询-->
+    <select id="selectOperationLogPage" resultType="org.sxkj.core.log.vo.OperationLogVO">
+        select * from ja_log_operation_log
+        <where>
+            <if test="param.title!=null and param.title!=''">
+                and title like concat('%',#{param.title},'%')
+            </if>
+            <if test="param.createBy!=null and param.createBy!=''">
+                and create_by like concat('%',#{param.createBy},'%')
+            </if>
+            <if test="param.startTime!=null and param.startTime!=''">
+                and date_format(create_time,'%Y-%m-%d') &gt;= #{param.startTime}
+            </if>
+            <if test="param.endTime!=null and param.endTime!=''">
+                and date_format(create_time,'%Y-%m-%d') &lt;= #{param.endTime}
+            </if>
+        </where>
+    </select>
+</mapper>
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/model/OperationLog.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/model/OperationLog.java
new file mode 100644
index 0000000..73918ce
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/model/OperationLog.java
@@ -0,0 +1,30 @@
+package org.sxkj.core.log.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.log.model.LogAbstract;
+
+/**
+ * @Description 操作日志
+ * @Author AIX
+ * @Date 2026/1/15 16:50
+ * @Version 1.0
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("ja_log_operation_log")
+@Data
+public class OperationLog extends LogAbstract {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 日志类型(0菜单/1按钮)
+     */
+    private String type;
+    /**
+     * 日志标题
+     */
+    private String title;
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/param/OperationLogPageParam.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/param/OperationLogPageParam.java
new file mode 100644
index 0000000..c76c206
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/param/OperationLogPageParam.java
@@ -0,0 +1,27 @@
+package org.sxkj.core.log.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description 操作日志查询参数
+ * @Author AIX
+ * @Date 2026/1/16 10:21
+ * @Version 1.0
+ */
+@Data
+public class OperationLogPageParam {
+
+    @ApiModelProperty(value = "日志类型(0菜单/1按钮)")
+    private String title;
+
+    @ApiModelProperty(value = "操作人")
+    private String createBy;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/IOperationLogService.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/IOperationLogService.java
new file mode 100644
index 0000000..abfdadb
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/IOperationLogService.java
@@ -0,0 +1,24 @@
+package org.sxkj.core.log.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.sxkj.core.log.model.OperationLog;
+import org.sxkj.core.log.param.OperationLogPageParam;
+import org.sxkj.core.log.vo.OperationLogVO;
+
+/**
+ * 服务类
+ *
+ * @author Aix
+ */
+public interface IOperationLogService extends IService<OperationLog> {
+
+    /**
+     * 自定义分页查询
+     * @param operationLogPageParam
+     * @param page
+     * @return
+     */
+    IPage<OperationLogVO> selectOperationLogPage(IPage<OperationLogVO> page, OperationLogPageParam operationLogPageParam);
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/impl/OperationLogServiceImpl.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/impl/OperationLogServiceImpl.java
new file mode 100644
index 0000000..261d88d
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/service/impl/OperationLogServiceImpl.java
@@ -0,0 +1,43 @@
+package org.sxkj.core.log.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.log.utils.LogAbstractUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.WebUtil;
+import org.springframework.stereotype.Service;
+import org.sxkj.core.log.dto.OperationLogDTO;
+import org.sxkj.core.log.mapper.OperationLogMapper;
+import org.sxkj.core.log.model.OperationLog;
+import org.sxkj.core.log.param.OperationLogPageParam;
+import org.sxkj.core.log.service.IOperationLogService;
+import org.sxkj.core.log.vo.OperationLogVO;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @Description 操作日志服务实现类
+ * @Author AIX
+ * @Date 2026/1/15 17:24
+ * @Version 1.0
+ */
+@Service
+public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, OperationLog> implements IOperationLogService {
+
+    @Override
+    public IPage<OperationLogVO> selectOperationLogPage(IPage<OperationLogVO> page, OperationLogPageParam operationLogPageParam) {
+        return page.setRecords(baseMapper.selectOperationLogPage(page,operationLogPageParam));
+    }
+
+    @Override
+    public boolean save(OperationLog entity) {
+        String requestUri = entity.getRequestUri();
+        LogAbstractUtil.addRequestInfoToLog(WebUtil.getRequest(), entity);
+        entity.setCreateBy(AuthUtil.getNickName());
+        entity.setRequestUri(StringUtil.isBlank(requestUri)?entity.getRequestUri():requestUri);
+        return super.save(entity);
+    }
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/vo/OperationLogVO.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/vo/OperationLogVO.java
new file mode 100644
index 0000000..875b57a
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/vo/OperationLogVO.java
@@ -0,0 +1,47 @@
+package org.sxkj.core.log.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description 操作日志
+ * @Author AIX
+ * @Date 2026/1/15 17:16
+ * @Version 1.0
+ */
+@Data
+public class OperationLogVO {
+
+    /**
+     * 日志类型(0菜单/1按钮)
+     */
+    @ApiModelProperty(value = "日志类型(0菜单/1按钮)")
+    private String type;
+    /**
+     * 日志标题
+     */
+    @ApiModelProperty(value = "日志标题")
+    private String title;
+
+    /**
+     * 请求地址
+     */
+    @ApiModelProperty(value = "请求地址")
+    private String requestUri;
+
+    /**
+     * 客户端IP
+     */
+    @ApiModelProperty(value = "客户端IP")
+    private String remoteIp;
+
+    /**
+     * 客户端
+     */
+    @ApiModelProperty(value = "客户端")
+    private String userAgent;
+
+    @ApiModelProperty(value = "操作人")
+    private String createBy;
+
+}
diff --git a/drone-ops/drone-log/src/main/java/org/sxkj/core/log/wrapper/OperationLogWrapper.java b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/wrapper/OperationLogWrapper.java
new file mode 100644
index 0000000..a5487d2
--- /dev/null
+++ b/drone-ops/drone-log/src/main/java/org/sxkj/core/log/wrapper/OperationLogWrapper.java
@@ -0,0 +1,32 @@
+package org.sxkj.core.log.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.sxkj.core.log.dto.OperationLogDTO;
+import org.sxkj.core.log.model.OperationLog;
+import org.sxkj.core.log.vo.OperationLogVO;
+
+import java.util.Objects;
+
+/**
+ * @Description 操作日志包装类
+ * @Author AIX
+ * @Date 2026/1/15 17:40
+ * @Version 1.0
+ */
+public class OperationLogWrapper extends BaseEntityWrapper<OperationLog, OperationLogVO> {
+
+    public static OperationLogWrapper build() {
+        return new OperationLogWrapper();
+    }
+
+    @Override
+    public OperationLogVO entityVO(OperationLog entity) {
+        return Objects.requireNonNull(BeanUtil.copy(entity, OperationLogVO.class));
+    }
+
+    public OperationLog entityDTO(OperationLogDTO operationLogDTO) {
+        return Objects.requireNonNull(BeanUtil.copy(operationLogDTO, OperationLog.class));
+    }
+
+}
diff --git a/drone-ops/drone-swagger/src/main/resources/application-dev.yml b/drone-ops/drone-swagger/src/main/resources/application-dev.yml
index 9ba44bf..459244f 100644
--- a/drone-ops/drone-swagger/src/main/resources/application-dev.yml
+++ b/drone-ops/drone-swagger/src/main/resources/application-dev.yml
@@ -1,15 +1,18 @@
 knife4j:
   cloud:
     routes:
-      - name: blade-system
+      - name: 系统管理
         uri: 127.0.0.1
         location: /blade-system/v2/api-docs
-      - name: blade-resource
+      - name: 资源管理
         uri: 127.0.0.1
         location: /blade-resource/v2/api-docs
       - name: 反无相关
         uri: 127.0.0.1
         location: /drone-fw/v2/api-docs
+      - name: 日志相关
+        uri: 127.0.0.1
+        location: /blade-log/v2/api-docs
 
 
 

--
Gitblit v1.9.3