Files
order_site/apps/frontend/src/utils/consignment-publish-limits.ts
T

40 lines
1.4 KiB
TypeScript

import type { ConsignmentProfileConfig } from '../types/consignment'
/** 寄售价允许低于 1 元:配置了最低价就按最低价,否则只要求大于 0(输入框用 0.01)。 */
export function resolveConsignmentPriceMinYuan(minPriceFen: number | null | undefined): number {
const fen = Math.max(0, Math.round(Number(minPriceFen || 0)))
return fen > 0 ? fen / 100 : 0.01
}
export type ConsignmentQuantityLimit = {
enabled: boolean
maxActiveQuantity: number
activeQuantity: number
remainingQuantity: number
blocked: boolean
}
/**
* 单个分类的寄售数量上限:后端按配置 profile_id 统计「在售 + 待审核」件数,
* 这里用接口返回的 activeQuantity 计算当前还能寄卖多少件。
*/
export function resolveConsignmentQuantityLimit(
config: Pick<ConsignmentProfileConfig, 'inventoryLimit'> | null | undefined,
activeQuantity: number | null | undefined,
): ConsignmentQuantityLimit {
const maxActiveQuantity = Math.max(
0,
Math.round(Number(config?.inventoryLimit?.maxActiveQuantity || 0)),
)
const active = Math.max(0, Math.round(Number(activeQuantity || 0)))
const enabled = config?.inventoryLimit?.enabled === true
const remainingQuantity = enabled ? Math.max(0, maxActiveQuantity - active) : 0
return {
enabled,
maxActiveQuantity,
activeQuantity: active,
remainingQuantity,
blocked: enabled && remainingQuantity <= 0,
}
}