Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
- 新增系统称号模板与效果配置表及相关CRUD接口 - 实现用户称号分配与抽奖效果应用逻辑 - 优化抽奖接口支持用户ID参数以应用称号效果 - 新增称号管理前端页面与分配功能 - 修复Windows时区错误与JSON字段初始化问题 - 移除无用管理接口代码并更新文档说明
22 lines
1.4 KiB
Markdown
22 lines
1.4 KiB
Markdown
## 问题原因
|
||
- 数据库报错 `Invalid JSON text: "The document is empty."`,说明往 `system_titles.obtain_rules_json` 写入了空字符串 `""`。
|
||
- 在 MySQL JSON 列中,空字符串不是合法 JSON;需使用 `"{}"` 或 `"[]"` 等合法文本。
|
||
- 代码位置:`internal/api/admin/titles_seed.go` 初始化 `SystemTitles` 时将 `ObtainRulesJSON`、`ScopesJSON` 设为了空字符串。
|
||
|
||
## 修复方案
|
||
- 修改 `internal/api/admin/titles_seed.go` 的种子逻辑:
|
||
- 将 `ObtainRulesJSON` 默认值改为 `"{}"`(或 `{"type":"manual"}` 作为占位规则)。
|
||
- 将 `ScopesJSON` 默认值改为 `"{}"`(空作用域表示全局生效)。
|
||
- 保持 `SystemTitleEffects.ParamsJSON` 使用 `json.Marshal(d.Params)`(已为合法 JSON)。
|
||
|
||
## 执行步骤
|
||
1. 更新代码:将空字符串替换为合法 JSON 默认值 `"{}"`。
|
||
2. 编译检查:`go build ./...`。
|
||
3. 运行初始化:`POST /api/admin/system_titles/seed_default`,预期返回 6 个称号(新建或已存在)。
|
||
4. 验证列表:登录后调用 `GET /api/admin/system_titles?page=1&page_size=20`,应返回 `total=6`。
|
||
|
||
## 风险与回滚
|
||
- 仅修改种子默认值,不影响既有数据;若此前插入失败,无需回滚。
|
||
- 如你希望 `obtain_rules_json` 有具体规则,我可以将默认值改为 `{"type":"manual"}` 或按你的要求填充。
|
||
|
||
确认后我将立即修复代码、重新初始化并验证页面数据。 |