feat(consignment): 寄卖规格与价格动态配置重构

This commit is contained in:
2026-11-05 17:09:05 +08:00
parent 2ef16ddcc7
commit d41ec44679
22 changed files with 3761 additions and 621 deletions
+32 -5
View File
@@ -31,6 +31,7 @@ import type {
ConsignmentBuyerInfo,
ConsignmentContactSupporter,
ConsignmentSellerInfo,
ConsignmentSpecValues,
WorkerConsignmentProfile,
} from '@/types/consignment'
@@ -378,11 +379,13 @@ export type WorkerConsignmentPublishPayload = {
profileId?: number
quantity?: number
itemName?: string
system: string
serverZone: string
series: string
diamondLevel: number
brillianceCount: number
/** 动态规格值(新链路);内置 5 字段仍可平铺传,旧调用兼容 */
specValues?: ConsignmentSpecValues
system?: string
serverZone?: string
series?: string
diamondLevel?: number
brillianceCount?: number
askingPriceFen: number
sellerContact: string
sellerPhone?: string
@@ -453,6 +456,11 @@ export type WorkerConsignmentRecord = {
brillianceCount: number
askingPriceFen: number
salePriceFen?: number
/** 打手改价上限(分);0 = 不限制 */
priceCapFen?: number
/** 动态规格值与展示文本 */
specValues?: ConsignmentSpecValues
specText?: string
quantity?: number
remainingQuantity?: number
listedAt?: string | null
@@ -574,6 +582,7 @@ export function submitWorkerConsignmentGiftEvidence(
/** 发布寄卖:按规格(系统/系列/钻级/璀璨)从「接单模板」带出建议价,如 安卓+暗潮+1钻+0璀 → ¥120 */
export function fetchWorkerConsignmentPriceSuggestion(params: {
profileId?: number
system: string
series: string
diamondLevel: number
@@ -581,11 +590,29 @@ export function fetchWorkerConsignmentPriceSuggestion(params: {
}) {
return apiGet<{
suggestedPriceFen: number | null
capFen: number
templatePriceFen: number
source: 'template' | 'fixed' | 'none'
matchedCount: number
matchedRules: { ruleKey: string; productName: string; rewardAmountFen: number }[]
}>('/api/v1/worker/consignment/price-suggestion', params)
}
/** 动态规格发布:按 profileId + specValues 算价(模板折扣价 / 固定价)。 */
export function fetchWorkerConsignmentPricePreview(payload: {
profileId?: number
specValues: ConsignmentSpecValues
}) {
return apiPost<{
suggestedPriceFen: number | null
capFen: number
templatePriceFen: number
source: 'template' | 'fixed' | 'none'
matchedCount: number
matchedRules: { ruleKey: string; productName: string; rewardAmountFen: number }[]
}>('/api/v1/worker/consignment/price-preview', payload)
}
export type OrderServiceField = {
key: string
label: string