123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package service
- import (
- "strings"
- "ulink-admin/frame"
- dao2 "ulink-admin/modules/system/dao"
- "ulink-admin/modules/system/models/model"
- "ulink-admin/modules/system/models/req"
- "ulink-admin/pkg/base"
- "xorm.io/xorm"
- )
- type MenuService struct {
- MenuDao *dao2.MenuDao `inject:""`
- RoleDao *dao2.RoleDao `inject:""`
- }
- // GetMenuTreeByUserId 根据用户ID查询菜单
- func (s MenuService) GetMenuTreeByUserId(user *model.SysUser) *[]model.SysMenu {
- var menuList *[]model.SysMenu
- //判断是否是管理员
- flag := model.SysUser{}.IsAdmin(user.Id)
- if flag {
- menuList = s.MenuDao.GetMenuAll()
- } else {
- menuList = s.MenuDao.GetMenuByUserId(user.Id)
- }
- return menuList
- }
- // GetMenusTreeByUserId 根据用户ID查询菜单
- func (s MenuService) GetMenusTreeByUserId(user *model.SysUser) *[]model.SysMenu {
- var menuList *[]model.SysMenu
- //判断是否是管理员
- flag := model.SysUser{}.IsAdmin(user.Id)
- if flag {
- menuList = s.MenuDao.GetMenusAll()
- } else {
- menuList = s.MenuDao.GetMenusByUserId(user.Id)
- }
- return menuList
- }
- // SelectMenuListByRoleId 根据角色ID查询菜单树信息
- func (s MenuService) SelectMenuListByRoleId(id int64) *[]int64 {
- role := s.RoleDao.SelectRoleByRoleId(id)
- return s.MenuDao.GetMenuByRoleId(id, role.MenuCheckStrictly)
- }
- // GetMenuList 获取菜单列表
- func (s MenuService) GetMenuList(query *req.MenuQuery, info *model.SysUser) []model.SysMenu {
- if info.IsAdmin(info.Id) {
- return s.MenuDao.GetMenuList(query)
- } else {
- query.Id = info.Id
- return s.MenuDao.GetMenuListByUserId(query)
- }
- }
- // GetMenuByMenuId 根据菜单ID查询信息
- func (s MenuService) GetMenuByMenuId(id int64) *model.SysMenu {
- return s.MenuDao.GetMenuByMenuId(id)
- }
- // InsertMenu 添加菜单数据
- func (s MenuService) InsertMenu(menu *model.SysMenu) {
- base.Transaction(func(session *xorm.Session) {
- s.MenuDao.Insert(menu)
- //自动插入菜单的通用按钮权限
- if menu.MenuType == "C" {
- ary := strings.Split(menu.Perms, ":")
- prex := strings.Join(ary[:len(ary)-1], ":")
- list := &model.SysMenu{MenuName: "查询", Status: "0", ParentId: menu.Id, OrderNum: 1, Path: menu.Path + "/list:get", MenuType: "F", Perms: prex + ":" + "list"}
- add := &model.SysMenu{MenuName: "新增", Status: "0", ParentId: menu.Id, OrderNum: 2, Path: menu.Path + "/list/add:post", MenuType: "F", Perms: prex + ":" + "edit"}
- edit := &model.SysMenu{MenuName: "修改", Status: "0", ParentId: menu.Id, OrderNum: 3, Path: menu.Path + "/:put", MenuType: "F", Perms: prex + ":" + "edit"}
- remove := &model.SysMenu{MenuName: "删除", Status: "0", ParentId: menu.Id, OrderNum: 4, Path: menu.Path + "/:delete", MenuType: "F", Perms: prex + ":" + "remove"}
- detail := &model.SysMenu{MenuName: "详情", Status: "0", ParentId: menu.Id, OrderNum: 5, Path: menu.Path + "/list:detail", MenuType: "F", Perms: prex + ":" + "detail"}
- // export := &model.SysMenu{MenuName: "导出", ParentId: menu.Id, OrderNum: 6, Path: menu.Path + "/list:export", MenuType: "F", Perms: prex + ":" + "export"}
- s.MenuDao.Insert(list)
- s.MenuDao.Insert(add)
- s.MenuDao.Insert(edit)
- s.MenuDao.Insert(remove)
- s.MenuDao.Insert(detail)
- }
- })
- }
- // Update 修改菜单数据
- func (s MenuService) Update(menu *model.SysMenu) {
- //查询原来菜单类型
- base.Transaction(func(session *xorm.Session) {
- oldMenu := s.MenuDao.GetMenuByMenuId(menu.GetId())
- s.MenuDao.Update(menu)
- if oldMenu.MenuType != menu.MenuType {
- if menu.MenuType == "C" {
- ary := strings.Split(menu.Perms, ":")
- prex := strings.Join(ary[:len(ary)-1], ":")
- list := &model.SysMenu{MenuName: "查询", ParentId: menu.Id, OrderNum: 1, Path: menu.Path + "/list:get", MenuType: "F", Perms: prex + ":" + "list"}
- add := &model.SysMenu{MenuName: "新增", ParentId: menu.Id, OrderNum: 2, Path: menu.Path + "/list/add:post", MenuType: "F", Perms: prex + ":" + "edit"}
- edit := &model.SysMenu{MenuName: "修改", ParentId: menu.Id, OrderNum: 3, Path: menu.Path + "/:put", MenuType: "F", Perms: prex + ":" + "edit"}
- remove := &model.SysMenu{MenuName: "删除", ParentId: menu.Id, OrderNum: 4, Path: menu.Path + "/:delete", MenuType: "F", Perms: prex + ":" + "remove"}
- detail := &model.SysMenu{MenuName: "详情", ParentId: menu.Id, OrderNum: 5, Path: menu.Path + "/list:detail", MenuType: "F", Perms: prex + ":" + "detail"}
- s.MenuDao.Insert(list)
- s.MenuDao.Insert(add)
- s.MenuDao.Insert(edit)
- s.MenuDao.Insert(remove)
- s.MenuDao.Insert(detail)
- } else {
- //删除parentId为menuId的菜单
- query := &req.MenuQuery{}
- query.ParentId = int64(menu.Id)
- list := s.MenuDao.GetMenuList(query)
- for _, item := range list {
- s.MenuDao.Delete(item.Id, &model.SysMenu{})
- }
- }
- }
- })
- }
- // 删除菜单操作
- func (s MenuService) Delete(id int64) {
- //判断是否存在子节点
- if s.MenuDao.SelectSubMenuCount(id) > 0 {
- frame.Throw(frame.BUSINESS_CODE, "请先删除子接节点")
- }
- s.MenuDao.Delete(&model.SysMenu{}, id)
- }
- func (s MenuService) SelectSubMenuCount(id int64) int64 {
- return s.MenuDao.SelectSubMenuCount(id)
- }
- func (s MenuService) GetMenus(query *req.MenuQuery) []model.SysMenu {
- return s.MenuDao.GetMenuList(query)
- }
- func (s MenuService) GetMenuByCon(query *req.MenuQuery) *model.SysMenu {
- list := s.GetMenus(query)
- if len(list) > 0 {
- return &list[0]
- }
- return nil
- }
|