- 财务看板增加预计收入与待结算订单数统计 - 明细列表 COUNT 改为仅扫描 rental_orders 主表,避免 5-JOIN 子查询 - 统一前后端结算差异判定阈值为常量 5 分 - 修复日期选择器使用 UTC 日期导致东八区凌晨偏移前一天的问题
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package adminfinance
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"hfb_sys/backend/internal/timeutil"
|
|
)
|
|
|
|
// settlementDiffThresholdCent 是判定"结算差异"的最小绝对金额(分)。
|
|
// 号主应得与实际入账的差额绝对值达到此阈值,才视为财务异常。
|
|
// SQL、presenter、前端展示统一引用此口径,避免多处硬编码不一致。
|
|
const settlementDiffThresholdCent = 5
|
|
|
|
func refundBizTypes() []string {
|
|
return []string{
|
|
"cancel_refund",
|
|
"admin_close_refund",
|
|
"admin_refund",
|
|
"checkout_refund",
|
|
"deposit_refund",
|
|
"rent_refund",
|
|
"arbitration_refund",
|
|
}
|
|
}
|
|
|
|
// settledSettlementStatuses 是视为"已完成结算"的结算状态集合。
|
|
// 预计收入只统计尚未结算的订单,这些状态需从预计口径中排除。
|
|
func settledSettlementStatuses() []string {
|
|
return []string{"settled", "closed"}
|
|
}
|
|
|
|
// nonBillableOrderStatuses 是不产生平台收入的订单状态集合(待支付、已取消、已关闭)。
|
|
// 预计收入排除这些状态,只保留进行中/待结算且未来会产生手续费的订单。
|
|
func nonBillableOrderStatuses() []string {
|
|
return []string{"pending_payment", "cancelled", "closed"}
|
|
}
|
|
|
|
func dayStart(value time.Time) time.Time {
|
|
loc := timeutil.ShanghaiLocation()
|
|
local := value.In(loc)
|
|
return time.Date(local.Year(), local.Month(), local.Day(), 0, 0, 0, 0, loc)
|
|
}
|
|
|
|
func dailyDateKey(value string) string {
|
|
value = strings.TrimSpace(value)
|
|
if len(value) >= len("2006-01-02") {
|
|
return value[:len("2006-01-02")]
|
|
}
|
|
return value
|
|
}
|
|
|
|
func absCent(value int64) int64 {
|
|
if value < 0 {
|
|
return -value
|
|
}
|
|
return value
|
|
}
|