智契通项目开发周记(第二周):数据库建模与代码生成器集成
一、 本周工作概述
如果说第一周是绘制蓝图,那么第二周就是正式“打桩”。本周的核心任务是从架构设计走向具体的数据模型落地。
基于《智契通项目总体架构设计》文档中的核心能力,我重点完成了以下工作:
- 数据库建模:根据业务需求,设计了用户、合同核心、模板管理等关键数据表结构。
- 工程化落地:利用MyBatis-Plus代码生成器(Code Generator),一键生成了Entity、Mapper、Service、Controller层的基础代码。
- 基础验证:通过Knife4j接口文档对生成的代码进行了初步的连通性测试。
二、 数据库设计:业务逻辑的物理落地
在架构设计阶段,我们规划了contract-core(合同核心数据)和contract-user(用户权限)模块。本周我将这些逻辑模型转化为物理模型(MySQL 8.0)。
1. 核心表设计思路
- 用户表 (
user):存储系统用户信息,包含用户名、加密密码、角色标识(RBAC基础)。 - 合同主表 (
contract_info):这是系统的核心。- 字段考量:除了基础的
title(标题)、status(状态)外,重点设计了content(合同原文)和structured_data(结构化JSON)。考虑到合同文本可能较长,content字段设计为LONGTEXT类型。 - 版本控制:预留了
parent_id(父版本ID)字段,为后续实现“多版本对比与历史追溯”模块做铺垫。
- 字段考量:除了基础的
- 模板表 (
contract_template):存储预置的劳动合同、租赁合同等模板。设计了category(分类)和variables(变量字段JSON)以支持动态填充。
2. 设计规范
- 严格遵循阿里Java开发手册规范,表名使用小写和下划线。
- 所有表均包含
create_time和update_time字段,满足审计日志需求。
三、 代码生成器集成
为了避免繁琐的手动编写Setter/Getter和基础SQL,我利用Spring Boot生态中强大的MyBatis-Plus代码生成器进行了自动化开发。
1. 配置策略
编写了CodeGenerator类,配置了以下策略:
- 数据源:指向本地MySQL数据库。
- 全局策略:开启Swagger2注解支持(配合Knife4j),开启Lombok模型(减少模板代码)。
- 包策略:自动将代码生成到
com.zhiqitong.contract-core模块下。
2. 生成效果
运行生成器后,针对contract_info表,自动生成了以下文件:
ContractInfo.java(Entity):包含Swagger字段说明注解。ContractInfoMapper.java&xml:包含基础的CRUD方法。ContractInfoService.java&Impl:业务逻辑接口与实现。ContractInfoController.java:RESTful风格的API接口。
3. 技术价值
这一步虽然看似只是“工具使用”,但实际上确立了团队的代码规范。所有团队成员后续生成的代码都将遵循相同的风格(如统一的异常处理封装、统一的响应格式BaseResponse),极大地降低了代码Review的成本。
四、 前端基础页面搭建
在后端代码生成后,前端也同步进行了基础页面的搭建,以验证接口连通性。
- 页面结构:基于第一周的
BasicLayout,创建了ContractList.vue页面。 - API对接:利用
api目录下的自动生成脚本(或手动编写简易调用),测试了GET /contract/list接口。 - 组件化:使用Element Plus的
el-table组件渲染合同列表,目前虽无复杂样式,但已跑通了从数据库到页面的完整链路。
