资料字段支持下拉选项与买家截图,大厅按 VIP 等级延迟可见

资料字段:
- CollectField 支持 type(text/select) 与 options,规则字段语法 key:名称#选项1,选项2
- 默认字段改为游戏编号/游戏昵称/系统(安卓,苹果)/区服(QQ区,微信区),旧默认模板字段自动替换为新版
- 采集页与管理端补资料支持单选下拉与买家主页截图上传(新增公开上传接口)
- 管理端工单详情展示买家截图

VIP 延迟可见:
- 等级权限新增 visibleDelaySeconds(默认 VIP1=20s~VIP5=0s,可后台配置)
- 大厅按等级延迟过滤新发布工单,页面提示延迟规则
This commit is contained in:
yml2213
2026-08-01 18:14:37 +08:00
parent 70e64155bc
commit 2412df8b54
17 changed files with 252 additions and 31 deletions
@@ -190,6 +190,7 @@ export type ListInput = {
workerId?: number
categoryId?: number
workerSharingId?: number
visibleAfterIso?: string
}
export type ProductRuleListInput = {
@@ -565,6 +565,7 @@ export async function listWorkOrders({
workerId = 0,
categoryId = 0,
workerSharingId = 0,
visibleAfterIso = '',
}: ListInput = {}): Promise<{ items: WorkOrderRow[]; total: number }> {
const { whereClause, params } = buildWorkOrderWhere({
status,
@@ -572,6 +573,7 @@ export async function listWorkOrders({
workerId,
categoryId,
workerSharingId,
visibleAfterIso,
})
const totalResult = await query<{ total: number }>(
`
@@ -1326,6 +1328,7 @@ function buildWorkOrderWhere({
workerId = 0,
categoryId = 0,
workerSharingId = 0,
visibleAfterIso = '',
}: ListInput) {
const filters: string[] = []
const params: unknown[] = []
@@ -1357,6 +1360,10 @@ function buildWorkOrderWhere({
))`,
)
}
if (visibleAfterIso) {
params.push(visibleAfterIso)
filters.push(`(wo.published_at IS NULL OR wo.published_at <= $${params.length})`)
}
return {
whereClause: filters.length > 0 ? `WHERE ${filters.join(' AND ')}` : '',
params,