bug: the latest database table, modify the associated deletion method of menu and authority
This commit is contained in:
@@ -40,17 +40,22 @@ func (a *SysAuthority) CreateAuthority() (err error, authority *SysAuthority) {
|
||||
// 删除角色
|
||||
func (a *SysAuthority) DeleteAuthority() (err error) {
|
||||
err = global.GVA_DB.Where("authority_id = ?", a.AuthorityId).Find(&SysUser{}).Error
|
||||
if err != nil {
|
||||
err = global.GVA_DB.Where("parent_id = ?", a.AuthorityId).Find(&SysAuthority{}).Error
|
||||
if err != nil {
|
||||
err = global.GVA_DB.Preload("SysBaseMenus").Where("authority_id = ?", a.AuthorityId).First(a).Unscoped().Delete(a).Association("SysBaseMenus").Delete(a.SysBaseMenus).Error
|
||||
new(CasbinModel).ClearCasbin(0, a.AuthorityId)
|
||||
} else {
|
||||
err = errors.New("此角色存在子角色不允许删除")
|
||||
}
|
||||
} else {
|
||||
if err == nil {
|
||||
err = errors.New("此角色有用户正在使用禁止删除")
|
||||
return
|
||||
}
|
||||
err = global.GVA_DB.Where("parent_id = ?", a.AuthorityId).Find(&SysAuthority{}).Error
|
||||
if err == nil {
|
||||
err = errors.New("此角色存在子角色不允许删除")
|
||||
return
|
||||
}
|
||||
db := global.GVA_DB.Preload("SysBaseMenus").Where("authority_id = ?", a.AuthorityId).First(a).Unscoped().Delete(a)
|
||||
if len(a.SysBaseMenus) > 0 {
|
||||
err = db.Association("SysBaseMenus").Delete(a.SysBaseMenus).Error
|
||||
} else {
|
||||
err = db.Error
|
||||
}
|
||||
new(CasbinModel).ClearCasbin(0, a.AuthorityId)
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ type SysBaseMenu struct {
|
||||
Name string `json:"name"`
|
||||
Hidden bool `json:"hidden"`
|
||||
Component string `json:"component"`
|
||||
Sort string `json:"sort"`
|
||||
Sort int `json:"sort"`
|
||||
Meta `json:"meta"`
|
||||
SysAuthoritys []SysAuthority `json:"authoritys" gorm:"many2many:sys_authority_menus;"`
|
||||
Children []SysBaseMenu `json:"children"`
|
||||
@@ -50,7 +50,12 @@ func (b *SysBaseMenu) AddBaseMenu() (err error) {
|
||||
func (b *SysBaseMenu) DeleteBaseMenu(id float64) (err error) {
|
||||
err = global.GVA_DB.Where("parent_id = ?", id).First(&SysBaseMenu{}).Error
|
||||
if err != nil {
|
||||
err = global.GVA_DB.Preload("SysAuthoritys").Where("id = ?", id).Delete(&b).Association("SysAuthoritys").Delete(b.SysAuthoritys).Error
|
||||
db := global.GVA_DB.Preload("SysAuthoritys").Where("id = ?", id).First(&b).Delete(&b)
|
||||
if len(b.SysAuthoritys) > 0 {
|
||||
err = db.Association("SysAuthoritys").Delete(b.SysAuthoritys).Error
|
||||
} else {
|
||||
err = db.Error
|
||||
}
|
||||
} else {
|
||||
return errors.New("此菜单存在子菜单不可删除")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user