fix: bug
This commit is contained in:
@@ -219,14 +219,14 @@ router.get('/edit/raw', (req, res) => {
|
||||
try {
|
||||
const lossesUs = db.prepare('SELECT * FROM combat_losses WHERE side = ?').get('us')
|
||||
const lossesIr = db.prepare('SELECT * FROM combat_losses WHERE side = ?').get('iran')
|
||||
const locUs = db.prepare('SELECT id, side, name, lat, lng, type, region, status, damage_level FROM key_location WHERE side = ?').all('us')
|
||||
const locIr = db.prepare('SELECT id, side, name, lat, lng, type, region, status, damage_level FROM key_location WHERE side = ?').all('iran')
|
||||
const locUs = db.prepare('SELECT id, side, name, lat, lng, type, region, status, damage_level, attacked_at FROM key_location WHERE side = ?').all('us')
|
||||
const locIr = db.prepare('SELECT id, side, name, lat, lng, type, region, status, damage_level, attacked_at FROM key_location WHERE side = ?').all('iran')
|
||||
const updates = db.prepare('SELECT id, timestamp, category, summary, severity FROM situation_update ORDER BY timestamp DESC LIMIT 80').all()
|
||||
const summaryUs = db.prepare('SELECT * FROM force_summary WHERE side = ?').get('us')
|
||||
const summaryIr = db.prepare('SELECT * FROM force_summary WHERE side = ?').get('iran')
|
||||
let displayStats = null
|
||||
try {
|
||||
displayStats = db.prepare('SELECT viewers, cumulative, share_count, like_count, feedback_count FROM display_stats WHERE id = 1').get()
|
||||
displayStats = db.prepare('SELECT override_enabled, viewers, cumulative, share_count, like_count, feedback_count FROM display_stats WHERE id = 1').get()
|
||||
} catch (_) {}
|
||||
const realCumulative = db.prepare('SELECT total FROM visitor_count WHERE id = 1').get()?.total ?? 0
|
||||
const realShare = db.prepare('SELECT total FROM share_count WHERE id = 1').get()?.total ?? 0
|
||||
@@ -244,6 +244,7 @@ router.get('/edit/raw', (req, res) => {
|
||||
situationUpdates: updates || [],
|
||||
forceSummary: { us: summaryUs || null, iran: summaryIr || null },
|
||||
displayStats: {
|
||||
overrideEnabled: displayStats?.override_enabled === 1,
|
||||
viewers: displayStats?.viewers ?? liveViewers,
|
||||
cumulative: displayStats?.cumulative ?? realCumulative,
|
||||
shareCount: displayStats?.share_count ?? realShare,
|
||||
@@ -296,7 +297,7 @@ router.patch('/edit/key-location/:id', (req, res) => {
|
||||
if (!Number.isFinite(id)) return res.status(400).json({ error: 'invalid id' })
|
||||
const row = db.prepare('SELECT id FROM key_location WHERE id = ?').get(id)
|
||||
if (!row) return res.status(404).json({ error: 'key_location not found' })
|
||||
const allowed = ['name', 'lat', 'lng', 'type', 'region', 'status', 'damage_level']
|
||||
const allowed = ['name', 'lat', 'lng', 'type', 'region', 'status', 'damage_level', 'attacked_at']
|
||||
const updates = []
|
||||
const values = []
|
||||
for (const k of allowed) {
|
||||
@@ -383,14 +384,31 @@ router.put('/edit/force-summary', (req, res) => {
|
||||
}
|
||||
})
|
||||
|
||||
/** PUT 更新展示统计(看过、在看、分享、点赞、留言)。传 null 表示清除覆盖、改用实时统计 */
|
||||
/** PUT 更新展示统计(看过、在看、分享、点赞、留言)。传 null 表示清除该字段;clearOverride=true 或全部为 null 时关闭覆盖、恢复实时统计 */
|
||||
router.put('/edit/display-stats', (req, res) => {
|
||||
try {
|
||||
db.prepare('INSERT OR IGNORE INTO display_stats (id) VALUES (1)').run()
|
||||
const body = req.body || {}
|
||||
const clearOverride = body.clearOverride === true || body.clearOverride === 'true'
|
||||
const viewers = body.viewers
|
||||
const cumulative = body.cumulative
|
||||
const shareCount = body.shareCount
|
||||
const likeCount = body.likeCount
|
||||
const feedbackCount = body.feedbackCount
|
||||
const allNull = viewers === null && cumulative === null && shareCount === null && likeCount === null && feedbackCount === null
|
||||
|
||||
if (clearOverride || allNull) {
|
||||
db.prepare(
|
||||
'UPDATE display_stats SET override_enabled = 0, viewers = NULL, cumulative = NULL, share_count = NULL, like_count = NULL, feedback_count = NULL WHERE id = 1'
|
||||
).run()
|
||||
broadcastAfterEdit(req)
|
||||
return res.json({ ok: true })
|
||||
}
|
||||
|
||||
const updates = []
|
||||
const values = []
|
||||
const setField = (key, bodyKey) => {
|
||||
const v = req.body?.[bodyKey ?? key]
|
||||
const v = body[bodyKey ?? key]
|
||||
if (v === undefined) return
|
||||
if (v === null) {
|
||||
updates.push(`${key} = ?`)
|
||||
@@ -408,6 +426,8 @@ router.put('/edit/display-stats', (req, res) => {
|
||||
setField('like_count', 'likeCount')
|
||||
setField('feedback_count', 'feedbackCount')
|
||||
if (updates.length === 0) return res.status(400).json({ error: 'no fields to update' })
|
||||
updates.push('override_enabled = ?')
|
||||
values.push(1)
|
||||
values.push(1)
|
||||
db.prepare(`UPDATE display_stats SET ${updates.join(', ')} WHERE id = ?`).run(...values)
|
||||
broadcastAfterEdit(req)
|
||||
|
||||
Reference in New Issue
Block a user