From 93c11d837283ebfc0eea9ef49dc4c7f73ec3e64d Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 6 May 2019 11:41:35 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E8=80=81=E7=94=A8=E6=88=B7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysMenuController.java | 42 +++++++++++++++++-- .../java/com/iformall/enums/EnumMenuType.java | 10 ++++- .../com/iformall/service/MallRoleService.java | 8 ++++ .../service/impl/MallRoleServiceImpl.java | 5 +++ 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index efab3a4f4..7a8726ec5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -6,10 +6,15 @@ import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.MallPermission; +import com.iformall.domain.po.MallRole; +import com.iformall.domain.po.MallRolePermission; import com.iformall.domain.po.MallUserInfo; +import com.iformall.enums.EnumMenuType; import com.iformall.enums.EnumPermissionType; import com.iformall.exception.MallinkException; import com.iformall.service.MallPermissionService; +import com.iformall.service.MallRolePermissionService; +import com.iformall.service.MallRoleService; import com.iformall.service.MallUserInfoService; import com.iformall.utils.Constant; import io.swagger.annotations.ApiOperation; @@ -45,6 +50,12 @@ public class SysMenuController extends BaseController { @Autowired private MallUserInfoService mallUserInfoService; + @Autowired + private MallRoleService mallRoleService; + + @Autowired + private MallRolePermissionService mallRolePermissionService; + @ApiOperation("导航菜单") @GetMapping("/nav") public ResultData nav(){ @@ -128,13 +139,38 @@ public class SysMenuController extends BaseController { @ApiOperation("用户菜单权限升级") @GetMapping("/upgradeMenus") //@RequiresPermissions("sys:menu:info") - @SystemControllerLog(description = "用户管理-权限查找") + @SystemControllerLog(description = "用户管理-权限升级") public ResultData upgradeMenus() { logger.debug("[" + getIpAddr() + "] MallPermissionController::upgradeMenus"); MallUserInfo userInfo = getUser(); if(userInfo.isFmSuperAdmin()) { - // 获取 role - // + // 已有Role + MallRole q = new MallRole(); + List mallRoleList = mallRoleService.getList(q); + for(MallRole mallRole: mallRoleList) { + MallRolePermission qRP = new MallRolePermission(); + qRP.setRoleId(mallRole.getId()); + List mallRolePermissionList = mallRolePermissionService.getList(qRP); + if(mallRolePermissionList.stream().allMatch((rolePermission->(rolePermission.getPermissionId().longValue() <= (long)EnumMenuType.HARDWARE.getCode())))){ + // 添加子权限给此role + for(MallRolePermission mRP: mallRolePermissionList) { + List pList = new ArrayList<>(); + // 二级菜单 + List subList1 = mallPermissionService.getByParentId(mRP.getPermissionId()); + for(MallPermission mp: subList1) { + pList.add(mp.getId()); + // 三级菜单 + List subList2 = mallPermissionService.getByParentId(mRP.getPermissionId()); + if(subList2.size() > 0) { + subList2.stream().forEach(smp->{ + pList.add(smp.getId()); + }); + } + } + mallRolePermissionService.savePermissions(mRP.getTenantId(), mRP.getRoleId(), (Long[])pList.toArray()); + } + } + } } return new ResultData(ErrorCode.USER_NO_PERMISSION); } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMenuType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMenuType.java index ef2973bc3..684f78f7e 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMenuType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMenuType.java @@ -4,7 +4,15 @@ package com.iformall.enums; * Created by Stormeye on 2018/08/09. */ public enum EnumMenuType { - MOBILE_ADMIN(8, "移动端数据塔台") + CONTROL_TOWER(1, "数据塔台"), + SHOP_MERCHANT(2, "商户商铺"), + CONTRACT_MANAGER(3, "合同管理"), + BILL_MANAGER(4, "账单管理"), + MEM_SYSTEM(5, "会员系统"), + SALE_SYSTEM(6, "营销系统"), + ACCOUNT_MANAGER(7, "账号管理"), + MOBILE_ADMIN(8, "移动端数据塔台"), + HARDWARE(9, "智能硬件"), ; public static EnumMenuType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/MallRoleService.java b/mallinkService/src/main/java/com/iformall/service/MallRoleService.java index 0e68f795a..03739ff88 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallRoleService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallRoleService.java @@ -17,6 +17,14 @@ public interface MallRoleService { */ PageInfo listAsPage(MallRole record, Integer pageIndex, Integer pageSize); + /** + * 根据实体查询列表 + * + * @param record + * @return + */ + List getList(MallRole record); + /** * 根据实体查询count * @param record diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java index fa4837c75..7160f69a7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallRoleServiceImpl.java @@ -28,6 +28,11 @@ public class MallRoleServiceImpl implements MallRoleService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> mallRoleMapper.findList(record)); } + @Override + public List getList(MallRole record) { + return mallRoleMapper.findList(record); + } + @Override public int countList(MallRole record) { return mallRoleMapper.selectCount(record);