|
|
@@ -2,13 +2,13 @@ package cn.reghao.autodop.dmaster.auth.service;
|
|
|
|
|
|
import cn.reghao.autodop.common.result.Result;
|
|
|
import cn.reghao.autodop.common.result.ResultStatus;
|
|
|
-import cn.reghao.autodop.dmaster.auth.db.query.MenuQuery;
|
|
|
-import cn.reghao.autodop.dmaster.auth.model.MenuType;
|
|
|
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuCrud;
|
|
|
+import cn.reghao.autodop.dmaster.auth.db.crud.MenuQuery;
|
|
|
+import cn.reghao.autodop.dmaster.auth.db.crud.RoleCrud;
|
|
|
+import cn.reghao.autodop.dmaster.auth.model.constant.MenuType;
|
|
|
import cn.reghao.autodop.dmaster.auth.model.dto.MenuDTO;
|
|
|
import cn.reghao.autodop.dmaster.auth.model.po.Menu;
|
|
|
import cn.reghao.autodop.dmaster.auth.model.po.Role;
|
|
|
-import cn.reghao.autodop.dmaster.auth.db.repository.MenuRepository;
|
|
|
-import cn.reghao.autodop.dmaster.auth.db.repository.RoleRepository;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -23,14 +23,14 @@ import java.util.stream.Collectors;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class MenuServiceImpl implements MenuService {
|
|
|
- private final MenuRepository menuRepository;
|
|
|
- private final RoleRepository roleRepository;
|
|
|
private final MenuQuery menuQuery;
|
|
|
+ private final MenuCrud menuCrud;
|
|
|
+ private final RoleCrud roleCrud;
|
|
|
|
|
|
- public MenuServiceImpl(MenuRepository menuRepository, RoleRepository roleRepository, MenuQuery menuQuery) {
|
|
|
- this.menuRepository = menuRepository;
|
|
|
- this.roleRepository = roleRepository;
|
|
|
+ public MenuServiceImpl(MenuQuery menuQuery, MenuCrud menuCrud, RoleCrud roleCrud) {
|
|
|
this.menuQuery = menuQuery;
|
|
|
+ this.menuCrud = menuCrud;
|
|
|
+ this.roleCrud = roleCrud;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -43,11 +43,11 @@ public class MenuServiceImpl implements MenuService {
|
|
|
// 调整 menu 组内元素的位置
|
|
|
insertNewMenu(menu);
|
|
|
menu.setIsEnabled(true);
|
|
|
- Menu menuEntity = menuRepository.save(menu);
|
|
|
+ Menu menuEntity = menuCrud.save(menu);
|
|
|
|
|
|
Set<Role> roles = menu.getRoles();
|
|
|
roles.forEach(role -> role.getMenus().add(menuEntity));
|
|
|
- roleRepository.saveAll(roles);
|
|
|
+ roleCrud.saveAll(new ArrayList<>(roles));
|
|
|
return Result.result(ResultStatus.SUCCESS);
|
|
|
}
|
|
|
|
|
|
@@ -82,14 +82,14 @@ public class MenuServiceImpl implements MenuService {
|
|
|
private void insertNewMenu(Menu menu) {
|
|
|
int pid = menu.getPid();
|
|
|
if (pid != 0) {
|
|
|
- Menu pMenu = menuRepository.getOne(pid);
|
|
|
+ Menu pMenu = menuQuery.findById(pid);
|
|
|
if (pMenu.getType().equals(MenuType.page.name())) {
|
|
|
log.error("父级菜单的类型不能是 PAGE");
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- List<Menu> menus = menuRepository.findByPid(pid);
|
|
|
+ List<Menu> menus = menuQuery.findByPid(pid);
|
|
|
menus.sort(Comparator.comparingInt(Menu::getPos));
|
|
|
// 组内没有 menu 或新增的 menu 在组内排在最后一位
|
|
|
if (menus.isEmpty()) {
|
|
|
@@ -126,7 +126,7 @@ public class MenuServiceImpl implements MenuService {
|
|
|
int newPos = tmpMenu.getPos()+1;
|
|
|
tmpMenu.setPos(newPos);
|
|
|
}
|
|
|
- menuRepository.saveAll(menus);
|
|
|
+ menuCrud.saveAll(menus);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -142,13 +142,13 @@ public class MenuServiceImpl implements MenuService {
|
|
|
int newPos = tmpMenu.getPos()-1;
|
|
|
tmpMenu.setPos(newPos);
|
|
|
}
|
|
|
- menuRepository.saveAll(menus);
|
|
|
+ menuCrud.saveAll(menus);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public synchronized Result updateMenu(MenuDTO menuDTO) {
|
|
|
int menuId = menuDTO.getMenuId();
|
|
|
- Menu menuEntity = menuRepository.findById(menuId).orElse(null);
|
|
|
+ Menu menuEntity = menuQuery.findById(menuId);
|
|
|
if (menuEntity == null) {
|
|
|
return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
|
|
|
}
|
|
|
@@ -176,11 +176,11 @@ public class MenuServiceImpl implements MenuService {
|
|
|
menuEntity.setUrl(menuDTO.getUrl());
|
|
|
menuEntity.setIcon(menuDTO.getIcon());
|
|
|
menuEntity.setUpdateTime(LocalDateTime.now());
|
|
|
- menuRepository.save(menuEntity);
|
|
|
+ menuCrud.save(menuEntity);
|
|
|
|
|
|
Set<Role> roles = menuDTO.getRoles();
|
|
|
roles.forEach(role -> role.getMenus().add(menuEntity));
|
|
|
- roleRepository.saveAll(roles);
|
|
|
+ roleCrud.saveAll(new ArrayList<>(roles));
|
|
|
return Result.result(ResultStatus.SUCCESS);
|
|
|
}
|
|
|
|
|
|
@@ -192,7 +192,7 @@ public class MenuServiceImpl implements MenuService {
|
|
|
* @date 2021-07-21 上午11:07
|
|
|
*/
|
|
|
private void reOrderMenus(int pid, int oldPos, int newPos) {
|
|
|
- Map<Integer, Menu> map = menuRepository.findByPid(pid).stream()
|
|
|
+ Map<Integer, Menu> map = menuQuery.findByPid(pid).stream()
|
|
|
.collect(Collectors.toMap(Menu::getPos, menu -> menu));
|
|
|
map.remove(oldPos);
|
|
|
if (newPos < oldPos) {
|
|
|
@@ -206,12 +206,12 @@ public class MenuServiceImpl implements MenuService {
|
|
|
map.get(i).setPos(newPos-j);
|
|
|
}
|
|
|
}
|
|
|
- menuRepository.saveAll(map.values());
|
|
|
+ menuCrud.saveAll(new ArrayList<>(map.values()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public synchronized Result deleteMenu(Integer menuId) {
|
|
|
- Menu menu = menuRepository.findById(menuId).orElse(null);
|
|
|
+ Menu menu = menuQuery.findById(menuId);
|
|
|
if (menu == null) {
|
|
|
return Result.result(ResultStatus.FAIL, String.format("ID 为 %s 的 Menu 不存在", menuId));
|
|
|
}
|
|
|
@@ -219,22 +219,16 @@ public class MenuServiceImpl implements MenuService {
|
|
|
// 删除 Role 关联的 Menu
|
|
|
for (Role role : menu.getRoles()) {
|
|
|
role.getMenus().remove(menu);
|
|
|
- roleRepository.save(role);
|
|
|
+ roleCrud.save(role);
|
|
|
}
|
|
|
|
|
|
// 重新调整组内排序
|
|
|
int pid = menu.getPid();
|
|
|
- List<Menu> menus = menuRepository.findByPid(pid);
|
|
|
+ List<Menu> menus = menuQuery.findByPid(pid);
|
|
|
menus.sort(Comparator.comparingInt(Menu::getPos));
|
|
|
int pos = menu.getPos();
|
|
|
moveForward(menus, pos);
|
|
|
- menuRepository.delete(menu);
|
|
|
- return Result.result(ResultStatus.SUCCESS);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Result setStatus(Integer menuId, boolean enable) {
|
|
|
-
|
|
|
+ menuCrud.delete(menu);
|
|
|
return Result.result(ResultStatus.SUCCESS);
|
|
|
}
|
|
|
}
|