feat(worker-platform): 寄卖价格改由接单模板只读定价,我的寄卖支持服务端搜索与分页
1. 寄售价不再由卖家填写:打手端改为只读展示模板价(与履约押金同款只读框),服务端在发布时按同一套规则复算金额,保证展示口径与落库口径一致,直连接口也无法随意定价; 2. 模板缺档按「最接近的已配置档位」报价、距离相同取更低档:后台只配了 1/3/7 钻时,号主出 2 钻报 1 钻价、出 6 钻报 7 钻价,不再因为中间档没配价而拿不到价格; 3. 我的寄卖列表把分组、关键字、翻页全部下沉到 SQL:新增 listWorkerConsignmentPage 用 UNION ALL 合成「提报单行 + 无提报单库存兜底行」,CASE 推导 待审核/履约中/已完成 分组,返回当前分组 total 与三个分组的角标计数; 4. 关键字覆盖寄卖单号、规格名、系统/区服/系列/钻级、卖家角色名与数字 ID、联系方式、买家昵称与游戏 ID(读取 work_orders.material_json.collect.fields 的多种历史键名); 5. 前端搜索框 300ms 防抖后才请求服务端、换分组或换关键字自动回到第 1 页、列表底部增加分页器,并移除原来固定 pageSize 200 的隐形截断; 6. 新增仓库层与匹配层单测,其中包含 SQL 分组 CASE 与 domain/consignment-item-stage.ts 的 group 映射交叉断言,防止两处状态机漂移;后端 516 项、前端 66 项测试全部通过。
This commit is contained in:
@@ -458,19 +458,40 @@ export type WorkerConsignmentRecord = {
|
||||
|
||||
export type { ConsignmentBuyerInfo, ConsignmentSellerInfo } from '@/types/consignment'
|
||||
|
||||
export type WorkerConsignmentListCounts = {
|
||||
all: number
|
||||
reviewing: number
|
||||
active: number
|
||||
finished: number
|
||||
}
|
||||
|
||||
export type WorkerConsignmentListResponse = {
|
||||
publishDepositFen: number
|
||||
items: WorkerConsignmentRecord[]
|
||||
/** 各阶段件数,用于筛选 tab 角标 */
|
||||
stageCounts: Record<string, number>
|
||||
/** 当前分组 + 关键字下的总条数(服务端分页用) */
|
||||
total: number
|
||||
page: number
|
||||
pageSize: number
|
||||
/** 各分组条数,用于筛选角标;受关键字影响、不受当前分组影响 */
|
||||
counts: WorkerConsignmentListCounts
|
||||
}
|
||||
|
||||
export type WorkerConsignmentListParams = {
|
||||
group?: 'all' | 'reviewing' | 'active' | 'finished'
|
||||
keyword?: string
|
||||
page?: number
|
||||
pageSize?: number
|
||||
}
|
||||
|
||||
export function publishWorkerConsignment(payload: WorkerConsignmentPublishPayload) {
|
||||
return apiPost<WorkerConsignmentItem>('/api/v1/worker/consignment/publish', payload)
|
||||
}
|
||||
|
||||
export function fetchWorkerConsignments() {
|
||||
return apiGet<WorkerConsignmentListResponse>('/api/v1/worker/consignment/my-items')
|
||||
export function fetchWorkerConsignments(params: WorkerConsignmentListParams = {}) {
|
||||
return apiGet<WorkerConsignmentListResponse>(
|
||||
'/api/v1/worker/consignment/my-items',
|
||||
params as Record<string, unknown>,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user