本文将详细介绍如何使用 Spring Boot 和 MyBatis Plus 构建一个用户操作日志管理系统。系统包含以下核心功能:
- 根据用户登录名获取操作日志信息。
- 封装用户登录名和操作日志的列表。
- 提供灵活的查询条件实现。
核心类设计
1. UserHaveLogsVo
类
该类用于封装用户登录名以及用户的操作日志列表。
java
复制代码
import lombok.Data; import java.util.List; @Data public class UserHaveLogsVo { private String loginName; // 用户登录名 private List<UserinfoLog> logs; // 用户操作日志列表 }
2. UserinfoLog
类
该类表示用户的操作日志,包含日志的核心属性。
java
复制代码
import lombok.Data; import java.time.LocalDateTime; @Data public class UserinfoLog { private Long logId; // 日志ID private String logContent; // 日志内容 private Long userInfoId; // 用户信息ID private LocalDateTime createTime; // 创建时间 }
3. UserinfoService
接口
该接口定义了用户信息服务的核心方法,包括:
- 通过登录名查找用户信息。
- 用户登录。
- 查询用户操作日志。
java
复制代码
import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; public interface UserinfoService extends IService<UserinfoLog> { /** * 根据登录名查询用户的操作日志 * * @param loginName 用户登录名 * @return 包含用户登录名和日志的封装对象 */ UserHaveLogsVo queryUserHaveLogs(String loginName); /** * 根据用户ID查询操作日志 * * @param userId 用户ID * @return 操作日志列表 */ List<UserinfoLog> getLogsByUserId(Long userId); }
4. UserinfoServiceImpl
类
UserinfoServiceImpl
是 UserinfoService
的实现类,继承了 MyBatis Plus 提供的 ServiceImpl
,从而实现了常见的 CRUD 操作。同时,还需要实现接口中定义的自定义方法。
java
复制代码
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserinfoServiceImpl extends ServiceImpl<UserinfoLogMapper, UserinfoLog> implements UserinfoService { @Override public UserHaveLogsVo queryUserHaveLogs(String loginName) { // 假设从数据库中查询用户ID Long userId = getUserIdByLoginName(loginName); // 查询日志信息 List<UserinfoLog> logs = getLogsByUserId(userId); // 封装结果 UserHaveLogsVo result = new UserHaveLogsVo(); result.setLoginName(loginName); result.setLogs(logs); return result; } @Override public List<UserinfoLog> getLogsByUserId(Long userId) { QueryWrapper<UserinfoLog> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_info_id", userId); return list(queryWrapper); } /** * 模拟通过登录名获取用户ID的方法 */ private Long getUserIdByLoginName(String loginName) { // 此处逻辑根据实际情况实现 return 1L; // 假设返回一个固定用户ID } }
关键 Mapper 配置
1. UserinfoLogMapper
用于操作 userinfo_log
表的 Mapper 接口。
java
复制代码
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserinfoLogMapper extends BaseMapper<UserinfoLog> { }
Controller 层实现
为了调用服务并返回结果,我们需要实现一个 Controller。
java
复制代码
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/userinfo") public class UserinfoController { @Autowired private UserinfoService userinfoService; /** * 根据登录名查询用户操作日志 * * @param loginName 用户登录名 * @return 包含用户操作日志的对象 */ @GetMapping("/logs/{loginName}") public UserHaveLogsVo getUserLogs(@PathVariable String loginName) { return userinfoService.queryUserHaveLogs(loginName); } }
运行结果
启动项目后,通过以下接口可以获取用户的操作日志:
接口地址:
bash
复制代码
GET /userinfo/logs/{loginName}
返回示例:
json
复制代码
{ "loginName": "user123", "logs": [ { "logId": 1, "logContent": "登录系统", "userInfoId": 1, "createTime": "2024-11-23T10:20:30" }, { "logId": 2, "logContent": "更新资料", "userInfoId": 1, "createTime": "2024-11-23T11:00:00" } ] }
结语
通过本文的示例,我们实现了一个用户操作日志管理系统,并展示了如何使用 MyBatis Plus 和 Spring Boot 进行接口开发。希望对您有所帮助!