qnc-server-tob/app/main/api/internal/logic/query/confirmquerystatelogic.go

63 lines
1.9 KiB
Go
Raw Normal View History

2025-05-24 14:26:20 +08:00
package query
import (
"context"
2025-06-09 12:34:52 +08:00
"qnc-server/app/main/api/internal/svc"
"qnc-server/app/main/api/internal/types"
"qnc-server/app/main/model"
2025-05-24 14:26:20 +08:00
"qnc-server/common/xerr"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/logx"
)
type ConfirmQueryStateLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewConfirmQueryStateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ConfirmQueryStateLogic {
return &ConfirmQueryStateLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *ConfirmQueryStateLogic) ConfirmQueryState(req *types.ConfirmQueryStateReq) (resp *types.ConfirmQueryStateResp, err error) {
// 1. 通过 order_id 查询订单,判断订单是否已支付
order, err := l.svcCtx.OrderModel.FindOne(l.ctx, req.OrderID)
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询订单失败: %v", err)
}
if order == nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "订单不存在")
}
// 若订单未支付,则直接返回 OrderState := "pending", QueryState := ""
if order.Status != model.OrderStatusPaid {
return &types.ConfirmQueryStateResp{
OrderState: order.Status,
QueryState: "",
}, nil
}
// 2. 订单已支付,查询 query 状态(假设通过 order_id 查询 query 记录,例如使用 QueryModel.FindOneByOrderId
query, err := l.svcCtx.QueryModel.FindOneByOrderId(l.ctx, req.OrderID)
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询 query 失败: %v", err)
}
if query == nil {
// 若 query 不存在,则返回 OrderState := "paid", QueryState := ""
return &types.ConfirmQueryStateResp{
OrderState: order.Status,
QueryState: "",
}, nil
}
// 否则,返回 OrderState := "paid", QueryState := query.QueryState
return &types.ConfirmQueryStateResp{
OrderState: query.QueryState,
QueryState: query.QueryState,
}, nil
}