# SecondEntrustUser 委托人信息模块 ## 功能说明 本模块用于管理二手交易平台的委托人信息,支持委托人信息的创建、查询、更新和删除操作。 --- ## 文件清单 ### 1. Entity(实体类) **路径**: `alien-entity/src/main/java/shop/alien/entity/second/SecondEntrustUser.java` **功能**: 委托人信息实体类,对应数据库表 `second_entrust_user` **主要字段**: - `id`: 主键 - `tradeId`: 交易ID - `userPhone`: 委托人电话 - `userName`: 委托人姓名 - `idCard`: 委托人身份证 - `idCardImg`: 委托人身份证照片 - `deleteFlag`: 删除标记(逻辑删除) - `createdTime`: 创建时间(自动填充) - `createdUserId`: 创建人ID(自动填充) - `updatedTime`: 修改时间(自动填充) - `updatedUserId`: 修改人ID(自动填充) --- ### 2. DTO(数据传输对象) **路径**: `alien-entity/src/main/java/shop/alien/entity/second/vo/SecondEntrustUserDTO.java` **功能**: 用于接收前端请求参数,包含参数校验 **校验规则**: - `tradeId`: 必填 - `userPhone`: 必填,不能为空 - `userName`: 必填,不能为空 - `idCard`: 可选 - `idCardImg`: 可选 --- ### 3. Mapper(数据访问层) **路径**: `alien-entity/src/main/java/shop/alien/mapper/second/SecondEntrustUserMapper.java` **功能**: 继承 MyBatis-Plus 的 `BaseMapper`,提供基础 CRUD 操作 --- ### 4. Mapper XML(映射文件) **路径**: `alien-entity/src/main/resources/mapper/second/SecondEntrustUserMapper.xml` **功能**: MyBatis 映射配置文件,定义结果集映射和通用 SQL --- ### 5. Service(服务接口) **路径**: `alien-second/src/main/java/shop/alien/second/service/SecondEntrustUserService.java` **功能**: 定义委托人信息业务逻辑接口 **方法列表**: - `createEntrustUser(SecondEntrustUserDTO dto)`: 创建委托人信息 - `getByTradeId(Integer tradeId)`: 根据交易ID获取委托人信息 - `updateEntrustUser(Integer id, SecondEntrustUserDTO dto)`: 更新委托人信息 - `deleteEntrustUser(Integer id)`: 删除委托人信息(逻辑删除) - `getByUserPhone(String userPhone)`: 根据用户电话查询委托人信息列表 --- ### 6. ServiceImpl(服务实现类) **路径**: `alien-second/src/main/java/shop/alien/second/service/impl/SecondEntrustUserServiceImpl.java` **功能**: 实现委托人信息业务逻辑 **特性**: - 使用 `@Transactional` 保证事务一致性 - 完整的异常处理和日志记录 - 创建时检查交易是否已存在委托人信息 - 更新和删除时检查记录是否存在 --- ### 7. Controller(控制器) **路径**: `alien-second/src/main/java/shop/alien/second/controller/SecondEntrustUserController.java` **功能**: 提供 RESTful API 接口 **接口列表**: 1. `POST /secondEntrustUser/create` - 创建委托人信息 2. `GET /secondEntrustUser/getByTradeId` - 根据交易ID获取委托人信息 3. `GET /secondEntrustUser/getById` - 根据ID获取委托人信息 4. `PUT /secondEntrustUser/update/{id}` - 更新委托人信息 5. `DELETE /secondEntrustUser/delete` - 删除委托人信息 6. `GET /secondEntrustUser/getByUserPhone` - 根据用户电话查询委托人信息列表 **特性**: - 使用 Swagger 注解,自动生成 API 文档 - 参数校验(使用 `@Validated`) - 完整的异常处理和日志记录 - 统一的响应格式(使用 `R` 封装) --- ## 数据库表结构 ```sql CREATE TABLE `second_entrust_user` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `trade_id` int NOT NULL COMMENT '交易ID', `user_phone` varchar(50) COMMENT '委托人电话', `user_name` varchar(20) COMMENT '委托人姓名', `id_card` varchar(255) COMMENT '委托人身份证', `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 ); ``` --- ## 技术栈 - **框架**: Spring Boot + MyBatis-Plus - **数据库**: MySQL - **文档**: Swagger 2 - **日志**: Lombok + SLF4J - **参数校验**: Hibernate Validator --- ## 业务逻辑 ### 创建委托人信息 1. 校验必填参数(tradeId、userPhone、userName) 2. 检查该交易是否已存在委托人信息 3. 如果不存在,创建新记录 4. 自动填充创建时间和创建人ID ### 更新委托人信息 1. 校验参数 2. 检查记录是否存在 3. 更新记录 4. 自动填充修改时间和修改人ID ### 删除委托人信息 1. 检查记录是否存在 2. 逻辑删除(设置 `delete_flag = 1`) 3. 不会物理删除数据 ### 查询委托人信息 - 支持根据交易ID查询 - 支持根据ID查询 - 支持根据用户电话查询(可能返回多条记录) --- ## 使用示例 ### 1. 创建委托人信息 ```java // Controller 调用 SecondEntrustUserDTO dto = new SecondEntrustUserDTO(); dto.setTradeId(1); dto.setUserPhone("13800138000"); dto.setUserName("张三"); dto.setIdCard("110101199001011234"); dto.setIdCardImg("https://example.com/id_card.jpg"); boolean result = secondEntrustUserService.createEntrustUser(dto); ``` ### 2. 查询委托人信息 ```java // 根据交易ID查询 SecondEntrustUser entrustUser = secondEntrustUserService.getByTradeId(1); // 根据用户电话查询 List list = secondEntrustUserService.getByUserPhone("13800138000"); ``` ### 3. 更新委托人信息 ```java SecondEntrustUserDTO dto = new SecondEntrustUserDTO(); dto.setTradeId(1); dto.setUserPhone("13800138001"); dto.setUserName("李四"); boolean result = secondEntrustUserService.updateEntrustUser(1, dto); ``` ### 4. 删除委托人信息 ```java boolean result = secondEntrustUserService.deleteEntrustUser(1); ``` --- ## 注意事项 1. **逻辑删除**: 删除操作为逻辑删除,数据不会真正从数据库中删除 2. **自动填充**: 创建时间、修改时间、创建人ID、修改人ID 会自动填充,需要配置 MyBatis-Plus 的 MetaObjectHandler 3. **参数校验**: 创建和更新时会自动校验必填参数 4. **事务处理**: 创建、更新、删除操作都使用了事务,保证数据一致性 5. **异常处理**: 所有接口都有完整的异常处理,业务异常会返回友好的错误信息 6. **一个交易只能有一个委托人**: 创建时会检查该交易是否已存在委托人信息 --- ## API 文档 启动项目后,访问 Swagger UI 查看完整的 API 文档: ``` http://localhost:端口/swagger-ui.html ``` 在 Swagger 中搜索 "二手平台-委托人信息管理" 即可查看所有接口。 --- ## 测试 详细的测试文档和测试数据请参考:`alien-second/API_TEST.md` --- ## 扩展建议 如果需要扩展功能,可以考虑: 1. **批量操作**: 添加批量创建、批量删除接口 2. **分页查询**: 添加分页查询接口 3. **高级查询**: 支持多条件组合查询 4. **文件上传**: 集成文件上传功能,直接上传身份证照片 5. **数据校验**: 添加身份证号码、手机号码的格式校验 6. **审核流程**: 添加委托人信息审核功能 7. **关联查询**: 与交易记录表关联查询,返回更详细的信息 --- ## 版本历史 - **v1.0.0** (2025-11-21): 初始版本,实现基础 CRUD 功能