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} + + + + + + + + + + + + + + +