From 05c76fa3ec61bbcefe68b7578da8f3b51378c43a Mon Sep 17 00:00:00 2001
From: wangys <3401275564@qq.com>
Date: Thu, 1 Jan 2026 17:01:56 +0800
Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../database/postgres/sql/createTableLog.sql | 41 +--
.../postgres/sql/createTableMessage.sql | 8 +-
.../database/postgres/sql/initDataMessage.sql | 2 +-
urbanLifelineServ/apis/api-log/pom.xml | 22 --
.../api/message/vo/MessageReceiverVO.java | 2 +-
.../api/system/constance/SysLogContants.java | 18 ++
.../org/xyzh/api/system}/dto/TbSysLogDTO.java | 8 +-
.../api/system}/dto/TbSysLoginLogDTO.java | 2 +-
.../xyzh/api/system/service/LogService.java | 54 ++++
urbanLifelineServ/apis/pom.xml | 6 -
urbanLifelineServ/log/pom.xml | 111 --------
.../src/main/java/org/xyzh/log/LogApp.java | 24 --
.../org/xyzh/log/config/OpenApiConfig.java | 58 ----
.../log/src/main/resources/application.yml | 99 -------
.../log/src/main/resources/log4j2.xml | 65 -----
urbanLifelineServ/pom.xml | 1 -
.../xyzh/system/controller/LogController.java | 69 +++++
.../system}/mapper/log/TbSysLogMapper.java | 4 +-
.../mapper/log/TbSysLoginLogMapper.java | 4 +-
.../system/service/impl/LogServiceImpl.java | 137 ++++++++++
.../resources/mapper/log/TbSysLogMapper.xml | 254 ++++++++++++++++++
.../mapper/log/TbSysLoginLogMapper.xml | 186 +++++++++++++
22 files changed, 757 insertions(+), 418 deletions(-)
delete mode 100644 urbanLifelineServ/apis/api-log/pom.xml
create mode 100644 urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/constance/SysLogContants.java
rename urbanLifelineServ/apis/{api-log/src/main/java/org/xyzh/api/log => api-system/src/main/java/org/xyzh/api/system}/dto/TbSysLogDTO.java (87%)
rename urbanLifelineServ/apis/{api-log/src/main/java/org/xyzh/api/log => api-system/src/main/java/org/xyzh/api/system}/dto/TbSysLoginLogDTO.java (97%)
create mode 100644 urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/service/LogService.java
delete mode 100644 urbanLifelineServ/log/pom.xml
delete mode 100644 urbanLifelineServ/log/src/main/java/org/xyzh/log/LogApp.java
delete mode 100644 urbanLifelineServ/log/src/main/java/org/xyzh/log/config/OpenApiConfig.java
delete mode 100644 urbanLifelineServ/log/src/main/resources/application.yml
delete mode 100644 urbanLifelineServ/log/src/main/resources/log4j2.xml
create mode 100644 urbanLifelineServ/system/src/main/java/org/xyzh/system/controller/LogController.java
rename urbanLifelineServ/{log/src/main/java/org/xyzh/log => system/src/main/java/org/xyzh/system}/mapper/log/TbSysLogMapper.java (96%)
rename urbanLifelineServ/{log/src/main/java/org/xyzh/log => system/src/main/java/org/xyzh/system}/mapper/log/TbSysLoginLogMapper.java (96%)
create mode 100644 urbanLifelineServ/system/src/main/java/org/xyzh/system/service/impl/LogServiceImpl.java
create mode 100644 urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLogMapper.xml
create mode 100644 urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLoginLogMapper.xml
diff --git a/urbanLifelineServ/.bin/database/postgres/sql/createTableLog.sql b/urbanLifelineServ/.bin/database/postgres/sql/createTableLog.sql
index a09c9171..34f64652 100644
--- a/urbanLifelineServ/.bin/database/postgres/sql/createTableLog.sql
+++ b/urbanLifelineServ/.bin/database/postgres/sql/createTableLog.sql
@@ -1,6 +1,5 @@
-CREATE SCHEMA IF NOT EXISTS log;
-DROP TABLE IF EXISTS log.tb_sys_log CASCADE;
-CREATE TABLE log.tb_sys_log (
+DROP TABLE IF EXISTS sys.tb_sys_log CASCADE;
+CREATE TABLE sys.tb_sys_log (
optsn VARCHAR(50) NOT NULL, -- 流水号
log_id VARCHAR(50) NOT NULL, -- 日志ID
type VARCHAR(50) NOT NULL, -- 日志类型
@@ -13,7 +12,8 @@ CREATE TABLE log.tb_sys_log (
message VARCHAR(255) NOT NULL, -- 日志消息
data JSONB DEFAULT NULL, -- 日志数据
creator VARCHAR(50) DEFAULT NULL, -- 创建者
- service_type VARCHAR(50) NOT NULL, -- 服务类型
+ creator_name VARCHAR(200) DEFAULT NULL, -- 创建者姓名
+ service VARCHAR(50) NOT NULL, -- 服务类型
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
updater VARCHAR(50) DEFAULT NULL, -- 更新者
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 日志创建时间
@@ -23,19 +23,20 @@ CREATE TABLE log.tb_sys_log (
PRIMARY KEY (log_id),
UNIQUE (optsn)
);
-COMMENT ON TABLE log.tb_sys_log IS '系统日志表';
-COMMENT ON COLUMN log.tb_sys_log.optsn IS '流水号';
-COMMENT ON COLUMN log.tb_sys_log.log_id IS '日志ID';
-COMMENT ON COLUMN log.tb_sys_log.type IS '日志类型';
-COMMENT ON COLUMN log.tb_sys_log.level IS '日志级别';
-COMMENT ON COLUMN log.tb_sys_log.module IS '日志模块';
-COMMENT ON COLUMN log.tb_sys_log.message IS '日志消息';
-COMMENT ON COLUMN log.tb_sys_log.data IS '日志数据';
-COMMENT ON COLUMN log.tb_sys_log.creator IS '创建者';
-COMMENT ON COLUMN log.tb_sys_log.service_type IS '服务类型';
-COMMENT ON COLUMN log.tb_sys_log.dept_path IS '部门全路径';
-COMMENT ON COLUMN log.tb_sys_log.updater IS '更新者';
-COMMENT ON COLUMN log.tb_sys_log.create_time IS '日志创建时间';
-COMMENT ON COLUMN log.tb_sys_log.update_time IS '日志更新时间';
-COMMENT ON COLUMN log.tb_sys_log.delete_time IS '日志删除时间';
-COMMENT ON COLUMN log.tb_sys_log.deleted IS '是否删除';
\ No newline at end of file
+COMMENT ON TABLE sys.tb_sys_log IS '系统日志表';
+COMMENT ON COLUMN sys.tb_sys_log.optsn IS '流水号';
+COMMENT ON COLUMN sys.tb_sys_log.log_id IS '日志ID';
+COMMENT ON COLUMN sys.tb_sys_log.type IS '日志类型';
+COMMENT ON COLUMN sys.tb_sys_log.level IS '日志级别';
+COMMENT ON COLUMN sys.tb_sys_log.module IS '日志模块';
+COMMENT ON COLUMN sys.tb_sys_log.message IS '日志消息';
+COMMENT ON COLUMN sys.tb_sys_log.data IS '日志数据';
+COMMENT ON COLUMN sys.tb_sys_log.creator IS '创建者';
+COMMENT ON COLUMN sys.tb_sys_log.creator_name IS '创建者姓名';
+COMMENT ON COLUMN sys.tb_sys_log.service IS '服务类型';
+COMMENT ON COLUMN sys.tb_sys_log.dept_path IS '部门全路径';
+COMMENT ON COLUMN sys.tb_sys_log.updater IS '更新者';
+COMMENT ON COLUMN sys.tb_sys_log.create_time IS '日志创建时间';
+COMMENT ON COLUMN sys.tb_sys_log.update_time IS '日志更新时间';
+COMMENT ON COLUMN sys.tb_sys_log.delete_time IS '日志删除时间';
+COMMENT ON COLUMN sys.tb_sys_log.deleted IS '是否删除';
\ No newline at end of file
diff --git a/urbanLifelineServ/.bin/database/postgres/sql/createTableMessage.sql b/urbanLifelineServ/.bin/database/postgres/sql/createTableMessage.sql
index 6410308e..43aad8ba 100644
--- a/urbanLifelineServ/.bin/database/postgres/sql/createTableMessage.sql
+++ b/urbanLifelineServ/.bin/database/postgres/sql/createTableMessage.sql
@@ -8,7 +8,7 @@ CREATE TABLE message.tb_message (
content VARCHAR(255) NOT NULL, -- 消息内容
type VARCHAR(50) NOT NULL, -- 消息类型
status VARCHAR(50) NOT NULL, -- 消息状态
- service_type VARCHAR(50) NOT NULL, -- 服务类型
+ service VARCHAR(50) NOT NULL, -- 服务类型
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(隔离)
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
@@ -27,7 +27,7 @@ COMMENT ON COLUMN message.tb_message.title IS '消息标题';
COMMENT ON COLUMN message.tb_message.content IS '消息内容';
COMMENT ON COLUMN message.tb_message.type IS '消息类型';
COMMENT ON COLUMN message.tb_message.status IS '消息状态';
-COMMENT ON COLUMN message.tb_message.service_type IS '服务类型';
+COMMENT ON COLUMN message.tb_message.service IS '服务类型';
COMMENT ON COLUMN message.tb_message.dept_path IS '部门全路径';
COMMENT ON COLUMN message.tb_message.creator IS '创建者';
COMMENT ON COLUMN message.tb_message.updater IS '更新者';
@@ -166,7 +166,7 @@ CREATE TABLE message.tb_message_template (
title_template TEXT, -- 标题模板(支持变量)
content_template TEXT NOT NULL, -- 内容模板(支持变量)
variables JSONB, -- 模板变量定义
- service_type VARCHAR(50) NOT NULL, -- 服务类型
+ service VARCHAR(50) NOT NULL, -- 服务类型
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
creator VARCHAR(50) DEFAULT NULL, -- 创建者
updater VARCHAR(50) DEFAULT NULL, -- 更新者
@@ -188,7 +188,7 @@ COMMENT ON COLUMN message.tb_message_template.template_type IS '模板类型:s
COMMENT ON COLUMN message.tb_message_template.title_template IS '标题模板(支持变量)';
COMMENT ON COLUMN message.tb_message_template.content_template IS '内容模板(支持变量)';
COMMENT ON COLUMN message.tb_message_template.variables IS '模板变量定义';
-COMMENT ON COLUMN message.tb_message_template.service_type IS '服务类型';
+COMMENT ON COLUMN message.tb_message_template.service IS '服务类型';
COMMENT ON COLUMN message.tb_message_template.dept_path IS '部门全路径';
COMMENT ON COLUMN message.tb_message_template.creator IS '创建者';
COMMENT ON COLUMN message.tb_message_template.updater IS '更新者';
diff --git a/urbanLifelineServ/.bin/database/postgres/sql/initDataMessage.sql b/urbanLifelineServ/.bin/database/postgres/sql/initDataMessage.sql
index 61260fe1..cd86f138 100644
--- a/urbanLifelineServ/.bin/database/postgres/sql/initDataMessage.sql
+++ b/urbanLifelineServ/.bin/database/postgres/sql/initDataMessage.sql
@@ -74,7 +74,7 @@ INSERT INTO message.tb_message_channel (
-- =============================
INSERT INTO message.tb_message_template (
optsn, template_id, template_code, template_name, template_type,
- title_template, content_template, variables, service_type,
+ title_template, content_template, variables, service,
creator, create_time, deleted
) VALUES
-- 用户注册欢迎消息
diff --git a/urbanLifelineServ/apis/api-log/pom.xml b/urbanLifelineServ/apis/api-log/pom.xml
deleted file mode 100644
index 9a829981..00000000
--- a/urbanLifelineServ/apis/api-log/pom.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
- 4.0.0
-
- org.xyzh
- apis
- 1.0.0
-
-
- org.xyzh.apis
- api-log
- ${urban-lifeline.version}
- jar
-
-
- 21
- 21
-
-
-
\ No newline at end of file
diff --git a/urbanLifelineServ/apis/api-message/src/main/java/org/xyzh/api/message/vo/MessageReceiverVO.java b/urbanLifelineServ/apis/api-message/src/main/java/org/xyzh/api/message/vo/MessageReceiverVO.java
index b393e40c..edbf95c8 100644
--- a/urbanLifelineServ/apis/api-message/src/main/java/org/xyzh/api/message/vo/MessageReceiverVO.java
+++ b/urbanLifelineServ/apis/api-message/src/main/java/org/xyzh/api/message/vo/MessageReceiverVO.java
@@ -59,5 +59,5 @@ public class MessageReceiverVO extends BaseVO {
private Date handleTime;
@Schema(description = "服务类型")
- private String serviceType;
+ private String service;
}
diff --git a/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/constance/SysLogContants.java b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/constance/SysLogContants.java
new file mode 100644
index 00000000..c34facea
--- /dev/null
+++ b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/constance/SysLogContants.java
@@ -0,0 +1,18 @@
+package org.xyzh.api.system.constance;
+
+public class SysLogContants {
+
+ private final static String LOG_LEVEL_DEBUG = "DEBUG";
+ private final static String LOG_LEVEL_INFO = "INFO";
+ private final static String LOG_LEVEL_WARN = "WARN";
+ private final static String LOG_LEVEL_ERROR = "ERROR";
+
+
+ private final static String LOG_MODULE_SYSTEM = "系统";
+ private final static String LOG_MODULE_AI = "AI服务";
+ private final static String LOG_MODULE_AUTH = "日志";
+ private final static String LOG_MODULE_WORKCASE = "工单";
+ private final static String LOG_MODULE_KNOWLEDGE = "知识库";
+ private final static String LOG_MODULE_FILE = "文件";
+
+}
diff --git a/urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLogDTO.java b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLogDTO.java
similarity index 87%
rename from urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLogDTO.java
rename to urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLogDTO.java
index 30f25144..6d0e88b1 100644
--- a/urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLogDTO.java
+++ b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLogDTO.java
@@ -1,4 +1,4 @@
-package org.xyzh.api.log.dto;
+package org.xyzh.api.system.dto;
import com.alibaba.fastjson2.JSONObject;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -48,4 +48,10 @@ public class TbSysLogDTO extends BaseDTO {
@Schema(description = "日志数据")
private JSONObject data;
+
+ @Schema(description = "创建人姓名")
+ private String creatorName;
+
+ @Schema(description = "服务")
+ private String servce;
}
\ No newline at end of file
diff --git a/urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLoginLogDTO.java b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLoginLogDTO.java
similarity index 97%
rename from urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLoginLogDTO.java
rename to urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLoginLogDTO.java
index c6d4818e..e275ece8 100644
--- a/urbanLifelineServ/apis/api-log/src/main/java/org/xyzh/api/log/dto/TbSysLoginLogDTO.java
+++ b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/dto/TbSysLoginLogDTO.java
@@ -1,4 +1,4 @@
-package org.xyzh.api.log.dto;
+package org.xyzh.api.system.dto;
import java.util.Date;
import com.alibaba.fastjson2.annotation.JSONField;
diff --git a/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/service/LogService.java b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/service/LogService.java
new file mode 100644
index 00000000..685bf9c2
--- /dev/null
+++ b/urbanLifelineServ/apis/api-system/src/main/java/org/xyzh/api/system/service/LogService.java
@@ -0,0 +1,54 @@
+package org.xyzh.api.system.service;
+
+
+import java.util.List;
+
+import org.xyzh.api.system.dto.TbSysLogDTO;
+import org.xyzh.common.core.domain.ResultDomain;
+import org.xyzh.common.core.page.PageRequest;
+
+/**
+ * @description 系统日志服务
+ * @filename LogService.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2026-01-01
+ */
+public interface LogService {
+
+ /**
+ * @description 统计系统日志
+ * @param sysLog
+ * @return 返回值描述
+ * @author yslg
+ * @since 2026-01-01
+ */
+ ResultDomain addSysLog(TbSysLogDTO sysLog);
+
+ /**
+ * @description 统计日志数量
+ * @param filter
+ * @return 返回值描述
+ * @author yslg
+ * @since 2026-01-01
+ */
+ ResultDomain countSysLog(TbSysLogDTO filter);
+
+ /**
+ * @description 获取日志列表
+ * @param filter
+ * @return 日志列表
+ * @author yslg
+ * @since 2026-01-01
+ */
+ ResultDomain getSysLogList(TbSysLogDTO filter);
+
+ /**
+ * @description 获取日志分页
+ * @param pageRequest
+ * @return 日志分页
+ * @author yslg
+ * @since 2026-01-01
+ */
+ ResultDomain getSysLogPage(PageRequest pageRequest);
+}
diff --git a/urbanLifelineServ/apis/pom.xml b/urbanLifelineServ/apis/pom.xml
index 26444721..c0c760ff 100644
--- a/urbanLifelineServ/apis/pom.xml
+++ b/urbanLifelineServ/apis/pom.xml
@@ -18,7 +18,6 @@
api-auth
api-file
api-message
- api-log
api-system
api-crontab
api-ai
@@ -59,11 +58,6 @@
api-system
${urban-lifeline.version}
-
- org.xyzh.apis
- api-log
- ${urban-lifeline.version}
-
diff --git a/urbanLifelineServ/log/pom.xml b/urbanLifelineServ/log/pom.xml
deleted file mode 100644
index 1113cfe6..00000000
--- a/urbanLifelineServ/log/pom.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
- 4.0.0
-
- org.xyzh
- urban-lifeline
- 1.0.0
-
-
- org.xyzh
- log
- ${urban-lifeline.version}
- jar
-
- 21
- 21
-
-
-
-
- org.xyzh.apis
- api-log
- ${urban-lifeline.version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-logging
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-log4j2
-
-
-
-
- org.apache.dubbo
- dubbo-spring-boot-starter
-
-
-
-
- org.apache.dubbo
- dubbo-nacos-spring-boot-starter
-
-
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
- com.alibaba.nacos
- nacos-logback-adapter-12
-
-
- com.alibaba.nacos
- logback-adapter
-
-
-
-
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
- ${mybatis.spring.boot.version}
-
-
-
- com.baomidou
- mybatis-plus-boot-starter
- ${mybatis.plus.version}
-
-
-
- org.mybatis
- mybatis-spring
-
-
-
-
-
- org.mybatis
- mybatis-spring
- ${mybatis.spring.version}
-
-
-
- org.springdoc
- springdoc-openapi-starter-webmvc-ui
-
-
-
-
\ No newline at end of file
diff --git a/urbanLifelineServ/log/src/main/java/org/xyzh/log/LogApp.java b/urbanLifelineServ/log/src/main/java/org/xyzh/log/LogApp.java
deleted file mode 100644
index 48577aeb..00000000
--- a/urbanLifelineServ/log/src/main/java/org/xyzh/log/LogApp.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.xyzh.log;
-
-import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
-
-@SpringBootApplication
-@EnableDubbo // 启用 Dubbo 服务
-@ComponentScan(basePackages = {
- "org.xyzh.log", // log 模块
- "org.xyzh.common" // 公共模块
-})
-public class LogApp {
- private static final Logger logger = LoggerFactory.getLogger(LogApp.class);
-
- public static void main(String[] args) {
- logger.info("======================== LogApp 启动中 =========================");
- SpringApplication.run(LogApp.class, args);
- logger.info("======================== LogApp 启动成功 =========================");
- }
-}
diff --git a/urbanLifelineServ/log/src/main/java/org/xyzh/log/config/OpenApiConfig.java b/urbanLifelineServ/log/src/main/java/org/xyzh/log/config/OpenApiConfig.java
deleted file mode 100644
index 9552035a..00000000
--- a/urbanLifelineServ/log/src/main/java/org/xyzh/log/config/OpenApiConfig.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.xyzh.log.config;
-
-import io.swagger.v3.oas.models.Components;
-import io.swagger.v3.oas.models.OpenAPI;
-import io.swagger.v3.oas.models.info.Contact;
-import io.swagger.v3.oas.models.info.Info;
-import io.swagger.v3.oas.models.info.License;
-import io.swagger.v3.oas.models.security.SecurityRequirement;
-import io.swagger.v3.oas.models.security.SecurityScheme;
-import io.swagger.v3.oas.models.servers.Server;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.List;
-
-/**
- * OpenAPI 配置类 - Log 服务
- * 配置 Swagger/OpenAPI 文档,方便 Apifox 导入接口和对象进行测试
- *
- * @author yslg
- */
-@Configuration
-public class OpenApiConfig {
-
- @Bean
- public OpenAPI logOpenAPI() {
- return new OpenAPI()
- .info(new Info()
- .title("日志服务 API 文档")
- .description("""
- 日志服务接口文档,包括系统日志、登录日志等功能。
-
- ## 使用说明
- 1. 访问 Swagger UI: http://localhost:8083/urban-lifeline/log/swagger-ui.html
- 2. 访问 OpenAPI JSON: http://localhost:8083/urban-lifeline/log/v3/api-docs
- 3. 在 Apifox 中导入 OpenAPI JSON 进行接口测试
- """)
- .version("1.0.0")
- .contact(new Contact()
- .name("yslg")
- .email("3401275564@qq.com"))
- .license(new License()
- .name("Apache 2.0")
- .url("https://www.apache.org/licenses/LICENSE-2.0.html")))
- .servers(List.of(
- new Server().url("http://localhost:8083/urban-lifeline/log").description("本地开发环境")
- ))
- .addSecurityItem(new SecurityRequirement().addList("Bearer Authentication"))
- .components(new Components()
- .addSecuritySchemes("Bearer Authentication",
- new SecurityScheme()
- .type(SecurityScheme.Type.HTTP)
- .scheme("bearer")
- .bearerFormat("JWT")
- .description("请输入JWT Token,格式:Bearer {token}")));
- }
-}
-
diff --git a/urbanLifelineServ/log/src/main/resources/application.yml b/urbanLifelineServ/log/src/main/resources/application.yml
deleted file mode 100644
index 5044fc9c..00000000
--- a/urbanLifelineServ/log/src/main/resources/application.yml
+++ /dev/null
@@ -1,99 +0,0 @@
-# ================== Server ==================
-server:
- port: 8183
- # servlet:
- # context-path: /urban-lifeline/log # 微服务架构下,context-path由Gateway管理
-
-# ================== Auth ====================
-
-auth:
- enabled: true
- gateway-mode: true
- whitelist:
- - /swagger-ui/**
- - /swagger-ui.html
- - /v3/api-docs/**
- - /webjars/**
- - /favicon.ico
- - /error
- - /actuator/health
- - /actuator/info
-
-security:
- aes:
- secret-key: 1234567890qwer
-
-# ================== Spring ==================
-spring:
- application:
- name: log-service
-
- # ================== Spring Cloud Nacos ==================
- cloud:
- nacos:
- discovery:
- server-addr: 127.0.0.1:8848
- namespace: dev
- group: DEFAULT_GROUP
-
- # ================== DataSource ==================
- datasource:
- url: jdbc:postgresql://127.0.0.1:5432/urban_lifeline
- username: postgres
- password: postgres
- driver-class-name: org.postgresql.Driver
-
- # ================== Redis ==================
- data:
- redis:
- host: 127.0.0.1 # 如果是 docker 跑的 redis,按实际 host / 端口改
- port: 6379
- database: 0
- password: 123456 # 如果有密码就填上,没密码可以去掉这一行
-
-# ================== SpringDoc ==================
-springdoc:
- api-docs:
- enabled: true
- path: /v3/api-docs
- swagger-ui:
- enabled: true
- path: /swagger-ui.html
- try-it-out-enabled: true
- show-common-extensions: true
- show-extensions: true
- show-request-duration: true
- filter: true
- tags-sorter: alpha
- operations-sorter: alpha
- group-configs:
- - group: 'default'
- display-name: '日志服务 API'
- paths-to-match: '/**'
-
-# ================== Dubbo + Nacos ==================
-dubbo:
- application:
- name: urban-lifeline-log
- qos-enable: false
- protocol:
- name: dubbo
- port: -1
- registry:
- address: nacos://127.0.0.1:8848
- scan:
- base-packages: org.xyzh.log.service.impl
-
-# ================== MyBatis ==================
-mybatis-plus:
- mapper-locations: classpath:mapper/**/*.xml
- type-aliases-package: org.xyzh.common.dto, org.xyzh.api
-
-# ================== Logging ==================
-logging:
- config: classpath:log4j2.xml
- charset:
- console: UTF-8
- file: UTF-8
- level:
- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping: TRACE
diff --git a/urbanLifelineServ/log/src/main/resources/log4j2.xml b/urbanLifelineServ/log/src/main/resources/log4j2.xml
deleted file mode 100644
index 3d256d92..00000000
--- a/urbanLifelineServ/log/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/urbanLifelineServ/pom.xml b/urbanLifelineServ/pom.xml
index 0d85662e..dceb275b 100644
--- a/urbanLifelineServ/pom.xml
+++ b/urbanLifelineServ/pom.xml
@@ -11,7 +11,6 @@
common
apis
gateway
- log
system
auth
file
diff --git a/urbanLifelineServ/system/src/main/java/org/xyzh/system/controller/LogController.java b/urbanLifelineServ/system/src/main/java/org/xyzh/system/controller/LogController.java
new file mode 100644
index 00000000..98785db5
--- /dev/null
+++ b/urbanLifelineServ/system/src/main/java/org/xyzh/system/controller/LogController.java
@@ -0,0 +1,69 @@
+package org.xyzh.system.controller;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.xyzh.api.system.dto.TbSysLogDTO;
+import org.xyzh.api.system.service.LogService;
+import org.xyzh.common.core.domain.ResultDomain;
+import org.xyzh.common.core.page.PageRequest;
+
+/**
+ * @description 系统日志控制器
+ * @filename LogController.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2026-01-01
+ */
+@RestController
+@RequestMapping("/system/log")
+public class LogController {
+
+ private static final Logger logger = LoggerFactory.getLogger(LogController.class);
+
+ @Autowired
+ private LogService logService;
+
+ // ================= 系统日志相关接口 =================
+
+ /**
+ * 添加系统日志
+ */
+ @PostMapping
+ @PreAuthorize("hasAuthority('log:log:add')")
+ public ResultDomain addSysLog(@RequestBody TbSysLogDTO sysLog) {
+ return logService.addSysLog(sysLog);
+ }
+
+ /**
+ * 统计日志数量
+ */
+ @PostMapping("/count")
+ @PreAuthorize("hasAuthority('log:log:view')")
+ public ResultDomain countSysLog(@RequestBody TbSysLogDTO filter) {
+ return logService.countSysLog(filter);
+ }
+
+ /**
+ * 获取日志列表
+ */
+ @PostMapping("/list")
+ @PreAuthorize("hasAuthority('log:log:view')")
+ public ResultDomain getSysLogList(@RequestBody TbSysLogDTO filter) {
+ return logService.getSysLogList(filter);
+ }
+
+ /**
+ * 分页查询日志
+ */
+ @PostMapping("/page")
+ @PreAuthorize("hasAuthority('log:log:view')")
+ public ResultDomain getSysLogPage(@RequestBody PageRequest pageRequest) {
+ return logService.getSysLogPage(pageRequest);
+ }
+}
diff --git a/urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLogMapper.java b/urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLogMapper.java
similarity index 96%
rename from urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLogMapper.java
rename to urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLogMapper.java
index dab52eae..49a0b659 100644
--- a/urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLogMapper.java
+++ b/urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLogMapper.java
@@ -1,11 +1,11 @@
-package org.xyzh.log.mapper.log;
+package org.xyzh.system.mapper.log;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.xyzh.api.system.dto.TbSysLogDTO;
import org.xyzh.common.core.page.PageParam;
-import org.xyzh.api.log.dto.TbSysLogDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
diff --git a/urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLoginLogMapper.java b/urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLoginLogMapper.java
similarity index 96%
rename from urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLoginLogMapper.java
rename to urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLoginLogMapper.java
index 5f86c324..117594b3 100644
--- a/urbanLifelineServ/log/src/main/java/org/xyzh/log/mapper/log/TbSysLoginLogMapper.java
+++ b/urbanLifelineServ/system/src/main/java/org/xyzh/system/mapper/log/TbSysLoginLogMapper.java
@@ -1,11 +1,11 @@
-package org.xyzh.log.mapper.log;
+package org.xyzh.system.mapper.log;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.xyzh.api.system.dto.TbSysLoginLogDTO;
import org.xyzh.common.core.page.PageParam;
-import org.xyzh.api.log.dto.TbSysLoginLogDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
diff --git a/urbanLifelineServ/system/src/main/java/org/xyzh/system/service/impl/LogServiceImpl.java b/urbanLifelineServ/system/src/main/java/org/xyzh/system/service/impl/LogServiceImpl.java
new file mode 100644
index 00000000..0f0f4ea5
--- /dev/null
+++ b/urbanLifelineServ/system/src/main/java/org/xyzh/system/service/impl/LogServiceImpl.java
@@ -0,0 +1,137 @@
+package org.xyzh.system.service.impl;
+
+import jakarta.annotation.Resource;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xyzh.api.system.dto.TbSysLogDTO;
+import org.xyzh.api.system.service.LogService;
+import org.xyzh.common.core.domain.ResultDomain;
+import org.xyzh.common.core.page.PageDomain;
+import org.xyzh.common.core.page.PageParam;
+import org.xyzh.common.core.page.PageRequest;
+import org.xyzh.common.utils.StringUtils;
+import org.xyzh.common.utils.id.IdUtil;
+import org.xyzh.system.mapper.log.TbSysLogMapper;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description 系统日志服务实现类
+ * @filename LogServiceImpl.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2026-01-01
+ */
+@DubboService(
+ version = "1.0.0",
+ group = "system",
+ timeout = 3000,
+ retries = 0
+)
+public class LogServiceImpl implements LogService {
+
+ private static final Logger logger = LoggerFactory.getLogger(LogServiceImpl.class);
+
+ private static final String MSG_LOG_PARAM_REQUIRED = "日志参数不能为空";
+ private static final String MSG_FILTER_PARAM_REQUIRED = "查询条件不能为空";
+ private static final String MSG_PAGE_PARAM_REQUIRED = "分页参数不能为空";
+
+ @Resource
+ private TbSysLogMapper sysLogMapper;
+
+ @Override
+ public ResultDomain addSysLog(TbSysLogDTO sysLog) {
+ if (sysLog == null) {
+ return ResultDomain.failure(MSG_LOG_PARAM_REQUIRED);
+ }
+
+ try {
+ // 设置默认值
+ if (StringUtils.isBlank(sysLog.getLogId())) {
+ sysLog.setLogId(IdUtil.generateID());
+ }
+ if (StringUtils.isBlank(sysLog.getOptsn())) {
+ sysLog.setOptsn(IdUtil.generateID());
+ }
+ if (sysLog.getCreateTime() == null) {
+ sysLog.setCreateTime(new Date());
+ }
+ if (sysLog.getDeleted() == null) {
+ sysLog.setDeleted(false);
+ }
+
+ int rows = sysLogMapper.insertLog(sysLog);
+ if (rows > 0) {
+ logger.info("添加系统日志成功, logId={}", sysLog.getLogId());
+ return ResultDomain.success("添加系统日志成功", sysLog);
+ }
+ logger.warn("添加系统日志失败, logId={}", sysLog.getLogId());
+ return ResultDomain.failure("添加系统日志失败");
+ } catch (Exception e) {
+ logger.error("添加系统日志异常", e);
+ return ResultDomain.failure("添加系统日志异常: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public ResultDomain countSysLog(TbSysLogDTO filter) {
+ if (filter == null) {
+ return ResultDomain.failure(MSG_FILTER_PARAM_REQUIRED);
+ }
+
+ try {
+ int count = sysLogMapper.getLogCount(filter);
+ return ResultDomain.success("统计日志数量成功", count);
+ } catch (Exception e) {
+ logger.error("统计日志数量异常", e);
+ return ResultDomain.failure("统计日志数量异常: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public ResultDomain getSysLogList(TbSysLogDTO filter) {
+ try {
+ List list = sysLogMapper.getLogByFilter(filter);
+ if (list == null) {
+ list = Collections.emptyList();
+ }
+ return ResultDomain.success("获取日志列表成功", list);
+ } catch (Exception e) {
+ logger.error("获取日志列表异常", e);
+ return ResultDomain.failure("获取日志列表异常: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public ResultDomain getSysLogPage(PageRequest pageRequest) {
+ if (pageRequest == null) {
+ return ResultDomain.failure(MSG_PAGE_PARAM_REQUIRED);
+ }
+
+ try {
+ PageParam pageParam = pageRequest.getPageParam();
+ TbSysLogDTO filter = pageRequest.getFilter();
+
+ // 查询总数
+ int total = sysLogMapper.getLogCount(filter);
+ pageParam.setTotal(total);
+ pageParam.setTotalPages(pageParam.getPageSize() == 0 ? 0 :
+ (int) Math.ceil((double) total / pageParam.getPageSize()));
+
+ // 查询分页数据
+ List data = sysLogMapper.getLogPageByFilter(filter, pageParam);
+ if (data == null) {
+ data = Collections.emptyList();
+ }
+
+ PageDomain pageDomain = new PageDomain<>(pageParam, data);
+ return ResultDomain.success("分页查询日志成功", pageDomain);
+ } catch (Exception e) {
+ logger.error("分页查询日志异常", e);
+ return ResultDomain.failure("分页查询日志异常: " + e.getMessage());
+ }
+ }
+}
diff --git a/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLogMapper.xml b/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLogMapper.xml
new file mode 100644
index 00000000..6956ee96
--- /dev/null
+++ b/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLogMapper.xml
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ log_id, optsn, type, level, module, ip_address, ip_source, browser, os, message,
+ data, creator, creator_name, service, dept_path, updater,
+ create_time, update_time, delete_time, deleted
+
+
+
+
+ INSERT INTO sys.tb_sys_log
+
+ log_id,
+ optsn,
+ type,
+ level,
+ module,
+ message,
+ service,
+ ip_address,
+ ip_source,
+ browser,
+ os,
+ data,
+ creator,
+ creator_name,
+ dept_path,
+ updater,
+ create_time,
+ update_time,
+ delete_time,
+ deleted,
+
+ VALUES
+
+ #{logId},
+ #{optsn},
+ #{type},
+ #{level},
+ #{module},
+ #{message},
+ #{servce},
+ #{ipAddress},
+ #{ip_source},
+ #{browser},
+ #{os},
+ #{data, typeHandler=org.xyzh.common.jdbc.handler.FastJson2TypeHandler},
+ #{creator},
+ #{creatorName},
+ #{deptPath},
+ #{updater},
+ #{createTime},
+ #{updateTime},
+ #{deleteTime},
+ #{deleted},
+
+
+
+
+
+ UPDATE sys.tb_sys_log
+
+ type = #{type},
+ level = #{level},
+ module = #{module},
+ ip_address = #{ipAddress},
+ ip_source = #{ip_source},
+ browser = #{browser},
+ os = #{os},
+ message = #{message},
+ data = #{data, typeHandler=org.xyzh.common.jdbc.handler.FastJson2TypeHandler},
+ service = #{servce},
+ updater = #{updater},
+ dept_path = #{deptPath},
+ update_time = #{updateTime},
+ delete_time = #{deleteTime},
+ deleted = #{deleted},
+
+ WHERE log_id = #{logId}
+
+
+
+
+ UPDATE sys.tb_sys_log
+ SET deleted = true,
+ delete_time = NOW()
+ WHERE log_id = #{logId}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLoginLogMapper.xml b/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLoginLogMapper.xml
new file mode 100644
index 00000000..384aced8
--- /dev/null
+++ b/urbanLifelineServ/system/src/main/resources/mapper/log/TbSysLoginLogMapper.xml
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ optsn, user_id, username, ip_address, ip_source, browser, os, password,
+ login_time, status, error_count, message, create_time
+
+
+
+
+ INSERT INTO sys.tb_sys_login_log
+
+ optsn,
+ user_id,
+ username,
+ ip_address,
+ ip_source,
+ browser,
+ os,
+ password,
+ login_time,
+ status,
+ error_count,
+ message,
+ create_time,
+
+ VALUES
+
+ #{optsn},
+ #{userId},
+ #{username},
+ #{ipAddress},
+ #{ipSource},
+ #{browser},
+ #{os},
+ #{password},
+ #{loginTime},
+ #{status},
+ #{errorCount},
+ #{message},
+ #{createTime},
+
+
+
+
+
+ UPDATE sys.tb_sys_login_log
+
+ user_id = #{userId},
+ username = #{username},
+ ip_address = #{ipAddress},
+ ip_source = #{ipSource},
+ browser = #{browser},
+ os = #{os},
+ password = #{password},
+ login_time = #{loginTime},
+ status = #{status},
+ error_count = #{errorCount},
+ message = #{message},
+
+ WHERE optsn = #{optsn}
+
+
+
+
+ DELETE FROM sys.tb_sys_login_log
+ WHERE optsn = #{optsn}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+