From ac1486a643cf351ae55727dcbf60611c60a37aba Mon Sep 17 00:00:00 2001 From: Eterlaze <1215710470@qq.com> Date: Sun, 22 Dec 2024 16:38:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=AE=9E=E7=8E=B0=E7=B1=BB/=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=9C=8D=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/api/service/SystemLogService.java | 39 ++++++++ .../service/impl/SystemLogServiceImpl.java | 88 +++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 IDEA/src/main/java/com/example/api/service/SystemLogService.java create mode 100644 IDEA/src/main/java/com/example/api/service/impl/SystemLogServiceImpl.java diff --git a/IDEA/src/main/java/com/example/api/service/SystemLogService.java b/IDEA/src/main/java/com/example/api/service/SystemLogService.java new file mode 100644 index 00000000..02e65b51 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/service/SystemLogService.java @@ -0,0 +1,39 @@ +package com.example.api.service; + +import com.example.api.model.entity.SystemLog; // 导入SystemLog实体类,代表系统日志信息 +import com.example.api.model.vo.SystemLogVo; // 导入SystemLogVo视图对象,用于封装查询条件 +import org.springframework.data.jpa.repository.Query; // 导入Query注解,用于定义自定义查询 + +import java.util.List; // 导入List类,用于处理列表数据 + +/** + * 系统日志服务接口,定义系统日志相关的业务操作。 + */ +public interface SystemLogService { + + /** + * 记录系统日志。 + * @param log 系统日志对象,包含日志的详细信息 + */ + public void record(SystemLog log); + + /** + * 获取所有系统日志。 + * @return 系统日志列表 + */ + public List getAll(); + + /** + * 删除系统日志。 + * @param id 要删除的系统日志ID + */ + public void delete(String id); + + /** + * 根据视图对象查询系统日志。 + * @param systemLogVo 视图对象,封装查询条件 + * @return 符合条件的系统日志列表 + */ + public List query(SystemLogVo systemLogVo); + +} diff --git a/IDEA/src/main/java/com/example/api/service/impl/SystemLogServiceImpl.java b/IDEA/src/main/java/com/example/api/service/impl/SystemLogServiceImpl.java new file mode 100644 index 00000000..d53b7392 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/service/impl/SystemLogServiceImpl.java @@ -0,0 +1,88 @@ +package com.example.api.service.impl; + +import com.example.api.model.entity.SystemLog; // 导入SystemLog实体类,代表系统日志信息 +import com.example.api.model.vo.SystemLogVo; // 导入SystemLogVo视图对象,用于封装查询条件 +import com.example.api.repository.SystemLogRepository; // 导入SystemLogRepository接口,用于访问系统日志数据 +import com.example.api.service.SystemLogService; // 导入SystemLogService接口,定义系统日志服务 +import org.springframework.beans.factory.annotation.Autowired; // 导入Autowired注解,用于自动注入Bean +import org.springframework.data.jpa.domain.Specification; // 导入Specification接口,用于构建JPA查询条件 +import org.springframework.security.core.parameters.P; // 导入P注解,用于方法参数注解(此处未使用) +import org.springframework.stereotype.Service; // 导入Service注解,标识服务组件 +import org.springframework.util.StringUtils; // 导入StringUtils工具类,用于字符串操作 + +import javax.persistence.criteria.*; +import java.util.ArrayList; // 导入ArrayList类,用于创建列表(此处未使用) +import java.util.List; // 导入List类,用于处理列表数据 + +/** + * 系统日志服务实现类,提供系统日志相关的业务逻辑。 + */ +@Service +public class SystemLogServiceImpl implements SystemLogService { + @Autowired + private SystemLogRepository systemLogRepository; // 自动注入SystemLogRepository + + /** + * 记录系统日志。 + * @param log 系统日志对象 + */ + @Override + public void record(SystemLog log) { + systemLogRepository.save(log); // 调用仓库层方法保存系统日志 + } + + /** + * 获取所有系统日志。 + * @return 系统日志列表 + */ + @Override + public List getAll() { + return systemLogRepository.findAll(); // 调用仓库层方法查询所有系统日志 + } + + /** + * 删除系统日志。 + * @param id 要删除的系统日志ID + */ + @Override + public void delete(String id) { + systemLogRepository.deleteById(id); // 调用仓库层方法根据ID删除系统日志 + } + + /** + * 根据视图对象查询系统日志。 + * @param systemLogVo 视图对象,封装查询条件 + * @return 符合条件的系统日志列表 + */ + @Override + public List query(SystemLogVo systemLogVo) { + // 构造查询条件 + Specification specification = new Specification() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + Path account = root.get("account"); // 获取account字段 + Path module = root.get("module"); // 获取module字段 + Predicate res = null; // 初始化查询结果 + // 如果账号不为空,构建账号的模糊查询条件 + if (!StringUtils.isEmpty(systemLogVo.getAccount())) { + Predicate like1 = criteriaBuilder.like(account.as(String.class), "%" + systemLogVo.getAccount() + "%"); + // 如果模块不为空,构建模块的模糊查询条件 + if (!StringUtils.isEmpty(systemLogVo.getModule())) { + Predicate like2 = criteriaBuilder.like(module.as(String.class), "%" + systemLogVo.getModule() + "%"); + // 组合账号和模块的查询条件 + res = criteriaBuilder.and(like1, like2); + } else { + // 仅组合账号的查询条件 + res = criteriaBuilder.and(like1); + } + } else if (!StringUtils.isEmpty(systemLogVo.getModule())) { + // 如果账号为空但模块不为空,仅构建模块的模糊查询条件 + Predicate like2 = criteriaBuilder.like(module.as(String.class), "%" + systemLogVo.getModule() + "%"); + res = criteriaBuilder.and(like2); + } + return res; // 返回查询条件 + } + }; + return systemLogRepository.findAll(specification); // 调用仓库层方法执行查询 + } +}