feat(base): 重置数据库序列并优化查询语句

- 在 base 模块初始化时添加重置所有序列的函数
- 修改多个模块中的查询语句,使用 Where(key, value) 替代 Where("key = ?", value)
- 优化部分代码结构,提高可读性和维护性
This commit is contained in:
2025-07-11 03:36:42 +08:00
parent 123543156b
commit d71b1dd169
13 changed files with 65 additions and 33 deletions

View File

@@ -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 ...")
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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"`,
},
},
},

View File

@@ -31,7 +31,7 @@ func (s *BaseSysParamService) HtmlByKey(key string) string {
html = "<html><body>@content</body></html>"
)
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
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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)
}