qubiaobiao
de719d8ec6
feat(admin): 时间配置加入值级乐观锁 + 并发冲突返回 4090(B②)
场景:两个管理员同时打开「时间设置」,甲先保存,乙手里的表单已过期,
乙再保存就会静默覆盖甲的结果 —— 此前 setTimes 直接 upsert,无任何检测。
- service/admin.js:setTimes(times, { expected }) 先**全量校验**、全部通过后才写
(边校验边 upsert 会留下"部分生效"的半成品)。判据选值级比对而非时间戳:
competition_times.updated_at 没有 ON UPDATE CURRENT_TIMESTAMP,其刷新依赖
Sequelize 对 default 字面量的处理,语义不确定 ⇒ 建在它上面等于建在流沙上。
比对前归一到秒级,避免毫秒尾差造成恒定假冲突。
- controller/admin.js:冲突返回 **200 + code=4090**(⛔ 5xx —— 按 500 返回会让前端
拦截器提示"服务器错误",把"你刷新一下"掩盖成"系统挂了")。
- 不传 expectedTimes ⇒ 退回旧行为,不破坏既有调用方。
2026-10-21 13:44:31 +08:00
..
2026-10-21 13:44:31 +08:00
2026-10-20 11:06:29 +08:00
2026-10-20 11:06:29 +08:00
2026-08-17 12:25:42 +08:00
2026-10-20 11:06:29 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-10-08 12:23:18 +08:00
2026-10-19 13:03:48 +08:00