|
|
@@ -0,0 +1,631 @@
|
|
|
+# 委托人详情查询接口文档(以人为维度)
|
|
|
+
|
|
|
+## 接口概述
|
|
|
+
|
|
|
+### 接口信息
|
|
|
+
|
|
|
+| 项目 | 内容 |
|
|
|
+|------|------|
|
|
|
+| 接口名称 | 根据姓名和身份证号获取委托人详情 |
|
|
|
+| 接口路径 | `/secondEntrustUser/detail` |
|
|
|
+| 请求方式 | GET |
|
|
|
+| 接口版本 | v2.0 |
|
|
|
+| 开发时间 | 2025-11-21 |
|
|
|
+| 接口状态 | ✅ 已完成 |
|
|
|
+
|
|
|
+### 功能描述
|
|
|
+
|
|
|
+根据委托人的**姓名和身份证号**获取该人的完整详情信息,**以人为维度聚合查询所有相关数据**,包含:
|
|
|
+- 委托人基本信息
|
|
|
+- **该人所有委托记录关联的所有交易记录列表**
|
|
|
+- 每条交易记录包含:
|
|
|
+ - 交易基本信息(交易编号、金额、状态等)
|
|
|
+ - 买卖双方信息(姓名、电话)
|
|
|
+ - **交易操作节点信息(交易流程)**
|
|
|
+ - 商品信息
|
|
|
+
|
|
|
+**查询逻辑**:
|
|
|
+1. 根据"姓名+身份证号"查询该人的所有委托记录
|
|
|
+2. 收集所有委托记录关联的交易ID
|
|
|
+3. 批量查询所有交易记录及详细信息
|
|
|
+4. 为每笔交易添加操作节点信息(参考 `/admin/secondGoods/detail` 接口逻辑)
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 请求参数
|
|
|
+
|
|
|
+### Query Parameters
|
|
|
+
|
|
|
+| 参数名 | 类型 | 必填 | 描述 | 示例值 |
|
|
|
+|--------|------|------|------|--------|
|
|
|
+| userName | String | ✅ 是 | 委托人姓名 | 张三 |
|
|
|
+| idCard | String | ✅ 是 | 委托人身份证号 | 110101199001011234 |
|
|
|
+
|
|
|
+### 请求示例
|
|
|
+
|
|
|
+#### cURL
|
|
|
+
|
|
|
+```bash
|
|
|
+# 获取委托人详情
|
|
|
+curl -X GET "http://localhost:8080/secondEntrustUser/detail?userName=张三&idCard=110101199001011234" \
|
|
|
+ -H "Authorization: Bearer your_token_here"
|
|
|
+```
|
|
|
+
|
|
|
+#### JavaScript (Axios)
|
|
|
+
|
|
|
+```javascript
|
|
|
+// 获取委托人详情
|
|
|
+axios.get('/secondEntrustUser/detail', {
|
|
|
+ params: {
|
|
|
+ userName: '张三',
|
|
|
+ idCard: '110101199001011234'
|
|
|
+ },
|
|
|
+ headers: {
|
|
|
+ 'Authorization': 'Bearer your_token_here'
|
|
|
+ }
|
|
|
+})
|
|
|
+.then(response => {
|
|
|
+ const { entrustUserInfo, tradeRecords } = response.data.data;
|
|
|
+ console.log('委托人信息:', entrustUserInfo);
|
|
|
+ console.log('该人所有交易记录:', tradeRecords);
|
|
|
+ console.log('交易总数:', tradeRecords.length);
|
|
|
+})
|
|
|
+.catch(error => {
|
|
|
+ console.error(error);
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+#### Java (RestTemplate)
|
|
|
+
|
|
|
+```java
|
|
|
+String url = "http://localhost:8080/secondEntrustUser/detail" +
|
|
|
+ "?userName=张三&idCard=110101199001011234";
|
|
|
+RestTemplate restTemplate = new RestTemplate();
|
|
|
+R<SecondEntrustUserDetailVo> result = restTemplate.getForObject(url, R.class);
|
|
|
+
|
|
|
+SecondEntrustUserDetailVo detailVo = result.getData();
|
|
|
+SecondEntrustUser entrustUserInfo = detailVo.getEntrustUserInfo();
|
|
|
+List<SecondTradeRecordVo> tradeRecords = detailVo.getTradeRecords();
|
|
|
+
|
|
|
+System.out.println("委托人姓名:" + entrustUserInfo.getUserName());
|
|
|
+System.out.println("该人关联的交易总数:" + tradeRecords.size());
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 响应参数
|
|
|
+
|
|
|
+### 响应结构
|
|
|
+
|
|
|
+| 字段名 | 类型 | 描述 |
|
|
|
+|--------|------|------|
|
|
|
+| code | Integer | 响应状态码,200表示成功 |
|
|
|
+| msg | String | 响应消息 |
|
|
|
+| data | SecondEntrustUserDetailVo | 委托人详情对象 |
|
|
|
+
|
|
|
+### SecondEntrustUserDetailVo 对象结构
|
|
|
+
|
|
|
+| 字段名 | 类型 | 描述 |
|
|
|
+|--------|------|------|
|
|
|
+| entrustUserInfo | SecondEntrustUser | 委托人基本信息(该人的第一条记录) |
|
|
|
+| tradeRecords | Array<SecondTradeRecordVo> | 该人所有委托记录关联的交易记录集合 |
|
|
|
+
|
|
|
+### SecondEntrustUser 委托人信息结构
|
|
|
+
|
|
|
+| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|
|
|
+|--------|------|----------|------|--------|
|
|
|
+| id | Integer | ✅ | 委托人记录ID | 1 |
|
|
|
+| tradeId | Integer | ✅ | 关联的交易ID | 100 |
|
|
|
+| userName | String | ✅ | 委托人姓名 | 张三 |
|
|
|
+| userPhone | String | ✅ | 委托人电话 | 13800138000 |
|
|
|
+| idCard | String | ✅ | 委托人身份证号 | 110101199001011234 |
|
|
|
+| idCardImg | String | ❌ | 委托人身份证照片URL | https://cdn.example.com/idcard/123.jpg |
|
|
|
+| deleteFlag | Integer | ✅ | 删除标记(0:未删除,1:已删除) | 0 |
|
|
|
+| createdTime | Date | ✅ | 创建时间 | 2025-11-21 10:00:00 |
|
|
|
+| updatedTime | Date | ✅ | 更新时间 | 2025-11-21 10:00:00 |
|
|
|
+
|
|
|
+### SecondTradeRecordVo 交易记录结构
|
|
|
+
|
|
|
+#### 交易基本信息
|
|
|
+
|
|
|
+| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|
|
|
+|--------|------|----------|------|--------|
|
|
|
+| id | Integer | ✅ | 交易记录ID | 100 |
|
|
|
+| tradeNo | String | ✅ | 交易编号 | S2025112100001 |
|
|
|
+| goodsId | Integer | ✅ | 商品ID | 200 |
|
|
|
+| goodsRecordId | Integer | ✅ | 商品记录ID | 300 |
|
|
|
+| transactionAmount | BigDecimal | ✅ | 交易金额(元) | 3800.00 |
|
|
|
+| tradeStatus | Integer | ✅ | 交易状态 | 4 |
|
|
|
+| transactionTime | Date | ❌ | 交易时间 | 2025-11-21 14:00:00 |
|
|
|
+| transactionLocation | String | ❌ | 交易地点 | 北京市朝阳区xxx |
|
|
|
+| createdTime | Date | ✅ | 创建时间 | 2025-11-21 10:00:00 |
|
|
|
+
|
|
|
+#### 买卖双方信息
|
|
|
+
|
|
|
+| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|
|
|
+|--------|------|----------|------|--------|
|
|
|
+| buyerId | Integer | ✅ | 买方ID | 456 |
|
|
|
+| buyerName | String | ❌ | 买方姓名 | 李四 |
|
|
|
+| buyerPhone | String | ❌ | 买方电话 | 13900139000 |
|
|
|
+| sellerId | Integer | ✅ | 卖方ID | 789 |
|
|
|
+| sellerName | String | ❌ | 卖方姓名 | 王五 |
|
|
|
+| sellerPhone | String | ❌ | 卖方电话 | 13700137000 |
|
|
|
+
|
|
|
+#### 交易操作节点信息
|
|
|
+
|
|
|
+| 字段名 | 类型 | 是否必返 | 描述 |
|
|
|
+|--------|------|----------|------|
|
|
|
+| operationJsonList | Array<JSONObject> | ✅ | 交易操作节点列表,展示完整交易流程 |
|
|
|
+
|
|
|
+每个操作节点包含:
|
|
|
+- `operationType`: 操作类型
|
|
|
+- `operationTime`: 操作时间
|
|
|
+- `operationUserId`: 操作人ID
|
|
|
+- `operationUserName`: 操作人姓名
|
|
|
+- `operationDesc`: 操作描述
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 响应示例
|
|
|
+
|
|
|
+### 成功响应(张三有3条委托记录)
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": {
|
|
|
+ "entrustUserInfo": {
|
|
|
+ "id": 1,
|
|
|
+ "tradeId": 100,
|
|
|
+ "userName": "张三",
|
|
|
+ "userPhone": "13800138000",
|
|
|
+ "idCard": "110101199001011234",
|
|
|
+ "idCardImg": "https://cdn.example.com/idcard/123.jpg",
|
|
|
+ "deleteFlag": 0,
|
|
|
+ "createdTime": "2025-11-21 10:00:00",
|
|
|
+ "updatedTime": "2025-11-21 10:00:00"
|
|
|
+ },
|
|
|
+ "tradeRecords": [
|
|
|
+ {
|
|
|
+ "id": 102,
|
|
|
+ "tradeNo": "S2025112100003",
|
|
|
+ "goodsId": 202,
|
|
|
+ "goodsRecordId": 302,
|
|
|
+ "transactionAmount": 2800.00,
|
|
|
+ "tradeStatus": 4,
|
|
|
+ "transactionTime": "2025-11-21 15:30:00",
|
|
|
+ "transactionLocation": "北京市海淀区xxx",
|
|
|
+ "buyerId": 456,
|
|
|
+ "buyerName": "李四",
|
|
|
+ "buyerPhone": "13900139000",
|
|
|
+ "sellerId": 789,
|
|
|
+ "sellerName": "王五",
|
|
|
+ "sellerPhone": "13700137000",
|
|
|
+ "createdTime": "2025-11-21 15:00:00",
|
|
|
+ "operationJsonList": [
|
|
|
+ {
|
|
|
+ "operationType": "CREATE",
|
|
|
+ "operationTime": "2025-11-21 15:00:00",
|
|
|
+ "operationUserId": 456,
|
|
|
+ "operationUserName": "李四",
|
|
|
+ "operationDesc": "创建交易"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "operationType": "COMPLETE",
|
|
|
+ "operationTime": "2025-11-21 15:30:00",
|
|
|
+ "operationUserId": 456,
|
|
|
+ "operationUserName": "李四",
|
|
|
+ "operationDesc": "完成交易"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "id": 101,
|
|
|
+ "tradeNo": "S2025112100002",
|
|
|
+ "goodsId": 201,
|
|
|
+ "goodsRecordId": 301,
|
|
|
+ "transactionAmount": 4500.00,
|
|
|
+ "tradeStatus": 4,
|
|
|
+ "transactionTime": "2025-11-21 14:00:00",
|
|
|
+ "transactionLocation": "北京市朝阳区xxx",
|
|
|
+ "buyerId": 457,
|
|
|
+ "buyerName": "赵六",
|
|
|
+ "buyerPhone": "13600136000",
|
|
|
+ "sellerId": 788,
|
|
|
+ "sellerName": "孙七",
|
|
|
+ "sellerPhone": "13500135000",
|
|
|
+ "createdTime": "2025-11-21 13:30:00",
|
|
|
+ "operationJsonList": [
|
|
|
+ {
|
|
|
+ "operationType": "CREATE",
|
|
|
+ "operationTime": "2025-11-21 13:30:00",
|
|
|
+ "operationUserId": 457,
|
|
|
+ "operationUserName": "赵六",
|
|
|
+ "operationDesc": "创建交易"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "operationType": "COMPLETE",
|
|
|
+ "operationTime": "2025-11-21 14:00:00",
|
|
|
+ "operationUserId": 457,
|
|
|
+ "operationUserName": "赵六",
|
|
|
+ "operationDesc": "完成交易"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "id": 100,
|
|
|
+ "tradeNo": "S2025112100001",
|
|
|
+ "goodsId": 200,
|
|
|
+ "goodsRecordId": 300,
|
|
|
+ "transactionAmount": 3800.00,
|
|
|
+ "tradeStatus": 4,
|
|
|
+ "transactionTime": "2025-11-21 10:00:00",
|
|
|
+ "transactionLocation": "北京市东城区xxx",
|
|
|
+ "buyerId": 455,
|
|
|
+ "buyerName": "周八",
|
|
|
+ "buyerPhone": "13400134000",
|
|
|
+ "sellerId": 787,
|
|
|
+ "sellerName": "吴九",
|
|
|
+ "sellerPhone": "13300133000",
|
|
|
+ "createdTime": "2025-11-21 09:30:00",
|
|
|
+ "operationJsonList": [
|
|
|
+ {
|
|
|
+ "operationType": "CREATE",
|
|
|
+ "operationTime": "2025-11-21 09:30:00",
|
|
|
+ "operationUserId": 455,
|
|
|
+ "operationUserName": "周八",
|
|
|
+ "operationDesc": "创建交易"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "operationType": "COMPLETE",
|
|
|
+ "operationTime": "2025-11-21 10:00:00",
|
|
|
+ "operationUserId": 455,
|
|
|
+ "operationUserName": "周八",
|
|
|
+ "operationDesc": "完成交易"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**说明**:张三(身份证号 110101199001011234)有3条委托记录,关联了3笔交易,接口返回了他所有的交易信息,按创建时间倒序排列。
|
|
|
+
|
|
|
+### 委托人不存在
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 500,
|
|
|
+ "msg": "委托人信息不存在",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 参数缺失
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "code": 500,
|
|
|
+ "msg": "委托人姓名不能为空",
|
|
|
+ "data": null
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 业务规则
|
|
|
+
|
|
|
+### 查询规则
|
|
|
+
|
|
|
+1. **查询维度**
|
|
|
+ - ✅ 以"姓名+身份证号"为唯一标识
|
|
|
+ - ✅ 查询该人的所有委托记录
|
|
|
+ - ✅ 聚合该人所有委托记录关联的交易信息
|
|
|
+
|
|
|
+2. **数据聚合**
|
|
|
+ - 根据姓名和身份证号查询所有委托记录
|
|
|
+ - 收集所有委托记录的 `tradeId`
|
|
|
+ - 批量查询所有交易记录(自动去重)
|
|
|
+ - 只返回未删除的记录(`delete_flag = 0`)
|
|
|
+
|
|
|
+3. **交易记录排序**
|
|
|
+ - ✅ 按交易创建时间倒序排列(最新的在前)
|
|
|
+
|
|
|
+4. **交易详情处理**
|
|
|
+ - ✅ 每条交易记录包含完整的买卖双方信息
|
|
|
+ - ✅ **自动加载交易操作节点信息(参考商品详情接口逻辑)**
|
|
|
+ - ✅ 操作节点按时间顺序排列,展示完整交易流程
|
|
|
+
|
|
|
+5. **数据关联**
|
|
|
+ - 委托人记录:从 `second_entrust_user` 表根据姓名和身份证号查询
|
|
|
+ - 交易记录:从 `second_trade_record` 表根据 `tradeId` 列表查询
|
|
|
+ - 买卖双方:通过 `buyer_id` 和 `seller_id` 关联 `life_user` 表
|
|
|
+ - 操作节点:从 `second_trade_operation` 表获取交易流程
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 交易状态说明
|
|
|
+
|
|
|
+### 交易状态 (tradeStatus)
|
|
|
+
|
|
|
+| 状态值 | 状态名称 | 说明 |
|
|
|
+|--------|----------|------|
|
|
|
+| 1 | 待确认 | 买家发起交易请求,等待卖家确认 |
|
|
|
+| 2 | 已拒绝 | 卖家拒绝了交易请求 |
|
|
|
+| 3 | 待交易 | 双方确认交易,等待线下交易 |
|
|
|
+| 4 | 交易成功 | 交易完成,双方确认成功 |
|
|
|
+| 5 | 交易失败 | 交易失败 |
|
|
|
+| 6 | 交易取消 | 交易被取消 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 使用场景
|
|
|
+
|
|
|
+### 场景:查看某个委托人的完整交易历史
|
|
|
+
|
|
|
+从分页列表点击某个委托人后,使用该接口获取该人的完整信息。
|
|
|
+
|
|
|
+**步骤**:
|
|
|
+1. 用户在分页列表看到"张三(110101199001011234)有3条委托记录"
|
|
|
+2. 点击"查看详情"
|
|
|
+3. 调用接口:`GET /secondEntrustUser/detail?userName=张三&idCard=110101199001011234`
|
|
|
+4. 返回张三的基本信息和他所有的交易记录(3笔)
|
|
|
+5. 每笔交易都包含完整的交易流程节点
|
|
|
+
|
|
|
+**应用场景**:
|
|
|
+- 委托人详情页展示
|
|
|
+- 交易历史查询
|
|
|
+- 纠纷处理和审核
|
|
|
+- 数据分析和统计
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 前端实现示例
|
|
|
+
|
|
|
+### Vue 3 + Element Plus
|
|
|
+
|
|
|
+```vue
|
|
|
+<template>
|
|
|
+ <div class="entrust-user-detail">
|
|
|
+ <el-page-header @back="goBack" title="返回列表">
|
|
|
+ <template #content>
|
|
|
+ <span class="page-title">委托人详情</span>
|
|
|
+ </template>
|
|
|
+ </el-page-header>
|
|
|
+
|
|
|
+ <!-- 委托人基本信息 -->
|
|
|
+ <el-card class="info-card" v-if="entrustUserInfo" style="margin-top: 20px;">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span>委托人信息</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-descriptions :column="2" border>
|
|
|
+ <el-descriptions-item label="姓名">
|
|
|
+ {{ entrustUserInfo.userName }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="身份证号">
|
|
|
+ {{ entrustUserInfo.idCard }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="联系电话">
|
|
|
+ {{ entrustUserInfo.userPhone }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="首次委托时间">
|
|
|
+ {{ entrustUserInfo.createdTime }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <!-- 交易记录列表 -->
|
|
|
+ <el-card class="trade-card" style="margin-top: 20px;">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header">
|
|
|
+ <span>关联交易记录(共 {{ tradeRecords.length }} 笔)</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-timeline v-if="tradeRecords.length > 0">
|
|
|
+ <el-timeline-item
|
|
|
+ v-for="trade in tradeRecords"
|
|
|
+ :key="trade.id"
|
|
|
+ :timestamp="trade.createdTime"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <el-card>
|
|
|
+ <h4>交易编号:{{ trade.tradeNo }}</h4>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <p>交易金额:<el-tag type="danger">¥{{ trade.transactionAmount }}</el-tag></p>
|
|
|
+ <p>交易状态:<el-tag :type="getStatusType(trade.tradeStatus)">
|
|
|
+ {{ getTradeStatusText(trade.tradeStatus) }}
|
|
|
+ </el-tag></p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <p>买方:{{ trade.buyerName }}({{ trade.buyerPhone }})</p>
|
|
|
+ <p>卖方:{{ trade.sellerName }}({{ trade.sellerPhone }})</p>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <!-- 交易操作流程 -->
|
|
|
+ <el-divider content-position="left">交易流程</el-divider>
|
|
|
+ <el-steps
|
|
|
+ :active="trade.operationJsonList.length"
|
|
|
+ finish-status="success"
|
|
|
+ align-center
|
|
|
+ >
|
|
|
+ <el-step
|
|
|
+ v-for="(operation, index) in trade.operationJsonList"
|
|
|
+ :key="index"
|
|
|
+ :title="operation.operationDesc"
|
|
|
+ :description="`${operation.operationTime} - ${operation.operationUserName}`"
|
|
|
+ />
|
|
|
+ </el-steps>
|
|
|
+ </el-card>
|
|
|
+ </el-timeline-item>
|
|
|
+ </el-timeline>
|
|
|
+
|
|
|
+ <el-empty v-else description="暂无交易记录" />
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref, onMounted } from 'vue';
|
|
|
+import { useRoute, useRouter } from 'vue-router';
|
|
|
+import axios from 'axios';
|
|
|
+import { ElMessage } from 'element-plus';
|
|
|
+
|
|
|
+const route = useRoute();
|
|
|
+const router = useRouter();
|
|
|
+const userName = ref(route.query.userName);
|
|
|
+const idCard = ref(route.query.idCard);
|
|
|
+const entrustUserInfo = ref(null);
|
|
|
+const tradeRecords = ref([]);
|
|
|
+const loading = ref(false);
|
|
|
+
|
|
|
+// 交易状态映射
|
|
|
+const tradeStatusMap = {
|
|
|
+ 1: '待确认',
|
|
|
+ 2: '已拒绝',
|
|
|
+ 3: '待交易',
|
|
|
+ 4: '交易成功',
|
|
|
+ 5: '交易失败',
|
|
|
+ 6: '交易取消'
|
|
|
+};
|
|
|
+
|
|
|
+const getTradeStatusText = (status) => {
|
|
|
+ return tradeStatusMap[status] || '未知状态';
|
|
|
+};
|
|
|
+
|
|
|
+const getStatusType = (status) => {
|
|
|
+ const typeMap = {
|
|
|
+ 1: 'info',
|
|
|
+ 2: 'danger',
|
|
|
+ 3: 'warning',
|
|
|
+ 4: 'success',
|
|
|
+ 5: 'danger',
|
|
|
+ 6: 'info'
|
|
|
+ };
|
|
|
+ return typeMap[status] || 'info';
|
|
|
+};
|
|
|
+
|
|
|
+const goBack = () => {
|
|
|
+ router.back();
|
|
|
+};
|
|
|
+
|
|
|
+// 加载委托人详情
|
|
|
+const loadDetail = async () => {
|
|
|
+ loading.value = true;
|
|
|
+ try {
|
|
|
+ const response = await axios.get('/secondEntrustUser/detail', {
|
|
|
+ params: {
|
|
|
+ userName: userName.value,
|
|
|
+ idCard: idCard.value
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ const data = response.data.data;
|
|
|
+ entrustUserInfo.value = data.entrustUserInfo;
|
|
|
+ tradeRecords.value = data.tradeRecords || [];
|
|
|
+ } catch (error) {
|
|
|
+ ElMessage.error('加载失败:' + error.message);
|
|
|
+ } finally {
|
|
|
+ loading.value = false;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ if (userName.value && idCard.value) {
|
|
|
+ loadDetail();
|
|
|
+ } else {
|
|
|
+ ElMessage.error('缺少必要参数');
|
|
|
+ router.back();
|
|
|
+ }
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.entrust-user-detail {
|
|
|
+ padding: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.page-title {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.card-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+</style>
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 错误码说明
|
|
|
+
|
|
|
+| HTTP状态码 | code | msg | 说明 | 解决方案 |
|
|
|
+|-----------|------|-----|------|----------|
|
|
|
+| 200 | 200 | 成功 | 请求成功 | - |
|
|
|
+| 200 | 500 | 委托人信息不存在 | 该姓名和身份证号组合不存在 | 检查参数是否正确 |
|
|
|
+| 200 | 500 | 委托人姓名不能为空 | 未传入姓名参数 | 必须传入userName参数 |
|
|
|
+| 200 | 500 | 委托人身份证号不能为空 | 未传入身份证号参数 | 必须传入idCard参数 |
|
|
|
+| 200 | 500 | 获取委托人详情失败: xxx | 系统异常 | 查看日志,联系后端开发人员 |
|
|
|
+| 500 | - | - | 服务器内部错误 | 联系后端开发人员 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+
|
|
|
+### ⚠️ 重要提示
|
|
|
+
|
|
|
+1. **必传参数**
|
|
|
+ - `userName` 和 `idCard` 都是必传参数
|
|
|
+ - 两个参数必须同时传入且正确匹配
|
|
|
+
|
|
|
+2. **查询维度**
|
|
|
+ - 以"姓名+身份证号"为唯一标识
|
|
|
+ - 返回该人所有委托记录关联的所有交易信息
|
|
|
+ - 同一个人可能有多笔交易
|
|
|
+
|
|
|
+3. **交易记录**
|
|
|
+ - 交易记录按创建时间倒序排列
|
|
|
+ - 只返回未删除的交易记录
|
|
|
+ - 每笔交易都包含完整的操作节点信息
|
|
|
+
|
|
|
+4. **操作节点信息**
|
|
|
+ - 参考了 `/admin/secondGoods/detail` 接口的实现逻辑
|
|
|
+ - 展示完整的交易流程
|
|
|
+ - 包含操作时间、操作人、操作描述等信息
|
|
|
+
|
|
|
+5. **性能考虑**
|
|
|
+ - 如果该人关联的交易记录过多,可能影响响应速度
|
|
|
+ - 建议在前端做分页展示或懒加载
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 版本历史
|
|
|
+
|
|
|
+| 版本 | 日期 | 修改内容 | 修改人 |
|
|
|
+|------|------|----------|--------|
|
|
|
+| v1.0 | 2025-11-21 | 初始版本,根据主键ID查询 | 开发团队 |
|
|
|
+| v2.0 | 2025-11-21 | **重大更新:改为根据姓名+身份证号查询,以人为维度聚合交易** | 开发团队 |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 联系方式
|
|
|
+
|
|
|
+如有问题或建议,请联系:
|
|
|
+
|
|
|
+- **开发团队**:二手交易平台开发组
|
|
|
+- **服务名称**:alien-second
|
|
|
+- **Controller**:SecondEntrustUserController
|
|
|
+- **文档路径**:`alien-second/doc/委托人详情查询接口文档.md`
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+*最后更新时间:2025-11-21(v2.0 - 以人为维度)*
|