Skip to content

Commit 26cdb47

Browse files
author
piexlMax
committed
feature:自动创建基本菜单
1 parent 3c2595a commit 26cdb47

File tree

6 files changed

+64
-26
lines changed

6 files changed

+64
-26
lines changed

server/api/v1/system/sys_auto_code.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ func (autoApi *AutoCodeApi) CreateTemp(c *gin.Context) {
6363
}
6464
a.Pretreatment()
6565
var apiIds []uint
66+
var menuId uint
6667
if a.AutoCreateApiToSql {
6768
if ids, err := autoCodeService.AutoCreateApi(&a); err != nil {
6869
global.GVA_LOG.Error("自动化创建失败!请自行清空垃圾数据!", zap.Error(err))
@@ -73,8 +74,17 @@ func (autoApi *AutoCodeApi) CreateTemp(c *gin.Context) {
7374
apiIds = ids
7475
}
7576
}
77+
if a.AutoCreateApiToSql {
78+
if id, err := autoCodeService.AutoCreateMenu(&a); err != nil {
79+
global.GVA_LOG.Error("自动化创建失败!请自行清空垃圾数据!", zap.Error(err))
80+
c.Writer.Header().Add("success", "false")
81+
c.Writer.Header().Add("msg", url.QueryEscape("自动化创建失败!请自行清空垃圾数据!"))
82+
} else {
83+
menuId = id
84+
}
85+
}
7686
a.PackageT = utils.FirstUpper(a.Package)
77-
err := autoCodeService.CreateTemp(a, apiIds...)
87+
err := autoCodeService.CreateTemp(a, menuId, apiIds...)
7888
if err != nil {
7989
if errors.Is(err, system.ErrAutoMove) {
8090
c.Writer.Header().Add("success", "true")

server/model/system/sys_auto_code.go

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,30 @@ import (
1010

1111
// AutoCodeStruct 初始版本自动化代码工具
1212
type AutoCodeStruct struct {
13-
StructName string `json:"structName"` // Struct名称
14-
TableName string `json:"tableName"` // 表名
15-
PackageName string `json:"packageName"` // 文件名称
16-
HumpPackageName string `json:"humpPackageName"` // go文件名称
17-
Abbreviation string `json:"abbreviation"` // Struct简称
18-
Description string `json:"description"` // Struct中文名称
19-
AutoCreateApiToSql bool `json:"autoCreateApiToSql"` // 是否自动创建api
20-
AutoCreateResource bool `json:"autoCreateResource"` // 是否自动创建资源标识
21-
AutoMoveFile bool `json:"autoMoveFile"` // 是否自动移动文件
22-
BusinessDB string `json:"businessDB"` // 业务数据库
23-
GvaModel bool `json:"gvaModel"` // 是否使用gva默认Model
24-
Fields []*Field `json:"fields"`
25-
PrimaryField *Field `json:"primaryField"`
26-
HasTimer bool `json:"-"`
27-
HasSearchTimer bool `json:"-"`
28-
DictTypes []string `json:"-"`
29-
Package string `json:"package"`
30-
PackageT string `json:"-"`
31-
NeedSort bool `json:"-"`
32-
HasPic bool `json:"-"`
33-
HasRichText bool `json:"-"`
34-
HasFile bool `json:"-"`
35-
NeedJSON bool `json:"-"`
13+
StructName string `json:"structName"` // Struct名称
14+
TableName string `json:"tableName"` // 表名
15+
PackageName string `json:"packageName"` // 文件名称
16+
HumpPackageName string `json:"humpPackageName"` // go文件名称
17+
Abbreviation string `json:"abbreviation"` // Struct简称
18+
Description string `json:"description"` // Struct中文名称
19+
AutoCreateApiToSql bool `json:"autoCreateApiToSql"` // 是否自动创建api
20+
AutoCreateMenuToSql bool `json:"autoCreateMenuToSql"` // 是否自动创建menu
21+
AutoCreateResource bool `json:"autoCreateResource"` // 是否自动创建资源标识
22+
AutoMoveFile bool `json:"autoMoveFile"` // 是否自动移动文件
23+
BusinessDB string `json:"businessDB"` // 业务数据库
24+
GvaModel bool `json:"gvaModel"` // 是否使用gva默认Model
25+
Fields []*Field `json:"fields"`
26+
PrimaryField *Field `json:"primaryField"`
27+
HasTimer bool `json:"-"`
28+
HasSearchTimer bool `json:"-"`
29+
DictTypes []string `json:"-"`
30+
Package string `json:"package"`
31+
PackageT string `json:"-"`
32+
NeedSort bool `json:"-"`
33+
HasPic bool `json:"-"`
34+
HasRichText bool `json:"-"`
35+
HasFile bool `json:"-"`
36+
NeedJSON bool `json:"-"`
3637
}
3738

3839
func (a *AutoCodeStruct) Pretreatment() {

server/model/system/sys_autocode_history.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type SysAutoCodeHistory struct {
1414
Package string `json:"package"`
1515
BusinessDB string `json:"businessDB"`
1616
TableName string `json:"tableName"`
17+
MenuID uint `json:"menuID"`
1718
RequestMeta string `gorm:"type:text" json:"requestMeta,omitempty"` // 前端传入的结构化信息
1819
AutoCodePath string `gorm:"type:text" json:"autoCodePath,omitempty"` // 其他meta信息 path;path
1920
InjectionMeta string `gorm:"type:text" json:"injectionMeta,omitempty"` // 注入的内容 RouterPath@functionName@RouterString;

server/service/system/sys_auto_code.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ func makeDictTypes(autoCode *system.AutoCodeStruct) {
253253
// @param: model.AutoCodeStruct
254254
// @return: err error
255255

256-
func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruct, ids ...uint) (err error) {
256+
func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruct, menuID uint, ids ...uint) (err error) {
257257
makeDictTypes(&autoCode)
258258
for i := range autoCode.Fields {
259259
if autoCode.Fields[i].FieldType == "time.Time" {
@@ -401,6 +401,7 @@ func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruc
401401
idBf.String(),
402402
autoCode.Package,
403403
autoCode.BusinessDB,
404+
menuID,
404405
)
405406
} else {
406407
err = AutoCodeHistoryServiceApp.CreateAutoCodeHistory(
@@ -413,6 +414,7 @@ func (autoCodeService *AutoCodeService) CreateTemp(autoCode system.AutoCodeStruc
413414
idBf.String(),
414415
autoCode.Package,
415416
autoCode.BusinessDB,
417+
menuID,
416418
)
417419
}
418420
}
@@ -569,6 +571,20 @@ func (autoCodeService *AutoCodeService) AutoCreateApi(a *system.AutoCodeStruct)
569571
return ids, err
570572
}
571573

574+
func (autoCodeService *AutoCodeService) AutoCreateMenu(a *system.AutoCodeStruct) (id uint, err error) {
575+
var menu system.SysBaseMenu
576+
err = global.GVA_DB.First(&menu, "name = ?", menu.Name).Error
577+
if err == nil {
578+
return 0, errors.New("存在相同的菜单路由,请关闭自动创建菜单功能")
579+
}
580+
menu.Name = a.Abbreviation
581+
menu.Path = a.Abbreviation
582+
menu.Meta.Title = a.Description
583+
menu.Component = fmt.Sprintf("view/%s/%s.vue", a.PackageName, a.PackageName)
584+
err = global.GVA_DB.Create(&menu).Error
585+
return menu.ID, err
586+
}
587+
572588
func (autoCodeService *AutoCodeService) getNeedList(autoCode *system.AutoCodeStruct) (dataList []tplData, fileList []string, needMkdir []string, err error) {
573589
// 去除所有空格
574590
utils.TrimSpace(autoCode)

server/service/system/sys_autocode_history.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ var AutoCodeHistoryServiceApp = new(AutoCodeHistoryService)
3030
// RouterPath : RouterPath@RouterString;RouterPath2@RouterString2
3131
// Author [SliverHorn](https://github.com/SliverHorn)
3232
// Author [songzhibin97](https://github.com/songzhibin97)
33-
func (autoCodeHistoryService *AutoCodeHistoryService) CreateAutoCodeHistory(meta, structName, structCNName, autoCodePath string, injectionMeta string, tableName string, apiIds string, Package string, BusinessDB string) error {
33+
func (autoCodeHistoryService *AutoCodeHistoryService) CreateAutoCodeHistory(meta, structName, structCNName, autoCodePath string, injectionMeta string, tableName string, apiIds string, Package string, BusinessDB string, menuID uint) error {
3434
return global.GVA_DB.Create(&system.SysAutoCodeHistory{
3535
Package: Package,
3636
RequestMeta: meta,
@@ -81,9 +81,17 @@ func (autoCodeHistoryService *AutoCodeHistoryService) RollBack(info *systemReq.R
8181
ids.Ids = append(ids.Ids, id)
8282
}
8383
err := ApiServiceApp.DeleteApisByIds(ids)
84+
8485
if err != nil {
8586
global.GVA_LOG.Error("ClearTag DeleteApiByIds:", zap.Error(err))
8687
}
88+
89+
err = BaseMenuServiceApp.DeleteBaseMenu(int(md.MenuID))
90+
91+
if err != nil {
92+
global.GVA_LOG.Error("ClearTag DeleteBaseMenu:", zap.Error(err))
93+
}
94+
8795
// 删除表
8896
if info.DeleteTable {
8997
if err = AutoCodeServiceApp.DropTable(md.BusinessDB, md.TableName); err != nil {

server/service/system/sys_base_menu.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ type BaseMenuService struct{}
1616
//@param: id float64
1717
//@return: err error
1818

19+
var BaseMenuServiceApp = new(BaseMenuService)
20+
1921
func (baseMenuService *BaseMenuService) DeleteBaseMenu(id int) (err error) {
2022
err = global.GVA_DB.Preload("MenuBtn").Preload("Parameters").Where("parent_id = ?", id).First(&system.SysBaseMenu{}).Error
2123
if err != nil {

0 commit comments

Comments
 (0)