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);