Browse Source

增加菜单参数配置功能
移除视图中复杂sql更改为model映射模式

QM303176530 4 years ago
parent
commit
92426223d5

File diff suppressed because it is too large
+ 26 - 5
server/db/qmplus.sql


+ 1 - 0
server/initialize/db_table.go

@@ -12,6 +12,7 @@ func DBTables() {
 		model.SysAuthority{},
 		model.SysApi{},
 		model.SysBaseMenu{},
+		model.SysBaseMenuParameter{},
 		model.JwtBlacklist{},
 		model.SysWorkflow{},
 		model.SysWorkflowStepInfo{},

+ 8 - 3
server/model/sys_authority_menu.go

@@ -2,7 +2,12 @@ package model
 
 type SysMenu struct {
 	SysBaseMenu
-	MenuId      string    `json:"menuId" gorm:"comment:'菜单ID'"`
-	AuthorityId string    `json:"-" gorm:"comment:'角色ID'"`
-	Children    []SysMenu `json:"children"`
+	MenuId      string                 `json:"menuId" gorm:"comment:'菜单ID'"`
+	AuthorityId string                 `json:"-" gorm:"comment:'角色ID'"`
+	Children    []SysMenu              `json:"children"`
+	Parameters  []SysBaseMenuParameter `json:"parameters" gorm:"ForeignKey:MenuId"`
+}
+
+func (s SysMenu) TableName() string {
+	return "authority_menu"
 }

+ 11 - 2
server/model/sys_base_menu.go

@@ -14,8 +14,9 @@ type SysBaseMenu struct {
 	Component     string `json:"component" gorm:"comment:'对应前端文件路径'"`
 	Sort          int    `json:"sort" gorm:"comment:'排序标记'"`
 	Meta          `json:"meta" gorm:"comment:'附加属性'"`
-	SysAuthoritys []SysAuthority `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
-	Children      []SysBaseMenu  `json:"children"`
+	SysAuthoritys []SysAuthority         `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
+	Children      []SysBaseMenu          `json:"children"`
+	Parameters    []SysBaseMenuParameter `json:"parameters"`
 }
 
 type Meta struct {
@@ -24,3 +25,11 @@ type Meta struct {
 	Title       string `json:"title" gorm:"comment:'菜单名'"`
 	Icon        string `json:"icon" gorm:"comment:'菜单图标'"`
 }
+
+type SysBaseMenuParameter struct {
+	gorm.Model
+	SysBaseMenuId uint
+	Type          string `json:"type" gorm:"commit:'地址栏携带参数为params还是query'"`
+	Key           string `json:"key" gorm:"commit:'地址栏携带参数的key'"`
+	Value         string `json:"value" gorm:"commit:'地址栏携带参数的值'"`
+}

+ 5 - 3
server/service/sys_base_menu.go

@@ -13,10 +13,11 @@ import (
 // @return    err             error
 
 func DeleteBaseMenu(id float64) (err error) {
-	err = global.GVA_DB.Where("parent_id = ?", id).First(&model.SysBaseMenu{}).Error
+	err = global.GVA_DB.Preload("Parameters").Where("parent_id = ?", id).First(&model.SysBaseMenu{}).Error
 	if err != nil {
 		var menu model.SysBaseMenu
 		db := global.GVA_DB.Preload("SysAuthoritys").Where("id = ?", id).First(&menu).Delete(&menu)
+		err = global.GVA_DB.Delete(&model.SysBaseMenuParameter{}, "sys_base_menu_id = ?", id).Error
 		if len(menu.SysAuthoritys) > 0 {
 			err = db.Association("SysAuthoritys").Delete(menu.SysAuthoritys).Error
 		} else {
@@ -47,6 +48,7 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
 	upDateMap["title"] = menu.Title
 	upDateMap["icon"] = menu.Icon
 	upDateMap["sort"] = menu.Sort
+
 	db := global.GVA_DB.Where("id = ?", menu.ID).Find(&oldMenu)
 	if oldMenu.Name != menu.Name {
 		notSame := global.GVA_DB.Where("id <> ? AND name = ?", menu.ID, menu.Name).First(&model.SysBaseMenu{}).RecordNotFound()
@@ -55,7 +57,7 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
 			return errors.New("存在相同name修改失败")
 		}
 	}
-	err = db.Updates(upDateMap).Error
+	err = db.Updates(upDateMap).Association("Parameters").Replace(menu.Parameters).Error
 	global.GVA_LOG.Debug("菜单修改时候,关联菜单err:%v", err)
 	return err
 }
@@ -67,6 +69,6 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
 // @return    err             error
 
 func GetBaseMenuById(id float64) (err error, menu model.SysBaseMenu) {
-	err = global.GVA_DB.Where("id = ?", id).First(&menu).Error
+	err = global.GVA_DB.Preload("Parameters").Where("id = ?", id).First(&menu).Error
 	return
 }

+ 5 - 5
server/service/sys_menu.go

@@ -16,8 +16,7 @@ import (
 func getMenuTreeMap(authorityId string) (err error, treeMap map[string][]model.SysMenu) {
 	var allMenus []model.SysMenu
 	treeMap = make(map[string][]model.SysMenu)
-	sql := "SELECT authority_menu.keep_alive,authority_menu.default_menu,authority_menu.created_at,authority_menu.updated_at,authority_menu.deleted_at,authority_menu.menu_level,authority_menu.parent_id,authority_menu.path,authority_menu.`name`,authority_menu.hidden,authority_menu.component,authority_menu.title,authority_menu.icon,authority_menu.sort,authority_menu.menu_id,authority_menu.authority_id FROM authority_menu WHERE authority_menu.authority_id = ? ORDER BY authority_menu.sort ASC"
-	err = global.GVA_DB.Raw(sql, authorityId).Scan(&allMenus).Error
+	err = global.GVA_DB.Where("authority_id = ?", authorityId).Order("sort", true).Preload("Parameters").Find(&allMenus).Error
 	for _, v := range allMenus {
 		treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
 	}
@@ -113,7 +112,7 @@ func AddBaseMenu(menu model.SysBaseMenu) (err error) {
 func getBaseMenuTreeMap() (err error, treeMap map[string][]model.SysBaseMenu) {
 	var allMenus []model.SysBaseMenu
 	treeMap = make(map[string][]model.SysBaseMenu)
-	err = global.GVA_DB.Order("sort", true).Find(&allMenus).Error
+	err = global.GVA_DB.Order("sort", true).Preload("Parameters").Find(&allMenus).Error
 	for _, v := range allMenus {
 		treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
 	}
@@ -158,7 +157,8 @@ func AddMenuAuthority(menus []model.SysBaseMenu, authorityId string) (err error)
 // @return    menus           []SysBaseMenu
 
 func GetMenuAuthority(authorityId string) (err error, menus []model.SysMenu) {
-	sql := "SELECT authority_menu.keep_alive,authority_menu.default_menu,authority_menu.created_at,authority_menu.updated_at,authority_menu.deleted_at,authority_menu.menu_level,authority_menu.parent_id,authority_menu.path,authority_menu.`name`,authority_menu.hidden,authority_menu.component,authority_menu.title,authority_menu.icon,authority_menu.sort,authority_menu.menu_id,authority_menu.authority_id FROM authority_menu WHERE authority_menu.authority_id = ? ORDER BY authority_menu.sort ASC"
-	err = global.GVA_DB.Raw(sql, authorityId).Scan(&menus).Error
+	//sql := "SELECT authority_menu.keep_alive,authority_menu.default_menu,authority_menu.created_at,authority_menu.updated_at,authority_menu.deleted_at,authority_menu.menu_level,authority_menu.parent_id,authority_menu.path,authority_menu.`name`,authority_menu.hidden,authority_menu.component,authority_menu.title,authority_menu.icon,authority_menu.sort,authority_menu.menu_id,authority_menu.authority_id FROM authority_menu WHERE authority_menu.authority_id = ? ORDER BY authority_menu.sort ASC"
+	err = global.GVA_DB.Order("sort", true).Find(&menus).Error
+	//err = global.GVA_DB.Raw(sql, authorityId).Scan(&menus).Error
 	return err, menus
 }

Some files were not shown because too many files changed in this diff