diff --git a/README.md b/README.md index 8ef64ef..b41abde 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ curl http://localhost:8081/ping | 方法 | 路径 | 说明 | | --- | --- | --- | -| GET | `/orders` | 订单列表(query:page/page_size/order_no/user_id/status) | +| GET | `/orders` | 订单列表(query:page/page_size/order_no/transaction_id/user_id/status) | | GET | `/orders/:orderNo` | 订单详情 | | GET | `/refunds` | 退款单列表(query:page/page_size/status/order_no) | | POST | `/refunds/:refundNo/approve` | 审核通过(待处理→退款中) | diff --git a/internal/dto/order.go b/internal/dto/order.go index 98b13e7..18e0f94 100644 --- a/internal/dto/order.go +++ b/internal/dto/order.go @@ -3,9 +3,10 @@ package dto // OrderListRequest 订单列表请求。 type OrderListRequest struct { PageRequest - OrderNo string `form:"order_no"` // 订单号(精确) - UserID int64 `form:"user_id"` // 用户 ID - Status int8 `form:"status" binding:"omitempty,oneof=1 2 3 4 5"` + OrderNo string `form:"order_no"` // 订单号(精确) + TransactionID string `form:"transaction_id"` // 微信交易号(精确) + UserID int64 `form:"user_id"` // 用户 ID + Status int8 `form:"status" binding:"omitempty,oneof=1 2 3 4 5"` } // OrderItem 订单信息(金额单位:分)。 diff --git a/internal/mysqldao/order.go b/internal/mysqldao/order.go index 58ee4c2..df1dd50 100644 --- a/internal/mysqldao/order.go +++ b/internal/mysqldao/order.go @@ -20,11 +20,12 @@ func NewOrderDao() *OrderDao { // OrderListParams 订单分页列表筛选参数。 type OrderListParams struct { - OrderNo string // 订单号(精确) - UserID int64 // 用户 ID,0 表示全部 - Status int8 // 订单状态,0 表示全部 - Page int - Size int + OrderNo string // 订单号(精确) + TransactionID string // 微信交易号(精确) + UserID int64 // 用户 ID,0 表示全部 + Status int8 // 订单状态,0 表示全部 + Page int + Size int } // OrderList 分页查询订单 @@ -38,6 +39,9 @@ func (d *OrderDao) OrderList(ctx context.Context, p OrderListParams) ([]mysqlmod if p.OrderNo != "" { q = q.Where("order_no = ?", p.OrderNo) } + if p.TransactionID != "" { + q = q.Where("transaction_id = ?", p.TransactionID) + } if p.UserID != 0 { q = q.Where("user_id = ?", p.UserID) } diff --git a/internal/service/order.go b/internal/service/order.go index bd2a2b3..858d42b 100644 --- a/internal/service/order.go +++ b/internal/service/order.go @@ -33,11 +33,12 @@ func (s *OrderService) List(ctx context.Context, request *dto.OrderListRequest) page, pageSize := normalizePage(request.Page, request.PageSize) list, total, err := s.orderDao.OrderList(ctx, mysqldao.OrderListParams{ - OrderNo: strings.TrimSpace(request.OrderNo), - UserID: request.UserID, - Status: request.Status, - Page: page, - Size: pageSize, + OrderNo: strings.TrimSpace(request.OrderNo), + TransactionID: strings.TrimSpace(request.TransactionID), + UserID: request.UserID, + Status: request.Status, + Page: page, + Size: pageSize, }) if err != nil { return nil, errcode.DatabaseError