kindergarten_java/docs/design/项目技术栈补充实施报告.md
En 6e11c874d2 chore: 忽略 target 目录和 .class 文件
- 添加 target/ 到 .gitignore
- 从 git 暂存区移除已追踪的 target 目录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:50:54 +08:00

7.5 KiB
Raw Blame History

项目技术栈补充实施报告

实施日期: 2026-03-13 实施人: reading-platform 状态: 已完成


实施概述

根据 F:/统一开发规范.md 中的后端技术栈要求,对项目进行了全面补充,新增了 6 个核心组件,提升了项目的规范化和开发效率。


实施内容

1. BaseEntity 实体基类

文件路径: reading-platform-java/src/main/java/com/reading/platform/entity/BaseEntity.java

实现内容:

  • 包含公共字段id, createdAt, updatedAt, deleted
  • 使用 MyBatis-Plus 的 @TableId, @TableField, @TableLogic 注解
  • 使用 Lombok 简化代码

使用示例:

@Data
@TableName("tenants")
public class Tenant extends BaseEntity {
    private String name;
    private String code;
    // ... 其他业务字段
}

2. RedisUtils 工具类

文件路径: reading-platform-java/src/main/java/com/reading/platform/common/util/RedisUtils.java

实现内容:

  • 封装常用的 Redis 操作String、Hash、List、Set、ZSet
  • 支持过期时间设置
  • 使用 RedisTemplate 进行操作

主要方法:

方法 说明
set/get String 操作
hashSet/hashGet Hash 操作
listLeftPush/listRightPush List 操作
setAdd/setMembers Set 操作
zSetAdd/zSetRange ZSet 操作
expire/delete/exists 通用操作

使用示例:

@Autowired
private RedisUtils redisUtils;

// 存储
redisUtils.set("user:1", user, 1, TimeUnit.HOURS);

// 获取
User user = redisUtils.get("user:1", User.class);

// Hash 操作
redisUtils.hashSet("config", "key", "value");

3. @Log 注解

文件路径: reading-platform-java/src/main/java/com/reading/platform/common/annotation/Log.java

实现内容:

  • 定义操作日志注解
  • 包含模块、操作类型、描述等属性
  • 支持是否记录请求参数配置

属性说明:

属性 类型 说明 默认值
module String 操作模块 ""
type String 操作类型 ""
description String 操作描述 ""
recordParams boolean 是否记录参数 true

使用示例:

@Log(module = "用户管理", type = "新增", description = "创建新用户")
@PostMapping
public Result<User> create(@RequestBody UserDto dto) {
    // ...
}

4. LogAspect 日志切面

文件路径: reading-platform-java/src/main/java/com/reading/platform/common/aspect/LogAspect.java

实现内容:

  • 拦截 @Log 注解
  • 记录操作日志到数据库
  • 包含请求参数、操作人、操作时间等信息
  • 支持异常日志记录

配套组件:

  • OperationLogService - 操作日志服务
  • OperationLogServiceImpl - 服务实现类

日志记录内容:

  • 操作模块
  • 操作描述
  • 操作人 ID 和角色
  • 请求 IP 地址
  • User-Agent
  • 请求参数
  • 异常信息(如有)

5. OssConfig + OssUtils 阿里云 OSS 工具类

文件路径:

  • reading-platform-java/src/main/java/com/reading/platform/common/config/OssConfig.java
  • reading-platform-java/src/main/java/com/reading/platform/common/util/OssUtils.java

实现内容:

  • OssConfig: OSS 配置类,包含 bucket、endpoint、accessKey 等
  • OssUtils: 文件上传、下载、删除等工具方法
  • 支持文件类型校验和大小限制
  • 支持自定义存储路径

配置示例 (application.yml):

aliyun:
  oss:
    endpoint: oss-cn-hangzhou.aliyuncs.com
    access-key-id: ${OSS_ACCESS_KEY_ID}
    access-key-secret: ${OSS_ACCESS_KEY_SECRET}
    bucket-name: reading-platform
    max-file-size: 10485760  # 10MB

