# 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