|
|
@@ -0,0 +1,238 @@
|
|
|
+# SecondEntrustUser 字段更新说明
|
|
|
+
|
|
|
+## 更新时间
|
|
|
+2025-11-21
|
|
|
+
|
|
|
+## 更新原因
|
|
|
+数据库表结构调整,所有字段添加 `entrust_` 前缀,新增 `entrust_trade_no` 字段
|
|
|
+
|
|
|
+## 表结构变更
|
|
|
+
|
|
|
+### 新表结构
|
|
|
+```sql
|
|
|
+CREATE TABLE `second_entrust_user` (
|
|
|
+ `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `entrust_trade_id` int NOT NULL COMMENT '交易ID',
|
|
|
+ `entrust_trade_no` varchar(50) NOT NULL COMMENT '交易编号',
|
|
|
+ `entrust_user_phone` varchar(50) COMMENT '委托人电话',
|
|
|
+ `entrust_user_name` varchar(20) COMMENT '委托人姓名',
|
|
|
+ `entrust_id_card` varchar(255) COMMENT '委托人身份证',
|
|
|
+ `entrust_id_card_img` varchar(255) COMMENT '委托人身份证照片',
|
|
|
+ `delete_flag` int NOT NULL DEFAULT '0' COMMENT '删除标记, 0:未删除, 1:已删除',
|
|
|
+ `created_time` datetime(1) NOT NULL COMMENT '创建时间',
|
|
|
+ `created_user_id` int DEFAULT NULL COMMENT '创建人ID',
|
|
|
+ `updated_time` datetime DEFAULT NULL COMMENT '修改时间',
|
|
|
+ `updated_user_id` int DEFAULT NULL COMMENT '修改人ID',
|
|
|
+ PRIMARY KEY (`id`) USING BTREE
|
|
|
+);
|
|
|
+```
|
|
|
+
|
|
|
+### 字段对比
|
|
|
+
|
|
|
+| 旧字段名 | 新字段名 | 说明 |
|
|
|
+|---------|---------|------|
|
|
|
+| trade_id | entrust_trade_id | 交易ID |
|
|
|
+| - | entrust_trade_no | 交易编号(新增) |
|
|
|
+| user_phone | entrust_user_phone | 委托人电话 |
|
|
|
+| user_name | entrust_user_name | 委托人姓名 |
|
|
|
+| id_card | entrust_id_card | 委托人身份证 |
|
|
|
+| id_card_img | entrust_id_card_img | 委托人身份证照片 |
|
|
|
+
|
|
|
+## 代码调整清单
|
|
|
+
|
|
|
+### 1. Entity 实体类
|
|
|
+**文件**: `alien-entity/src/main/java/shop/alien/entity/second/SecondEntrustUser.java`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- `tradeId` → `entrustTradeId`
|
|
|
+- 新增 `entrustTradeNo`
|
|
|
+- `userPhone` → `entrustUserPhone`
|
|
|
+- `userName` → `entrustUserName`
|
|
|
+- `idCard` → `entrustIdCard`
|
|
|
+- `idCardImg` → `entrustIdCardImg`
|
|
|
+
|
|
|
+### 2. DTO 数据传输对象
|
|
|
+**文件**: `alien-entity/src/main/java/shop/alien/entity/second/vo/SecondEntrustUserDTO.java`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 字段名全部更新为带 `entrust_` 前缀
|
|
|
+- 移除继承 `SecondTradeRecord`(不合适的设计)
|
|
|
+- 恢复参数校验注解
|
|
|
+
|
|
|
+### 3. Mapper XML
|
|
|
+**文件**: `alien-entity/src/main/resources/mapper/second/SecondEntrustUserMapper.xml`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 更新 resultMap 的字段映射
|
|
|
+- 更新 Base_Column_List
|
|
|
+
|
|
|
+### 4. Service 接口
|
|
|
+**文件**: `alien-second/src/main/java/shop/alien/second/service/SecondEntrustUserService.java`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 方法参数名更新
|
|
|
+- 新增 `getByTradeNo(String entrustTradeNo)` 方法
|
|
|
+
|
|
|
+### 5. Service 实现类
|
|
|
+**文件**: `alien-second/src/main/java/shop/alien/second/service/impl/SecondEntrustUserServiceImpl.java`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 所有字段引用更新为新字段名
|
|
|
+- 实现 `getByTradeNo` 方法
|
|
|
+- 添加 `StringUtils` 导入
|
|
|
+
|
|
|
+### 6. Controller 控制器
|
|
|
+**文件**: `alien-second/src/main/java/shop/alien/second/controller/SecondEntrustUserController.java`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 接口参数名更新
|
|
|
+- 新增 `/getByTradeNo` 接口
|
|
|
+
|
|
|
+### 7. API 测试文档
|
|
|
+**文件**: `alien-second/API_TEST.md`
|
|
|
+
|
|
|
+**变更内容**:
|
|
|
+- 更新所有请求示例
|
|
|
+- 更新响应示例
|
|
|
+- 更新测试 SQL
|
|
|
+
|
|
|
+## API 接口变更
|
|
|
+
|
|
|
+### 新增接口
|
|
|
+```
|
|
|
+GET /secondEntrustUser/getByTradeNo?entrustTradeNo=TRADE202511210001
|
|
|
+```
|
|
|
+根据交易编号查询委托人信息
|
|
|
+
|
|
|
+### 参数名变更
|
|
|
+
|
|
|
+| 接口 | 旧参数名 | 新参数名 |
|
|
|
+|------|---------|---------|
|
|
|
+| getByTradeId | tradeId | entrustTradeId |
|
|
|
+| getByUserPhone | userPhone | entrustUserPhone |
|
|
|
+
|
|
|
+### 请求体变更(POST/PUT)
|
|
|
+
|
|
|
+#### 旧请求体
|
|
|
+```json
|
|
|
+{
|
|
|
+ "tradeId": 1,
|
|
|
+ "userPhone": "13800138000",
|
|
|
+ "userName": "张三",
|
|
|
+ "idCard": "110101199001011234",
|
|
|
+ "idCardImg": "https://example.com/id_card.jpg"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 新请求体
|
|
|
+```json
|
|
|
+{
|
|
|
+ "entrustTradeId": 1,
|
|
|
+ "entrustTradeNo": "TRADE202511210001",
|
|
|
+ "entrustUserPhone": "13800138000",
|
|
|
+ "entrustUserName": "张三",
|
|
|
+ "entrustIdCard": "110101199001011234",
|
|
|
+ "entrustIdCardImg": "https://example.com/id_card.jpg"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 兼容性说明
|
|
|
+
|
|
|
+⚠️ **重大变更(Breaking Changes)**
|
|
|
+
|
|
|
+1. **API 接口参数名变更**: 前端需要同步修改请求参数名
|
|
|
+2. **响应数据字段名变更**: 前端需要同步修改字段名解析
|
|
|
+3. **数据库表结构变更**: 需要执行数据迁移 SQL
|
|
|
+
|
|
|
+## 数据迁移 SQL
|
|
|
+
|
|
|
+如果原表已有数据,需要执行以下迁移 SQL:
|
|
|
+
|
|
|
+```sql
|
|
|
+-- 方案1: 重命名字段(如果表已存在且有数据)
|
|
|
+ALTER TABLE second_entrust_user
|
|
|
+ CHANGE COLUMN trade_id entrust_trade_id int NOT NULL COMMENT '交易ID',
|
|
|
+ ADD COLUMN entrust_trade_no varchar(50) COMMENT '交易编号' AFTER entrust_trade_id,
|
|
|
+ CHANGE COLUMN user_phone entrust_user_phone varchar(50) COMMENT '委托人电话',
|
|
|
+ CHANGE COLUMN user_name entrust_user_name varchar(20) COMMENT '委托人姓名',
|
|
|
+ CHANGE COLUMN id_card entrust_id_card varchar(255) COMMENT '委托人身份证',
|
|
|
+ CHANGE COLUMN id_card_img entrust_id_card_img varchar(255) COMMENT '委托人身份证照片';
|
|
|
+
|
|
|
+-- 如果需要填充 entrust_trade_no 字段,可以从交易表关联查询
|
|
|
+UPDATE second_entrust_user seu
|
|
|
+INNER JOIN second_trade_record str ON seu.entrust_trade_id = str.id
|
|
|
+SET seu.entrust_trade_no = str.trade_no;
|
|
|
+```
|
|
|
+
|
|
|
+```sql
|
|
|
+-- 方案2: 创建新表并迁移数据(推荐,更安全)
|
|
|
+-- 1. 备份原表
|
|
|
+CREATE TABLE second_entrust_user_backup AS SELECT * FROM second_entrust_user;
|
|
|
+
|
|
|
+-- 2. 删除原表
|
|
|
+DROP TABLE second_entrust_user;
|
|
|
+
|
|
|
+-- 3. 创建新表(使用新的表结构)
|
|
|
+CREATE TABLE `second_entrust_user` (
|
|
|
+ `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|
|
+ `entrust_trade_id` int NOT NULL COMMENT '交易ID',
|
|
|
+ `entrust_trade_no` varchar(50) NOT NULL COMMENT '交易编号',
|
|
|
+ `entrust_user_phone` varchar(50) COMMENT '委托人电话',
|
|
|
+ `entrust_user_name` varchar(20) COMMENT '委托人姓名',
|
|
|
+ `entrust_id_card` varchar(255) COMMENT '委托人身份证',
|
|
|
+ `entrust_id_card_img` varchar(255) COMMENT '委托人身份证照片',
|
|
|
+ `delete_flag` int NOT NULL DEFAULT '0' COMMENT '删除标记, 0:未删除, 1:已删除',
|
|
|
+ `created_time` datetime(1) NOT NULL COMMENT '创建时间',
|
|
|
+ `created_user_id` int DEFAULT NULL COMMENT '创建人ID',
|
|
|
+ `updated_time` datetime DEFAULT NULL COMMENT '修改时间',
|
|
|
+ `updated_user_id` int DEFAULT NULL COMMENT '修改人ID',
|
|
|
+ PRIMARY KEY (`id`) USING BTREE
|
|
|
+);
|
|
|
+
|
|
|
+-- 4. 迁移数据
|
|
|
+INSERT INTO second_entrust_user (
|
|
|
+ id, entrust_trade_id, entrust_user_phone, entrust_user_name,
|
|
|
+ entrust_id_card, entrust_id_card_img, delete_flag,
|
|
|
+ created_time, created_user_id, updated_time, updated_user_id
|
|
|
+)
|
|
|
+SELECT
|
|
|
+ id, trade_id, user_phone, user_name,
|
|
|
+ id_card, id_card_img, delete_flag,
|
|
|
+ created_time, created_user_id, updated_time, updated_user_id
|
|
|
+FROM second_entrust_user_backup;
|
|
|
+
|
|
|
+-- 5. 填充 entrust_trade_no
|
|
|
+UPDATE second_entrust_user seu
|
|
|
+INNER JOIN second_trade_record str ON seu.entrust_trade_id = str.id
|
|
|
+SET seu.entrust_trade_no = str.trade_no;
|
|
|
+```
|
|
|
+
|
|
|
+## 测试建议
|
|
|
+
|
|
|
+1. **单元测试**: 测试所有 Service 方法
|
|
|
+2. **接口测试**: 使用 Postman 测试所有接口
|
|
|
+3. **集成测试**: 测试与交易记录表的关联查询
|
|
|
+4. **数据校验**: 确认 `entrust_trade_no` 字段填充正确
|
|
|
+
|
|
|
+## 回滚方案
|
|
|
+
|
|
|
+如果需要回滚到旧版本:
|
|
|
+
|
|
|
+1. 从备份表恢复数据
|
|
|
+2. 恢复旧的代码版本
|
|
|
+3. 重启服务
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+
|
|
|
+1. ⚠️ 此次更新为**不兼容更新**,前端必须同步修改
|
|
|
+2. ⚠️ 执行数据迁移前务必**备份数据**
|
|
|
+3. ⚠️ 建议在**测试环境**先验证后再上生产
|
|
|
+4. ✅ 代码已通过 Linter 检查,无错误
|
|
|
+5. ✅ 新增了按交易编号查询的功能
|
|
|
+
|
|
|
+## 版本信息
|
|
|
+
|
|
|
+- **旧版本**: v1.0.0
|
|
|
+- **新版本**: v1.1.0
|
|
|
+- **更新日期**: 2025-11-21
|
|
|
+
|