fix(admin): 主站分销管理按最新分成与释放口径改展示

规则页按模式展示收号/卖出/服务费,通道费标明主站承担;订单改为释放状态筛选;结算区分自动与人工批次。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
yml2213
2026-09-10 17:36:49 +08:00
co-authored by Cursor
parent 647fdc0b4a
commit e621722218
10 changed files with 677 additions and 138 deletions
+9 -7
View File
@@ -145,13 +145,15 @@ type DistributionOrderDTO struct {
}
type DistributionOrderListQuery struct {
SiteID uint64
Kind string
Role string
Status string
Keyword string
Page int
Size int
SiteID uint64
Kind string
Role string
Status string
Mode string
FinancialStatus string
Keyword string
Page int
Size int
}
type DistributionOrderPage struct {
@@ -144,13 +144,15 @@ func (h *Handler) ListOrders(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
size, _ := strconv.Atoi(c.DefaultQuery("page_size", "20"))
result, err := h.service.ListOrders(c.Request.Context(), DistributionOrderListQuery{
SiteID: scoped,
Kind: c.Query("kind"),
Role: c.Query("role"),
Status: c.Query("status"),
Keyword: c.Query("keyword"),
Page: page,
Size: size,
SiteID: scoped,
Kind: c.Query("kind"),
Role: c.Query("role"),
Status: c.Query("status"),
Mode: c.Query("mode"),
FinancialStatus: c.Query("financial_status"),
Keyword: c.Query("keyword"),
Page: page,
Size: size,
})
if err != nil {
writeError(c, err)
@@ -331,9 +331,16 @@ func (r *Repository) UpdateSite(ctx context.Context, adminID, id uint64, req Upd
}
func (r *Repository) ListRules(ctx context.Context, adminID uint64, siteID *uint64, mode string) ([]RuleDTO, error) {
db := r.db.WithContext(ctx).Model(&model.DistributionRuleVersion{}).Order("effective_from DESC, id DESC")
db := r.db.WithContext(ctx).Model(&model.DistributionRuleVersion{}).
Order("CASE WHEN site_id IS NULL THEN 0 ELSE 1 END ASC, site_id ASC, mode ASC, version DESC, id DESC")
if siteID == nil {
db = db.Where("site_id IS NULL")
global, err := r.hasGlobalDistributionAccess(ctx, adminID)
if err != nil {
return nil, err
}
if !global {
db = db.Where("site_id IS NULL")
}
} else {
if err := r.ensureSiteAccess(ctx, adminID, *siteID); err != nil {
return nil, err
@@ -475,6 +482,12 @@ func (r *Repository) ListOrders(ctx context.Context, query DistributionOrderList
if query.Status != "" {
base = base.Where("ro.status = ?", query.Status)
}
if mode := strings.TrimSpace(query.Mode); mode != "" {
base = base.Where("ro.distribution_mode = ?", mode)
}
if financialStatus := strings.TrimSpace(query.FinancialStatus); financialStatus != "" {
base = base.Where("f.settlement_status = ?", financialStatus)
}
if strings.TrimSpace(query.Keyword) != "" {
kw := "%" + strings.TrimSpace(query.Keyword) + "%"
base = base.Where("(ro.order_no LIKE ? OR rl.listing_no LIKE ? OR ga.title LIKE ? OR u.phone LIKE ?)", kw, kw, kw, kw)