优化打手订单与界面
This commit is contained in:
@@ -215,6 +215,7 @@ export type ListInput = {
|
||||
categoryId?: number
|
||||
workerSharingId?: number
|
||||
visibleAfterIso?: string
|
||||
sort?: 'id_desc' | 'worker_claimed_at_desc'
|
||||
}
|
||||
|
||||
export type ProductRuleListInput = {
|
||||
|
||||
@@ -743,6 +743,7 @@ export async function listWorkOrders({
|
||||
categoryId = 0,
|
||||
workerSharingId = 0,
|
||||
visibleAfterIso = '',
|
||||
sort = 'id_desc',
|
||||
}: ListInput = {}): Promise<{ items: WorkOrderRow[]; total: number }> {
|
||||
const { whereClause, params } = buildWorkOrderWhere({
|
||||
status,
|
||||
@@ -761,11 +762,32 @@ export async function listWorkOrders({
|
||||
params,
|
||||
)
|
||||
const offset = (page - 1) * pageSize
|
||||
const orderBy =
|
||||
sort === 'worker_claimed_at_desc' && workerSharingId
|
||||
? (() => {
|
||||
params.push(workerSharingId)
|
||||
const workerIdPlaceholder = `$${params.length}`
|
||||
return `COALESCE(
|
||||
CASE
|
||||
WHEN wo.assigned_worker_id = ${workerIdPlaceholder} THEN wo.assigned_at
|
||||
END,
|
||||
(
|
||||
SELECT wos.created_at
|
||||
FROM work_order_shares wos
|
||||
WHERE wos.work_order_id = wo.id
|
||||
AND wos.worker_id = ${workerIdPlaceholder}
|
||||
AND wos.status != 'cancelled'
|
||||
ORDER BY wos.created_at DESC
|
||||
LIMIT 1
|
||||
)
|
||||
) DESC NULLS LAST, wo.id DESC`
|
||||
})()
|
||||
: 'wo.id DESC'
|
||||
params.push(pageSize, offset)
|
||||
const itemsResult = await query<WorkOrderRow>(
|
||||
`${WORK_ORDER_SELECT}
|
||||
${whereClause}
|
||||
ORDER BY wo.id DESC
|
||||
ORDER BY ${orderBy}
|
||||
LIMIT $${params.length - 1} OFFSET $${params.length}`,
|
||||
params,
|
||||
)
|
||||
|
||||
@@ -994,6 +994,7 @@ export async function listWorkerMyOrders(query: JsonObject = {}, session: Worker
|
||||
status: String(query.status || '').trim(),
|
||||
keyword: String(query.keyword || '').trim(),
|
||||
workerSharingId: worker.id,
|
||||
sort: 'worker_claimed_at_desc',
|
||||
})
|
||||
const permissions = resolveWorkerPermissions(worker)
|
||||
const myShares = await listWorkerSharesByWorker(worker.id)
|
||||
|
||||
Reference in New Issue
Block a user