From d71b1dd169bc083eb25e9cb88fbcb822cb57e263 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Fri, 11 Jul 2025 03:36:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(base):=20=E9=87=8D=E7=BD=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=BA=8F=E5=88=97=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AF=AD=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 base 模块初始化时添加重置所有序列的函数 - 修改多个模块中的查询语句,使用 Where(key, value) 替代 Where("key = ?", value) - 优化部分代码结构,提高可读性和维护性 --- modules/base/base.go | 32 +++++++++++++++++++++ modules/base/model/base_sys_menu.go | 4 +-- modules/base/service/base_sys_conf.go | 4 +-- modules/base/service/base_sys_department.go | 2 +- modules/base/service/base_sys_log.go | 6 ++-- modules/base/service/base_sys_param.go | 4 +-- modules/base/service/base_sys_role.go | 12 ++++---- modules/base/service/base_sys_user.go | 10 +++---- modules/task/funcs/task_add_task.go | 2 +- modules/task/funcs/task_stop_func.go | 2 +- modules/task/funcs/tast_start_func.go | 4 +-- modules/task/service/task_info.go | 14 ++++----- modules/task/task.go | 2 +- 13 files changed, 65 insertions(+), 33 deletions(-) diff --git a/modules/base/base.go b/modules/base/base.go index 8663463fb..509eeedf1 100644 --- a/modules/base/base.go +++ b/modules/base/base.go @@ -2,6 +2,7 @@ package base import ( _ "blazing/modules/base/packed" + "context" "blazing/cool" @@ -30,7 +31,38 @@ func init() { cool.FillInitData(ctx, "base", &model.BaseSysRoleDepartment{}) cool.FillInitData(ctx, "base", &model.BaseSysParam{}) cool.FillInitData(ctx, "base", &model.BaseSysConf{}) + g.DB("default").Exec(context.Background(), `CREATE OR REPLACE FUNCTION reset_all_sequences() +RETURNS void AS $$ +DECLARE + seq_record record; +BEGIN + FOR seq_record IN + SELECT + 'SELECT SETVAL(' || + quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) || + ', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' || + quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';' AS sql + FROM + pg_class AS S, + pg_depend AS D, + pg_class AS T, + pg_attribute AS C, + pg_tables AS PGT + WHERE + S.relkind = 'S' + AND S.oid = D.objid + AND D.refobjid = T.oid + AND D.refobjid = C.attrelid + AND D.refobjsubid = C.attnum + AND T.relname = PGT.tablename + LOOP + EXECUTE seq_record.sql; + END LOOP; +END; +$$ LANGUAGE plpgsql; +-- 执行函数 +SELECT reset_all_sequences();`, nil) //重置所有序列 g.Log().Debug(ctx, "module base init finished ...") } diff --git a/modules/base/model/base_sys_menu.go b/modules/base/model/base_sys_menu.go index 041263b3a..822ebe9ee 100644 --- a/modules/base/model/base_sys_menu.go +++ b/modules/base/model/base_sys_menu.go @@ -15,8 +15,8 @@ type BaseSysMenu struct { Icon *string `gorm:"column:icon;type:varchar(255)" json:"icon"` // 图标 OrderNum int32 `gorm:"column:orderNum;type:int;not null;default:0" json:"orderNum"` // 排序 ViewPath *string `gorm:"column:viewPath;type:varchar(255)" json:"viewPath"` // 视图地址 - KeepAlive *int32 `gorm:"column:keepAlive;not null;default:1" json:"keepAlive"` // 路由缓存 - IsShow *int32 `gorm:"column:isShow;not null;default:1" json:"isShow"` // 是否显示 + KeepAlive bool `gorm:"column:keepAlive;not null;default:1" json:"keepAlive"` // 路由缓存 + IsShow bool `gorm:"column:isShow;not null;default:1" json:"isShow"` // 是否显示 } // TableName BaseSysMenu's table name diff --git a/modules/base/service/base_sys_conf.go b/modules/base/service/base_sys_conf.go index 7e8f32e29..0e8818847 100644 --- a/modules/base/service/base_sys_conf.go +++ b/modules/base/service/base_sys_conf.go @@ -25,7 +25,7 @@ func NewBaseSysConfService() *BaseSysConfService { // UpdateValue 更新配置值 func (s *BaseSysConfService) UpdateValue(cKey, cValue string) error { - m := cool.DBM(s.Model).Where("cKey = ?", cKey) + m := cool.DBM(s.Model).Where("cKey", cKey) record, err := m.One() if err != nil { return err @@ -36,7 +36,7 @@ func (s *BaseSysConfService) UpdateValue(cKey, cValue string) error { "cValue": cValue, }) } else { - _, err = cool.DBM(s.Model).Where("cKey = ?", cKey).Data(g.Map{"cValue": cValue}).Update() + _, err = cool.DBM(s.Model).Where("cKey", cKey).Data(g.Map{"cValue": cValue}).Update() } return err } diff --git a/modules/base/service/base_sys_department.go b/modules/base/service/base_sys_department.go index 83176c87e..52639f849 100644 --- a/modules/base/service/base_sys_department.go +++ b/modules/base/service/base_sys_department.go @@ -63,7 +63,7 @@ func (s *BaseSysDepartmentService) Order(ctx g.Ctx) (err error) { if err != nil { continue } - cool.DBM(s.Model).Where("id = ?", data.Id).Data(data).Update() + cool.DBM(s.Model).Where("id", data.Id).Data(data).Update() } return diff --git a/modules/base/service/base_sys_log.go b/modules/base/service/base_sys_log.go index abfaecb08..74cb8de73 100644 --- a/modules/base/service/base_sys_log.go +++ b/modules/base/service/base_sys_log.go @@ -20,13 +20,13 @@ func NewBaseSysLogService() *BaseSysLogService { Model: model.NewBaseSysLog(), PageQueryOp: &cool.QueryOp{ KeyWordField: []string{"name", "params", "ipAddr"}, - Select: "base_sys_log.*,user.name ", + Select: `base_sys_log.*,"user".name `, Join: []*cool.JoinOp{ { Model: model.NewBaseSysUser(), - Alias: "user", + Alias: `"user"`, Type: "LeftJoin", - Condition: "user.id = base_sys_log.userID", + Condition: `"user".id = base_sys_log."userId"`, }, }, }, diff --git a/modules/base/service/base_sys_param.go b/modules/base/service/base_sys_param.go index 48d5b10b8..e5be9ea41 100644 --- a/modules/base/service/base_sys_param.go +++ b/modules/base/service/base_sys_param.go @@ -31,7 +31,7 @@ func (s *BaseSysParamService) HtmlByKey(key string) string { html = "@content" ) m := cool.DBM(s.Model) - record, err := m.Where("keyName = ?", key).One() + record, err := m.Where("keyName", key).One() if err != nil { html = gstr.Replace(html, "@content", err.Error()) return html @@ -79,7 +79,7 @@ func (s *BaseSysParamService) DataByKey(ctx context.Context, key string) (data s data = dataCache.String() return } - record, err := m.Where("keyName = ?", key).One() + record, err := m.Where("keyName", key).One() if err != nil { return } diff --git a/modules/base/service/base_sys_role.go b/modules/base/service/base_sys_role.go index d37c687a8..098ad815b 100644 --- a/modules/base/service/base_sys_role.go +++ b/modules/base/service/base_sys_role.go @@ -30,7 +30,7 @@ func (s *BaseSysRoleService) ModifyAfter(ctx context.Context, method string, par // updatePerms(roleId, menuIdList?, departmentIds = []) func (s *BaseSysRoleService) updatePerms(ctx context.Context, roleId uint, menuIdList, departmentIds []uint) (err error) { // 更新菜单权限 - cool.DBM(model.NewBaseSysRoleMenu()).Where("roleId = ?", roleId).Delete() + cool.DBM(model.NewBaseSysRoleMenu()).Where("roleId", roleId).Delete() if len(menuIdList) > 0 { roleMenuList := make([]g.MapStrAny, len(menuIdList)) for i, menuId := range menuIdList { @@ -42,7 +42,7 @@ func (s *BaseSysRoleService) updatePerms(ctx context.Context, roleId uint, menuI cool.DBM(model.NewBaseSysRoleMenu()).Data(roleMenuList).Insert() } // 更新部门权限 - cool.DBM(model.NewBaseSysRoleDepartment()).Where("roleId = ?", roleId).Delete() + cool.DBM(model.NewBaseSysRoleDepartment()).Where("roleId", roleId).Delete() if len(departmentIds) > 0 { roleDepartmentList := make([]g.MapStrAny, len(departmentIds)) for i, departmentId := range departmentIds { @@ -54,7 +54,7 @@ func (s *BaseSysRoleService) updatePerms(ctx context.Context, roleId uint, menuI cool.DBM(model.NewBaseSysRoleDepartment()).Data(roleDepartmentList).Insert() } // 刷新权限 - userRoles, err := cool.DBM(model.NewBaseSysUserRole()).Where("roleId = ?", roleId).All() + userRoles, err := cool.DBM(model.NewBaseSysUserRole()).Where("roleId", roleId).All() if err != nil { return } @@ -84,7 +84,7 @@ func (s *BaseSysRoleService) GetByUser(userId uint) []string { // BaseSysRoleService Info 方法重构 func (s *BaseSysRoleService) ServiceInfo(ctx context.Context, req *cool.InfoReq) (data interface{}, err error) { - info, err := cool.DBM(s.Model).Where("id = ?", req.Id).One() + info, err := cool.DBM(s.Model).Where("id", req.Id).One() if err != nil { return nil, err } @@ -96,7 +96,7 @@ func (s *BaseSysRoleService) ServiceInfo(ctx context.Context, req *cool.InfoReq) return nil, err } } else { - menus, err = cool.DBM(model.NewBaseSysRoleMenu()).Where("roleId = ?", req.Id).All() + menus, err = cool.DBM(model.NewBaseSysRoleMenu()).Where("roleId", req.Id).All() if err != nil { return nil, err } @@ -112,7 +112,7 @@ func (s *BaseSysRoleService) ServiceInfo(ctx context.Context, req *cool.InfoReq) return nil, err } } else { - departments, err = cool.DBM(model.NewBaseSysRoleDepartment()).Where("roleId = ?", req.Id).All() + departments, err = cool.DBM(model.NewBaseSysRoleDepartment()).Where("roleId", req.Id).All() if err != nil { return nil, err } diff --git a/modules/base/service/base_sys_user.go b/modules/base/service/base_sys_user.go index b37c48328..8270777ea 100644 --- a/modules/base/service/base_sys_user.go +++ b/modules/base/service/base_sys_user.go @@ -24,13 +24,13 @@ type BaseSysUserService struct { // Person 方法 返回不带密码的用户信息 func (s *BaseSysUserService) Person(userId uint) (res gdb.Record, err error) { m := cool.DBM(s.Model) - res, err = m.Where("id = ?", userId).FieldsEx("password").One() + res, err = m.Where("id", userId).FieldsEx("password").One() return } func (s *BaseSysUserService) GetSession(email string, password string) (res *model.BaseSysUser, err error) { m := cool.DBM(s.Model) - m.Where("email = ?", email).Where("password=?", password).Where("status=?", 1).Scan(&res) + m.Where("email", email).Where("password=?", password).Where("status=?", 1).Scan(&res) if res == nil { err = gerror.New("账户或密码不正确~") return @@ -99,7 +99,7 @@ func (s *BaseSysUserService) ServiceInfo(ctx g.Ctx, req *cool.InfoReq) (data int resultMap := result.(gdb.Record).Map() // 获取角色 - roleIds, err := cool.DBM(model.NewBaseSysUserRole()).Where("userId = ?", resultMap["id"]).Fields("roleId").Array() + roleIds, err := cool.DBM(model.NewBaseSysUserRole()).Where("userId", resultMap["id"]).Fields("roleId").Array() if err != nil { return nil, err } @@ -121,7 +121,7 @@ func (s *BaseSysUserService) ServiceUpdate(ctx context.Context, req *cool.Update // 如果不传入ID代表更新当前用户 userId := r.Get("id", admin.UserId).Uint() - userInfo, err := m.Where("id = ?", userId).One() + userInfo, err := m.Where("id", userId).One() if err != nil { return @@ -148,7 +148,7 @@ func (s *BaseSysUserService) ServiceUpdate(ctx context.Context, req *cool.Update } err = g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) { - roleModel := cool.DBM(model.NewBaseSysUserRole()).TX(tx).Where("userId = ?", userId) + roleModel := cool.DBM(model.NewBaseSysUserRole()).TX(tx).Where("userId", userId) roleIds, err := roleModel.Fields("roleId").Array() if err != nil { return diff --git a/modules/task/funcs/task_add_task.go b/modules/task/funcs/task_add_task.go index 078c93921..bd904dc8a 100644 --- a/modules/task/funcs/task_add_task.go +++ b/modules/task/funcs/task_add_task.go @@ -15,7 +15,7 @@ type TaskAddTask struct { func (t *TaskAddTask) Func(ctx g.Ctx, id string) error { taskInfo := model.NewTaskInfo() - result, err := cool.DBM(taskInfo).Where("id = ?", id).One() + result, err := cool.DBM(taskInfo).Where("id", id).One() if err != nil { return err } diff --git a/modules/task/funcs/task_stop_func.go b/modules/task/funcs/task_stop_func.go index ea499d60f..abaebc7b1 100644 --- a/modules/task/funcs/task_stop_func.go +++ b/modules/task/funcs/task_stop_func.go @@ -14,7 +14,7 @@ type TaskStopFunc struct { func (t *TaskStopFunc) Func(ctx g.Ctx, id string) error { taskInfo := model.NewTaskInfo() - _, err := cool.DBM(taskInfo).Where("id = ?", id).Update(g.Map{"status": 0}) + _, err := cool.DBM(taskInfo).Where("id", id).Update(g.Map{"status": 0}) if err != nil { return err } diff --git a/modules/task/funcs/tast_start_func.go b/modules/task/funcs/tast_start_func.go index 024da648f..9d65eba40 100644 --- a/modules/task/funcs/tast_start_func.go +++ b/modules/task/funcs/tast_start_func.go @@ -15,11 +15,11 @@ type TaskStartFunc struct { func (t *TaskStartFunc) Func(ctx g.Ctx, id string) error { taskInfo := model.NewTaskInfo() - _, err := cool.DBM(taskInfo).Where("id = ?", id).Update(g.Map{"status": 1}) + _, err := cool.DBM(taskInfo).Where("id", id).Update(g.Map{"status": 1}) if err != nil { return err } - result, err := cool.DBM(taskInfo).Where("id = ?", id).One() + result, err := cool.DBM(taskInfo).Where("id", id).One() if err != nil { return err } diff --git a/modules/task/service/task_info.go b/modules/task/service/task_info.go index 844437833..01d7292c8 100644 --- a/modules/task/service/task_info.go +++ b/modules/task/service/task_info.go @@ -35,7 +35,7 @@ func (s *TaskInfoService) ModifyAfter(ctx g.Ctx, method string, param g.MapStrAn g.Log().Info(ctx, "TaskInfoService.ModifyAfter", method, param) if method == "Add" { if gconv.Int(param["status"]) == 1 { - id, err := cool.DBM(s.Model).Where("name = ?", param["name"]).Value("id") + id, err := cool.DBM(s.Model).Where("name", param["name"]).Value("id") if err != nil { return err } @@ -69,7 +69,7 @@ func (s *TaskInfoService) Record(ctx g.Ctx, id string, status int, detail string return err } if status == 1 { - record, err := cool.DBM(taskLog).Where("taskId = ?", id).Where("status", 1).Order("id", "desc").Offset(19).One() + record, err := cool.DBM(taskLog).Where("taskId", id).Where("status", 1).Order("id", "desc").Offset(19).One() if err != nil { return err } @@ -80,7 +80,7 @@ func (s *TaskInfoService) Record(ctx g.Ctx, id string, status int, detail string if err != nil { return err } - _, err = cool.DBM(taskLog).Where("taskId = ?", id).Where("status", 1).Where("id < ?", minId).Delete() + _, err = cool.DBM(taskLog).Where("taskId", id).Where("status", 1).Where("id < ?", minId).Delete() if err != nil { return err } @@ -90,7 +90,7 @@ func (s *TaskInfoService) Record(ctx g.Ctx, id string, status int, detail string // Once 执行一次任务 func (s *TaskInfoService) Once(ctx g.Ctx, id int64) error { - record, err := cool.DBM(s.Model).Where("id = ?", id).One() + record, err := cool.DBM(s.Model).Where("id", id).One() if err != nil { return err } @@ -112,10 +112,10 @@ func (s *TaskInfoService) Log(ctx g.Ctx, param g.MapStrStr) (data interface{}, e m := cool.DBM(taskLog).LeftJoin("task_info", "task_info.id = task_log.taskId") if id, ok := param["id"]; ok { - m = m.Where("taskId = ?", id) + m = m.Where("taskId", id) } if status, ok := param["status"]; ok { - m = m.Where("status = ?", status) + m = m.Where("status", status) } Total, err = m.Clone().Count() m = m.Fields("task_log.*,task_info.name as taskName") @@ -164,7 +164,7 @@ func (s *TaskInfoService) SetNextRunTime(ctx g.Ctx, cronId string, cron string) nextTime, e := getCronNextTime(cron, time.Now()) if e == nil { - _, err := cool.DBM(s.Model).Where("id = ?", cronId).Data("nextRunTime", nextTime).Update() + _, err := cool.DBM(s.Model).Where("id", cronId).Data("nextRunTime", nextTime).Update() if err != nil { return err } diff --git a/modules/task/task.go b/modules/task/task.go index d3a747fda..8a1ecab5a 100644 --- a/modules/task/task.go +++ b/modules/task/task.go @@ -22,7 +22,7 @@ func init() { g.Log().Debug(ctx, "module task init start ...") cool.FillInitData(ctx, "task", taskInfo) - result, err := cool.DBM(taskInfo).Where("status = ?", 1).All() + result, err := cool.DBM(taskInfo).Where("status", 1).All() if err != nil { panic(err) }