mirror of
https://github.com/flipped-aurora/gin-vue-admin.git
synced 2026-09-21 12:32:25 +00:00
新增按钮权限,增加redis可独立配置 (#923)
* fix jwt to golang-jwt, gin to 1.7.0 * 增加按钮权限功能 * 增加redis可独立配置 Co-authored-by: helight <helight@helight.info>
This commit is contained in:
committed by
GitHub
co-authored by
helight
parent
f389ff701a
commit
6a97f39f66
@@ -15,4 +15,5 @@ type ServiceGroup struct {
|
||||
AutoCodeHistoryService
|
||||
OperationRecordService
|
||||
DictionaryDetailService
|
||||
AuthorityBtnService
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type AuthorityBtnService struct{}
|
||||
|
||||
func (a *AuthorityBtnService) GetAuthorityBtn(req request.SysAuthorityBtnReq) (err error, res response.SysAuthorityBtnRes) {
|
||||
var authorityBtn []system.SysAuthorityBtn
|
||||
err = global.GVA_DB.Find(&authorityBtn, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var selected []uint
|
||||
for _, v := range authorityBtn {
|
||||
selected = append(selected, v.SysBaseMenuBtnID)
|
||||
}
|
||||
res.Selected = selected
|
||||
return err, res
|
||||
}
|
||||
|
||||
func (a *AuthorityBtnService) SetAuthorityBtn(req request.SysAuthorityBtnReq) (err error) {
|
||||
return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
|
||||
var authorityBtn []system.SysAuthorityBtn
|
||||
err = tx.Delete(&[]system.SysAuthorityBtn{}, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range req.Selected {
|
||||
authorityBtn = append(authorityBtn, system.SysAuthorityBtn{
|
||||
AuthorityId: req.AuthorityId,
|
||||
SysMenuID: req.MenuID,
|
||||
SysBaseMenuBtnID: v,
|
||||
})
|
||||
}
|
||||
if len(authorityBtn) > 0 {
|
||||
err = tx.Create(&authorityBtn).Error
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func (a *AuthorityBtnService) CanRemoveAuthorityBtn(ID string) (err error) {
|
||||
fErr := global.GVA_DB.First(&system.SysAuthorityBtn{}, "sys_base_menu_btn_id = ?", ID).Error
|
||||
if errors.Is(fErr, gorm.ErrRecordNotFound) {
|
||||
return nil
|
||||
}
|
||||
return errors.New("此按钮正在被使用无法删除")
|
||||
}
|
||||
@@ -17,7 +17,7 @@ type BaseMenuService struct{}
|
||||
//@return: err error
|
||||
|
||||
func (baseMenuService *BaseMenuService) DeleteBaseMenu(id float64) (err error) {
|
||||
err = global.GVA_DB.Preload("Parameters").Where("parent_id = ?", id).First(&system.SysBaseMenu{}).Error
|
||||
err = global.GVA_DB.Preload("MenuBtn").Preload("Parameters").Where("parent_id = ?", id).First(&system.SysBaseMenu{}).Error
|
||||
if err != nil {
|
||||
var menu system.SysBaseMenu
|
||||
db := global.GVA_DB.Preload("SysAuthoritys").Where("id = ?", id).First(&menu).Delete(&menu)
|
||||
@@ -73,6 +73,11 @@ func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu system.SysBaseMenu)
|
||||
global.GVA_LOG.Debug(txErr.Error())
|
||||
return txErr
|
||||
}
|
||||
txErr = tx.Unscoped().Delete(&system.SysBaseMenuBtn{}, "sys_base_menu_id = ?", menu.ID).Error
|
||||
if txErr != nil {
|
||||
global.GVA_LOG.Debug(txErr.Error())
|
||||
return txErr
|
||||
}
|
||||
if len(menu.Parameters) > 0 {
|
||||
for k := range menu.Parameters {
|
||||
menu.Parameters[k].SysBaseMenuID = menu.ID
|
||||
@@ -84,6 +89,17 @@ func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu system.SysBaseMenu)
|
||||
}
|
||||
}
|
||||
|
||||
if len(menu.MenuBtn) > 0 {
|
||||
for k := range menu.MenuBtn {
|
||||
menu.MenuBtn[k].SysBaseMenuID = menu.ID
|
||||
}
|
||||
txErr = tx.Create(&menu.MenuBtn).Error
|
||||
if txErr != nil {
|
||||
global.GVA_LOG.Debug(txErr.Error())
|
||||
return txErr
|
||||
}
|
||||
}
|
||||
|
||||
txErr = db.Updates(upDateMap).Error
|
||||
if txErr != nil {
|
||||
global.GVA_LOG.Debug(txErr.Error())
|
||||
@@ -101,6 +117,6 @@ func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu system.SysBaseMenu)
|
||||
//@return: err error, menu model.SysBaseMenu
|
||||
|
||||
func (baseMenuService *BaseMenuService) GetBaseMenuById(id float64) (err error, menu system.SysBaseMenu) {
|
||||
err = global.GVA_DB.Preload("Parameters").Where("id = ?", id).First(&menu).Error
|
||||
err = global.GVA_DB.Preload("MenuBtn").Preload("Parameters").Where("id = ?", id).First(&menu).Error
|
||||
return
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ func (initDBService *InitDBService) initTables() error {
|
||||
system.SysOperationRecord{},
|
||||
system.SysDictionaryDetail{},
|
||||
system.SysBaseMenuParameter{},
|
||||
system.SysBaseMenuBtn{},
|
||||
system.SysAuthorityBtn{},
|
||||
|
||||
adapter.CasbinRule{},
|
||||
|
||||
|
||||
@@ -22,9 +22,25 @@ var MenuServiceApp = new(MenuService)
|
||||
|
||||
func (menuService *MenuService) getMenuTreeMap(authorityId string) (err error, treeMap map[string][]system.SysMenu) {
|
||||
var allMenus []system.SysMenu
|
||||
var btns []system.SysAuthorityBtn
|
||||
treeMap = make(map[string][]system.SysMenu)
|
||||
err = global.GVA_DB.Where("authority_id = ?", authorityId).Order("sort").Preload("Parameters").Find(&allMenus).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = global.GVA_DB.Where("authority_id = ?", authorityId).Preload("SysBaseMenuBtn").Find(&btns).Error
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
var btnMap = make(map[uint]map[string]string)
|
||||
for _, v := range btns {
|
||||
if btnMap[v.SysMenuID] == nil {
|
||||
btnMap[v.SysMenuID] = make(map[string]string)
|
||||
}
|
||||
btnMap[v.SysMenuID][v.SysBaseMenuBtn.Name] = authorityId
|
||||
}
|
||||
for _, v := range allMenus {
|
||||
v.Btns = btnMap[v.ID]
|
||||
treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
|
||||
}
|
||||
return err, treeMap
|
||||
@@ -109,7 +125,7 @@ func (menuService *MenuService) AddBaseMenu(menu system.SysBaseMenu) error {
|
||||
func (menuService *MenuService) getBaseMenuTreeMap() (err error, treeMap map[string][]system.SysBaseMenu) {
|
||||
var allMenus []system.SysBaseMenu
|
||||
treeMap = make(map[string][]system.SysBaseMenu)
|
||||
err = global.GVA_DB.Order("sort").Preload("Parameters").Find(&allMenus).Error
|
||||
err = global.GVA_DB.Order("sort").Preload("MenuBtn").Preload("Parameters").Preload("Parameters").Find(&allMenus).Error
|
||||
for _, v := range allMenus {
|
||||
treeMap[v.ParentId] = append(treeMap[v.ParentId], v)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user