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

@@ -17,23 +17,36 @@ import (
"github.com/gogf/gf/v2/util/gconv"
)
// trueVal: 条件为 true 时返回的值
// falseVal: 条件为 false 时返回的值
// 返回值类型与 trueVal、falseVal 一致(需保证两者类型相同)
func If[T any](condition bool, trueVal, falseVal T) T {
if condition {
return trueVal
}
return falseVal
}
func init() {
var (
ctx = gctx.GetInitCtx()
)
g.Log().Debug(ctx, "module base init start ...")
var t bool
cool.FillInitData(ctx, "base", &model.BaseSysMenu{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysUser{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysUserRole{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysRole{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysRoleMenu{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysDepartment{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysRoleDepartment{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysParam{}, &t)
cool.FillInitData(ctx, "base", &model.BaseSysConf{}, &t)
if t {
ResetAllSequences(ctx)
}
cool.FillInitData(ctx, "base", &model.BaseSysMenu{})
//fmt.Println(err)
cool.FillInitData(ctx, "base", &model.BaseSysUser{})
cool.FillInitData(ctx, "base", &model.BaseSysUserRole{})
cool.FillInitData(ctx, "base", &model.BaseSysRole{})
cool.FillInitData(ctx, "base", &model.BaseSysRoleMenu{})
cool.FillInitData(ctx, "base", &model.BaseSysDepartment{})
cool.FillInitData(ctx, "base", &model.BaseSysRoleDepartment{})
cool.FillInitData(ctx, "base", &model.BaseSysParam{})
cool.FillInitData(ctx, "base", &model.BaseSysConf{})
ResetAllSequences(ctx)
// g.DB("default").Exec(context.Background(), `CREATE OR REPLACE FUNCTION reset_all_sequences()
// RETURNS void AS $$
// DECLARE

View File

@@ -43,7 +43,7 @@ func (c *Handler) OnOpen(socket *gws.Conn) {
packlen, err := reader.Peek(4)
if err != nil {
socket.WriteClose(1000, nil)
break LOOP
}
@@ -64,6 +64,7 @@ func (c *Handler) OnOpen(socket *gws.Conn) {
//err = <-errChan
if err != io.EOF {
log.Println("proxy error:", err)
}
}

View File

@@ -17,7 +17,7 @@ func init() {
ctx = gctx.GetInitCtx()
)
g.Log().Debug(ctx, "module dict init start ...")
cool.FillInitData(ctx, "dict", &model.DictInfo{})
cool.FillInitData(ctx, "dict", &model.DictType{})
cool.FillInitData(ctx, "dict", &model.DictInfo{}, nil)
cool.FillInitData(ctx, "dict", &model.DictType{}, nil)
g.Log().Debug(ctx, "module dict init finished ...")
}

View File

@@ -20,7 +20,7 @@ func init() {
ctx = gctx.GetInitCtx()
)
g.Log().Debug(ctx, "module task init start ...")
cool.FillInitData(ctx, "task", taskInfo)
cool.FillInitData(ctx, "task", taskInfo, nil)
result, err := cool.DBM(taskInfo).Where("status", 1).All()
if err != nil {