系统推送,系统菜单
This commit is contained in:
parent
82e8dc0bfe
commit
05fb11d4e7
@ -89,7 +89,7 @@ public class SysPushServiceImpl implements SysPushService {
|
||||
createRecordParam.getTitle(), ex);
|
||||
throw ex;
|
||||
} finally {
|
||||
ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE, !sysPushRecordLogService.save(pushLog));
|
||||
ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE, sysPushRecordLogService.save(pushLog));
|
||||
createRecordParam.setId(pushLog.getId());
|
||||
}
|
||||
}
|
||||
@ -157,7 +157,7 @@ public class SysPushServiceImpl implements SysPushService {
|
||||
ResponseAssert.notNull(ResponseErrorCode.REQUEST_PARAMETER_ERROR,
|
||||
SysOriginPlatformEnum.toEnum(createRecordParam.getSysOrigin()));
|
||||
ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR,
|
||||
!createRecordParam.isGoogleDevice());
|
||||
createRecordParam.isGoogleDevice());
|
||||
}
|
||||
|
||||
private void pushGoogle(CreateRecordCmd createRecordParam,
|
||||
@ -176,7 +176,7 @@ public class SysPushServiceImpl implements SysPushService {
|
||||
}
|
||||
|
||||
ResponseAssert.isTrue(ResponseErrorCode.REQUEST_PARAMETER_ERROR,
|
||||
!pushCmd.isNotEmptyAndroidDevices() && !pushCmd.isNotEmptyIosDevices());
|
||||
pushCmd.isNotEmptyAndroidDevices() || pushCmd.isNotEmptyIosDevices());
|
||||
ResponseAssert.checkSuccess(googleFirebasePushClient.broadcast(pushCmd));
|
||||
}
|
||||
|
||||
|
||||
@ -11,9 +11,12 @@ import com.red.circle.console.infra.database.rds.service.admin.MenuService;
|
||||
import com.red.circle.console.infra.database.util.TreeUtils;
|
||||
import com.red.circle.framework.mybatis.service.impl.BaseServiceImpl;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
@ -101,12 +104,65 @@ public class MenuServiceImpl extends BaseServiceImpl<MenuDAO, Menu> implements M
|
||||
|
||||
@Override
|
||||
public List<MenuTreeDTO> listUserPermMenu(Integer uid) {
|
||||
List<MenuTreeDTO> menus = baseDAO.findUserPermMenus(uid, StatusEnum.NORMAL,
|
||||
Arrays.asList(MenuTypeEnum.CATALOG, MenuTypeEnum.MENU));
|
||||
List<MenuTreeDTO> menus = appendMissingAncestorMenus(
|
||||
baseDAO.findUserPermMenus(uid, StatusEnum.NORMAL,
|
||||
Arrays.asList(MenuTypeEnum.CATALOG, MenuTypeEnum.MENU)));
|
||||
return menus.stream().filter(e -> !parentIdNotNull(e.getParentId()))
|
||||
.map(e -> TreeUtils.findChildren(e, menus)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<MenuTreeDTO> appendMissingAncestorMenus(List<MenuTreeDTO> menus) {
|
||||
if (CollectionUtils.isEmpty(menus)) {
|
||||
return menus;
|
||||
}
|
||||
|
||||
Map<Integer, MenuTreeDTO> menuMap = new LinkedHashMap<>();
|
||||
menus.stream()
|
||||
.filter(menu -> Objects.nonNull(menu.getId()))
|
||||
.forEach(menu -> menuMap.put(menu.getId(), menu));
|
||||
|
||||
Set<Integer> missingParentIds = findMissingParentIds(menuMap);
|
||||
while (CollectionUtils.isNotEmpty(missingParentIds)) {
|
||||
List<Menu> parentMenus = query()
|
||||
.eq(Menu::getStatus, StatusEnum.NORMAL)
|
||||
.in(Menu::getMenuType, Arrays.asList(MenuTypeEnum.CATALOG, MenuTypeEnum.MENU))
|
||||
.in(Menu::getId, missingParentIds)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(parentMenus)) {
|
||||
break;
|
||||
}
|
||||
|
||||
parentMenus.stream()
|
||||
.filter(menu -> Objects.nonNull(menu.getId()))
|
||||
.filter(menu -> !menuMap.containsKey(menu.getId()))
|
||||
.forEach(menu -> menuMap.put(menu.getId(), toMenuTreeDTO(menu)));
|
||||
missingParentIds = findMissingParentIds(menuMap);
|
||||
}
|
||||
|
||||
return new ArrayList<>(menuMap.values());
|
||||
}
|
||||
|
||||
private Set<Integer> findMissingParentIds(Map<Integer, MenuTreeDTO> menuMap) {
|
||||
return menuMap.values().stream()
|
||||
.map(MenuTreeDTO::getParentId)
|
||||
.filter(this::parentIdNotNull)
|
||||
.filter(parentId -> !menuMap.containsKey(parentId))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
private MenuTreeDTO toMenuTreeDTO(Menu menu) {
|
||||
MenuTreeDTO dto = new MenuTreeDTO();
|
||||
dto.setId(menu.getId());
|
||||
dto.setParentId(menu.getParentId());
|
||||
dto.setMenuName(menu.getMenuName());
|
||||
dto.setMenuType(menu.menuTypeToInt());
|
||||
dto.setRouter(menu.getRouter());
|
||||
dto.setPath(menu.getPath());
|
||||
dto.setIcon(menu.getIcon());
|
||||
dto.setAlias(menu.getAlias());
|
||||
return dto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getUserPermButtonAliases(Integer uid) {
|
||||
return baseDAO
|
||||
|
||||
@ -1,14 +1,20 @@
|
||||
package com.red.circle.console.infra.database.rds.service.admin.impl;
|
||||
|
||||
import com.red.circle.console.infra.database.rds.dao.admin.RoleMenuDAO;
|
||||
import com.red.circle.console.infra.database.rds.entity.admin.Menu;
|
||||
import com.red.circle.console.infra.database.rds.entity.admin.RoleMenu;
|
||||
import com.red.circle.console.infra.database.rds.service.admin.MenuService;
|
||||
import com.red.circle.console.infra.database.rds.service.admin.RoleMenuService;
|
||||
import com.red.circle.framework.mybatis.service.impl.BaseServiceImpl;
|
||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -20,14 +26,47 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
* @author pengliang
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RoleMenuServiceImpl extends BaseServiceImpl<RoleMenuDAO, RoleMenu> implements
|
||||
RoleMenuService {
|
||||
|
||||
private final MenuService menuService;
|
||||
|
||||
@Override
|
||||
public void saveRoleMenu(Integer roleId, List<Integer> menuIds) {
|
||||
delete().eq(RoleMenu::getRoleId, roleId).execute();
|
||||
if (CollectionUtils.isEmpty(menuIds)) {
|
||||
return;
|
||||
}
|
||||
Set<Integer> normalizedMenuIds = collectMenuIdsWithAncestors(menuIds);
|
||||
saveBatch(
|
||||
menuIds.stream().map(menuId -> new RoleMenu(roleId, menuId)).collect(Collectors.toList()));
|
||||
normalizedMenuIds.stream()
|
||||
.map(menuId -> new RoleMenu(roleId, menuId))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
private Set<Integer> collectMenuIdsWithAncestors(List<Integer> menuIds) {
|
||||
Set<Integer> result = menuIds.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toCollection(LinkedHashSet::new));
|
||||
Set<Integer> pendingIds = new HashSet<>(result);
|
||||
|
||||
while (CollectionUtils.isNotEmpty(pendingIds)) {
|
||||
List<Menu> menus = menuService.query()
|
||||
.select(Menu::getId, Menu::getParentId)
|
||||
.in(Menu::getId, pendingIds)
|
||||
.list();
|
||||
pendingIds.clear();
|
||||
|
||||
for (Menu menu : menus) {
|
||||
Integer parentId = menu.getParentId();
|
||||
if (parentId != null && parentId != 0 && result.add(parentId)) {
|
||||
pendingIds.add(parentId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user