接单工单支持置顶,抢单大厅优先展示

- 新增 work_orders.pinned_at 字段与迁移
- 管理端对已发布(待抢单)订单提供置顶/取消置顶操作,置顶订单带标记
- 抢单大厅按置顶时间优先排序,打手端卡片展示置顶标签
This commit is contained in:
yml2213
2026-08-16 15:57:25 +08:00
parent 737f9ddcbe
commit 8d07b06d52
12 changed files with 121 additions and 11 deletions
@@ -1083,6 +1083,32 @@ export async function unpublishAdminWorkOrder(workOrderId: number | string) {
return { order: mapWorkOrderAdmin(updated || workOrder) }
}
export async function pinAdminWorkOrder(workOrderId: number | string, payload: JsonObject = {}) {
const workOrder = await getRequiredWorkOrder(workOrderId)
const pinned = payload.pinned === true
if (pinned && workOrder.status !== WORK_ORDER_STATUS.OPEN) {
throw createHttpError('只有待抢单订单可以置顶', {
statusCode: 409,
errorCode: 'work_order_pin_status_invalid',
})
}
const now = nowIso()
const updated = await updateWorkOrder(workOrder.id, {
pinned_at: pinned ? now : null,
updated_at: now,
})
await createWorkOrderEvent({
workOrderId: workOrder.id,
actorType: 'admin',
actorId: '',
eventType: pinned ? 'pinned' : 'unpinned',
fromStatus: workOrder.status,
toStatus: workOrder.status,
now,
})
return { order: mapWorkOrderAdmin(updated || workOrder) }
}
export async function markAdminWorkOrderProblem(
workOrderId: number | string,
payload: JsonObject = {},
@@ -404,6 +404,7 @@ export function mapWorkOrderAdmin(workOrder: WorkOrderRow) {
}
: null,
publishedAt: workOrder.published_at,
pinnedAt: workOrder.pinned_at,
assignedAt: workOrder.assigned_at,
submittedAt: workOrder.submitted_at,
acceptedAt: workOrder.accepted_at,
@@ -824,6 +824,7 @@ export async function listWorkerHallOrders(query: JsonObject = {}, session: Work
keyword: String(query.keyword || '').trim(),
categoryId: categoryId || 0,
visibleAfterIso,
pinnedFirst: true,
})
const categories = (await listWorkCategories()).map(mapWorkCategory)
const myShares = await listWorkerSharesByWorker(worker.id)