后端服务:
xp-robotaxi-order-boot
Feature:push-date-filter
文档版本:2026-06-18
订单管理页「手动推送」按钮原先点击后会立即对所有满足条件的订单(已支付/已完成/已退款,且财务事件未推送或推送失败)发起财务推送。
本次新增:点击「手动推送」按钮后弹出一个对话框,允许按**订单创建时间区间**进行筛选,确认后仅推送该时间段内的订单。其中**结束日期默认当天**。
/api/v1/order/manualPush变更点:由原先的「无参数」改为**必须**携带 JSON Body(application/json),用于按订单创建时间过滤。前端调用时必须传 Body(至少传空对象 {}),否则后端返回 400。
请求 Body(必填):
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
startTime |
String yyyy-MM-dd HH:mm:ss |
否 | 订单创建时间下限(含)。不传表示不限下限 |
endTime |
String yyyy-MM-dd HH:mm:ss |
否 | 订单创建时间上限(含)。**不传时后端默认取当天 23:59:59** |
- Body 本身必填(不可省略),但其中的
startTime/endTime字段均可选。- 时间按订单
createTime(创建时间)过滤。- 字段都不传(传空 Body
{})时,行为为「下限不限 + 上限默认当天结束」,即推送当天及之前的所有待推送订单。
请求示例:
{
"startTime": "2026-06-18 00:00:00",
"endTime": "2026-06-18 23:59:59"
}
响应(结构不变):
{
"code": 200,
"msg": "操作成功",
"data": {
"batchNo": "FRDXFMANUAL...",
"totalCount": 12,
"successCount": 10,
"failedCount": 2,
"detailIds": [1001, 1002]
}
}
并发控制:后端用 Redis 锁保证同一时间只有一个手动推送任务。若已有任务执行中,返回 R.fail("已有手动推送任务正在执行,请稍后再试"),前端按 code !== 200 提示即可。
订单管理页 → 顶部操作区「手动推送」按钮。
弹出对话框,包含一个日期范围选择器:
// services/order.ts
export const manualPush = (params?: { startTime?: string; endTime?: string }) =>
request.post('/api/v1/order/manualPush', params ?? {})
// 组件
const [range, setRange] = useState<[Dayjs | null, Dayjs | null]>([null, dayjs()]) // 结束默认当天
const handleConfirm = async () => {
const [start, end] = range
const res = await manualPush({
startTime: start ? start.format('YYYY-MM-DD 00:00:00') : undefined,
endTime: (end ?? dayjs()).format('YYYY-MM-DD 23:59:59'),
})
if (res.code === 200) {
message.success(`推送完成:成功 ${res.data.successCount} / 失败 ${res.data.failedCount}`)
closeDialog()
} else {
message.error(res.msg)
}
}
23:59:59,开始时间格式化为 00:00:00,避免漏掉边界订单。endTime,后端也会兜底为当天 23:59:59,二者行为一致。