使用示例:

@Autowired
private OssUtils ossUtils;

// 上传文件
String fileUrl = ossUtils.uploadFile(file);

// 上传文件(自定义路径)
String avatarUrl = ossUtils.uploadFile(file, "avatar/");

// 删除文件
ossUtils.deleteFile(fileUrl);

// 批量删除
List<String> failed = ossUtils.deleteFiles(fileUrls);

pom.xml 新增依赖:

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.17.1</version>
</dependency>

6. JsonUtils 工具类

文件路径: reading-platform-java/src/main/java/com/reading/platform/common/util/JsonUtils.java

实现内容:

  • 封装 FastJSON 的序列化和反序列化方法
  • 提供便捷的 JSON 转换工具
  • 支持泛型转换

主要方法:

方法 说明
toJson() 对象转 JSON 字符串
toPrettyJson() 对象转格式化 JSON 字符串
fromJson() JSON 转对象
parseList() JSON 转 List
toMap() 对象转 Map
fromMap() Map 转对象

使用示例:

// 对象转 JSON
String json = JsonUtils.toJson(user);

// JSON 转对象
User user = JsonUtils.fromJson(json, User.class);

// JSON 转 List
List<User> users = JsonUtils.parseList(json, User.class);

// 格式化 JSON
String prettyJson = JsonUtils.toPrettyJson(user);

新增文件列表

文件 说明 类型
BaseEntity.java 实体基类 Entity
RedisUtils.java Redis 工具类 Util
Log.java 日志注解 Annotation
LogAspect.java 日志切面 Aspect
OssConfig.java OSS 配置类 Config
OssUtils.java OSS 工具类 Util
JsonUtils.java JSON 工具类 Util
OperationLogService.java 操作日志服务 Service
OperationLogServiceImpl.java 操作日志服务实现 Service

修改文件列表

文件 修改内容
pom.xml 添加阿里云 OSS SDK 依赖

验证结果

编译验证

$ export JAVA_HOME="/f/Java/jdk-17"
$ cd reading-platform-java
$ mvn clean compile -DskipTests

[INFO] BUILD SUCCESS
[INFO] Total time:  7.178 s

编译通过,无错误。


使用说明

1. 实体类继承 BaseEntity

建议将现有实体类逐步改为继承 BaseEntity,例如:

@Data
@TableName("tenants")
public class Tenant extends BaseEntity {
    private String name;
    private String code;
    // 删除重复的 id, createdAt, updatedAt, deleted 字段
}

2. 配置 OSS

application-dev.yml 中添加:

aliyun:
  oss:
    endpoint: oss-cn-hangzhou.aliyuncs.com
    access-key-id: your-access-key-id
    access-key-secret: your-access-key-secret
    bucket-name: your-bucket-name

3. 使用日志注解

在 Controller 方法上添加 @Log 注解:

@Log(module = "学校管理", type = "新增", description = "创建新学校")
@PostMapping
public Result<School> createSchool(@RequestBody SchoolDto dto) {
    // ...
}

后续建议

高优先级

  1. 实体类迁移: 将现有实体类逐步改为继承 BaseEntity
  2. OSS 配置: 在开发环境配置 OSS 进行测试
  3. 日志测试: 在 Controller 中添加 @Log 注解测试日志记录

中优先级

  1. 日志查询接口: 添加操作日志查询 API
  2. 日志管理页面: 前端添加日志管理界面
  3. Redis 缓存: 使用 RedisUtils 优化热点数据查询

总结

本次实施共新增 9 个文件,修改 1 个文件,完成了所有高优先级和中优先级的组件补充。项目现在具备:

  • 统一的实体基类
  • 完整的 Redis 操作封装
  • 操作日志记录功能
  • 阿里云 OSS 文件存储支持
  • 便捷的 JSON 转换工具

所有代码已通过编译验证,可以立即使用。