123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package dao
- import (
- "github.com/druidcaesa/gotool"
- "strings"
- "ulink-admin/frame"
- "ulink-admin/modules/system/models/model"
- "ulink-admin/modules/system/models/req"
- "ulink-admin/pkg/base"
- )
- type MenuDao struct {
- base.BaseDao
- }
- // GetMenuPermission 根据用户ID查询权限
- func (d MenuDao) GetMenuPermission(id int64) *[]string {
- var perms []string
- session := base.GetSession().Session
- session.Table([]string{"sys_menu", "m"})
- err := session.Distinct("m.perms").
- Join("LEFT", []string{"sys_role_menu", "rm"}, "m.id = rm.menu_id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "rm.role_id = ur.role_id").
- Join("LEFT", []string{"sys_role", "r"}, "r.id = ur.role_id").
- Where("m.status = '0'").And("r.status = '0'").And("ur.user_id = ?", id).Find(&perms)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil
- }
- return &perms
- }
- // GetMenuAll 查询所有菜单数据
- func (d MenuDao) GetMenuAll() *[]model.SysMenu {
- session := base.GetSession().Session
- menus := make([]model.SysMenu, 0)
- session.Table([]string{model.SysMenu{}.TableName(), "m"})
- err := session.Distinct("m.id").Cols("m.parent_id", "m.menu_name", "m.path", "m.component", "m.visible", "m.status", "m.perms", "m.is_frame", "m.is_cache", "m.menu_type", "m.icon", "m.order_num", "m.create_time").
- Where("m.menu_type in ('M', 'C')").And("m.status = 0").OrderBy("m.parent_id").OrderBy("m.order_num").Find(&menus)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil
- }
- return &menus
- }
- // GetMenusAll 查询所有菜单数据包括功能权限
- func (d MenuDao) GetMenusAll() *[]model.SysMenu {
- menus := make([]model.SysMenu, 0)
- session := base.GetSession().Session
- session.Table([]string{model.SysMenu{}.TableName(), "m"})
- err := session.Distinct("m.id").Cols("m.parent_id", "m.menu_name", "m.path", "m.component", "m.visible", "m.status", "m.perms", "m.is_frame", "m.is_cache", "m.menu_type", "m.icon", "m.order_num", "m.create_time").
- Where("m.status = 0").OrderBy("m.parent_id").OrderBy("m.order_num").Find(&menus)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &menus
- }
- // GetMenusByUserId 根据用户ID查询菜单包括功能权限
- func (d MenuDao) GetMenusByUserId(id int64) *[]model.SysMenu {
- menus := make([]model.SysMenu, 0)
- session := base.GetSession().Session
- session.Table([]string{model.SysMenu{}.TableName(), "m"})
- err := session.Distinct("m.id").Cols("m.parent_id", "m.menu_name", "m.path", "m.component", "m.visible", "m.status", "m.perms", "m.is_frame", "m.is_cache", "m.menu_type", "m.icon", "m.order_num", "m.create_time").
- Join("LEFT", []string{"sys_role_menu", "rm"}, "m.id = rm.menu_id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "rm.role_id = ur.role_id").
- Join("LEFT", []string{"sys_role", "ro"}, "ur.role_id = ro.id").
- Join("LEFT", []string{"sys_user", "u"}, "ur.user_id = u.id").Where("u.id = ?", id).
- And("m.status = 0").OrderBy("m.parent_id").OrderBy("m.order_num").Find(&menus)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &menus
- }
- // GetMenuByUserId 根据用户ID查询菜单
- func (d MenuDao) GetMenuByUserId(id int64) *[]model.SysMenu {
- menus := make([]model.SysMenu, 0)
- session := base.GetSession().Session
- session.Table([]string{model.SysMenu{}.TableName(), "m"})
- err := session.Distinct("m.id").Cols("m.parent_id", "m.menu_name", "m.path", "m.component", "m.visible", "m.status", "m.perms", "m.is_frame", "m.is_cache", "m.menu_type", "m.icon", "m.order_num", "m.create_time").
- Join("LEFT", []string{"sys_role_menu", "rm"}, "m.id = rm.menu_id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "rm.role_id = ur.role_id").
- Join("LEFT", []string{"sys_role", "ro"}, "ur.role_id = ro.id").
- Join("LEFT", []string{"sys_user", "u"}, "ur.user_id = u.id").Where("u.id = ?", id).
- And("m.menu_type in ('M', 'C')").And("m.status = 0").OrderBy("m.parent_id").OrderBy("m.order_num").Find(&menus)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &menus
- }
- // GetMenuByRoleId 根据角色ID查询菜单树信息
- func (d MenuDao) GetMenuByRoleId(id int64, strictly bool) *[]int64 {
- list := make([]int64, 0)
- session := base.GetSession().Session
- session.Table([]string{"sys_menu", "m"})
- session.Join("LEFT", []string{"sys_role_menu", "rm"}, "m.id = rm.menu_id")
- session.Where("rm.role_id = ?", id)
- if strictly {
- session.And("m.id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.id = rm.menu_id and rm.role_id = ?)", id)
- }
- err := session.OrderBy("m.parent_id").OrderBy("m.order_num").Cols("m.id").Find(&list)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &list
- }
- // GetMenuList 查询系统菜单列表
- func (d MenuDao) GetMenuList(query *req.MenuQuery) []model.SysMenu {
- list := make([]model.SysMenu, 0)
- session := base.GetSession().Session
- session.OrderBy("parent_id").OrderBy("order_num")
- if gotool.StrUtils.HasNotEmpty(query.MenuName) {
- session.And("menu_name like concat('%', ?, '%')", query.MenuName)
- }
- if query.Visible != nil {
- session.And("visible = ?", query.Visible)
- }
- if gotool.StrUtils.HasNotEmpty(query.Status) {
- session.And("status = ?", query.Status)
- }
- if query.ParentId > 0 {
- session.And("parent_id = ?", query.ParentId)
- }
- if gotool.StrUtils.HasNotEmpty(query.MenuType) {
- session.In("menu_type", strings.Split(query.MenuType, ","))
- }
- if gotool.StrUtils.HasNotEmpty(query.Path) {
- session.In("path", strings.Split(query.Path, ","))
- }
- err := session.Find(&list)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return list
- }
- // GetMenuListByUserId 根据用户查询系统菜单列表
- func (d MenuDao) GetMenuListByUserId(query *req.MenuQuery) []model.SysMenu {
- session := base.GetSession().Session
- session.OrderBy("parent_id").OrderBy("order_num")
- list := make([]model.SysMenu, 0)
- session.Table([]string{"sys_menu", "m"})
- session.Distinct("m.id", "m.parent_id", "m.menu_name", "m.path", "m.component", "m.visible", "m.status", "m.perms", "m.is_frame", "m.is_cache", "m.menu_type", "m.icon", "m.order_num", "m.create_time")
- session.Join("LEFT", []string{"sys_role_menu", "rm"}, "m.id = rm.id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "rm.id = ur.id").
- Join("LEFT", []string{"sys_role", "ro"}, "ur.id = ro.id").
- Where("ur.id = ?", query.Id)
- if gotool.StrUtils.HasNotEmpty(query.MenuName) {
- session.And("menu_name like concat('%', ?, '%')", query.MenuName)
- }
- if query.Visible != nil {
- session.And("visible = ?", query.Visible)
- }
- if gotool.StrUtils.HasNotEmpty(query.Status) {
- session.And("status = ?", query.Status)
- }
- err := session.Find(&list)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return list
- }
- // GetMenuByMenuId 根据菜单ID查询信息
- func (d MenuDao) GetMenuByMenuId(id int64) *model.SysMenu {
- menu := model.SysMenu{
- Id: id,
- }
- _, err := base.SqlDB.NewSession().Where("id = ?", menu.Id).Get(&menu)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &menu
- }
- func (d MenuDao) SelectSubMenuCount(id int64) int64 {
- menu := model.SysMenu{}
- session := base.GetSession().Session.Table("sys_menu").Where("parent_id = ?", id)
- count, err := session.Count(&menu)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return count
- }
- func (d MenuDao) GetAllPermission() *[]string {
- var perms []string
- session := base.GetSession().Session.Table([]string{"sys_menu", "m"})
- err := session.Cols("m.perms").Where("m.status = '0'").And("m.menu_type = 'F'").Find(&perms)
- if err != nil {
- frame.Throw(frame.SQL_CODE, "菜单数据查询失败:"+err.Error())
- }
- return &perms
- }
|