diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java index 7f0cd1e0..231156c6 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuDTO.java @@ -17,9 +17,6 @@ package com.elink.esua.epdc.dto; -import java.io.Serializable; -import java.util.Date; - import com.elink.esua.epdc.commons.tools.utils.TreeNode; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; @@ -30,6 +27,8 @@ import org.hibernate.validator.constraints.Range; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; /** @@ -132,4 +131,10 @@ public class AppMenuDTO extends TreeNode implements Serializable { * 上级菜单名称 */ private String parentName; + + /** + * {@link com.elink.esua.epdc.enums.AppMenuCategoryEnum} + */ + private String category; + } diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuGroupDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuGroupDTO.java new file mode 100644 index 00000000..3a6a2c70 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/AppMenuGroupDTO.java @@ -0,0 +1,29 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 移动端菜单分组 + * + * @author work@yujt.net.cn + * @date 2020/9/1 10:52 + */ +@Data +public class AppMenuGroupDTO implements Serializable { + + + private static final long serialVersionUID = 8979318364775500637L; + + /** + * 工作端菜单 + */ + private List workMenu; + + /** + * 数据端菜单 + */ + private List analysisMenu; +} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/enums/AppMenuCategoryEnum.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/enums/AppMenuCategoryEnum.java new file mode 100644 index 00000000..2aed806a --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/enums/AppMenuCategoryEnum.java @@ -0,0 +1,33 @@ +package com.elink.esua.epdc.enums; + +/** + * 移动端菜单类别枚举 + * ALTER TABLE sys_app_menu ADD COLUMN `category` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单所属类别work(工作端);analysis(数据端)'; + * ALTER TABLE sys_app_menu_template ADD COLUMN `category` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单所属类别work(工作端);analysis(数据端)'; + * UPDATE sys_app_menu SET category = 'work'; + * UPDATE sys_app_menu_template SET category = 'work'; + * + * @author work@yujt.net.cn + * @date 2020/9/1 13:34 + */ +public enum AppMenuCategoryEnum { + /** + * 工作端/领导端 + */ + WORK("work"), + + /** + * 数据端 + */ + ANALYSIS("analysis"); + + private String value; + + AppMenuCategoryEnum(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml index 1120fd28..cacc74ec 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml @@ -74,6 +74,13 @@ rocketmq-spring-boot-starter 2.0.2 + + + + com.esua.epdc + epdc-commons-api-version-control + ${project.version} + diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/AppMenuV2Controller.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/AppMenuV2Controller.java new file mode 100644 index 00000000..b313460c --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/AppMenuV2Controller.java @@ -0,0 +1,77 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.controller.v2; + +import com.elink.esua.epdc.commons.api.version.ApiVersion; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.AppMenuGroupDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; +import com.elink.esua.epdc.service.AppMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * APP菜单管理 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-11-19 + */ +@ApiVersion(2) +@RestController +@RequestMapping("appmenu" + Constant.VERSION_CONTROL) +public class AppMenuV2Controller { + + @Autowired + private AppMenuService appMenuService; + + /** + * 管理端角色修改页面,获取全部菜单 + * + * @param userDetail + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2020/9/1 17:31 + */ + @GetMapping("select") + public Result select(UserDetail userDetail) { + AppMenuGroupDTO result = appMenuService.getUserMenuListV2(userDetail); + return new Result().ok(result); + } + + /** + * 首页面板 获取工作端、数据端首页菜单 + * + * @param category {@link com.elink.esua.epdc.enums.AppMenuCategoryEnum} + * @param mobile 管理员手机号 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2020/9/1 17:30 + */ + @GetMapping("/indexPanel/{category}/{mobile}") + public Result> indexPanel(@PathVariable("category") String category, @PathVariable("mobile") String mobile) { + return new Result().ok(appMenuService.indexPanel(category, mobile)); + } + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/SysRoleV2Controller.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/SysRoleV2Controller.java new file mode 100644 index 00000000..6aceee10 --- /dev/null +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/v2/SysRoleV2Controller.java @@ -0,0 +1,83 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package com.elink.esua.epdc.controller.v2; + +import com.elink.esua.epdc.commons.api.version.ApiVersion; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; +import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.dto.SysRoleDTO; +import com.elink.esua.epdc.enums.AppMenuCategoryEnum; +import com.elink.esua.epdc.service.AppRoleMenuService; +import com.elink.esua.epdc.service.SysRoleDataScopeService; +import com.elink.esua.epdc.service.SysRoleMenuService; +import com.elink.esua.epdc.service.SysRoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * 角色管理 + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@ApiVersion(2) +@RestController +@RequestMapping("role" + Constant.VERSION_CONTROL) +public class SysRoleV2Controller { + + @Autowired + private SysRoleService sysRoleService; + @Autowired + private SysRoleMenuService sysRoleMenuService; + @Autowired + private SysRoleDataScopeService sysRoleDataScopeService; + @Autowired + private AppRoleMenuService appRoleMenuService; + + @GetMapping("{id}") + public Result get(@PathVariable("id") Long id) { + SysRoleDTO data = sysRoleService.get(id); + + //查询角色对应的菜单 + data.setMenuIdList(sysRoleMenuService.getMenuIdList(id)); + //查询角色对应的数据权限 + data.setDeptIdList(sysRoleDataScopeService.getDeptIdList(id)); + //查询角色对应app菜单权限 + data.setAppMenuIdList(appRoleMenuService.getAppMenuIdListV2(id, AppMenuCategoryEnum.WORK.getValue())); + //查询角色对应数据端菜单权限 + data.setAnalysisMenuIdList(appRoleMenuService.getAppMenuIdListV2(id, AppMenuCategoryEnum.ANALYSIS.getValue())); + //查询角色对应的项目处理类型权限 + data.setCategoryIdList(sysRoleService.getCategoryIdList(id)); + //查询角色对应的吹哨部门 + data.setWhistleDeptIdList(sysRoleService.getWhistleDeptIdList(id)); + + return new Result().ok(data); + } + + + @PostMapping + public Result save(@RequestBody SysRoleDTO dto) { + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + sysRoleService.saveV2(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody SysRoleDTO dto) { + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + sysRoleService.updateV2(dto); + return new Result(); + } + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java index 4a748f12..7aa3602a 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java @@ -88,4 +88,14 @@ public interface AppMenuDao extends BaseDao { * @Date 2020/03/18 10:42 **/ List getAnalysisIndexPanel(String userId); + /** + * 获取移动端菜单信息 + * + * @param category 菜单类别 + * @param mobile 手机号码 + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/9/1 17:25 + */ + List indexPanelByMobileAndCategory(@Param("category") String category, @Param("mobile") String mobile); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java index 94d76079..c87ea92c 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java @@ -20,6 +20,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.entity.AppRoleMenuEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -45,4 +46,15 @@ public interface AppRoleMenuDao extends BaseDao { * @return */ List getAppMenuIdList(Long id); + + /** + * 根据角色ID和APP菜单类别,获取菜单ID列表 + * + * @param roleId 角色ID + * @param appMenuCategory APP菜单类别,区分工作端数据端 + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/9/1 15:42 + */ + List selectAppMenuIdListV2(@Param("roleId") Long roleId, @Param("appMenuCategory") String appMenuCategory); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java index 401d3fcd..3d87cc4a 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java @@ -22,6 +22,7 @@ import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.AppMenuDTO; +import com.elink.esua.epdc.dto.AppMenuGroupDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppChildNavResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; import com.elink.esua.epdc.entity.AppMenuEntity; @@ -152,4 +153,25 @@ public interface AppMenuService extends BaseService { * @Date 2020/03/18 10:42 **/ Result> getAnalysisIndexPanel(String userId); + + /** + * 获取小程序端菜单并分组 + * + * @param userDetail 用户信息 + * @return com.elink.esua.epdc.dto.AppMenuGroupDTO + * @author work@yujt.net.cn + * @date 2020/9/1 10:58 + */ + AppMenuGroupDTO getUserMenuListV2(UserDetail userDetail); + + /** + * 获取移动端菜单信息 + * + * @param category 菜单类别 + * @param mobile 手机号码 + * @return java.util.List < com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO> + * @author work@yujt.net.cn + * @date 2020/9/1 17:20 + */ + List indexPanel(String category, String mobile); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java index 2080c9c3..7133cc10 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java @@ -115,4 +115,15 @@ public interface AppRoleMenuService extends BaseService { * @return */ List getAppMenuIdList(Long id); + + /** + * 根据角色ID和APP菜单类别,获取菜单ID列表 + * + * @param roleId 角色id + * @param value APP菜单类别,区分工作端数据端 + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/9/1 15:40 + */ + List getAppMenuIdListV2(Long roleId, String value); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysRoleService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysRoleService.java index 95e6979c..d1249402 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysRoleService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysRoleService.java @@ -38,4 +38,8 @@ public interface SysRoleService extends BaseService { List getCategoryIdList(Long id); List getWhistleDeptIdList(Long id); + + void saveV2(SysRoleDTO dto); + void updateV2(SysRoleDTO dto); + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java index 876d2509..5240dd22 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java @@ -33,12 +33,15 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.dao.AppMenuDao; import com.elink.esua.epdc.dto.AppMenuDTO; +import com.elink.esua.epdc.dto.AppMenuGroupDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppChildNavResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; import com.elink.esua.epdc.entity.AppMenuEntity; +import com.elink.esua.epdc.enums.AppMenuCategoryEnum; import com.elink.esua.epdc.enums.MenuTableEnum; import com.elink.esua.epdc.service.AppMenuService; import com.elink.esua.epdc.service.SysLanguageService; +import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -181,5 +184,48 @@ public class AppMenuServiceImpl extends BaseServiceImpl dtoList = ConvertUtils.sourceToTarget(getUserMenuList(userDetail), AppMenuDTO.class); + List workMenuList = Lists.newArrayList(); + List analysisMenuList = Lists.newArrayList(); + dtoList.forEach(dto -> { + if (dto != null) { + String category = dto.getCategory(); + if (AppMenuCategoryEnum.WORK.getValue().equals(category)) { + workMenuList.add(dto); + } else if (AppMenuCategoryEnum.ANALYSIS.getValue().equals(category)) { + analysisMenuList.add(dto); + } + } + }); + AppMenuGroupDTO group = new AppMenuGroupDTO(); + group.setWorkMenu(TreeUtils.build(workMenuList)); + group.setAnalysisMenu(TreeUtils.build(analysisMenuList)); + return group; + } + /** + * 查询用户APP菜单权限 + * + * @param userDetail + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/9/1 13:39 + */ + private List getUserMenuList(UserDetail userDetail) { + List menuList; + //系统管理员,拥有最高权限 + if (userDetail.getSuperAdmin() == SuperAdminEnum.YES.value()) { + menuList = baseDao.getMenuList(null, HttpContextUtils.getLanguage()); + } else { + menuList = baseDao.getUserMenuList(userDetail.getId(), null, HttpContextUtils.getLanguage()); + } + return menuList; + } + + @Override + public List indexPanel(String category, String mobile) { + return this.baseDao.indexPanelByMobileAndCategory(category, mobile); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java index c3caee4b..88deda10 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java @@ -149,4 +149,9 @@ public class AppRoleMenuServiceImpl extends BaseServiceImpl getAppMenuIdList(Long id) { return baseDao.getAppMenuIdList(id); } + + @Override + public List getAppMenuIdListV2(Long roleId, String appMenuCategory) { + return baseDao.selectAppMenuIdListV2(roleId, appMenuCategory); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java index c57da68f..5d6a436f 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java @@ -8,6 +8,7 @@ package com.elink.esua.epdc.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.elink.esua.epdc.commons.mybatis.enums.DelFlagEnum; @@ -38,6 +39,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 角色管理 @@ -207,6 +210,67 @@ public class SysRoleServiceImpl extends BaseServiceImpl> result = eventFeignClient.queryWhistleDeptIdList(id); return result.getData(); } + @Override + public void saveV2(SysRoleDTO dto) { + SysRoleEntity entity = ConvertUtils.sourceToTarget(dto, SysRoleEntity.class); + //保存角色 + insert(entity); + //保存角色菜单关系 + sysRoleMenuService.saveOrUpdate(entity.getId(), dto.getMenuIdList()); + //保存角色数据权限关系 + sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList()); + + handleEpdcUserRole(dto, entity, true); + } + @Override + public void updateV2(SysRoleDTO dto) { + SysRoleEntity entity = ConvertUtils.sourceToTarget(dto, SysRoleEntity.class); + + //更新角色 + updateById(entity); + + //更新角色菜单关系 + sysRoleMenuService.saveOrUpdate(entity.getId(), dto.getMenuIdList()); + + //更新角色数据权限关系 + sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList()); + + handleEpdcUserRole(dto, entity, true); + } + /** + * 党群相关权限集中处理 包括工作端、数据端、吹哨权限 + * + * @param dto 管理员设置的用户权限 + * @param entity dto转化而来的实体对象 + * @return void + * @author work@yujt.net.cn + * @date 2020/5/13 19:42 + */ + private void handleEpdcUserRole(SysRoleDTO dto, SysRoleEntity entity, boolean v2) { + if (v2) { + // 同时保存数据端与工作端权限 + appRoleMenuService.saveOrUpdate(entity.getId(), Stream.concat(dto.getAppMenuIdList().stream(), dto.getAnalysisMenuIdList().stream()).collect(Collectors.toList())); + } else { + // 分别保存数据端与工作端权限 + appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList()); + sysAnalysisRoleMenuService.saveOrUpdate(entity.getId(), dto.getAnalysisMenuIdList()); + } + + //保存角色与项目处理类型关系 + List categoryIdList = dto.getCategoryIdList(); + if (CollUtil.isNotEmpty(categoryIdList)) { + HandleRoleCategoryFormDTO categoryFormDTO = new HandleRoleCategoryFormDTO(); + categoryFormDTO.setRoleId(entity.getId()); + categoryFormDTO.setCategoryIdList(categoryIdList); + eventFeignClient.saveOrUpdateHandleCategory(categoryFormDTO); + } + + List whistleDeptIdList = dto.getWhistleDeptIdList(); + if (CollUtil.isNotEmpty(whistleDeptIdList)) { + //保存角色对应的可吹哨部门权限 + this.saveOrUpdateWhistleDeptId(entity.getId(), whistleDeptIdList); + } + } /** * @param roleId diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml index 9ef1b2c8..90c3d8d8 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml @@ -163,4 +163,41 @@ and m1.menu_code = 10010 )order by mp.sort asc,mc.sort asc + + diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml index 4ca2df30..ef5a0838 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml @@ -18,4 +18,14 @@ + diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java index 4a4754fc..16fa3d25 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java @@ -168,7 +168,12 @@ public class ApiWorkUserController { * @return com.elink.esua.epdc.commons.tools.utils.Result> * @Author yinzuomei * @Date 2019/11/20 10:42 - **/ + *

+ * 已过时,改用新接口: + * {@link ApiWorkUserV2Controller#indexPanel()} + * -- modified by yujt on 20200901 + */ + @Deprecated @GetMapping("indexPanel") public Result> indexPanel() { return workUserService.indexPanel(); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiWorkUserV2Controller.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiWorkUserV2Controller.java new file mode 100644 index 00000000..92b9aada --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiWorkUserV2Controller.java @@ -0,0 +1,42 @@ +package com.elink.esua.epdc.controller.v2; + +import com.elink.esua.epdc.commons.api.version.ApiVersion; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.epdc.result.EpdcAppIndexPanelResultDTO; +import com.elink.esua.epdc.service.WorkUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 工作端,用户登录,用户管理相关接口 + * + * @author work@yujt.net.cn + * @date 2019/11/18 10:45 + */ +@ApiVersion(2) +@RestController +@RequestMapping("work/user" + Constant.VERSION_CONTROL) +public class ApiWorkUserV2Controller { + + @Autowired + private WorkUserService workUserService; + + /** + * 首页面板 获取工作端APP菜单 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @Author yinzuomei + * @Date 2019/11/20 10:42 + **/ + @GetMapping("indexPanel") + public Result> indexPanel() { + return workUserService.indexPanelV2(); + } + + +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 418ef534..cc8f7022 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -82,6 +82,18 @@ public interface AdminFeignClient { @GetMapping("sys/appmenu/indexPanel/{mobile}") Result> indexPanel(@PathVariable("mobile") String mobile); + /** + * 首页面板 获取工作端、数据端首页菜单 + * + * @param category {@link com.elink.esua.epdc.enums.AppMenuCategoryEnum} + * @param mobile 管理员手机号 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2020/9/1 17:30 + */ + @GetMapping("sys/appmenu/v2/indexPanel/{category}/{mobile}") + Result> indexPanel(@PathVariable("category") String category, @PathVariable("mobile") String mobile); + /** * @param * @return com.elink.esua.epdc.commons.tools.utils.Result diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 1c7f98b6..004c8703 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -45,6 +45,10 @@ public class AdminFeignClientFallback implements AdminFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "indexPanel", mobile); } + @Override + public Result> indexPanel(String category, String mobile) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "indexPanel", category, mobile); + } @Override public Result getDeptTreeForEpiDemic() { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getDeptTreeForEpiDemic"); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java index 00b4fa2c..117eba7c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java @@ -92,6 +92,9 @@ public interface WorkUserService { **/ Result> indexPanel(); + Result> indexPanelV2(); + + /** * @param formDTO * @return com.elink.esua.epdc.commons.tools.utils.Result> diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java index c8778e90..18e3f24f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java @@ -23,6 +23,7 @@ import com.elink.esua.epdc.dto.issue.result.IssueStateStatisticsResultDTO; import com.elink.esua.epdc.dto.item.form.ItemStatisticsFormDTO; import com.elink.esua.epdc.dto.item.result.ItemStatisticsResultDTO; import com.elink.esua.epdc.dto.result.WorkAppMenuStatisticsResultDTO; +import com.elink.esua.epdc.enums.AppMenuCategoryEnum; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.ResourceFeignClient; import com.elink.esua.epdc.feign.UserFeignClient; @@ -204,7 +205,14 @@ public class WorkUserServiceImpl implements WorkUserService { } return adminFeignClient.indexPanel(mobile); } - + @Override + public Result> indexPanelV2() { + String mobile = SecurityUser.getUser().getMobile(); + if (StringUtils.isBlank(mobile)) { + throw new RenException("获取用户信息失败"); + } + return adminFeignClient.indexPanel(AppMenuCategoryEnum.WORK.getValue(), mobile); + } /** * @param formDTO * @return com.elink.esua.epdc.commons.tools.utils.Result>