library-picturebook-activity/backend-java/src/main/java/com/competition/common/entity/BaseEntity.java

56 lines
1.6 KiB
Java
Raw Normal View History

Java 后端完整转写:NestJS/Prisma → Spring Boot/MyBatis-Plus ## 技术栈 - Spring Boot 3.2 + Java 17 + MyBatis-Plus 3.5 - Spring Security + JWT 认证(与 NestJS 兼容) - MapStruct + Knife4j + Druid + Hutool + FastJSON2 - 腾讯云 COS 文件上传 ## 项目规模 - 239 个 Java 文件,246 个文件总计 - 39 个实体类映射到现有数据库 - ~256 个 API 端点,与 NestJS 完全兼容 ## 模块清单 - Phase 0: 脚手架 + 基础框架(BaseEntity, Result, JWT, Security, AOP权限) - Phase 1: 认证/用户/角色/权限/租户(~35 接口) - Phase 2: 菜单/字典/配置/日志(~25 接口) - Phase 3: 赛事核心 — 赛事/报名/作品/团队/附件/公告(~46 接口) - Phase 4: 评审/计分/成果 — 评审规则/评委/分配/评分/排名/奖项/发布(~52 接口) - Phase 5: 作业 — 作业/提交/评分/评审规则(~20 接口) - Phase 6: 公众端 — 注册/登录/画廊/活动/作品库/子女/互动/内容审核(~55 接口) - Phase 7: UGC — 作品/绘本页/标签/点赞/收藏/评论/举报/审核日志(~15 接口) - Phase 8: 文件上传/OSS(1 接口) ## 验证结果 - mvn compile 零错误,1.8秒启动 - 62 个 API 端点手动测试通过(GET + POST/PATCH/DELETE) - 20 个前端页面 Playwright 自动化测试通过,69+ API 调用零错误 - 核心业务全流程验证:登录→赛事→报名→作品→评审→计分→排名→奖项→发布 ## 数据库适配 - 使用现有表名(Flyway 暂禁用,待正式切换时启用) - Flyway V1/V2 迁移脚本已准备(表重命名+新审计字段) - 修复:configs/t_contest_registration 添加 valid_state 列 - 修复:所有表 modify_time 添加 DEFAULT CURRENT_TIMESTAMP Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 14:05:41 +08:00
package com.competition.common.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 基础实体类所有实体继承此类
* 当前阶段使用现有数据库列名新审计字段暂不映射 Flyway 迁移后启用
*/
@Data
public abstract class BaseEntity implements Serializable {
/** 主键 ID自增 */
@TableId(type = IdType.AUTO)
private Long id;
// ====== 新审计字段(列尚未存在,暂不映射到数据库) ======
/** 创建人账号(待 Flyway V2 后启用) */
@TableField(exist = false)
private String createBy;
/** 更新人账号(待 Flyway V2 后启用) */
@TableField(exist = false)
private String updateBy;
/** 逻辑删除标识(待 Flyway V2 后启用) */
@TableField(exist = false)
private Integer deleted;
// ====== 现有审计字段(与当前数据库一致) ======
/** 创建人 ID */
@TableField(value = "creator", fill = FieldFill.INSERT)
private Integer creator;
/** 修改人 ID */
@TableField(value = "modifier", fill = FieldFill.INSERT_UPDATE)
private Integer modifier;
/** 创建时间 */
@TableField(value = "create_time", fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 修改时间(数据库列名为 modify_time */
@TableField(value = "modify_time", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime modifyTime;
/** 有效状态1-有效2-失效 */
@TableField(value = "valid_state", fill = FieldFill.INSERT)
private Integer validState;
}