Browse Source

菜单增删改查修改

dev_shibei_match
hosinokamui 5 years ago
parent
commit
2296cae1a5
  1. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java
  2. 29
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeUtils.java
  3. 37
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/controller/OperMenuController.java
  4. 5
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/redis/OperMenuRedis.java
  5. 5
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/redis/OperResourceRedis.java
  6. 10
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperLanguageService.java
  7. 26
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperMenuService.java
  8. 9
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperResourceService.java
  9. 6
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperRoleMenuService.java
  10. 17
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperLanguageServiceImpl.java
  11. 72
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperMenuServiceImpl.java
  12. 32
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperResourceServiceImpl.java
  13. 5
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperRoleMenuServiceImpl.java
  14. 4
      epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperRoleServiceImpl.java

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/Constant.java

@ -35,6 +35,10 @@ public interface Constant {
* 菜单根节点标识
*/
Long MENU_ROOT = 0L;
/**
* 菜单根节点标识
*/
String OPER_MENU_ROOT = "0";
/**
* 部门根节点标识
*/

29
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/TreeUtils.java

@ -40,6 +40,23 @@ public class TreeUtils {
return treeList;
}
/**
* 根据pid构建树节点
*/
public static <T extends TreeStringNode> List<T> buildTree(List<T> treeNodes, String pid) {
//pid不能为空
AssertUtils.isNull(pid, "pid");
List<T> treeList = new ArrayList<>();
for(T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) {
treeList.add(findChildren(treeNodes, treeNode));
}
}
return treeList;
}
/**
* 查找子节点
*/
@ -52,6 +69,18 @@ public class TreeUtils {
return rootNode;
}
/**
* 查找子节点
*/
private static <T extends TreeStringNode> T findChildren(List<T> treeNodes, T rootNode) {
for(T treeNode : treeNodes) {
if(rootNode.getId().equals(treeNode.getPid())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode));
}
}
return rootNode;
}
/**
* 构建树节点
*/

37
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/controller/OperMenuController.java

@ -1,6 +1,7 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.exception.ErrorCode;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
@ -48,18 +49,18 @@ public class OperMenuController {
}
@PostMapping
public Result save(@RequestBody OperMenuDTO dto){
public Result save(@RequestBody OperMenuDTO dto, @LoginUser TokenDto tokenDto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
operMenuService.save(dto);
operMenuService.save(dto,tokenDto);
return new Result();
}
@PutMapping
public Result update(@RequestBody OperMenuDTO dto){
public Result update(@RequestBody OperMenuDTO dto, @LoginUser TokenDto tokenDto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
operMenuService.update(dto);
operMenuService.update(dto,tokenDto);
return new Result();
}
@ -71,12 +72,40 @@ public class OperMenuController {
return new Result();
}
@DeleteMapping("{id}")
public Result delete(@PathVariable("id") String id, @LoginUser TokenDto tokenDto){
//效验数据
AssertUtils.isNull(id, "id");
//判断是否有子菜单或按钮
List<OperMenuDTO> list = operMenuService.getListPid(id);
if(list.size() > 0){
return new Result().error(ErrorCode.SUB_MENU_EXIST);
}
operMenuService.delete(id, tokenDto);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<OperMenuDTO> list = operMenuService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, OperMenuExcel.class);
}
/**
* 获取菜单列表
* @param type 类型
* @return Result<List<OperMenuDTO>>
*/
@GetMapping("list")
public Result<List<OperMenuDTO>> list(Integer type){
List<OperMenuDTO> list = operMenuService.getMenuList(type);
return new Result<List<OperMenuDTO>>().ok(list);
}
/**
* 导航
* @param tokenDto token

5
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/redis/OperMenuRedis.java

@ -38,8 +38,9 @@ public class OperMenuRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
public void delete(String userId, String app, String client) {
redisUtils.deleteByPattern(RedisKeys.getUserMenuNavKey(userId, app, client, HttpContextUtils.getLanguage()));
redisUtils.delete(RedisKeys.getUserPermissionsKey(userId, app, client));
}
public void set(){

5
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/redis/OperResourceRedis.java

@ -17,6 +17,7 @@
package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -32,8 +33,10 @@ public class OperResourceRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
public void delete() {
String key = RedisKeys.getSysResourceKey();
redisUtils.delete(key);
}
public void set(){

10
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperLanguageService.java

@ -92,4 +92,14 @@ public interface OperLanguageService extends BaseService<OperLanguageEntity> {
* @date 2020-03-18
*/
void delete(String[] ids);
/**
* 保存或更新
* @param tableName 表名
* @param tableId 表主键
* @param fieldName 字段名
* @param fieldValue 字段值
* @param language 语言
*/
void saveOrUpdate(String tableName, String tableId, String fieldName, String fieldValue, String language);
}

26
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperMenuService.java

