接单工单支持置顶,抢单大厅优先展示
- 新增 work_orders.pinned_at 字段与迁移 - 管理端对已发布(待抢单)订单提供置顶/取消置顶操作,置顶订单带标记 - 抢单大厅按置顶时间优先排序,打手端卡片展示置顶标签
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user