feat(接单): 好友赠送冷却支持分钟单位

This commit is contained in:
yml2213
2026-08-28 20:17:47 +08:00
parent d91d7180ad
commit e680792161
17 changed files with 159 additions and 50 deletions
@@ -9,6 +9,7 @@ export type WorkOrderAcceptanceMode =
export const DEFAULT_GIFT_COOLDOWN_HOURS = 72
export const MAX_GIFT_COOLDOWN_HOURS = 24 * 30
export const MAX_GIFT_COOLDOWN_MINUTES = MAX_GIFT_COOLDOWN_HOURS * 60
/** 好友赠送模式的落库阶段;gift_ready 由 gift_available_at 到点后实时计算,不落库。 */
export const WORK_ORDER_GIFT_PHASE = {
@@ -33,11 +34,18 @@ export function isFriendGiftAcceptanceMode(value: unknown): boolean {
return normalizeWorkOrderAcceptanceMode(value) === WORK_ORDER_ACCEPTANCE_MODE.FRIEND_GIFT
}
/** 冷却小时数收敛到 [0, 30 天],默认 3 天。 */
/** 冷却小时数收敛到 [0, 30 天],默认 3 天。0 用于选择按分钟配置。 */
export function normalizeWorkOrderGiftCooldownHours(value: unknown): number {
const hours = Number(value)
if (!Number.isFinite(hours) || hours <= 0) return DEFAULT_GIFT_COOLDOWN_HOURS
return Math.min(MAX_GIFT_COOLDOWN_HOURS, Math.max(1, Math.round(hours)))
if (!Number.isFinite(hours) || hours < 0) return DEFAULT_GIFT_COOLDOWN_HOURS
return Math.min(MAX_GIFT_COOLDOWN_HOURS, Math.round(hours))
}
/** 按分钟配置时的总分钟数,最大 30 天。 */
export function normalizeWorkOrderGiftCooldownMinutes(value: unknown): number {
const minutes = Number(value)
if (!Number.isFinite(minutes)) return 0
return Math.min(MAX_GIFT_COOLDOWN_MINUTES, Math.max(0, Math.round(minutes)))
}
export type WorkOrderGiftSource = {