@ -75,7 +75,7 @@ public interface OperMenuService extends BaseService<OperMenuEntity> {
* @author generator
* @date 2020-03-18
*/
void save(OperMenuDTO dto);
void save(OperMenuDTO dto, TokenDto tokenDto);
/**
* 默认更新
@ -85,7 +85,7 @@ public interface OperMenuService extends BaseService<OperMenuEntity> {
* @author generator
* @date 2020-03-18
*/
void update(OperMenuDTO dto);
void update(OperMenuDTO dto, TokenDto tokenDto);
/**
* 批量删除
@ -97,6 +97,15 @@ public interface OperMenuService extends BaseService<OperMenuEntity> {
*/
void delete(String[] ids);
/**
* 删除
*
* @param id id
* @author generator
* @date 2020-03-18
*/
void delete(String id, TokenDto tokenDto);
/**
* 用户菜单列表
*
@ -106,6 +115,13 @@ public interface OperMenuService extends BaseService<OperMenuEntity> {
*/
List<OperMenuDTO> getUserMenuList(TokenDto tokenDto, Integer type);
/**
* 菜单列表
*
* @param type 菜单类型
*/
List<OperMenuDTO> getMenuList(Integer type);
/**
* 用户菜单导航
* @param tokenDto 用户信息
@ -119,4 +135,10 @@ public interface OperMenuService extends BaseService<OperMenuEntity> {
* @return java.util.Set<OperMenuDTO>
*/
Set<String> getUserPermissions(TokenDto tokenDto);
/**
* 根据父菜单查询子菜单
* @param pid 父菜单ID
*/
List<OperMenuDTO> getListPid(String pid);
}

9
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperResourceService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.OperResourceDTO;
import com.epmet.dto.result.MenuResourceDTO;
import com.epmet.entity.OperResourceEntity;
import java.util.List;
@ -92,4 +93,12 @@ public interface OperResourceService extends BaseService<OperResourceEntity> {
* @date 2020-03-18
*/
void delete(String[] ids);
/**
* 保存菜单资源
* @param menuId 菜单ID
* @param menuName 菜单名称
* @param resourceList 资源列表
*/
void saveMenuResource(String menuId, String menuName, List<MenuResourceDTO> resourceList);
}

6
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/OperRoleMenuService.java

@ -116,4 +116,10 @@ public interface OperRoleMenuService extends BaseService<OperRoleMenuEntity> {
* @param roleIds
*/
void deleteByRoleIds(String[] roleIds);
/**
* 根据菜单id删除角色菜单关系
* @param menuId 菜单id
*/
void deleteByMenuId(String menuId);
}

17
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperLanguageServiceImpl.java

@ -101,4 +101,21 @@ public class OperLanguageServiceImpl extends BaseServiceImpl<OperLanguageDao, Op
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public void saveOrUpdate(String tableName, String tableId, String fieldName, String fieldValue, String language) {
OperLanguageEntity entity = new OperLanguageEntity();
entity.setTableName(tableName);
entity.setTableId(tableId);
entity.setFieldName(fieldName);
entity.setFieldValue(fieldValue);
entity.setLanguage(language);
//判断是否有数据
if(baseDao.getLanguage(entity) == null){
baseDao.insert(entity);
}else {
baseDao.updateLanguage(entity);
}
}
}

72
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperMenuServiceImpl.java

