SECOND_ENTRUST_USER_README.md 7.4 KB

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 封装)

数据库表结构

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. 创建委托人信息

// 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. 查询委托人信息

// 根据交易ID查询
SecondEntrustUser entrustUser = secondEntrustUserService.getByTradeId(1);

// 根据用户电话查询
List<SecondEntrustUser> list = secondEntrustUserService.getByUserPhone("13800138000");

3. 更新委托人信息

SecondEntrustUserDTO dto = new SecondEntrustUserDTO();
dto.setTradeId(1);
dto.setUserPhone("13800138001");
dto.setUserName("李四");

boolean result = secondEntrustUserService.updateEntrustUser(1, dto);

4. 删除委托人信息

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 功能