Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
- 新增系统称号模板与效果配置表及相关CRUD接口 - 实现用户称号分配与抽奖效果应用逻辑 - 优化抽奖接口支持用户ID参数以应用称号效果 - 新增称号管理前端页面与分配功能 - 修复Windows时区错误与JSON字段初始化问题 - 移除无用管理接口代码并更新文档说明
46 lines
3.7 KiB
Markdown
46 lines
3.7 KiB
Markdown
## 字段与行为详解(以 effect_type=6 双倍概率为例)
|
||
- 目标ID(target_prize_ids)
|
||
- 含义:指定哪些奖品可触发双倍;为空数组表示对所有奖品生效。
|
||
- 应用代码:合并目标集 `doubleTargets`(internal/service/activity/draw_with_effects.go:143-145)。
|
||
- 概率(chance_x1000)
|
||
- 含义:双倍触发的概率,千分制(1000=100%、200=20%)。多个效果的概率会累加,并受统一封顶限制。
|
||
- 应用代码:累加并按 `CapValueX1000` 统一封顶(internal/service/activity/draw_with_effects.go:146-149);最终判定(199-207)。
|
||
- 周期内次数上限(period_cap_times)
|
||
- 业务含义:一个统计周期内最多能触发几次双倍(例如:自然日内最多1次)。
|
||
- 当前实现:字段已解析(internal/service/activity/draw_with_effects.go:137),但暂未做持久化计数与强制限制;建议后续以“用户+周期”维度计数(DB/Redis),命中后递减或阻断。
|
||
- 叠加策略(stacking_strategy)
|
||
- 业务含义:多效果如何合并(0最大值/1累加封顶/2首个匹配)。
|
||
- 当前实现:对“概率加成(type=5)”生效(internal/service/activity/draw_with_effects.go:117-132);对“双倍概率(type=6)”未使用(合并逻辑仅累加+封顶)。
|
||
- 统一封顶(cap_value_x1000)
|
||
- 含义:对累计概率(或加成)的统一上限(单位:千分)。
|
||
- 应用代码:双倍概率封顶(internal/service/activity/draw_with_effects.go:147-149);概率加成默认分支封顶(127-131)。
|
||
- 包含期(issue_ids)/排除期(exclude.issue_ids)
|
||
- 含义:限定效果只在指定期生效,或在某些期不生效。
|
||
- 应用代码:抽奖路径按期过滤(internal/service/activity/draw_with_effects.go:85-103);更全面的范围匹配在效果解析器(internal/service/title/effects_resolver.go:133-155)。
|
||
- 包含活动(activity_ids)
|
||
- 含义:限定效果只在指定活动生效。
|
||
- 应用代码:效果解析器支持(internal/service/title/effects_resolver.go:60-69, 133-155);抽奖路径当前只按期(issue)做简化过滤。
|
||
- 排序(sort)
|
||
- 含义:效果的展示与应用顺序;不同策略可能受顺序影响(如取最大值时先后无影响,叠加时顺序影响可忽略)。
|
||
- 应用代码:读取效果按 `Sort` 排序(internal/api/admin/titles_admin.go:163;internal/service/activity/draw_with_effects.go:47-49)。
|
||
|
||
## 作用范围简化(仅“活动”和“期”)
|
||
- 目标:将前端“作用范围”精简为:
|
||
- 包含活动 `activity_ids`
|
||
- 包含期 `issue_ids`
|
||
- 排除期 `exclude.issue_ids`(可选)
|
||
- 不再展示/保存:分类(category_ids)、时间/地区等复杂范围。
|
||
|
||
## 实施步骤(前端改造)
|
||
1. 效果编辑对话框(EffectEditDialog.vue)
|
||
- 保留 effect_type=6 的参数:`target_prize_ids/chance_x1000/period_cap_times`。
|
||
- 精简作用范围面板,仅保留:`activity_ids`、`issue_ids`、`exclude.issue_ids`。
|
||
- 提交时 `scopes_json` 只包含上述三个字段。
|
||
2. 效果列表(EffectManagerDialog.vue)
|
||
- 参数展示映射只显示:目标奖品、概率、周期上限;范围只显示包含/排除期与活动。
|
||
3. 文档更新
|
||
- 在《说明文档.md》中标注“作用范围简化”,并更新字段速查表。
|
||
|
||
## 注意与后续
|
||
- 周期计数未实现:若您需要严格的“周期内次数上限”,我将增加一次触发计数的服务(用户+周期维度),并在抽奖路径强制限制。
|
||
- 抽奖路径按期过滤:如需按活动过滤,请在抽奖服务中引入效果解析器返回的范围匹配结果,或将 `issue` 与 `activity` 进行绑定映射。 |