增加资金出款按操作人筛选

This commit is contained in:
yml2213
2026-09-06 14:03:40 +08:00
parent cd719fc355
commit 4b9e64e398
10 changed files with 453 additions and 1321 deletions
@@ -271,6 +271,13 @@ func (r *Repository) applyDisbursementFilters(db *gorm.DB, query DisbursementQue
db = db.Where(`(d.business_no LIKE ? OR d.payee_name LIKE ? OR d.payee_phone LIKE ?
OR d.uploader_name LIKE ? OR d.account_name LIKE ? OR d.account_no LIKE ?)`, like, like, like, like, like, like)
}
if query.Operator != "" {
like := "%" + query.Operator + "%"
db = db.Where("(d.operator_name LIKE ? OR CAST(d.operator_id AS CHAR) LIKE ?)", like, like)
}
if query.OperatorID > 0 {
db = db.Where("d.operator_id = ?", query.OperatorID)
}
if !query.StartDate.IsZero() && !query.EndDate.IsZero() {
if query.DateType == "paid" {
db = db.Where("d.paid_at >= ? AND d.paid_at <= ?", query.StartDate, query.EndDate)
@@ -203,4 +203,24 @@ func TestDisbursementListCombinesPlatformSettlementsAndWithdrawals(t *testing.T)
if paidWithdrawals.Total != 1 || paidWithdrawals.Items[0].WithdrawalID != 10 {
t.Fatalf("按打款日期查询结果 = %+v", paidWithdrawals.Items)
}
operatorFiltered, err := repo.Disbursements(t.Context(), DisbursementQuery{
Operator: "财务甲",
DateType: "created",
StartDate: at(1),
EndDate: time.Date(2026, 7, 10, 23, 59, 59, 0, loc),
Page: 1,
PageSize: 20,
})
if err != nil {
t.Fatalf("按操作人查询出款失败: %v", err)
}
if operatorFiltered.Total != 7 || len(operatorFiltered.Items) != 7 {
t.Fatalf("按操作人查询结果 = %+v", operatorFiltered.Items)
}
for _, item := range operatorFiltered.Items {
if item.OperatorName != "财务甲" {
t.Fatalf("操作人筛选返回了其他操作人: %+v", item)
}
}
}
@@ -27,6 +27,8 @@ type DisbursementQuery struct {
DateType string
BusinessNo string
Keyword string
Operator string
OperatorID uint64
UserID uint64
StartDate time.Time
EndDate time.Time
@@ -222,9 +222,13 @@ func parseDisbursementQuery(c *gin.Context) (DisbursementQuery, bool) {
DateType: c.DefaultQuery("date_type", "created"),
BusinessNo: strings.TrimSpace(c.Query("business_no")),
Keyword: strings.TrimSpace(c.Query("keyword")),
Operator: strings.TrimSpace(c.Query("operator")),
StartDate: start,
EndDate: end,
}
if query.Operator == "" {
query.Operator = strings.TrimSpace(c.Query("operator_name"))
}
if query.SourceType != "" && query.SourceType != "platform_managed" && query.SourceType != "pickup" && query.SourceType != "pickup_adjustment" && query.SourceType != "withdrawal" && query.SourceType != "manual_offline" {
response.BadRequest(c, "出款类型不正确")
return query, false
@@ -237,6 +241,14 @@ func parseDisbursementQuery(c *gin.Context) (DisbursementQuery, bool) {
response.BadRequest(c, "日期类型不正确")
return query, false
}
if raw := c.Query("operator_id"); raw != "" {
value, err := strconv.ParseUint(raw, 10, 64)
if err != nil || value == 0 {
response.BadRequest(c, "操作人 ID 不正确")
return query, false
}
query.OperatorID = value
}
if raw := c.Query("user_id"); raw != "" {
value, err := strconv.ParseUint(raw, 10, 64)
if err != nil || value == 0 {