refactor🎨:更新角色模块

This commit is contained in:
wenjianzhang
2021-06-15 19:03:37 +08:00
parent 13f09d6059
commit 5afe67bd1b
8 changed files with 286 additions and 270 deletions
+6
View File
@@ -214,19 +214,25 @@ func (e SysMenu) GetMenuRole(c *gin.Context) {
// @Security Bearer // @Security Bearer
func (e SysMenu) GetMenuIDS(c *gin.Context) { func (e SysMenu) GetMenuIDS(c *gin.Context) {
s := new(service.SysMenu) s := new(service.SysMenu)
r := service.SysRole{}
m := dto.SysRoleByName{}
err := e.MakeContext(c). err := e.MakeContext(c).
MakeOrm(). MakeOrm().
Bind(&m, binding.JSON).
MakeService(&s.Service). MakeService(&s.Service).
MakeService(&r.Service).
Errors Errors
if err != nil { if err != nil {
e.Logger.Error(err) e.Logger.Error(err)
e.Error(500, err, err.Error()) e.Error(500, err, err.Error())
return return
} }
r.GetWithName(&m)
var data models.RoleMenu var data models.RoleMenu
data.RoleName = c.GetString("role") data.RoleName = c.GetString("role")
data.UpdateBy = user.GetUserId(c) data.UpdateBy = user.GetUserId(c)
result, err := data.GetIDS(s.Orm) result, err := data.GetIDS(s.Orm)
if err != nil { if err != nil {
e.Logger.Errorf("GetIDS error, %s", err.Error()) e.Logger.Errorf("GetIDS error, %s", err.Error())
e.Error(500, err, "获取失败") e.Error(500, err, "获取失败")
+2 -2
View File
@@ -232,7 +232,7 @@ func (e SysRole) Update2Status(c *gin.Context) {
Errors Errors
if err != nil { if err != nil {
e.Logger.Error(err) e.Logger.Error(err)
e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error())) e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error()))
return return
} }
req.SetUpdateBy(user.GetUserId(c)) req.SetUpdateBy(user.GetUserId(c))
@@ -273,7 +273,7 @@ func (e SysRole) Update2DataScope(c *gin.Context) {
DeptIds: req.DeptIds, DeptIds: req.DeptIds,
} }
data.UpdateBy = user.GetUserId(c) data.UpdateBy = user.GetUserId(c)
err = s.UpdateDataScope(data) err = s.UpdateDataScope(&req).Error
if err != nil { if err != nil {
e.Error(http.StatusInternalServerError, err, "") e.Error(http.StatusInternalServerError, err, "")
return return
+8 -8
View File
@@ -1,11 +1,11 @@
package models package models
//sys_role_dept //sys_role_dept
type SysRoleDept struct { //type SysRoleDept struct {
RoleId int `gorm:"size:11;primaryKey"` // RoleId int `gorm:"size:11;primaryKey"`
DeptId int `gorm:"size:11;primaryKey"` // DeptId int `gorm:"size:11;primaryKey"`
} //}
//
func (SysRoleDept) TableName() string { //func (SysRoleDept) TableName() string {
return "sys_role_dept" // return "sys_role_dept"
} //}
+159 -168
View File
@@ -1,171 +1,162 @@
package models package models
import ( //type RoleMenu struct {
"fmt" // RoleId int `gorm:""`
"github.com/casbin/casbin/v2" // MenuId int `gorm:""`
"github.com/go-admin-team/go-admin-core/sdk/pkg" // RoleName string `gorm:"size:128"`
"gorm.io/gorm" // models.ControlBy
//}
//
//func (RoleMenu) TableName() string {
// return "sys_role_menu"
//}
//
//type MenuPath struct {
// Path string `json:"path"`
//}
//
//func (rm *RoleMenu) Get(tx *gorm.DB) ([]RoleMenu, error) {
// var r []RoleMenu
// table := tx.Table("sys_role_menu")
// if rm.RoleId != 0 {
// table = table.Where("role_id = ?", rm.RoleId)
//
// }
// if err := table.Find(&r).Error; err != nil {
// return nil, err
// }
// return r, nil
//}
//
//func (rm *RoleMenu) GetPermis(tx *gorm.DB) ([]string, error) {
// var r []SysMenu
// table := tx.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id")
//
// table = table.Where("role_id = ?", rm.RoleId)
//
// table = table.Where("sys_menu.menu_type in('F','C')")
// if err := table.Find(&r).Error; err != nil {
// return nil, err
// }
// var list []string
// for i := 0; i < len(r); i++ {
// list = append(list, r[i].Permission)
// }
// return list, nil
//}
//
//func (rm *RoleMenu) GetIDS(tx *gorm.DB) ([]MenuPath, error) {
// var r []MenuPath
// table := tx.Select("sys_menu.path").Table("sys_role_menu")
// table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
// table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
// table = table.Where("sys_role.role_name = ? and sys_menu.type=1", rm.RoleName)
// if err := table.Find(&r).Error; err != nil {
// return nil, err
// }
// return r, nil
//}
//
//func (rm *RoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) error {
// if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
// return err
// }
// if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
// return err
// }
// var role SysRole
// if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
// return err
// }
// sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
// if err := tx.Exec(sql3).Error; err != nil {
// return err
// }
// return nil
//
//}
//
//// 该方法即将弃用
//func (rm *RoleMenu) BatchDeleteRoleMenu(tx *gorm.DB, roleIds []int) error {
// if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
// return err
// }
// var role []SysRole
// if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
// return err
// }
// sql := ""
// for i := 0; i < len(role); i++ {
// sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
// }
// if err := tx.Exec(sql).Error; err != nil {
// return err
// }
// if err := tx.Commit().Error; err != nil {
// return err
// }
// return nil
//
//}
"go-admin/common/models" //func (rm *RoleMenu) Insert(tx *gorm.DB, enforcer *casbin.SyncedEnforcer, roleId int, menuId []int) error {
) // var err error
// var (
type RoleMenu struct { // role SysRole
RoleId int `gorm:""` // menu []SysMenu
MenuId int `gorm:""` // casbinRules []CasbinRule // casbinRule 待插入队列
RoleName string `gorm:"size:128"` // )
models.ControlBy // // 在事务中做一些数据库操作(从这一点使用'tx',而不是'db'
} // if err = tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
// return err
func (RoleMenu) TableName() string { // }
return "sys_role_menu" // if err = tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
} // return err
// }
type MenuPath struct { // //ORM不支持批量插入所以需要拼接 sql 串
Path string `json:"path"` // sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
} //
// for i, m := range menu {
func (rm *RoleMenu) Get(tx *gorm.DB) ([]RoleMenu, error) { // // 拼装'role_menu'表批量插入SQL语句
var r []RoleMenu // sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
table := tx.Table("sys_role_menu") // if i == len(menu)-1 {
if rm.RoleId != 0 { // sysRoleMenuSql += ";" //最后一条数据 以分号结尾
table = table.Where("role_id = ?", rm.RoleId) // } else {
// sysRoleMenuSql += ","
} // }
if err := table.Find(&r).Error; err != nil { // if m.MenuType == "A" {
return nil, err // // 加入队列
} // casbinRules = append(casbinRules,
return r, nil // CasbinRule{
} // V0: role.RoleKey,
// V1: m.Path,
func (rm *RoleMenu) GetPermis(tx *gorm.DB) ([]string, error) { // V2: m.Action,
var r []SysMenu // })
table := tx.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id") // }
// }
table = table.Where("role_id = ?", rm.RoleId) // // 执行批量插入sys_role_menu
// if err = tx.Exec(sysRoleMenuSql).Error; err != nil {
table = table.Where("sys_menu.menu_type in('F','C')") // return err
if err := table.Find(&r).Error; err != nil { // }
return nil, err //
} // // 执行批量插入sys_casbin_rule
var list []string // if len(casbinRules) > 0 {
for i := 0; i < len(r); i++ { // if err = tx.Create(&casbinRules).Error; err != nil {
list = append(list, r[i].Permission) // return err
} // }
return list, nil // }
} // return nil
//}
func (rm *RoleMenu) GetIDS(tx *gorm.DB) ([]MenuPath, error) { //
var r []MenuPath //func (rm *RoleMenu) Delete(tx *gorm.DB, RoleId string, MenuID string) (bool, error) {
table := tx.Select("sys_menu.path").Table("sys_role_menu") // rm.RoleId, _ = pkg.StringToInt(RoleId)
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id") // table := tx.Table("sys_role_menu").Where("role_id = ?", RoleId)
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id") // if MenuID != "" {
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", rm.RoleName) // table = table.Where("menu_id = ?", MenuID)
if err := table.Find(&r).Error; err != nil { // }
return nil, err // if err := table.Delete(&rm).Error; err != nil {
} // return false, err
return r, nil // }
} // return true, nil
//
func (rm *RoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) error { //}
if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
var role SysRole
if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
if err := tx.Exec(sql3).Error; err != nil {
return err
}
return nil
}
// 该方法即将弃用
func (rm *RoleMenu) BatchDeleteRoleMenu(tx *gorm.DB, roleIds []int) error {
if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
return err
}
var role []SysRole
if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
return err
}
sql := ""
for i := 0; i < len(role); i++ {
sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
}
if err := tx.Exec(sql).Error; err != nil {
return err
}
if err := tx.Commit().Error; err != nil {
return err
}
return nil
}
func (rm *RoleMenu) Insert(tx *gorm.DB, enforcer *casbin.SyncedEnforcer, roleId int, menuId []int) error {
var err error
var (
role SysRole
menu []SysMenu
casbinRules []CasbinRule // casbinRule 待插入队列
)
// 在事务中做一些数据库操作(从这一点使用'tx',而不是'db'
if err = tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
if err = tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
return err
}
//ORM不支持批量插入所以需要拼接 sql 串
sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
for i, m := range menu {
// 拼装'role_menu'表批量插入SQL语句
sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
if i == len(menu)-1 {
sysRoleMenuSql += ";" //最后一条数据 以分号结尾
} else {
sysRoleMenuSql += ","
}
if m.MenuType == "A" {
// 加入队列
casbinRules = append(casbinRules,
CasbinRule{
V0: role.RoleKey,
V1: m.Path,
V2: m.Action,
})
}
}
// 执行批量插入sys_role_menu
if err = tx.Exec(sysRoleMenuSql).Error; err != nil {
return err
}
// 执行批量插入sys_casbin_rule
if len(casbinRules) > 0 {
if err = tx.Create(&casbinRules).Error; err != nil {
return err
}
}
return nil
}
func (rm *RoleMenu) Delete(tx *gorm.DB, RoleId string, MenuID string) (bool, error) {
rm.RoleId, _ = pkg.StringToInt(RoleId)
table := tx.Table("sys_role_menu").Where("role_id = ?", RoleId)
if MenuID != "" {
table = table.Where("menu_id = ?", MenuID)
}
if err := table.Delete(&rm).Error; err != nil {
return false, err
}
return true, nil
}
+1
View File
@@ -15,6 +15,7 @@ type SysRole struct {
Params string `json:"params" gorm:"-"` Params string `json:"params" gorm:"-"`
MenuIds []int `json:"menuIds" gorm:"-"` MenuIds []int `json:"menuIds" gorm:"-"`
DeptIds []int `json:"deptIds" gorm:"-"` DeptIds []int `json:"deptIds" gorm:"-"`
SysDept []SysDept `json:"sysDept" gorm:"many2many:sys_role_dept;foreignKey:RoleId;joinForeignKey:role_id;references:DeptId;joinReferences:dept_id;"`
SysMenu *[]SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"` SysMenu *[]SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"`
models.ControlBy models.ControlBy
models.ModelTime models.ModelTime
+16 -2
View File
@@ -46,6 +46,8 @@ type SysRoleControl struct {
DataScope string `form:"dataScope"` DataScope string `form:"dataScope"`
SysMenu []models.SysMenu `form:"sysMenu"` SysMenu []models.SysMenu `form:"sysMenu"`
MenuIds []int `form:"menuIds"` MenuIds []int `form:"menuIds"`
SysDept []models.SysDept `form:"sysDept"`
DeptIds []int `form:"deptIds"`
common.ControlBy common.ControlBy
} }
@@ -71,6 +73,7 @@ func (s *SysRoleControl) Generate(model *models.SysRole) {
model.Admin = s.Admin model.Admin = s.Admin
model.DataScope = s.DataScope model.DataScope = s.DataScope
model.SysMenu = &s.SysMenu model.SysMenu = &s.SysMenu
model.SysDept = s.SysDept
} }
@@ -80,8 +83,8 @@ func (s *SysRoleControl) GetId() interface{} {
} }
type UpdateStatusReq struct { type UpdateStatusReq struct {
RoleId int `form:"roleId" comment:"角色编码"` // 角色编码 RoleId int `form:"roleId" comment:"角色编码"` // 角色编码
Status string `form:"status" comment:"状态"` // 状态 Status string `form:"status" comment:"状态"` // 状态
common.ControlBy common.ControlBy
} }
@@ -96,6 +99,9 @@ func (s *UpdateStatusReq) GetId() interface{} {
return s.RoleId return s.RoleId
} }
type SysRoleByName struct {
RoleName string `form:"role"` // 角色编码
}
// SysRoleById 获取单个或者删除的结构体 // SysRoleById 获取单个或者删除的结构体
type SysRoleById struct { type SysRoleById struct {
@@ -126,6 +132,14 @@ type RoleDataScopeReq struct {
DeptIds []int `json:"deptIds"` DeptIds []int `json:"deptIds"`
} }
func (s *RoleDataScopeReq) Generate(model *models.SysRole) {
if s.RoleId != 0 {
model.RoleId = s.RoleId
}
model.DataScope = s.DataScope
model.DeptIds = s.DeptIds
}
type DeptIdList struct { type DeptIdList struct {
DeptId int `json:"DeptId"` DeptId int `json:"DeptId"`
} }
+50 -42
View File
@@ -2,6 +2,7 @@ package service
import ( import (
"errors" "errors"
"gorm.io/gorm/clause"
"github.com/casbin/casbin/v2" "github.com/casbin/casbin/v2"
@@ -152,10 +153,8 @@ func (e *SysRole) Update(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error
} }
// Remove 删除SysRole // Remove 删除SysRole
func (e *SysRole) Remove(d *dto.SysRoleById) error { func (e *SysRole) Remove(c *dto.SysRoleById) error {
var err error var err error
var data models.SysRole
tx := e.Orm.Begin() tx := e.Orm.Begin()
defer func() { defer func() {
if err != nil { if err != nil {
@@ -164,31 +163,21 @@ func (e *SysRole) Remove(d *dto.SysRoleById) error {
tx.Commit() tx.Commit()
} }
}() }()
var model = models.SysRole{}
tx.Preload("SysMenu").Preload("SysDept").First(&model, c.GetId())
db := tx.Select(clause.Associations).Delete(&model)
s := SysRoleMenu{}
s.Orm = tx
s.Log = e.Log
for _, roleId := range d.Ids {
err = s.DeleteRoleMenu(tx, roleId)
if err != nil {
e.Log.Errorf("insert role menu error, %", err.Error())
return err
}
}
db := tx.Model(&data).Delete(&data, d.Ids)
if db.Error != nil { if db.Error != nil {
err = db.Error e.Log.Errorf("db error:%s", err)
e.Log.Errorf("Delete error: %s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
err = errors.New("无权删除该数据") return errors.New("无权更新该数据")
return err
} }
return nil return nil
} }
// 获取角色对应的菜单ids // GetRoleMenuId 获取角色对应的菜单ids
func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) { func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) {
menuIds := make([]int, 0) menuIds := make([]int, 0)
model := models.SysRole{} model := models.SysRole{}
@@ -203,7 +192,8 @@ func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) {
return menuIds, nil return menuIds, nil
} }
func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) { func (e *SysRole) UpdateDataScope(c *dto.RoleDataScopeReq) *SysRole {
var err error
tx := e.Orm.Begin() tx := e.Orm.Begin()
defer func() { defer func() {
if err != nil { if err != nil {
@@ -212,36 +202,34 @@ func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) {
tx.Commit() tx.Commit()
} }
}() }()
err = tx.Model(&models.SysRole{}).Where("role_id = ?", c.RoleId).Select("data_scope", "update_by").Updates(c).Error var dlist = make([]models.SysDept, 0)
var model = models.SysRole{}
tx.Preload("SysDept").First(&model, c.DeptIds)
tx.Where("id in ?", c.DeptIds).Find(&dlist)
err = tx.Model(&model).Association("SysDept").Delete(model.SysDept)
if err != nil { if err != nil {
return err e.Log.Errorf("delete SysDept error:%s", err)
_ = e.AddError(err)
return e
} }
c.Generate(&model)
err = tx.Where("role_id = ?", c.RoleId).Delete(&models.SysRoleDept{}).Error model.SysDept = dlist
if err != nil { db := tx.Model(&model).Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
return err if db.Error != nil {
e.Log.Errorf("db error:%s", err)
_ = e.AddError(err)
return e
} }
if db.RowsAffected == 0 {
if c.DataScope == "2" { _ = e.AddError(errors.New("无权更新该数据"))
deptRoles := make([]models.SysRoleDept, len(c.DeptIds)) return e
for i := range c.DeptIds {
deptRoles[i] = models.SysRoleDept{
RoleId: c.RoleId,
DeptId: c.DeptIds[i],
}
}
err = tx.Create(&deptRoles).Error
if err != nil {
return err
}
} }
return err return e
} }
// UpdateStatus 修改SysRole对象status // UpdateStatus 修改SysRole对象status
func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error { func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
var err error var err error
tx := e.Orm.Debug().Begin() tx := e.Orm.Debug().Begin()
defer func() { defer func() {
if err != nil { if err != nil {
@@ -254,7 +242,6 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
tx.First(&model, c.GetId()) tx.First(&model, c.GetId())
c.Generate(&model) c.Generate(&model)
db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
if db.Error != nil { if db.Error != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("db error:%s", err)
return err return err
@@ -262,6 +249,27 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
return errors.New("无权更新该数据") return errors.New("无权更新该数据")
} }
return nil
}
// Get 获取SysRole对象
func (e *SysRole) GetWithName(d *dto.SysRoleByName, model *models.SysRole) error {
var err error
db := e.Orm.Where("role_name = ?",d.RoleName).First(model)
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error:%s", err)
return err
}
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
model.MenuIds, err = e.GetRoleMenuId(model.RoleId)
if err != nil {
e.Log.Errorf("get menuIds error, %s", err.Error())
return err
}
return nil return nil
} }
+41 -45
View File
@@ -1,11 +1,7 @@
package service package service
import ( import (
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk/service" "github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/admin/models"
) )
// SysRoleMenu 即将弃用结构体 // SysRoleMenu 即将弃用结构体
@@ -71,44 +67,44 @@ type SysRoleMenu struct {
// return // return
//} //}
func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) { //func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) {
msgID := e.MsgID // msgID := e.MsgID
err = tx.Where("role_id = ?", roleId). // err = tx.Where("role_id = ?", roleId).
Delete(&models.SysRoleDept{}).Error // Delete(&models.SysRoleDept{}).Error
if err != nil { // if err != nil {
log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error()) // log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error())
return // return
} // }
err = tx.Where("role_id = ?", roleId). // err = tx.Where("role_id = ?", roleId).
Delete(&models.RoleMenu{}).Error // Delete(&models.RoleMenu{}).Error
if err != nil { // if err != nil {
log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error()) // log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error())
return // return
} // }
var role models.SysRole // var role models.SysRole
err = tx.Where("role_id = ?", roleId). // err = tx.Where("role_id = ?", roleId).
First(&role).Error // First(&role).Error
if err != nil { // if err != nil {
log.Errorf("msgID[%s] get role error, %s", msgID, err.Error()) // log.Errorf("msgID[%s] get role error, %s", msgID, err.Error())
return // return
} // }
err = tx.Where("v0 = ?", role.RoleKey). // err = tx.Where("v0 = ?", role.RoleKey).
Delete(&models.CasbinRule{}).Error // Delete(&models.CasbinRule{}).Error
if err != nil { // if err != nil {
log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error()) // log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error())
return // return
} // }
return // return
} //}
//
func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) { //func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) {
var r []models.MenuPath // var r []models.MenuPath
table := tx.Select("sys_menu.path").Table("sys_role_menu") // table := tx.Select("sys_menu.path").Table("sys_role_menu")
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id") // table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id") // table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", roleName) // table = table.Where("sys_role.role_name = ? and sys_menu.type=1", roleName)
if err := table.Find(&r).Error; err != nil { // if err := table.Find(&r).Error; err != nil {
return nil, err // return nil, err
} // }
return r, nil // return r, nil
} //}