|
@@ -123,17 +123,18 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|
|
return ResponseJson.error(result.getMsg(), null);
|
|
|
}
|
|
|
List<SysPermission> permissionList = result.getData();
|
|
|
- Integer parentMenuId = getBaseParentId(menu.getId());
|
|
|
- SysMenu baseParentMenu = systemMapper.getMenu(parentMenuId);
|
|
|
+ Integer baseParentId = getBaseParentId(menu.getId());
|
|
|
+ SysMenu baseParentMenu = systemMapper.getMenu(baseParentId);
|
|
|
+ menu.setBaseParentId(baseParentId);
|
|
|
if (2 == menu.getMenuType()) {
|
|
|
- // 移除菜单与供应商基础角色的关联
|
|
|
- removeMenuRoleRelation(menu.getId());
|
|
|
+ // 移除菜单与角色的关联
|
|
|
+ removeMenuRoleRelation(menu, dbMenu);
|
|
|
if (1 == baseParentMenu.getBaseFlag()) {
|
|
|
// 供应商基础菜单
|
|
|
addShopRoleRelation(menu.getId(), permissionList);
|
|
|
} else {
|
|
|
// 供应商会员菜单
|
|
|
- ResponseJson<Void> saveResult = saveVipRole(menu, permissionList);
|
|
|
+ ResponseJson<Void> saveResult = saveVipMenu(menu, permissionList);
|
|
|
if (0 != saveResult.getCode()) {
|
|
|
return saveResult;
|
|
|
}
|
|
@@ -210,14 +211,15 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|
|
}
|
|
|
List<SysPermission> permissionList = result.getData();
|
|
|
if (2 == menu.getMenuType()) {
|
|
|
- Integer parentMenuId = getBaseParentId(menuId);
|
|
|
- SysMenu baseParentMenu = systemMapper.getMenu(parentMenuId);
|
|
|
+ Integer baseParentId = getBaseParentId(menuId);
|
|
|
+ SysMenu baseParentMenu = systemMapper.getMenu(baseParentId);
|
|
|
+ menu.setBaseParentId(baseParentId);
|
|
|
if (1 == baseParentMenu.getBaseFlag()) {
|
|
|
// 会员基础菜单
|
|
|
addShopRoleRelation(menuId, permissionList);
|
|
|
} else {
|
|
|
// 会员订制菜单
|
|
|
- ResponseJson<Void> saveResult = saveVipRole(menu, permissionList);
|
|
|
+ ResponseJson<Void> saveResult = saveVipMenu(menu, permissionList);
|
|
|
if (0 != saveResult.getCode()) {
|
|
|
systemMapper.deleteMenu(menuId);
|
|
|
return saveResult;
|
|
@@ -247,26 +249,35 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseJson<Void> saveVipRole(SysMenu menu, List<SysPermission> permissionList) {
|
|
|
- // 保存会员菜单角色
|
|
|
- SysRole vipMenuRole = new SysRole();
|
|
|
- vipMenuRole.setRoleName(menu.getTitle() + "会员菜单角色");
|
|
|
- vipMenuRole.setRoleDesc(menu.getTitle() + "会员菜单角色");
|
|
|
- vipMenuRole.setMenuIds(menu.getId().toString());
|
|
|
- vipMenuRole.setRoleType(2);
|
|
|
- Integer dbVipRoleId = systemMapper.getVipRoleIdByMenuId(menu.getId());
|
|
|
- ResponseJson<Void> result = null;
|
|
|
- if (null == dbVipRoleId) {
|
|
|
- result = sysRoleService.addRole(vipMenuRole);
|
|
|
+ public ResponseJson<Void> saveVipMenu(SysMenu menu, List<SysPermission> permissionList) {
|
|
|
+ if (0 == menu.getParentId()) {
|
|
|
+ // 供应商订制首层菜单
|
|
|
+ // 保存会员菜单角色
|
|
|
+ SysRole vipMenuRole = new SysRole();
|
|
|
+ vipMenuRole.setRoleName(menu.getTitle() + "会员菜单角色");
|
|
|
+ vipMenuRole.setRoleDesc(menu.getTitle() + "会员菜单角色");
|
|
|
+ vipMenuRole.setMenuIds(menu.getId().toString());
|
|
|
+ vipMenuRole.setRoleType(2);
|
|
|
+ Integer dbVipRoleId = systemMapper.getVipRoleIdByMenuId(menu.getId());
|
|
|
+ ResponseJson<Void> result = null;
|
|
|
+ if (null == dbVipRoleId) {
|
|
|
+ result = sysRoleService.addRole(vipMenuRole);
|
|
|
+ } else {
|
|
|
+ result = sysRoleService.updateRole(dbVipRoleId, vipMenuRole);
|
|
|
+ }
|
|
|
+ if (0 != result.getCode()) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ permissionList.forEach(permission->{
|
|
|
+ systemMapper.insertRolePermissionRelation(vipMenuRole.getId(), permission.getId());
|
|
|
+ });
|
|
|
} else {
|
|
|
- result = sysRoleService.updateRole(dbVipRoleId, vipMenuRole);
|
|
|
- }
|
|
|
- if (0 != result.getCode()) {
|
|
|
- return result;
|
|
|
+ // 供应商订制子菜单
|
|
|
+ // 查询顶层父级菜单对应角色id
|
|
|
+ Integer baseParentRoleId = systemMapper.getVipRoleIdByMenuId(menu.getBaseParentId());
|
|
|
+ // 保存角色菜单关系
|
|
|
+ systemMapper.insertRoleMenuRelation(baseParentRoleId, menu.getId());
|
|
|
}
|
|
|
- permissionList.forEach(permission->{
|
|
|
- systemMapper.insertRolePermissionRelation(vipMenuRole.getId(), permission.getId());
|
|
|
- });
|
|
|
return ResponseJson.success();
|
|
|
}
|
|
|
|
|
@@ -290,10 +301,12 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void removeMenuRoleRelation(Integer menuId) {
|
|
|
+ private void removeMenuRoleRelation(SysMenu menu, SysMenu dbMenu) {
|
|
|
+ Integer menuId = menu.getId();
|
|
|
// 根据角色ID获取菜单Ids
|
|
|
List<Integer> menuIdList = systemMapper.getMenuIdsByRoleId(1);
|
|
|
if (menuIdList.contains(menuId)) {
|
|
|
+ //之前是基础菜单
|
|
|
menuIdList.remove(menuId);
|
|
|
String menuIds = CommonUtil.idListToString(menuIdList, ",");
|
|
|
SysRole sysRole = new SysRole();
|
|
@@ -301,9 +314,15 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|
|
sysRoleService.updateRole(1, sysRole);
|
|
|
sysRoleService.updateRole(2, sysRole);
|
|
|
} else {
|
|
|
+ // 之前是订制菜单
|
|
|
Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
|
|
|
- systemMapper.deleteRole(roleId);
|
|
|
- systemMapper.deleteRoleMenuRelation(roleId);
|
|
|
+ if (1 == menu.getBaseFlag() && 0 == menu.getParentId()) {
|
|
|
+ // 只有顶层订制菜单更改为基础菜单才删除原角色
|
|
|
+ systemMapper.deleteRole(roleId);
|
|
|
+ systemMapper.deleteMenuRoleRelation(menuId);
|
|
|
+ } else {
|
|
|
+ systemMapper.deleteMenuRoleRelation(menuId);
|
|
|
+ }
|
|
|
}
|
|
|
// 根据菜单ID获取权限关联信息
|
|
|
systemMapper.deleteRoleMenuPermission(menuId);
|