mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
update project path
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
orm "go-admin/database"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type RoleMenu struct {
|
||||
RoleId int64
|
||||
MenuId int64
|
||||
RoleName string
|
||||
CreateBy string
|
||||
UpdateBy string
|
||||
}
|
||||
|
||||
type MenuPath struct {
|
||||
Path string `json:"path"`
|
||||
}
|
||||
|
||||
func (rm *RoleMenu) Get() ([]RoleMenu, error) {
|
||||
var r []RoleMenu
|
||||
table := orm.Eloquent.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() ([]string, error) {
|
||||
var r []Menu
|
||||
table := orm.Eloquent.Select("sys_menu.permission").Table("sys_role_menu").Joins("left join sys_menu on sys_menu.menuId = sys_role_menu.menu_id")
|
||||
|
||||
table = table.Where("role_id = ?", rm.RoleId)
|
||||
|
||||
table = table.Where("sys_menu.menuType 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() ([]MenuPath, error) {
|
||||
var r []MenuPath
|
||||
table := orm.Eloquent.Select("sys_menu.path").Table("sys_role_menu")
|
||||
table = table.Joins("left join sys_role on sys_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.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(roleId int64) (bool, error) {
|
||||
if err := orm.Eloquent.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
if err := orm.Eloquent.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
var role SysRole
|
||||
if err := orm.Eloquent.Table("sys_role").Where("id = ?", roleId).First(&role).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
sql3 := "delete from casbin_rule where v0= '" + role.RoleKey + "';"
|
||||
orm.Eloquent.Exec(sql3)
|
||||
|
||||
return true, nil
|
||||
|
||||
}
|
||||
|
||||
func (rm *RoleMenu) BatchDeleteRoleMenu(roleIds []int64) (bool, error) {
|
||||
if err := orm.Eloquent.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
var role []SysRole
|
||||
if err := orm.Eloquent.Table("sys_role").Where("id in (?)", roleIds).Find(&role).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
sql := ""
|
||||
for i := 0; i < len(role); i++ {
|
||||
sql += "delete from casbin_rule where v0= '" + role[i].Name + "';"
|
||||
}
|
||||
orm.Eloquent.Exec(sql)
|
||||
return true, nil
|
||||
|
||||
}
|
||||
|
||||
func (rm *RoleMenu) Insert(roleId int64, menuId []int64) (bool, error) {
|
||||
var role SysRole
|
||||
if err := orm.Eloquent.Table("sys_role").Where("id = ?", roleId).First(&role).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
var menu []Menu
|
||||
if err := orm.Eloquent.Table("sys_menu").Where("menuId in (?)", menuId).Find(&menu).Error; err != nil {
|
||||
return false, err
|
||||
}
|
||||
//ORM不支持批量插入所以需要拼接 sql 串
|
||||
sql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
|
||||
|
||||
sql2 := "INSERT INTO casbin_rule (`p_type`,`v0`,`v1`,`v2`) VALUES "
|
||||
for i := 0; i < len(menu); i++ {
|
||||
if len(menu)-1 == i {
|
||||
//最后一条数据 以分号结尾
|
||||
sql += fmt.Sprintf("(%d,%d,'%s');", role.Id, menu[i].MenuId, role.RoleKey)
|
||||
if menu[i].MenuType == "A" {
|
||||
sql2 += fmt.Sprintf("('p','%s','%s','%s');", role.RoleKey, menu[i].Path, menu[i].Action)
|
||||
}
|
||||
} else {
|
||||
sql += fmt.Sprintf("(%d,%d,'%s'),", role.Id, menu[i].MenuId, role.RoleKey)
|
||||
if menu[i].MenuType == "A" {
|
||||
sql2 += fmt.Sprintf("('p','%s','%s','%s'),", role.RoleKey, menu[i].Path, menu[i].Action)
|
||||
}
|
||||
}
|
||||
}
|
||||
orm.Eloquent.Exec(sql)
|
||||
sql2 = sql2[0:len(sql2)-1] + ";"
|
||||
orm.Eloquent.Exec(sql2)
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (rm *RoleMenu) Delete(RoleId string, MenuID string) (bool, error) {
|
||||
rm.RoleId, _ = strconv.ParseInt(RoleId, 10, 64)
|
||||
table := orm.Eloquent.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
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user