diff --git a/internal/model/dto/refund_dto.go b/internal/model/dto/refund_dto.go index 8d86168..a6e3db0 100644 --- a/internal/model/dto/refund_dto.go +++ b/internal/model/dto/refund_dto.go @@ -58,6 +58,7 @@ type RefundResponse struct { OrderID uint `json:"order_id" description:"关联订单ID"` PackageUsageID *uint `json:"package_usage_id,omitempty" description:"关联套餐使用记录ID"` ShopID *uint `json:"shop_id,omitempty" description:"店铺ID"` + ShopName string `json:"shop_name,omitempty" description:"店铺名称"` ActualReceivedAmount int64 `json:"actual_received_amount" description:"实收金额(分)"` RequestedRefundAmount int64 `json:"requested_refund_amount" description:"申请退款金额(分)"` ApprovedRefundAmount *int64 `json:"approved_refund_amount,omitempty" description:"审批实际退款金额(分)"` diff --git a/internal/model/refund.go b/internal/model/refund.go index e2ed2bd..fa33681 100644 --- a/internal/model/refund.go +++ b/internal/model/refund.go @@ -18,6 +18,7 @@ type RefundRequest struct { OrderID uint `gorm:"column:order_id;index;not null;comment:关联订单ID" json:"order_id"` PackageUsageID *uint `gorm:"column:package_usage_id;comment:关联套餐使用记录ID(可选)" json:"package_usage_id,omitempty"` ShopID *uint `gorm:"column:shop_id;index;comment:店铺ID(从订单获取,用于数据权限过滤)" json:"shop_id,omitempty"` + ShopName string `gorm:"column:shop_name;->" json:"shop_name,omitempty"` // 金额信息 ActualReceivedAmount int64 `gorm:"column:actual_received_amount;type:bigint;not null;comment:实收金额(分)" json:"actual_received_amount"` diff --git a/internal/service/refund/service.go b/internal/service/refund/service.go index 484cff3..cf3010e 100644 --- a/internal/service/refund/service.go +++ b/internal/service/refund/service.go @@ -132,7 +132,7 @@ func (s *Service) List(ctx context.Context, req *dto.RefundListRequest) (*dto.Re opts := &store.QueryOptions{ Page: req.Page, PageSize: req.PageSize, - OrderBy: "created_at DESC", + OrderBy: "tb_refund_request.created_at DESC", } if opts.Page == 0 { opts.Page = 1 @@ -646,6 +646,7 @@ func buildRefundResponse(r *model.RefundRequest) *dto.RefundResponse { OrderID: r.OrderID, PackageUsageID: r.PackageUsageID, ShopID: r.ShopID, + ShopName: r.ShopName, ActualReceivedAmount: r.ActualReceivedAmount, RequestedRefundAmount: r.RequestedRefundAmount, ApprovedRefundAmount: r.ApprovedRefundAmount, diff --git a/internal/store/postgres/refund_store.go b/internal/store/postgres/refund_store.go index 5b61bea..0f67545 100644 --- a/internal/store/postgres/refund_store.go +++ b/internal/store/postgres/refund_store.go @@ -35,7 +35,11 @@ func (s *RefundStore) Create(ctx context.Context, req *model.RefundRequest) erro // GetByID 根据 ID 查询退款申请(含数据权限过滤) func (s *RefundStore) GetByID(ctx context.Context, id uint) (*model.RefundRequest, error) { var req model.RefundRequest - query := s.db.WithContext(ctx).Where("id = ?", id) + query := s.db.WithContext(ctx). + Model(&model.RefundRequest{}). + Select("tb_refund_request.*, tb_shop.shop_name AS shop_name"). + Joins("LEFT JOIN tb_shop ON tb_shop.id = tb_refund_request.shop_id AND tb_shop.deleted_at IS NULL"). + Where("tb_refund_request.id = ?", id) query = middleware.ApplyShopFilter(ctx, query) if err := query.First(&req).Error; err != nil { return nil, err @@ -61,18 +65,21 @@ func (s *RefundStore) List(ctx context.Context, opts *store.QueryOptions, filter var requests []*model.RefundRequest var total int64 - query := s.db.WithContext(ctx).Model(&model.RefundRequest{}) + query := s.db.WithContext(ctx). + Model(&model.RefundRequest{}). + Select("tb_refund_request.*, tb_shop.shop_name AS shop_name"). + Joins("LEFT JOIN tb_shop ON tb_shop.id = tb_refund_request.shop_id AND tb_shop.deleted_at IS NULL") query = middleware.ApplyShopFilter(ctx, query) if filters != nil { if filters.Status != nil { - query = query.Where("status = ?", *filters.Status) + query = query.Where("tb_refund_request.status = ?", *filters.Status) } if filters.OrderID != nil { - query = query.Where("order_id = ?", *filters.OrderID) + query = query.Where("tb_refund_request.order_id = ?", *filters.OrderID) } if filters.ShopID != nil { - query = query.Where("shop_id = ?", *filters.ShopID) + query = query.Where("tb_refund_request.shop_id = ?", *filters.ShopID) } } @@ -92,7 +99,7 @@ func (s *RefundStore) List(ctx context.Context, opts *store.QueryOptions, filter if opts.OrderBy != "" { query = query.Order(opts.OrderBy) } else { - query = query.Order("created_at DESC") + query = query.Order("tb_refund_request.created_at DESC") } if err := query.Find(&requests).Error; err != nil {