Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
- 新增系统称号模板与效果配置表及相关CRUD接口 - 实现用户称号分配与抽奖效果应用逻辑 - 优化抽奖接口支持用户ID参数以应用称号效果 - 新增称号管理前端页面与分配功能 - 修复Windows时区错误与JSON字段初始化问题 - 移除无用管理接口代码并更新文档说明
1.4 KiB
1.4 KiB
问题原因
- 数据库报错
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)。
执行步骤
- 更新代码:将空字符串替换为合法 JSON 默认值
"{}"。 - 编译检查:
go build ./...。 - 运行初始化:
POST /api/admin/system_titles/seed_default,预期返回 6 个称号(新建或已存在)。 - 验证列表:登录后调用
GET /api/admin/system_titles?page=1&page_size=20,应返回total=6。
风险与回滚
- 仅修改种子默认值,不影响既有数据;若此前插入失败,无需回滚。
- 如你希望
obtain_rules_json有具体规则,我可以将默认值改为{"type":"manual"}或按你的要求填充。
确认后我将立即修复代码、重新初始化并验证页面数据。