diff --git a/app/main/api/internal/logic/query/querydetailbyorderidlogic.go b/app/main/api/internal/logic/query/querydetailbyorderidlogic.go index 9b2eb1c..5f4833d 100644 --- a/app/main/api/internal/logic/query/querydetailbyorderidlogic.go +++ b/app/main/api/internal/logic/query/querydetailbyorderidlogic.go @@ -62,9 +62,16 @@ func (l *QueryDetailByOrderIdLogic) QueryDetailByOrderId(req *types.QueryDetailB } // 检查订单状态 - if order.Status != "paid" { + // - pending:未支付,阻止查看 + // - refunded:已退款,允许进入,但前端只展示“查询为空,订单已退款”提示(不再展示报告数据) + // - 其他异常状态:按未找到处理 + if order.Status == "pending" { return nil, errors.Wrapf(xerr.NewErrMsg("订单未支付,无法查看报告"), "") } + if order.Status != "paid" && order.Status != "refunded" { + // 使用逻辑层“未找到”错误码,前端按空结果处理 + return nil, errors.Wrapf(xerr.NewErrCode(xerr.LOGIC_QUERY_NOT_FOUND), "订单状态不支持查看报告, status=%s", order.Status) + } // 获取报告信息 queryModel, err := l.svcCtx.QueryModel.FindOneByOrderId(l.ctx, req.OrderId) @@ -105,6 +112,15 @@ func (l *QueryDetailByOrderIdLogic) QueryDetailByOrderId(req *types.QueryDetailB } query.ProductName = product.ProductName query.Product = product.ProductEn + + // 已退款订单:不再返回具体报告数据,仅告知前端“查询为空,订单已退款” + if order.Status == "refunded" { + query.QueryState = "failed" // 前端据此走空状态 + 退款提示 + query.QueryData = []types.QueryItem{} // 不返回任何模块数据 + if query.QueryParams == nil { // 参数可选保留,这里保险起见给个空 map + query.QueryParams = map[string]interface{}{} + } + } return &types.QueryDetailByOrderIdResp{ Query: query, }, nil diff --git a/app/main/api/internal/logic/query/querydetailbyordernologic.go b/app/main/api/internal/logic/query/querydetailbyordernologic.go index af4b6c5..eeeb2a5 100644 --- a/app/main/api/internal/logic/query/querydetailbyordernologic.go +++ b/app/main/api/internal/logic/query/querydetailbyordernologic.go @@ -53,9 +53,16 @@ func (l *QueryDetailByOrderNoLogic) QueryDetailByOrderNo(req *types.QueryDetailB } // 检查订单状态 - if order.Status != "paid" { + // - pending:未支付,阻止查看 + // - refunded:已退款,允许进入,但前端只展示“查询为空,订单已退款”提示(不再展示报告数据) + // - 其他异常状态:按未找到处理 + if order.Status == "pending" { return nil, errors.Wrapf(xerr.NewErrMsg("订单未支付,无法查看报告"), "") } + if order.Status != "paid" && order.Status != "refunded" { + // 使用逻辑层“未找到”错误码,前端按空结果处理 + return nil, errors.Wrapf(xerr.NewErrCode(xerr.LOGIC_QUERY_NOT_FOUND), "订单状态不支持查看报告, status=%s", order.Status) + } // 获取报告信息 queryModel, err := l.svcCtx.QueryModel.FindOneByOrderId(l.ctx, order.Id) @@ -96,6 +103,15 @@ func (l *QueryDetailByOrderNoLogic) QueryDetailByOrderNo(req *types.QueryDetailB } query.Product = product.ProductEn query.ProductName = product.ProductName + + // 已退款订单:不再返回具体报告数据,仅告知前端“查询为空,订单已退款” + if order.Status == "refunded" { + query.QueryState = "failed" // 前端据此走空状态 + 退款提示 + query.QueryData = []types.QueryItem{} // 不返回任何模块数据 + if query.QueryParams == nil { // 参数可选保留,这里保险起见给个空 map + query.QueryParams = map[string]interface{}{} + } + } return &types.QueryDetailByOrderNoResp{ Query: query, }, nil diff --git a/app/main/api/internal/service/apirequestService.go b/app/main/api/internal/service/apirequestService.go index a4551ca..71d4daf 100644 --- a/app/main/api/internal/service/apirequestService.go +++ b/app/main/api/internal/service/apirequestService.go @@ -1306,10 +1306,17 @@ func (a *ApiRequestService) ProcessQCXGY7F2Request(params []byte) ([]byte, error func (a *ApiRequestService) ProcessQCXG1H7YRequest(params []byte) ([]byte, error) { vin := gjson.GetBytes(params, "vin_code") - if !vin.Exists() || vin.String() == "" { - return nil, errors.New("api请求, QCXG1H7Y, 缺少 vin_code") + plate := gjson.GetBytes(params, "car_license") + if !vin.Exists() || vin.String() == "" || !plate.Exists() || plate.String() == "" { + return nil, errors.New("api请求, QCXG1H7Y, 缺少 vin_code 或 car_license") } - resp, err := a.tianyuanapi.CallInterface("QCXG1H7Y", map[string]interface{}{"vin_code": vin.String()}) + // 天远侧字段为 vin_code + plate_no,这里将前端 car_license 映射为 plate_no + body := map[string]interface{}{ + "vin_code": vin.String(), + "plate_no": plate.String(), + } + logx.Infof("vehicle api request QCXG1H7Y, vin_code=%s, plate_no=%s", vin.String(), plate.String()) + resp, err := a.tianyuanapi.CallInterface("QCXG1H7Y", body) if err != nil { return nil, err }