refactor(initdb): 重构数据库初始化逻辑

- 修改 FillInitData 函数签名,增加 ismod 参数用于指示是否成功插入数据
- 在 base 模块初始化中使用 If 函数处理数据库初始化结果
- 优化 login 模块中的日志输出
- 修复 websocket 中的错误处理
- 更新 dict 和 task 模块的初始化逻辑
This commit is contained in:
2025-07-11 18:04:15 +08:00
parent 67605778dd
commit c1065062fb
6 changed files with 41 additions and 24 deletions

View File

@@ -61,33 +61,37 @@ func CreateTable(model IModel) error {
}
// FillInitData 数据库填充初始数据
func FillInitData(ctx g.Ctx, moduleName string, model IModel) error {
func FillInitData(ctx g.Ctx, moduleName string, model IModel, ismod *bool) (bool, error) {
mInit := g.DB("default").Model("base_sys_init")
n, err := mInit.Clone().Where("group", model.GroupName()).Where("table", model.TableName()).Count()
if err != nil {
g.Log().Error(ctx, "读取表 base_sys_init 失败 ", err.Error())
return err
return false, err
}
if n > 0 {
g.Log().Debug(ctx, "分组", model.GroupName(), "中的表", model.TableName(), "已经初始化过,跳过本次初始化.")
return nil
return false, err
}
m := g.DB(model.GroupName()).Model(model.TableName())
jsonData, _ := gjson.LoadContent(gres.GetContent("modules/" + moduleName + "/resource/initjson/" + model.TableName() + ".json"))
if jsonData.Var().Clone().IsEmpty() {
g.Log().Debug(ctx, "分组", model.GroupName(), "中的表", model.TableName(), "无可用的初始化数据,跳过本次初始化.")
return nil
return false, err
}
_, err = m.Data(jsonData).Insert()
if err != nil {
g.Log().Error(ctx, err.Error())
return err
return false, err
}
_, err = mInit.Insert(g.Map{"group": model.GroupName(), "table": model.TableName()})
if err != nil {
g.Log().Error(ctx, err.Error())
return err
return false, err
}
g.Log().Info(ctx, "分组", model.GroupName(), "中的表", model.TableName(), "初始化完成.")
return nil
if ismod != nil {
*ismod = true
}
return true, err
}