fix:优化再拼一次bug,优化打手端移动端拼单列表显示

This commit is contained in:
2026-10-26 16:36:26 +08:00
parent 2b967ddd4c
commit 7743d2019c
12 changed files with 465 additions and 66 deletions
@@ -36,6 +36,7 @@ import {
pickWorkerRepresentativeShare,
resolveWorkerOrderStatusTabs,
resolveWorkerPermissions,
stripWorkerPersonalShareFields,
} from '../worker-platform/mappers.js'
import { invalidateWorkerMyOrderCaches } from '../worker-platform/worker-my-order-cache.js'
@@ -347,21 +348,27 @@ async function publishWorkOrderSnapshots(input: {
Number(workOrder.sharing_total_quantity || 1),
joinedQuantity,
)
publishRealtimeEvent({
type: 'work_order.changed',
entityId: workOrderId,
scopes: ['worker_hall'],
operation: hallVisible ? 'upsert' : 'remove',
data: hallVisible
? mapWorkOrderForHall(
// 大厅广播是「所有打手通用」的快照:myShare/myShares 是每个打手自己的份额,
// 必须整键剔除,不能带 null/[] 过去。前端补丁对广播行做浅合并,带空值的
// 个人字段会把刚拼单成功写进缓存的份额冲掉,按钮从「再拼一次」变回「拼单」。
const hallSnapshot = hallVisible
? stripWorkerPersonalShareFields(
mapWorkOrderForHall(
workOrder,
{ depositFreeAmount: 0 },
{
// 广播无法按打手等级过滤可见延迟,携带入厅时间由客户端按各自延迟推迟展示。
sharingProgress: { joinedQuantity, pendingSubmissionCount },
},
)
: { workOrderId },
),
)
: null
publishRealtimeEvent({
type: 'work_order.changed',
entityId: workOrderId,
scopes: ['worker_hall'],
operation: hallVisible ? 'upsert' : 'remove',
data: hallSnapshot || { workOrderId },
broadcastWorkers: true,
})
}