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
}
