123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- package com.huaxu.service;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.huaxu.dao.MenuMapper;
- import com.huaxu.dao.TenantMenuMapper;
- import com.huaxu.entity.MenuEntity;
- import com.huaxu.entity.TenantMenuEntity;
- import com.huaxu.model.LoginUser;
- import com.huaxu.util.UserUtil;
- import org.springframework.beans.BeanUtils;
- import org.springframework.stereotype.Service;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import javax.annotation.Resource;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.*;
- import static com.google.common.collect.Lists.newArrayList;
- /**
- *
- * 菜单Service接口
- * @author: WYY
- * @date 2020-10-26 16:15
- */
- @Service
- public class MenuService extends ServiceImpl<MenuMapper,MenuEntity> {
- @Resource
- private MenuMapper menuMapper;
- @Resource
- private TenantMenuMapper tenantMenuMapper;
- /**
- * 自定义分页查询,含关联实体对像
- */
- public IPage<MenuEntity> findPage(IPage<MenuEntity> page, MenuEntity menuEntity) {
- Page<MenuEntity> ipage = menuMapper.findPage(page, menuEntity);
- return ipage;
- }
- /**
- * 查列表
- */
- public List<MenuEntity> findList(MenuEntity menuEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- menuEntity.setTenantId(currentUser.getTenantId());
- List<MenuEntity> menuEntities = new ArrayList<>();
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- menuEntities = menuMapper.findList(menuEntity);
- break;
- case "2"://普通用户按角色查询租户菜单
- menuEntities = menuMapper.findUserList(menuEntity);
- break;
- case "-999"://租户管理员查询租户菜单
- menuEntities = menuMapper.findTenantList(menuEntity);
- break;
- }
- List<MenuEntity> menuTree = getMenuTree(menuEntities, Long.valueOf(0), 1);
- return menuTree;
- }
- public static List<MenuEntity> getMenuTree(List<MenuEntity> list, Long id, Integer leve) {
- List<MenuEntity> temList = newArrayList();
- if (list != null) {
- for (MenuEntity menuEntity : list) {
- if (id.equals(menuEntity.getParentMenuId())) {
- List<MenuEntity> chidren = getMenuTree(list, menuEntity.getId(), ++leve);
- MenuEntity temMeanu = new MenuEntity();
- BeanUtils.copyProperties(menuEntity, temMeanu);
- temMeanu.setChildren(chidren);
- temList.add(temMeanu);
- leve--;
- }
- }
- }
- if (temList.size() > 0) {
- return temList;
- } else {
- return null;
- }
- }
- /**
- * 按父级节点查列表
- */
- public List<MenuEntity> findMenuByParentIds(List<Long> ids) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- List<MenuEntity> menuEntities = new ArrayList<>();
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- menuEntities = menuMapper.findMenuByParentIds(ids);
- break;
- case "2"://普通用户按角色查询租户菜单
- menuEntities = menuMapper.findTenantMenuByParentIds(currentUser.getTenantId(), ids);
- break;
- case "-999"://租户管理员查询租户菜单
- menuEntities = menuMapper.findTenantMenuByParentIds(currentUser.getTenantId(), ids);
- break;
- }
- return menuEntities;
- }
- /**
- * 批量删除
- */
- @Transactional(rollbackFor = Exception.class)
- public boolean delMenuByIds(Long[] ids) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- boolean isOk = false;
- for(Long id : ids) {
- switch (userType) {
- case "1"://超级管理员直接删除系统菜单
- isOk = this.removeById(id);
- break;
- case "2"://普通用户按角色查询租户菜单
- isOk = menuMapper.updateState(id);
- break;
- case "-999"://租户管理员查询租户菜单
- isOk = menuMapper.updateState(id);
- break;
- }
- }
- return isOk;
- }
- /**
- * 单个删除
- */
- public boolean delMenuById(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- boolean isOk = false;
- switch (userType) {
- case "1"://超级管理员直接删除系统菜单
- isOk = this.removeById(id);
- break;
- case "2"://普通用户按角色查询租户菜单
- isOk = menuMapper.updateState(id);
- break;
- case "-999"://租户管理员查询租户菜单
- isOk = menuMapper.updateState(id);
- break;
- }
- return isOk;
- }
- /**
- * 保存
- */
- public boolean addMenu(MenuEntity menu) {
- if (this.save(menu)) {
- return true;
- }
- return false;
- }
- /**
- * 修改根居ID
- */
- public boolean updateMenuById(MenuEntity menu) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- TenantMenuEntity tenantMenuEntity = new TenantMenuEntity();
- if(userType.equals("2")||userType.equals("-999")) {
- MenuEntity menuEntity = menuMapper.findTenantByMenuId(currentUser.getTenantId(), menu.getId());
- tenantMenuEntity.setId(menuEntity.getId());
- tenantMenuEntity.setDateUpdate(new Date());
- tenantMenuEntity.setUpdateBy(currentUser.getUsername());
- tenantMenuEntity.setLinkPath(menu.getLinkPath());
- tenantMenuEntity.setMenuImage(menu.getMenuImage());
- tenantMenuEntity.setMenuName(menu.getName());
- tenantMenuEntity.setMenuSeq(menu.getSeq());
- }
- boolean isOk = false;
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- isOk = this.updateById(menu);
- break;
- case "2"://普通用户按角色查询租户菜单
- isOk = tenantMenuMapper.updateById(tenantMenuEntity) > 0 ? true : false;
- break;
- case "-999"://租户管理员查询租户菜单
- isOk = tenantMenuMapper.updateById(tenantMenuEntity) > 0 ? true : false;
- break;
- }
- return isOk;
- }
- /**
- * 根居ID获取对象
- */
- public MenuEntity findMenuById(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- MenuEntity menuEntity = new MenuEntity();
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- menuEntity = menuMapper.findMenuById(id);;
- break;
- case "2"://普通用户按角色查询租户菜单
- menuEntity = menuMapper.findUserMenuById(currentUser.getTenantId(),id);
- break;
- case "-999"://租户管理员查询租户菜单
- menuEntity = menuMapper.findUserMenuById(currentUser.getTenantId(),id);
- break;
- }
- return menuEntity;
- }
- public List<MenuEntity> findUserFirstMenu() {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- List<MenuEntity> menuEntities= new ArrayList<>();
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- menuEntities = menuMapper.findAllFirstMenu();
- break;
- case "2"://普通用户按角色查询租户菜单
- menuEntities = menuMapper.findUserFirstMenu(currentUser.getTenantId(),userId);
- break;
- case "-999"://租户管理员查询租户菜单
- menuEntities = menuMapper.findTenantFirstMenu(currentUser.getTenantId());
- break;
- }
- return menuEntities;
- }
- public List<MenuEntity> findUserMenu(String appId) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- Integer userId = currentUser.getId();
- //-999租户管理员 1超级管理员 2普通用户
- String userType = currentUser.getType();
- List<MenuEntity> menuEntities= new ArrayList<>();
- switch (userType) {
- case "1"://超级管理员查询所有系统菜单
- menuEntities = menuMapper.findSystemUserMenu(appId);
- break;
- case "2"://普通用户按角色查询租户菜单
- menuEntities = menuMapper.findUserMenu(currentUser.getTenantId(),userId, appId);
- break;
- case "-999"://租户管理员查询租户菜单
- menuEntities = menuMapper.findTenantUserMenu(currentUser.getTenantId(),appId);
- break;
- }
- List<MenuEntity> menuTree = getMenuTree(menuEntities, Long.valueOf(0), 1);
- return menuTree;
- }
- }
|