diff --git a/src/views/activity/game-king/index.vue b/src/views/activity/game-king/index.vue index cd2133f..3bbe0ff 100644 --- a/src/views/activity/game-king/index.vue +++ b/src/views/activity/game-king/index.vue @@ -12,7 +12,7 @@ type="info" :closable="false" show-icon - title="消费金额、抽奖次数和排行榜均以后端金币流水为准;活动开始后,每次抽奖金币数、开始时间、平台及事件白名单不可修改。" + title="消费金额、抽奖次数和排行榜均以后端识别的游戏消费流水为准;活动开始后,每次抽奖金币数、开始时间及平台不可修改。" /> @@ -41,18 +41,6 @@ 每 {{ formatNumber(scope.row.coinPerDraw) }} 金币 - - - - {{ eventType }} - - - @@ -183,23 +171,6 @@ 活动结束后继续等待钱包异步流水到达,再冻结最终榜单;默认 30 分钟。 - - - - - 这里只做精确等值匹配。第三方游戏通常包含游戏 ID,请从真实金币支出流水复制完整 eventType,避免把礼物或其他支出计入活动。 - - - @@ -502,7 +473,7 @@ - - - - - - - - - - - @@ -615,8 +565,7 @@ export default { timeZone: [{ required: true, message: '请选择活动时区', trigger: 'change' }], timeRange: [{ type: 'array', required: true, len: 2, message: '请选择完整活动时间', trigger: 'change' }], coinPerDraw: [{ required: true, message: '请输入每次抽奖金币数', trigger: 'blur' }], - settlementDelayMinutes: [{ required: true, message: '请输入结算等待分钟数', trigger: 'blur' }], - eventTypes: [{ type: 'array', required: true, min: 1, message: '至少配置一个精确 eventType', trigger: 'change' }] + settlementDelayMinutes: [{ required: true, message: '请输入结算等待分钟数', trigger: 'blur' }] }, timeZoneOptions: ['Asia/Riyadh', 'Asia/Shanghai', 'UTC'], resourceSelectorVisible: false, @@ -637,8 +586,6 @@ export default { backfillLoading: false, backfillResult: null, backfillForm: { - receiptType: 1, - eventType: '', lastId: '', limit: 500 } @@ -673,7 +620,6 @@ export default { timeRange: [], coinPerDraw: 1, settlementDelayMinutes: 30, - eventTypes: [], rankingType: 'TYCOON', rankingPeriod: 'OVERALL', enabled: false, @@ -814,12 +760,6 @@ export default { this.$message.error('结算等待必须是 0 到 1440 的整数分钟') return false } - const eventTypes = (this.form.eventTypes || []).map(item => String(item).trim()) - const invalidEventType = eventTypes.find(item => !item || item.length > 64 || item.indexOf(',') >= 0) - if (invalidEventType !== undefined || new Set(eventTypes).size !== eventTypes.length) { - this.$message.error('eventType 必须非空、最长 64 字符、不含逗号且不可重复') - return false - } // 活动开始后后端只允许更新非统计字段;奖项与排行奖励既不重新校验,也不随保存请求发送。 if (this.startedLocked) { return true @@ -850,6 +790,7 @@ export default { return true }, buildSavePayload() { + // 游戏消费事件由服务端固定识别,管理端不提交 eventTypes,避免运营误把礼物等其他金币支出纳入活动。 const payload = { id: this.form.id || null, activityCode: this.form.activityCode.trim(), @@ -861,7 +802,6 @@ export default { endTime: Number(this.form.timeRange[1]), settlementDelayMinutes: Number(this.form.settlementDelayMinutes), coinPerDraw: Number(this.form.coinPerDraw), - eventTypes: this.form.eventTypes.map(item => String(item).trim()), rankingType: 'TYCOON', rankingPeriod: 'OVERALL', enabled: Boolean(this.form.enabled) @@ -1023,8 +963,6 @@ export default { openBackfill(row) { this.selectedActivity = row this.backfillForm = { - receiptType: 1, - eventType: row.eventTypes && row.eventTypes.length ? row.eventTypes[0] : '', lastId: '', limit: 500 } @@ -1032,17 +970,7 @@ export default { this.backfillVisible = true }, runBackfill() { - if (this.backfillForm.receiptType !== 0 && this.backfillForm.receiptType !== 1) { - this.$message.error('请选择金币流水类型') - return - } - if (!this.backfillForm.eventType) { - this.$message.error('请选择一个精确 eventType') - return - } const params = { - eventType: this.backfillForm.eventType, - receiptType: this.backfillForm.receiptType, limit: Number(this.backfillForm.limit) } if (this.backfillForm.lastId) { @@ -1051,18 +979,13 @@ export default { this.backfillLoading = true backfillAslanGameKingConsumption(this.selectedActivity.id, params).then(res => { this.backfillResult = res.body || {} - // 游标由服务端返回并按 eventType 独立推进;浏览器不自行计算,避免大整数精度和跳行问题。 + // 后端固定只扫描游戏消费流水,浏览器只续传服务端游标,避免大整数精度和跳行问题。 this.backfillForm.lastId = this.backfillResult.nextLastId || this.backfillForm.lastId - this.$message.success(this.backfillResult.finished ? '该 eventType 已补数完成' : '本批补数完成,请继续下一批') + this.$message.success(this.backfillResult.finished ? '游戏消费流水已补数完成' : '本批补数完成,请继续下一批') }).finally(() => { this.backfillLoading = false }) }, - resetBackfillCursor() { - // lastId 仅在同一 receiptType + eventType 查询条件内有效,切换条件必须从首批重新开始。 - this.backfillForm.lastId = '' - this.backfillResult = null - }, activityStatus(row) { if (!row || !row.id) { return 'DISABLED' @@ -1173,10 +1096,6 @@ export default { line-height: 20px; } -.event-tag { - margin: 2px 4px 2px 0; -} - .settlement-status { margin-top: 6px; color: #606266;