新增资金出款查询与财务统计
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"hfb_sys/backend/internal/timeutil"
|
||||
@@ -46,6 +47,19 @@ func (h *Handler) Details(c *gin.Context) {
|
||||
response.OK(c, result)
|
||||
}
|
||||
|
||||
func (h *Handler) Disbursements(c *gin.Context) {
|
||||
query, ok := parseDisbursementQuery(c)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
result, err := h.service.Disbursements(c.Request.Context(), query)
|
||||
if err != nil {
|
||||
writeFinanceError(c, err)
|
||||
return
|
||||
}
|
||||
response.OK(c, result)
|
||||
}
|
||||
|
||||
func parseDashboardQuery(c *gin.Context) (DashboardQuery, bool) {
|
||||
start, end, ok := parseDateRange(c, 6)
|
||||
if !ok {
|
||||
@@ -60,14 +74,65 @@ func parseDetailQuery(c *gin.Context) (DetailQuery, bool) {
|
||||
return DetailQuery{}, false
|
||||
}
|
||||
query := DetailQuery{
|
||||
OrderNo: c.Query("order_no"),
|
||||
OrderStatus: c.Query("order_status"),
|
||||
SettlementStatus: c.Query("settlement_status"),
|
||||
DateType: c.DefaultQuery("date_type", "settled"),
|
||||
StartDate: start,
|
||||
EndDate: end,
|
||||
OrderNo: c.Query("order_no"),
|
||||
OrderStatus: c.Query("order_status"),
|
||||
SettlementStatus: c.Query("settlement_status"),
|
||||
SettlementMode: c.Query("settlement_mode"),
|
||||
OfflineSettlementStatus: c.Query("offline_settlement_status"),
|
||||
DateType: c.DefaultQuery("date_type", "settled"),
|
||||
StartDate: start,
|
||||
EndDate: end,
|
||||
}
|
||||
if query.DateType != "created" && query.DateType != "settled" {
|
||||
if query.DateType != "created" && query.DateType != "settled" && query.DateType != "offline_settled" {
|
||||
response.BadRequest(c, "日期类型不正确")
|
||||
return query, false
|
||||
}
|
||||
if query.SettlementMode != "" && query.SettlementMode != "owner_wallet" && query.SettlementMode != "platform_managed" {
|
||||
response.BadRequest(c, "结算模式不正确")
|
||||
return query, false
|
||||
}
|
||||
if query.OfflineSettlementStatus != "" && query.OfflineSettlementStatus != "none" && query.OfflineSettlementStatus != "pending" && query.OfflineSettlementStatus != "settled" {
|
||||
response.BadRequest(c, "线下结算状态不正确")
|
||||
return query, false
|
||||
}
|
||||
if raw := c.Query("user_id"); raw != "" {
|
||||
value, err := strconv.ParseUint(raw, 10, 64)
|
||||
if err != nil || value == 0 {
|
||||
response.BadRequest(c, "用户 ID 不正确")
|
||||
return query, false
|
||||
}
|
||||
query.UserID = value
|
||||
}
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20"))
|
||||
query.Page = page
|
||||
query.PageSize = pageSize
|
||||
return query, true
|
||||
}
|
||||
|
||||
func parseDisbursementQuery(c *gin.Context) (DisbursementQuery, bool) {
|
||||
start, end, ok := parseDateRange(c, 29)
|
||||
if !ok {
|
||||
return DisbursementQuery{}, false
|
||||
}
|
||||
query := DisbursementQuery{
|
||||
SourceType: strings.TrimSpace(c.Query("source_type")),
|
||||
Status: strings.TrimSpace(c.Query("status")),
|
||||
DateType: c.DefaultQuery("date_type", "created"),
|
||||
BusinessNo: strings.TrimSpace(c.Query("business_no")),
|
||||
Keyword: strings.TrimSpace(c.Query("keyword")),
|
||||
StartDate: start,
|
||||
EndDate: end,
|
||||
}
|
||||
if query.SourceType != "" && query.SourceType != "platform_managed" && query.SourceType != "withdrawal" {
|
||||
response.BadRequest(c, "出款类型不正确")
|
||||
return query, false
|
||||
}
|
||||
if query.Status != "" && query.Status != "review_pending" && query.Status != "payment_pending" && query.Status != "paid" && query.Status != "rejected" && query.Status != "cancelled" {
|
||||
response.BadRequest(c, "出款状态不正确")
|
||||
return query, false
|
||||
}
|
||||
if query.DateType != "created" && query.DateType != "paid" {
|
||||
response.BadRequest(c, "日期类型不正确")
|
||||
return query, false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user