From 5afe67bd1b72ec4c236dacbd73624dcf4b3d2a3f Mon Sep 17 00:00:00 2001 From: wenjianzhang Date: Tue, 15 Jun 2021 19:03:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8=EF=BC=9A=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/sys_menu.go | 6 + app/admin/apis/sys_role.go | 6 +- app/admin/models/role_dept.go | 16 +- app/admin/models/role_menu.go | 327 ++++++++++++++--------------- app/admin/models/sys_role.go | 1 + app/admin/service/dto/sys_role.go | 20 +- app/admin/service/sys_role.go | 94 +++++---- app/admin/service/sys_role_menu.go | 86 ++++---- 8 files changed, 286 insertions(+), 270 deletions(-) diff --git a/app/admin/apis/sys_menu.go b/app/admin/apis/sys_menu.go index 3c82b61b..28b7dbfc 100644 --- a/app/admin/apis/sys_menu.go +++ b/app/admin/apis/sys_menu.go @@ -214,19 +214,25 @@ func (e SysMenu) GetMenuRole(c *gin.Context) { // @Security Bearer func (e SysMenu) GetMenuIDS(c *gin.Context) { s := new(service.SysMenu) + r := service.SysRole{} + m := dto.SysRoleByName{} err := e.MakeContext(c). MakeOrm(). + Bind(&m, binding.JSON). MakeService(&s.Service). + MakeService(&r.Service). Errors if err != nil { e.Logger.Error(err) e.Error(500, err, err.Error()) return } + r.GetWithName(&m) var data models.RoleMenu data.RoleName = c.GetString("role") data.UpdateBy = user.GetUserId(c) result, err := data.GetIDS(s.Orm) + if err != nil { e.Logger.Errorf("GetIDS error, %s", err.Error()) e.Error(500, err, "获取失败") diff --git a/app/admin/apis/sys_role.go b/app/admin/apis/sys_role.go index 5b70a8cb..e5be2e17 100644 --- a/app/admin/apis/sys_role.go +++ b/app/admin/apis/sys_role.go @@ -232,7 +232,7 @@ func (e SysRole) Update2Status(c *gin.Context) { Errors if err != nil { e.Logger.Error(err) - e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error())) + e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error())) return } req.SetUpdateBy(user.GetUserId(c)) @@ -273,10 +273,10 @@ func (e SysRole) Update2DataScope(c *gin.Context) { DeptIds: req.DeptIds, } data.UpdateBy = user.GetUserId(c) - err = s.UpdateDataScope(data) + err = s.UpdateDataScope(&req).Error if err != nil { e.Error(http.StatusInternalServerError, err, "") return } e.OK(nil, "操作成功") -} +} \ No newline at end of file diff --git a/app/admin/models/role_dept.go b/app/admin/models/role_dept.go index 0a794e00..e58bb30a 100644 --- a/app/admin/models/role_dept.go +++ b/app/admin/models/role_dept.go @@ -1,11 +1,11 @@ package models //sys_role_dept -type SysRoleDept struct { - RoleId int `gorm:"size:11;primaryKey"` - DeptId int `gorm:"size:11;primaryKey"` -} - -func (SysRoleDept) TableName() string { - return "sys_role_dept" -} +//type SysRoleDept struct { +// RoleId int `gorm:"size:11;primaryKey"` +// DeptId int `gorm:"size:11;primaryKey"` +//} +// +//func (SysRoleDept) TableName() string { +// return "sys_role_dept" +//} \ No newline at end of file diff --git a/app/admin/models/role_menu.go b/app/admin/models/role_menu.go index 414d6e81..3bd2fb8d 100644 --- a/app/admin/models/role_menu.go +++ b/app/admin/models/role_menu.go @@ -1,171 +1,162 @@ package models -import ( - "fmt" - "github.com/casbin/casbin/v2" - "github.com/go-admin-team/go-admin-core/sdk/pkg" - "gorm.io/gorm" +//type RoleMenu struct { +// RoleId int `gorm:""` +// MenuId int `gorm:""` +// RoleName string `gorm:"size:128"` +// 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" -) - -type RoleMenu struct { - RoleId int `gorm:""` - MenuId int `gorm:""` - RoleName string `gorm:"size:128"` - 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 - -} - -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 - -} +//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 +// +//} \ No newline at end of file diff --git a/app/admin/models/sys_role.go b/app/admin/models/sys_role.go index 2965635d..766af209 100644 --- a/app/admin/models/sys_role.go +++ b/app/admin/models/sys_role.go @@ -15,6 +15,7 @@ type SysRole struct { Params string `json:"params" gorm:"-"` MenuIds []int `json:"menuIds" 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;"` models.ControlBy models.ModelTime diff --git a/app/admin/service/dto/sys_role.go b/app/admin/service/dto/sys_role.go index 9eb7a833..640128d2 100644 --- a/app/admin/service/dto/sys_role.go +++ b/app/admin/service/dto/sys_role.go @@ -46,6 +46,8 @@ type SysRoleControl struct { DataScope string `form:"dataScope"` SysMenu []models.SysMenu `form:"sysMenu"` MenuIds []int `form:"menuIds"` + SysDept []models.SysDept `form:"sysDept"` + DeptIds []int `form:"deptIds"` common.ControlBy } @@ -71,6 +73,7 @@ func (s *SysRoleControl) Generate(model *models.SysRole) { model.Admin = s.Admin model.DataScope = s.DataScope model.SysMenu = &s.SysMenu + model.SysDept = s.SysDept } @@ -80,8 +83,8 @@ func (s *SysRoleControl) GetId() interface{} { } type UpdateStatusReq struct { - RoleId int `form:"roleId" comment:"角色编码"` // 角色编码 - Status string `form:"status" comment:"状态"` // 状态 + RoleId int `form:"roleId" comment:"角色编码"` // 角色编码 + Status string `form:"status" comment:"状态"` // 状态 common.ControlBy } @@ -96,6 +99,9 @@ func (s *UpdateStatusReq) GetId() interface{} { return s.RoleId } +type SysRoleByName struct { + RoleName string `form:"role"` // 角色编码 +} // SysRoleById 获取单个或者删除的结构体 type SysRoleById struct { @@ -126,6 +132,14 @@ type RoleDataScopeReq struct { 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 { DeptId int `json:"DeptId"` -} +} \ No newline at end of file diff --git a/app/admin/service/sys_role.go b/app/admin/service/sys_role.go index 7d380655..ca12e090 100644 --- a/app/admin/service/sys_role.go +++ b/app/admin/service/sys_role.go @@ -2,6 +2,7 @@ package service import ( "errors" + "gorm.io/gorm/clause" "github.com/casbin/casbin/v2" @@ -152,10 +153,8 @@ func (e *SysRole) Update(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error } // Remove 删除SysRole -func (e *SysRole) Remove(d *dto.SysRoleById) error { +func (e *SysRole) Remove(c *dto.SysRoleById) error { var err error - var data models.SysRole - tx := e.Orm.Begin() defer func() { if err != nil { @@ -164,31 +163,21 @@ func (e *SysRole) Remove(d *dto.SysRoleById) error { 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 { - err = db.Error - e.Log.Errorf("Delete error: %s", err) + e.Log.Errorf("db error:%s", err) return err } if db.RowsAffected == 0 { - err = errors.New("无权删除该数据") - return err + return errors.New("无权更新该数据") } return nil } -// 获取角色对应的菜单ids +// GetRoleMenuId 获取角色对应的菜单ids func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) { menuIds := make([]int, 0) model := models.SysRole{} @@ -203,7 +192,8 @@ func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) { 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() defer func() { if err != nil { @@ -212,36 +202,34 @@ func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) { 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 { - return err + e.Log.Errorf("delete SysDept error:%s", err) + _ = e.AddError(err) + return e } - - err = tx.Where("role_id = ?", c.RoleId).Delete(&models.SysRoleDept{}).Error - if err != nil { - return err + c.Generate(&model) + model.SysDept = dlist + db := tx.Model(&model).Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) + if db.Error != nil { + e.Log.Errorf("db error:%s", err) + _ = e.AddError(err) + return e } - - if c.DataScope == "2" { - deptRoles := make([]models.SysRoleDept, len(c.DeptIds)) - 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 - } + if db.RowsAffected == 0 { + _ = e.AddError(errors.New("无权更新该数据")) + return e } - return err + return e } // UpdateStatus 修改SysRole对象status func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error { var err error - tx := e.Orm.Debug().Begin() defer func() { if err != nil { @@ -254,7 +242,6 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error { tx.First(&model, c.GetId()) c.Generate(&model) db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) - if db.Error != nil { e.Log.Errorf("db error:%s", err) return err @@ -262,6 +249,27 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error { if db.RowsAffected == 0 { 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 +} \ No newline at end of file diff --git a/app/admin/service/sys_role_menu.go b/app/admin/service/sys_role_menu.go index 23fb78b6..9d5d38b7 100644 --- a/app/admin/service/sys_role_menu.go +++ b/app/admin/service/sys_role_menu.go @@ -1,11 +1,7 @@ package service import ( - log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk/service" - "gorm.io/gorm" - - "go-admin/app/admin/models" ) // SysRoleMenu 即将弃用结构体 @@ -71,44 +67,44 @@ type SysRoleMenu struct { // return //} -func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) { - msgID := e.MsgID - err = tx.Where("role_id = ?", roleId). - Delete(&models.SysRoleDept{}).Error - if err != nil { - log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error()) - return - } - err = tx.Where("role_id = ?", roleId). - Delete(&models.RoleMenu{}).Error - if err != nil { - log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error()) - return - } - var role models.SysRole - err = tx.Where("role_id = ?", roleId). - First(&role).Error - if err != nil { - log.Errorf("msgID[%s] get role error, %s", msgID, err.Error()) - return - } - err = tx.Where("v0 = ?", role.RoleKey). - Delete(&models.CasbinRule{}).Error - if err != nil { - log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error()) - return - } - return -} - -func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) { - var r []models.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", roleName) - if err := table.Find(&r).Error; err != nil { - return nil, err - } - return r, nil -} +//func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) { +// msgID := e.MsgID +// err = tx.Where("role_id = ?", roleId). +// Delete(&models.SysRoleDept{}).Error +// if err != nil { +// log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error()) +// return +// } +// err = tx.Where("role_id = ?", roleId). +// Delete(&models.RoleMenu{}).Error +// if err != nil { +// log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error()) +// return +// } +// var role models.SysRole +// err = tx.Where("role_id = ?", roleId). +// First(&role).Error +// if err != nil { +// log.Errorf("msgID[%s] get role error, %s", msgID, err.Error()) +// return +// } +// err = tx.Where("v0 = ?", role.RoleKey). +// Delete(&models.CasbinRule{}).Error +// if err != nil { +// log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error()) +// return +// } +// return +//} +// +//func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) { +// var r []models.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", roleName) +// if err := table.Find(&r).Error; err != nil { +// return nil, err +// } +// return r, nil +//} \ No newline at end of file