refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
55 lines
4.1 KiB
Markdown
55 lines
4.1 KiB
Markdown
# 一番赏活动创建表单优化计划
|
||
|
||
用户反馈在创建一番赏活动时,选择即时/定时开奖的页面逻辑不对。通过分析代码 `web/admin/src/views/activity/wizard/index.vue`,发现目前表单的逻辑允许用户在“一番赏”模式下选择“定时开奖”或“即时开奖”,但某些字段的显示逻辑可能不够清晰或存在冲突。一番赏(Ichiban Kuji)通常有其特定的开奖规则,需要对表单进行以下优化。
|
||
|
||
## 1. 需求分析与对齐 (Align)
|
||
|
||
* **当前问题**:
|
||
* 在选择 `play_type='ichiban'` 时,表单依然展示通用的 `draw_mode`(定时/即时)选项,且后续的定时参数(如 `min_participants`, `scheduled_time` 等)可能没有正确联动。
|
||
* 一番赏的核心逻辑是“即买即开”(即时开奖),但也可能存在“定时开奖”的特殊玩法(如凑够多少人开一箱)。需要明确一番赏是否支持所有开奖模式。
|
||
* **假设**: 用户提到的“逻辑不对”可能是指一番赏**只能**是即时开奖,或者一番赏的定时开奖不应该显示某些不相关的字段(如 `min_participants` 在一番赏中可能不适用,因为一番赏是消耗库存的)。
|
||
* **修正策略**:
|
||
* 当选择“一番赏”时,默认锁定或限制 `draw_mode` 的选项。
|
||
* 如果是“一番赏”,通常是**即时开奖**(用户购买后立即知道结果)。
|
||
* 如果一番赏确实支持定时(例如:全员购买完后统一开奖),则需要明确字段。
|
||
* **根据用户语境“即时 定时的 页面逻辑不对”**,推测可能是:切换一番赏时,应该自动处理 `draw_mode`,或者某些字段不该显示。
|
||
|
||
* **优化方案**:
|
||
1. **联动逻辑**: 当 `play_type` 切换为 `ichiban` 时,强制或默认 `draw_mode` 为 `instant`(即时开奖),并禁用 `scheduled`(除非业务明确支持一番赏定时)。
|
||
2. **或者**:如果一番赏支持定时,需要隐藏不适用的字段(如 `min_participants`,因为一番赏是固定库存,可能不需要“最低参与人数”,而是“售罄即开”或“固定时间”)。
|
||
3. **UI 调整**: 简化一番赏模式下的表单,隐藏不必要的复杂定时配置。
|
||
|
||
**经确认(自我推演)**: 一番赏的典型玩法是用户购买后立即获得确定的赏品(即时)。但也存在“整箱全开”的定时玩法。但最常见的问题是:**一番赏不应该显示“最低参与人数”等凑单逻辑,因为它基于固定数量的签**。
|
||
|
||
**决定**:
|
||
* 当 `play_type === 'ichiban'` 时:
|
||
* **锁定** `draw_mode` 为 `instant`(即时开奖),并**隐藏**开奖模式选择框(或禁用)。
|
||
* **隐藏**所有定时相关的配置(`min_participants`, `time_mode`, `interval_minutes` 等)。
|
||
* 这样能避免用户配置出“定时开奖的一番赏”这种非典型且可能逻辑冲突的活动(除非后端明确支持)。
|
||
|
||
## 2. 架构设计 (Architect)
|
||
|
||
* **前端逻辑调整 (`wizard/index.vue`)**:
|
||
* 监听 `scheduledForm.play_type` 的变化。
|
||
* 如果 `play_type === 'ichiban'`:
|
||
* 自动设置 `scheduledForm.draw_mode = 'instant'`。
|
||
* `scheduledForm.min_participants = 0`。
|
||
* `scheduledForm.interval_minutes = 0`。
|
||
* 在模板中,使用 `v-if` 控制字段显示:
|
||
* 如果 `play_type === 'ichiban'`,隐藏 `draw_mode` 选择框(或者显示为只读的“即时开奖”)。
|
||
* 隐藏所有 `scheduled` 相关的输入框。
|
||
|
||
## 3. 任务拆解 (Atomize)
|
||
|
||
1. **Modify Frontend (`wizard/index.vue`)**:
|
||
* 添加 `watch` 监听 `scheduledForm.play_type`。
|
||
* 修改模板中的 `v-if` 条件,针对 `ichiban` 隐藏不必要的字段。
|
||
* 或者直接在 `play_type` 选择器下方添加提示:“一番赏模式下默认为即时开奖”。
|
||
|
||
## 4. 执行步骤 (Automate)
|
||
|
||
1. **Step 1**: 修改 `web/admin/src/views/activity/wizard/index.vue`。
|
||
* 在 `script setup` 中添加 `watch` 逻辑。
|
||
* 调整 `template` 中的表单项可见性。
|
||
|