| 项目 | 内容 |
|---|---|
| 接口名称 | 获取用户作为卖家的交易评价列表 |
| 接口路径 | /secondTradeRecord/getSellerEvaluationList |
| 请求方式 | GET |
| 接口版本 | v1.0 |
| 开发时间 | 2025-11-18 |
| 接口状态 | ✅ 已完成 |
用于用户主页展示该用户作为卖家收到的所有交易评价,包含:
| 参数名 | 类型 | 必填 | 描述 | 示例值 | 默认值 |
|---|---|---|---|---|---|
| sellerId | Integer | ✅ 是 | 卖家用户ID(主页用户ID) | 123 | - |
curl -X GET "http://localhost:8080/secondTradeRecord/getSellerEvaluationList?sellerId=123" \
-H "Authorization: Bearer your_token_here"
axios.get('/secondTradeRecord/getSellerEvaluationList', {
params: {
sellerId: 123
},
headers: {
'Authorization': 'Bearer your_token_here'
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
String url = "http://localhost:8080/secondTradeRecord/getSellerEvaluationList?sellerId=123";
RestTemplate restTemplate = new RestTemplate();
R<List<SellerEvaluationVo>> result = restTemplate.getForObject(url, R.class);
| 字段名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 响应状态码,200表示成功 |
| msg | String | 响应消息 |
| data | Array<SellerEvaluationVo> | 评价列表数据 |
| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|---|---|---|---|---|
| id | Integer | ✅ | 交易记录ID | 1 |
| tradeNo | String | ✅ | 交易编号 | S2025111800001 |
| transactionTime | String | ✅ | 交易时间 | 2025-11-18 10:00:00 |
| transactionAmount | BigDecimal | ✅ | 交易金额(元) | 3800.00 |
| tradeStatus | Integer | ✅ | 交易状态 | 4 |
| createdTime | String | ✅ | 创建时间 | 2025-11-18 09:00:00 |
| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|---|---|---|---|---|
| goodsId | Integer | ✅ | 商品ID | 100 |
| goodsTitle | String | ❌ | 商品标题 | 二手iPhone 13 128G 白色 95新 |
| goodsHomeImage | String | ❌ | 商品封面图片URL | https://cdn.example.com/goods/iphone13.jpg |
| goodsPrice | BigDecimal | ❌ | 商品价格(元) | 3999.00 |
| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|---|---|---|---|---|
| buyerId | Integer | ✅ | 买家ID | 456 |
| buyerName | String | ❌ | 买家昵称 | 张三 |
| buyerImage | String | ❌ | 买家头像URL | https://cdn.example.com/avatar/user456.jpg |
| buyerPhone | String | ❌ | 买家手机号 | 13800138000 |
| buyerRealName | String | ❌ | 买家真实姓名 | 张三三 |
| buyerSex | String | ❌ | 买家性别 | 男 |
| buyerJianjie | String | ❌ | 买家简介 | 热爱数码产品,诚信交易 |
| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|---|---|---|---|---|
| buyerEvaluate | String | ✅ | 买家评价内容 | 商品质量很好,和描述一致,卖家态度也不错,推荐! |
| buyerRating | Integer | ❌ | 买家评分(1-5分) | 5 |
| buyerCreditScore | Integer | ✅ | 买家信用积分 | 450 |
| buyerCreditLevel | String | ✅ | 买家风控评分等级 | A |
| 字段名 | 类型 | 是否必返 | 描述 | 示例值 |
|---|---|---|---|---|
| sellerId | Integer | ✅ | 卖家ID | 123 |
| sellerName | String | ❌ | 卖家昵称 | 李四 |
| sellerImage | String | ❌ | 卖家头像URL | https://cdn.example.com/seller.jpg |
| sellerCreditScore | Integer | ✅ | 卖家信用积分 | 500 |
| sellerCreditLevel | String | ✅ | 卖家风控评分等级 | O |
| 状态值 | 状态名称 | 说明 |
|---|---|---|
| 1 | 待确认 | 买家发起交易请求,等待卖家确认 |
| 2 | 已拒绝 | 卖家拒绝了交易请求 |
| 3 | 待交易 | 双方确认交易,等待线下交易 |
| 4 | 交易成功 | 交易完成,双方确认成功 |
| 5 | 交易失败 | 交易失败 |
| 6 | 交易取消 | 交易被取消 |
| 等级 | 违规次数 | 等级说明 | 风险程度 |
|---|---|---|---|
| O | 0次 | 无违规记录 | 🟢 无风险(最优) |
| A | 1-2次 | 轻微违规 | 🟢 低风险 |
| B | 3-5次 | 一般违规 | 🟡 中等风险 |
| C | 6-9次 | 较严重违规 | 🟡 较高风险 |
| D | 10-14次 | 严重违规 | 🔴 高风险 |
| E | ≥15次 | 极差 | 🔴 极高风险(最差) |
风控等级计算说明:
second_risk_control_record 表中的违规记录数量{
"code": 200,
"msg": "成功",
"data": [
{
"id": 1,
"tradeNo": "S2025111800001",
"goodsId": 100,
"goodsTitle": "二手iPhone 13 128G 白色 95新",
"goodsHomeImage": "https://cdn.example.com/goods/iphone13.jpg",
"goodsPrice": 3999.00,
"transactionAmount": 3800.00,
"buyerId": 456,
"buyerName": "张三",
"buyerImage": "https://cdn.example.com/avatar/user456.jpg",
"buyerPhone": "13800138000",
"buyerRealName": "张三三",
"buyerSex": "男",
"buyerJianjie": "热爱数码产品,诚信交易",
"buyerEvaluate": "商品质量很好,和描述一致,卖家态度也不错,推荐!",
"buyerRating": 5,
"buyerCreditScore": 450,
"buyerCreditLevel": "A",
"sellerId": 123,
"sellerName": "李四",
"sellerImage": "https://cdn.example.com/avatar/user123.jpg",
"sellerCreditScore": 500,
"sellerCreditLevel": "O",
"transactionTime": "2025-11-18 10:00:00",
"tradeStatus": 4,
"createdTime": "2025-11-18 09:00:00"
},
{
"id": 2,
"tradeNo": "S2025111700025",
"goodsId": 101,
"goodsTitle": "小米手环7 黑色 全新未拆封",
"goodsHomeImage": "https://cdn.example.com/goods/miband7.jpg",
"goodsPrice": 199.00,
"transactionAmount": 180.00,
"buyerId": 789,
"buyerName": "王五",
"buyerImage": "https://cdn.example.com/avatar/user789.jpg",
"buyerPhone": "13900139000",
"buyerRealName": "王小五",
"buyerSex": "女",
"buyerJianjie": "喜欢运动健身",
"buyerEvaluate": "东西不错,发货速度快",
"buyerRating": 4,
"buyerCreditScore": 380,
"buyerCreditLevel": "O",
"sellerId": 123,
"sellerName": "李四",
"sellerImage": "https://cdn.example.com/avatar/user123.jpg",
"sellerCreditScore": 500,
"sellerCreditLevel": "O",
"transactionTime": "2025-11-17 15:30:00",
"tradeStatus": 4,
"createdTime": "2025-11-17 14:20:00"
}
]
}
{
"code": 200,
"msg": "成功",
"data": []
}
{
"code": 500,
"msg": "获取评价列表失败: 卖家ID不能为空",
"data": null
}
{
"code": 500,
"msg": "获取评价列表失败: 数据库连接异常",
"data": null
}
数据过滤
buyer_evaluate IS NOT NULL AND buyer_evaluate != '')delete_flag = 0)数据关联
goods_record_id 关联 second_goods_record 表buyer_id 关联 life_user 表seller_id 关联 life_user 表user_id 关联 second_user_credit 表second_risk_control_record 表性能优化
字段缺失处理
nullnullcreditScore 返回 0"O"评分有效性
buyerRating 有效范围:1-5 分null| HTTP状态码 | code | msg | 说明 | 解决方案 |
|---|---|---|---|---|
| 200 | 200 | 成功 | 请求成功 | - |
| 200 | 500 | 卖家ID不能为空 | 未传入 sellerId 参数 | 检查请求参数,确保传入 sellerId |
| 200 | 500 | 获取评价列表失败: xxx | 系统异常 | 查看日志,联系后端开发人员 |
| 500 | - | - | 服务器内部错误 | 联系后端开发人员 |
在用户主页展示该用户作为卖家的历史交易评价,供其他用户查看。
场景示例:
通过评价内容、评分和风控等级综合评估卖家的信誉度。
评估维度:
买家在决定是否与某卖家交易时,可以查看其历史评价。
决策参考:
| 技术点 | 实现方案 |
|---|---|
| 查询方式 | MyBatis Plus LambdaQueryWrapper |
| 关联查询 | 批量查询 + Map 索引 |
| 风控计算 | 实时查询违规记录并计算等级 |
| 事务处理 | 无需事务(只读查询) |
| 性能优化 | 批量查询避免 N+1 问题 |
// 1. 查询交易记录
LambdaQueryWrapper<SecondTradeRecord> tradeWrapper = new LambdaQueryWrapper<>();
tradeWrapper.eq(SecondTradeRecord::getSellerId, sellerId)
.eq(SecondTradeRecord::getDeleteFlag, 0)
.isNotNull(SecondTradeRecord::getBuyerEvaluate)
.ne(SecondTradeRecord::getBuyerEvaluate, "")
.orderByDesc(SecondTradeRecord::getCreatedTime);
List<SecondTradeRecord> tradeRecords = mapper.selectList(tradeWrapper);
// 2. 批量查询商品信息
LambdaQueryWrapper<SecondGoodsRecord> goodsWrapper = new LambdaQueryWrapper<>();
goodsWrapper.in(SecondGoodsRecord::getId, goodsRecordIds);
List<SecondGoodsRecord> goodsRecords = goodsRecordMapper.selectList(goodsWrapper);
// 3. 批量查询用户信息
LambdaQueryWrapper<LifeUser> userWrapper = new LambdaQueryWrapper<>();
userWrapper.in(LifeUser::getId, buyerIds).eq(LifeUser::getDeleteFlag, 0);
List<LifeUser> buyers = lifeUserMapper.selectList(userWrapper);
// 4. 批量查询信用积分
LambdaQueryWrapper<SecondUserCredit> creditWrapper = new LambdaQueryWrapper<>();
creditWrapper.in(SecondUserCredit::getUserId, allUserIds)
.eq(SecondUserCredit::getDeleteFlag, 0);
List<SecondUserCredit> credits = secondUserCreditMapper.selectList(creditWrapper);
// 5. 计算风控等级
String creditLevel = calculateCreditLevel(userId);
| 表名 | 说明 | 关联字段 |
|---|---|---|
| second_trade_record | 交易记录表 | 主表 |
| second_goods_record | 商品记录表 | goods_record_id |
| life_user | 用户表 | buyer_id, seller_id |
| second_user_credit | 用户信用积分表 | user_id |
| second_risk_control_record | 风控记录表 | user_id(用于计算等级) |
Controller
alien-second/src/main/java/shop/alien/second/controller/SecondTradeRecordController.java
Service Interface
alien-second/src/main/java/shop/alien/second/service/SecondTradeRecordService.java
Service Implementation
alien-second/src/main/java/shop/alien/second/service/impl/SecondTradeRecordServiceImpl.java
VO Object
alien-entity/src/main/java/shop/alien/entity/second/vo/SellerEvaluationVo.java
Entity
alien-entity/src/main/java/shop/alien/entity/second/SecondTradeRecord.java
必传参数
sellerId 为必传参数,用于查看指定用户的评价列表"卖家ID不能为空"数据权限
空数据处理
[]null,前端可以直接遍历字段可空性
null,前端需要做空值判断评分范围
buyerRating 的有效范围是 1-5 分前端展示建议
// 显示买家昵称,为空时显示默认值
const buyerName = evaluation.buyerName || '匿名用户';
// 显示评分,为空时显示未评分
const rating = evaluation.buyerRating ? `${evaluation.buyerRating}分` : '未评分';
// 风控等级颜色映射
const levelColorMap = {
'O': 'green', // 最好
'A': 'green',
'B': 'orange',
'C': 'orange',
'D': 'red',
'E': 'red' // 最差
};
缓存策略
分页处理
测试步骤:
GET /secondTradeRecord/getSellerEvaluationList?sellerId=123期望结果:
测试步骤:
GET /secondTradeRecord/getSellerEvaluationList?sellerId=999期望结果:
[]测试步骤:
GET /secondTradeRecord/getSellerEvaluationList(不传 sellerId)期望结果:
测试步骤:
期望结果:
buyerCreditLevel = "A"buyerCreditLevel = "O"| 版本 | 日期 | 修改内容 | 修改人 |
|---|---|---|---|
| v1.0 | 2025-11-18 | 初始版本,实现基本功能 | 开发团队 |
| v1.0 | 2025-11-18 | 优化查询方式,使用 MyBatis Plus | 开发团队 |
| v1.0 | 2025-11-18 | 增加风控评分等级计算 | 开发团队 |
| v1.0 | 2025-11-18 | 增加更多用户信息字段 | 开发团队 |
如有问题或建议,请联系:
alien-second/doc/获取卖家交易评价列表接口文档.md最后更新时间:2025-11-18