@ -20,9 +20,13 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.enums.SuperAdminEnum;
import com.epmet.commons.tools.exception.ErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.SecurityUser;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.utils.HttpContextUtils;
@ -36,7 +40,10 @@ import com.epmet.entity.OperMenuEntity;
import com.epmet.enums.MenuTypeEnum;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.redis.OperMenuRedis;
import com.epmet.service.OperLanguageService;
import com.epmet.service.OperMenuService;
import com.epmet.service.OperResourceService;
import com.epmet.service.OperRoleMenuService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -57,6 +64,12 @@ public class OperMenuServiceImpl extends BaseServiceImpl<OperMenuDao, OperMenuEn
private OperMenuRedis operMenuRedis;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private OperRoleMenuService operRoleMenuService;
@Autowired
private OperResourceService operResourceService;
@Autowired
private OperLanguageService operLanguageService;
@Override
public PageData<OperMenuDTO> page(Map<String, Object> params) {
@ -91,16 +104,39 @@ public class OperMenuServiceImpl extends BaseServiceImpl<OperMenuDao, OperMenuEn
@Override
@Transactional(rollbackFor = Exception.class)
public void save(OperMenuDTO dto) {
public void save(OperMenuDTO dto, TokenDto tokenDto) {
OperMenuEntity entity = ConvertUtils.sourceToTarget(dto, OperMenuEntity.class);
//保存菜单
insert(entity);
saveLanguage(entity.getId(), "name", entity.getName());
//保存菜单资源
operResourceService.saveMenuResource(entity.getId(), entity.getName(), dto.getResourceList());
//清空当前用户,菜单导航、权限标识
operMenuRedis.delete(tokenDto.getUserId(), tokenDto.getApp(), tokenDto.getClient());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(OperMenuDTO dto) {
public void update(OperMenuDTO dto, TokenDto tokenDto) {
OperMenuEntity entity = ConvertUtils.sourceToTarget(dto, OperMenuEntity.class);
//上级菜单不能为自身
if(entity.getId().equals(entity.getPid())){
throw new RenException(ErrorCode.SUPERIOR_MENU_ERROR);
}
//更新菜单
updateById(entity);
saveLanguage(entity.getId(), "name", entity.getName());
//更新菜单资源
operResourceService.saveMenuResource(entity.getId(), entity.getName(), dto.getResourceList());
//清空当前用户,菜单导航、权限标识
operMenuRedis.delete(tokenDto.getUserId(), tokenDto.getApp(), tokenDto.getClient());
}
@Override
@ -110,6 +146,18 @@ public class OperMenuServiceImpl extends BaseServiceImpl<OperMenuDao, OperMenuEn
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String id, TokenDto tokenDto) {
//逻辑删除
baseDao.deleteBatchIds(Collections.singletonList(id));
//删除角色菜单关系
operRoleMenuService.deleteByMenuId(id);
//清空当前用户,菜单导航、权限标识
operMenuRedis.delete(tokenDto.getUserId(), tokenDto.getApp(), tokenDto.getClient());
}
@Override
public List<OperMenuDTO> getUserMenuList(TokenDto tokenDto, Integer type) {
List<OperMenuEntity> menuList;
@ -128,6 +176,15 @@ public class OperMenuServiceImpl extends BaseServiceImpl<OperMenuDao, OperMenuEn
return TreeUtils.buildTree(dtoList);
}
@Override
public List<OperMenuDTO> getMenuList(Integer type) {
List<OperMenuEntity> menuList = baseDao.getMenuList(type, HttpContextUtils.getLanguage());
List<OperMenuDTO> dtoList = ConvertUtils.sourceToTarget(menuList, OperMenuDTO.class);
return TreeUtils.buildTree(dtoList, Constant.OPER_MENU_ROOT);
}
@Override
public List<OperMenuDTO> getUserMenuNavList(TokenDto tokenDto) {
List<OperMenuDTO> menuList = operMenuRedis.getUserMenuNavList(tokenDto.getUserId(), tokenDto.getApp(), tokenDto.getClient());
@ -171,4 +228,15 @@ public class OperMenuServiceImpl extends BaseServiceImpl<OperMenuDao, OperMenuEn
return permsSet;
}
@Override
public List<OperMenuDTO> getListPid(String pid) {
List<OperMenuEntity> menuList = baseDao.getListPid(pid);
return ConvertUtils.sourceToTarget(menuList, OperMenuDTO.class);
}
private void saveLanguage(String tableId, String fieldName, String fieldValue){
operLanguageService.saveOrUpdate("oper_menu", tableId, fieldName, fieldValue, HttpContextUtils.getLanguage());
}
}

32
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperResourceServiceImpl.java

@ -17,15 +17,19 @@
package com.epmet.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.enums.ResourceAuthEnum;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.OperResourceDao;
import com.epmet.dto.OperResourceDTO;
import com.epmet.dto.result.MenuResourceDTO;
import com.epmet.entity.OperResourceEntity;
import com.epmet.enums.MenuFlagEnum;
import com.epmet.redis.OperResourceRedis;
import com.epmet.service.OperResourceService;
import org.apache.commons.lang3.StringUtils;
@ -101,4 +105,32 @@ public class OperResourceServiceImpl extends BaseServiceImpl<OperResourceDao, Op
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public void saveMenuResource(String menuId, String menuName, List<MenuResourceDTO> resourceList) {
//先删除菜单资源关系
baseDao.deleteByCode(menuId+"");
//删除缓存
operResourceRedis.delete();
//菜单没有一个资源的情况
if(CollUtil.isEmpty(resourceList)){
return ;
}
//保存菜单资源关系
for(MenuResourceDTO dto : resourceList){
OperResourceEntity entity = new OperResourceEntity();
entity.setResourceCode(menuId+"");
entity.setResourceName(menuName);
entity.setResourceUrl(dto.getResourceUrl());
entity.setResourceMethod(dto.getResourceMethod());
entity.setAuthLevel(ResourceAuthEnum.PERMISSIONS_AUTH.value());
entity.setMenuFlag(MenuFlagEnum.YES.value());
//保存
insert(entity);
}
}
}

5
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperRoleMenuServiceImpl.java

@ -142,4 +142,9 @@ public class OperRoleMenuServiceImpl extends BaseServiceImpl<OperRoleMenuDao, Op
public void deleteByRoleIds(String[] roleIds) {
operRoleMenuDao.deleteByRoleIds(roleIds);
}
@Override
public void deleteByMenuId(String menuId) {
baseDao.deleteByMenuId(menuId);
}
}

4
epmet-module/oper-access/oper-access-server/src/main/java/com/epmet/service/impl/OperRoleServiceImpl.java

@ -73,9 +73,9 @@ public class OperRoleServiceImpl extends BaseServiceImpl<OperRoleDao, OperRoleEn
private QueryWrapper<OperRoleEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
String name = (String)params.get(FieldConstant.NAME_HUMP);
QueryWrapper<OperRoleEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id).like(StringUtils.isNotBlank(name), FieldConstant.NAME, name);
return wrapper;
}

Loading…
Cancel
Save