Skip to content

Commit 834a233

Browse files
author
QM303176530
committed
增加菜单参数配置功能
移除视图中复杂sql更改为model映射模式
1 parent 61fdaef commit 834a233

File tree

6 files changed

+58
-19
lines changed

6 files changed

+58
-19
lines changed

server/db/qmplus.sql

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
/*
22
Navicat Premium Data Transfer
33
4-
Source Server : qmplus
4+
Source Server : pandora
55
Source Server Type : MySQL
6-
Source Server Version : 50644
6+
Source Server Version : 50640
77
Source Host : localhost:3306
88
Source Schema : qmplus
99
1010
Target Server Type : MySQL
11-
Target Server Version : 50644
11+
Target Server Version : 50640
1212
File Encoding : 65001
1313
14-
Date: 08/07/2020 10:08:22
14+
Date: 11/08/2020 23:22:30
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -445,6 +445,23 @@ INSERT INTO `sys_authority_menus` VALUES ('9528', 40);
445445
INSERT INTO `sys_authority_menus` VALUES ('9528', 41);
446446
INSERT INTO `sys_authority_menus` VALUES ('9528', 42);
447447

448+
-- ----------------------------
449+
-- Table structure for sys_base_menu_parameters
450+
-- ----------------------------
451+
DROP TABLE IF EXISTS `sys_base_menu_parameters`;
452+
CREATE TABLE `sys_base_menu_parameters` (
453+
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
454+
`created_at` datetime(0) NULL DEFAULT NULL,
455+
`updated_at` datetime(0) NULL DEFAULT NULL,
456+
`deleted_at` datetime(0) NULL DEFAULT NULL,
457+
`sys_base_menu_id` int(10) UNSIGNED NULL DEFAULT NULL,
458+
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
459+
`key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
460+
`value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
461+
PRIMARY KEY (`id`) USING BTREE,
462+
INDEX `idx_sys_base_menu_parameters_deleted_at`(`deleted_at`) USING BTREE
463+
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
464+
448465
-- ----------------------------
449466
-- Table structure for sys_base_menus
450467
-- ----------------------------
@@ -619,7 +636,12 @@ CREATE TABLE `sys_operation_records` (
619636
`resp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '响应Body',
620637
PRIMARY KEY (`id`) USING BTREE,
621638
INDEX `idx_sys_operation_records_deleted_at`(`deleted_at`) USING BTREE
622-
) ENGINE = InnoDB AUTO_INCREMENT = 342 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
639+
) ENGINE = InnoDB AUTO_INCREMENT = 343 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact;
640+
641+
-- ----------------------------
642+
-- Records of sys_operation_records
643+
-- ----------------------------
644+
INSERT INTO `sys_operation_records` VALUES (342, '2020-08-11 23:21:30', '2020-08-11 23:21:30', NULL, '127.0.0.1', 'POST', '/authority/getAuthorityList', 200, 3906600, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36', '', '{\"page\":1,\"pageSize\":999}', 10, '{\"code\":0,\"data\":{\"list\":[{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-06-13T16:07:37+08:00\",\"DeletedAt\":null,\"authorityId\":\"888\",\"authorityName\":\"普通用户\",\"parentId\":\"0\",\"dataAuthorityId\":[{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-06-13T16:07:37+08:00\",\"DeletedAt\":null,\"authorityId\":\"888\",\"authorityName\":\"普通用户\",\"parentId\":\"0\",\"dataAuthorityId\":null,\"children\":null,\"menus\":null},{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"8881\",\"authorityName\":\"普通用户子角色\",\"parentId\":\"888\",\"dataAuthorityId\":null,\"children\":null,\"menus\":null},{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"9528\",\"authorityName\":\"测试角色\",\"parentId\":\"0\",\"dataAuthorityId\":null,\"children\":null,\"menus\":null}],\"children\":[{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"8881\",\"authorityName\":\"普通用户子角色\",\"parentId\":\"888\",\"dataAuthorityId\":[],\"children\":[],\"menus\":null}],\"menus\":null},{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"9528\",\"authorityName\":\"测试角色\",\"parentId\":\"0\",\"dataAuthorityId\":[{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"8881\",\"authorityName\":\"普通用户子角色\",\"parentId\":\"888\",\"dataAuthorityId\":null,\"children\":null,\"menus\":null},{\"CreatedAt\":\"2020-04-04T11:44:56+08:00\",\"UpdatedAt\":\"2020-04-24T10:16:42+08:00\",\"DeletedAt\":null,\"authorityId\":\"9528\",\"authorityName\":\"测试角色\",\"parentId\":\"0\",\"dataAuthorityId\":null,\"children\":null,\"menus\":null}],\"children\":[],\"menus\":null}],\"total\":0,\"page\":1,\"pageSize\":999},\"msg\":\"操作成功\"}');
623645

624646
-- ----------------------------
625647
-- Table structure for sys_users
@@ -688,6 +710,6 @@ CREATE TABLE `sys_workflows` (
688710
-- View structure for authority_menu
689711
-- ----------------------------
690712
DROP VIEW IF EXISTS `authority_menu`;
691-
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `authority_menu` AS select `sys_base_menus`.`id` AS `id`,`sys_base_menus`.`created_at` AS `created_at`,`sys_base_menus`.`updated_at` AS `updated_at`,`sys_base_menus`.`deleted_at` AS `deleted_at`,`sys_base_menus`.`menu_level` AS `menu_level`,`sys_base_menus`.`parent_id` AS `parent_id`,`sys_base_menus`.`path` AS `path`,`sys_base_menus`.`name` AS `name`,`sys_base_menus`.`hidden` AS `hidden`,`sys_base_menus`.`component` AS `component`,`sys_base_menus`.`title` AS `title`,`sys_base_menus`.`icon` AS `icon`,`sys_base_menus`.`nick_name` AS `nick_name`,`sys_base_menus`.`sort` AS `sort`,`sys_authority_menus`.`sys_authority_authority_id` AS `authority_id`,`sys_authority_menus`.`sys_base_menu_id` AS `menu_id`,`sys_base_menus`.`keep_alive` AS `keep_alive`,`sys_base_menus`.`default_menu` AS `default_menu` from (`sys_authority_menus` join `sys_base_menus` on((`sys_authority_menus`.`sys_base_menu_id` = `sys_base_menus`.`id`)));
713+
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `authority_menu` AS select `sys_base_menus`.`id` AS `id`,`sys_base_menus`.`created_at` AS `created_at`,`sys_base_menus`.`updated_at` AS `updated_at`,`sys_base_menus`.`deleted_at` AS `deleted_at`,`sys_base_menus`.`menu_level` AS `menu_level`,`sys_base_menus`.`parent_id` AS `parent_id`,`sys_base_menus`.`path` AS `path`,`sys_base_menus`.`name` AS `name`,`sys_base_menus`.`hidden` AS `hidden`,`sys_base_menus`.`component` AS `component`,`sys_base_menus`.`title` AS `title`,`sys_base_menus`.`icon` AS `icon`,`sys_base_menus`.`nick_name` AS `nick_name`,`sys_base_menus`.`sort` AS `sort`,`sys_authority_menus`.`sys_authority_authority_id` AS `authority_id`,`sys_authority_menus`.`sys_base_menu_id` AS `menu_id`,`sys_base_menus`.`keep_alive` AS `keep_alive`,`sys_base_menus`.`default_menu` AS `default_menu` from (`sys_authority_menus` join `sys_base_menus` on((`sys_authority_menus`.`sys_base_menu_id` = `sys_base_menus`.`id`)));
692714

693715
SET FOREIGN_KEY_CHECKS = 1;

server/initialize/db_table.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func DBTables() {
1212
model.SysAuthority{},
1313
model.SysApi{},
1414
model.SysBaseMenu{},
15+
model.SysBaseMenuParameter{},
1516
model.JwtBlacklist{},
1617
model.SysWorkflow{},
1718
model.SysWorkflowStepInfo{},

server/model/sys_authority_menu.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ package model
22

33
type SysMenu struct {
44
SysBaseMenu
5-
MenuId string `json:"menuId" gorm:"comment:'菜单ID'"`
6-
AuthorityId string `json:"-" gorm:"comment:'角色ID'"`
7-
Children []SysMenu `json:"children"`
5+
MenuId string `json:"menuId" gorm:"comment:'菜单ID'"`
6+
AuthorityId string `json:"-" gorm:"comment:'角色ID'"`
7+
Children []SysMenu `json:"children"`
8+
Parameters []SysBaseMenuParameter `json:"parameters" gorm:"ForeignKey:MenuId"`
9+
}
10+
11+
func (s SysMenu) TableName() string {
12+
return "authority_menu"
813
}

server/model/sys_base_menu.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ type SysBaseMenu struct {
1414
Component string `json:"component" gorm:"comment:'对应前端文件路径'"`
1515
Sort int `json:"sort" gorm:"comment:'排序标记'"`
1616
Meta `json:"meta" gorm:"comment:'附加属性'"`
17-
SysAuthoritys []SysAuthority `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
18-
Children []SysBaseMenu `json:"children"`
17+
SysAuthoritys []SysAuthority `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
18+
Children []SysBaseMenu `json:"children"`
19+
Parameters []SysBaseMenuParameter `json:"parameters"`
1920
}
2021

2122
type Meta struct {
@@ -24,3 +25,11 @@ type Meta struct {
2425
Title string `json:"title" gorm:"comment:'菜单名'"`
2526
Icon string `json:"icon" gorm:"comment:'菜单图标'"`
2627
}
28+
29+
type SysBaseMenuParameter struct {
30+
gorm.Model
31+
SysBaseMenuId uint
32+
Type string `json:"type" gorm:"commit:'地址栏携带参数为params还是query'"`
33+
Key string `json:"key" gorm:"commit:'地址栏携带参数的key'"`
34+
Value string `json:"value" gorm:"commit:'地址栏携带参数的值'"`
35+
}

server/service/sys_base_menu.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import (
1313
// @return err error
1414

1515
func DeleteBaseMenu(id float64) (err error) {
16-
err = global.GVA_DB.Where("parent_id = ?", id).First(&model.SysBaseMenu{}).Error
16+
err = global.GVA_DB.Preload("Parameters").Where("parent_id = ?", id).First(&model.SysBaseMenu{}).Error
1717
if err != nil {
1818
var menu model.SysBaseMenu
1919
db := global.GVA_DB.Preload("SysAuthoritys").Where("id = ?", id).First(&menu).Delete(&menu)
20+
err = global.GVA_DB.Delete(&model.SysBaseMenuParameter{}, "sys_base_menu_id = ?", id).Error
2021
if len(menu.SysAuthoritys) > 0 {
2122
err = db.Association("SysAuthoritys").Delete(menu.SysAuthoritys).Error
2223
} else {
@@ -47,6 +48,7 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
4748
upDateMap["title"] = menu.Title
4849
upDateMap["icon"] = menu.Icon
4950
upDateMap["sort"] = menu.Sort
51+
5052
db := global.GVA_DB.Where("id = ?", menu.ID).Find(&oldMenu)
5153
if oldMenu.Name != menu.Name {
5254
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) {
5557
return errors.New("存在相同name修改失败")
5658
}
5759
}
58-
err = db.Updates(upDateMap).Error
60+
err = db.Updates(upDateMap).Association("Parameters").Replace(menu.Parameters).Error
5961
global.GVA_LOG.Debug("菜单修改时候,关联菜单err:%v", err)
6062
return err
6163
}
@@ -67,6 +69,6 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
6769
// @return err error
6870

6971
func GetBaseMenuById(id float64) (err error, menu model.SysBaseMenu) {
70-
err = global.GVA_DB.Where("id = ?", id).First(&menu).Error
72+
err = global.GVA_DB.Preload("Parameters").Where("id = ?", id).First(&menu).Error
7173
return
7274
}

server/service/sys_menu.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ import (
1616
func getMenuTreeMap(authorityId string) (err error, treeMap map[string][]model.SysMenu) {
1717
var allMenus []model.SysMenu
1818
treeMap = make(map[string][]model.SysMenu)
19-
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"
20-
err = global.GVA_DB.Raw(sql, authorityId).Scan(&allMenus).Error
19+
err = global.GVA_DB.Where("authority_id = ?", authorityId).Order("sort", true).Preload("Parameters").Find(&allMenus).Error
2120
for _, v := range allMenus {
2221
treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
2322
}
@@ -113,7 +112,7 @@ func AddBaseMenu(menu model.SysBaseMenu) (err error) {
113112
func getBaseMenuTreeMap() (err error, treeMap map[string][]model.SysBaseMenu) {
114113
var allMenus []model.SysBaseMenu
115114
treeMap = make(map[string][]model.SysBaseMenu)
116-
err = global.GVA_DB.Order("sort", true).Find(&allMenus).Error
115+
err = global.GVA_DB.Order("sort", true).Preload("Parameters").Find(&allMenus).Error
117116
for _, v := range allMenus {
118117
treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
119118
}
@@ -158,7 +157,8 @@ func AddMenuAuthority(menus []model.SysBaseMenu, authorityId string) (err error)
158157
// @return menus []SysBaseMenu
159158

160159
func GetMenuAuthority(authorityId string) (err error, menus []model.SysMenu) {
161-
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"
162-
err = global.GVA_DB.Raw(sql, authorityId).Scan(&menus).Error
160+
//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"
161+
err = global.GVA_DB.Order("sort", true).Find(&menus).Error
162+
//err = global.GVA_DB.Raw(sql, authorityId).Scan(&menus).Error
163163
return err, menus
164164
}

0 commit comments

Comments
 (0)