This commit is contained in:
孟帅
2023-11-25 18:36:11 +08:00
parent 40117c700d
commit 70e9f966c3
142 changed files with 5407 additions and 2058 deletions

View File

@@ -36,7 +36,9 @@ var (
---------------------------------------------------------------------------------
工具
>> 释放casbin权限用于清理无效的权限设置 [go run main.go tools -m=casbin -a1=refresh]
---------------------------------------------------------------------------------
升级更新
>> 修复菜单关系树 [go run main.go up -m=fix -a1=menuTree]
---------------------------------------------------------------------------------
更多
github地址https://github.com/bufanyun/hotgo
@@ -76,7 +78,7 @@ var (
)
func init() {
if err := Main.AddCommand(All, Http, Queue, Cron, Auth, Tools, Help); err != nil {
if err := Main.AddCommand(All, Http, Queue, Cron, Auth, Tools, Up, Help); err != nil {
panic(err)
}
}

View File

@@ -10,6 +10,7 @@ import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/util/gmode"
"hotgo/internal/consts"
"hotgo/internal/library/addons"
"hotgo/internal/library/casbin"
@@ -79,7 +80,9 @@ var (
casbin.InitEnforcer(ctx)
// 初始化生成代码配置
hggen.InIt(ctx)
if !gmode.IsProduct() {
hggen.InIt(ctx)
}
// 启动tcp服务
service.TCPServer().Start(ctx)

65
server/internal/cmd/up.go Normal file
View File

@@ -0,0 +1,65 @@
// Package cmd
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package cmd
import (
"context"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"hotgo/internal/cmd/upgrade/fix"
)
var (
Up = &gcmd.Command{
Name: "up",
Brief: "处理hotgo版本升级更新带来的兼容问题",
Description: ``,
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
args := parser.GetOptAll()
g.Log().Debugf(ctx, "up args:%v", args)
if len(args) == 0 {
err = gerror.New("up args cannot be empty.")
return
}
method, ok := args["m"]
if !ok {
err = gerror.New("up method cannot be empty.")
return
}
switch method {
case "fix":
err = handleUpgradeFix(ctx, args)
default:
err = gerror.Newf("up method[%v] does not exist", method)
}
if err == nil {
g.Log().Info(ctx, "up exec successful!")
}
return
},
}
)
// handleUpgradeFix 处理修复脚本
func handleUpgradeFix(ctx context.Context, args map[string]string) (err error) {
a1, ok := args["a1"]
if !ok {
err = gerror.New("fix args cannot be empty.")
return
}
switch a1 {
case "menuTree":
fix.UpdateAdminMenuTree(ctx)
default:
err = gerror.Newf("fix a1 is invalid, a1:%v", a1)
}
return
}

View File

@@ -0,0 +1,48 @@
// Package fix
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package fix
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"hotgo/internal/dao"
"hotgo/internal/library/hgorm"
"hotgo/internal/model/entity"
)
// UpdateAdminMenuTree 更新菜单关系树
// 根据树等级从上到下依次检查,将无效的关系树进行修复更新
func UpdateAdminMenuTree(ctx context.Context) {
var list []*entity.AdminMenu
err := dao.AdminMenu.Ctx(ctx).OrderAsc("level").Scan(&list)
if err != nil {
g.Log().Fatal(ctx, err)
}
genUpdateData := func(v *entity.AdminMenu) g.Map {
update := g.Map{"updated_at": gtime.Now()}
if v.Pid <= 0 {
update["level"] = 1
update["tree"] = ""
return update
}
// 生成下级关系树
update["pid"], update["level"], update["tree"], err = hgorm.GenSubTree(ctx, &dao.AdminMenu, v.Pid)
return update
}
for _, v := range list {
update := genUpdateData(v)
if v.Level == update["level"] && v.Tree == update["tree"] {
continue
}
if _, err = dao.AdminMenu.Ctx(ctx).WherePri(v.Id).Data(genUpdateData(v)).Update(); err != nil {
g.Log().Fatal(ctx, err)
}
}
}