增加部门
This commit is contained in:
parent
6e79e0faac
commit
74cb4a3255
@ -5,6 +5,7 @@ import com.qqchen.deploy.backend.framework.api.Response;
|
||||
import com.qqchen.deploy.backend.framework.controller.BaseController;
|
||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||
import com.qqchen.deploy.backend.model.query.DepartmentQuery;
|
||||
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||
import com.qqchen.deploy.backend.service.IDepartmentService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -25,7 +26,7 @@ public class DepartmentApiController extends BaseController<Department, Departme
|
||||
|
||||
@Operation(summary = "获取部门树")
|
||||
@GetMapping("/tree")
|
||||
public Response<List<DepartmentDTO>> getTree() {
|
||||
public Response<List<DepartmentResponse>> getTree() {
|
||||
return Response.success(departmentService.getTree());
|
||||
}
|
||||
|
||||
|
||||
@ -36,6 +36,12 @@ public class MenuApiController extends BaseController<Menu, MenuDTO, Long, MenuQ
|
||||
return Response.success(menuService.getUserMenus());
|
||||
}
|
||||
|
||||
@Operation(summary = "获取菜单树")
|
||||
@GetMapping("/tree")
|
||||
public Response<List<MenuResponse>> getTree() {
|
||||
return Response.success(menuService.getMenuTree());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void exportData(HttpServletResponse response, List<MenuDTO> data) {
|
||||
|
||||
|
||||
@ -3,10 +3,20 @@ package com.qqchen.deploy.backend.converter;
|
||||
import com.qqchen.deploy.backend.entity.Department;
|
||||
import com.qqchen.deploy.backend.framework.converter.BaseConverter;
|
||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface DepartmentConverter extends BaseConverter<Department, DepartmentDTO> {
|
||||
// 继承了 BaseConverter 的方法,不需要再声明
|
||||
|
||||
@Mapping(target = "children", expression = "java(toResponseList(dto.getChildren()))")
|
||||
DepartmentResponse toResponse(DepartmentDTO dto);
|
||||
|
||||
List<DepartmentResponse> toResponseList(List<DepartmentDTO> dtoList);
|
||||
|
||||
}
|
||||
@ -0,0 +1,57 @@
|
||||
package com.qqchen.deploy.backend.model.response;
|
||||
|
||||
import com.qqchen.deploy.backend.framework.dto.BaseResponse;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DepartmentResponse extends BaseResponse {
|
||||
|
||||
/**
|
||||
* 部门编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 部门描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 上级部门ID
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 显示排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private Boolean enabled;
|
||||
|
||||
/**
|
||||
* 负责人ID
|
||||
*/
|
||||
private Long leaderId;
|
||||
|
||||
/**
|
||||
* 负责人姓名
|
||||
*/
|
||||
private String leaderName;
|
||||
|
||||
/**
|
||||
* 子部门列表
|
||||
*/
|
||||
private List<DepartmentResponse> children;
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.qqchen.deploy.backend.service;
|
||||
import com.qqchen.deploy.backend.entity.Department;
|
||||
import com.qqchen.deploy.backend.framework.service.IBaseService;
|
||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,5 +12,5 @@ public interface IDepartmentService extends IBaseService<Department, DepartmentD
|
||||
/**
|
||||
* 获取部门树
|
||||
*/
|
||||
List<DepartmentDTO> getTree();
|
||||
List<DepartmentResponse> getTree();
|
||||
}
|
||||
@ -20,4 +20,9 @@ public interface IMenuService extends IBaseService<Menu, MenuDTO, Long> {
|
||||
* @return 用户菜单
|
||||
*/
|
||||
List<MenuResponse> getUserMenus();
|
||||
|
||||
/**
|
||||
* 获取菜单树
|
||||
*/
|
||||
List<MenuDTO> getTree();
|
||||
}
|
||||
@ -6,6 +6,7 @@ import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||
import com.qqchen.deploy.backend.model.DepartmentDTO;
|
||||
import com.qqchen.deploy.backend.model.response.DepartmentResponse;
|
||||
import com.qqchen.deploy.backend.repository.IDepartmentRepository;
|
||||
import com.qqchen.deploy.backend.service.IDepartmentService;
|
||||
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
||||
@ -42,9 +43,10 @@ public class DepartmentServiceImpl extends BaseServiceImpl<Department, Departmen
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DepartmentDTO> getTree() {
|
||||
public List<DepartmentResponse> getTree() {
|
||||
List<Department> departments = departmentRepository.findByDeletedFalseOrderBySort();
|
||||
return buildTree(departments);
|
||||
List<DepartmentDTO> dtoTree = buildTree(departments);
|
||||
return departmentConverter.toResponseList(dtoTree);
|
||||
}
|
||||
|
||||
private List<DepartmentDTO> buildTree(List<Department> departments) {
|
||||
|
||||
@ -19,6 +19,7 @@ import java.util.Map;
|
||||
import java.util.ArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
|
||||
import static com.qqchen.deploy.backend.framework.annotation.ServiceType.Type.DATABASE;
|
||||
|
||||
@ -66,6 +67,39 @@ public class MenuServiceImpl extends BaseServiceImpl<Menu, MenuDTO, Long> implem
|
||||
return menuConverter.toResponseList(menuTree);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MenuDTO> getTree() {
|
||||
List<Menu> menus = menuRepository.findByDeletedFalseOrderBySort();
|
||||
return buildTree(menus);
|
||||
}
|
||||
|
||||
private List<MenuDTO> buildTree(List<Menu> menus) {
|
||||
Map<Long, MenuDTO> dtoMap = new HashMap<>();
|
||||
List<MenuDTO> roots = new ArrayList<>();
|
||||
|
||||
// 转换为DTO并建立映射
|
||||
menus.forEach(menu -> {
|
||||
MenuDTO dto = menuConverter.toDto(menu);
|
||||
dto.setChildren(new ArrayList<>());
|
||||
dtoMap.put(dto.getId(), dto);
|
||||
});
|
||||
|
||||
// 构建树形结构
|
||||
menus.forEach(menu -> {
|
||||
MenuDTO dto = dtoMap.get(menu.getId());
|
||||
if (menu.getParentId() == null || menu.getParentId() == 0) {
|
||||
roots.add(dto);
|
||||
} else {
|
||||
MenuDTO parent = dtoMap.get(menu.getParentId());
|
||||
if (parent != null) {
|
||||
parent.getChildren().add(dto);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return roots;
|
||||
}
|
||||
|
||||
private List<MenuDTO> buildMenuTree(List<MenuDTO> menus) {
|
||||
// 使用Map存储所有菜单,便于查找
|
||||
Map<Long, MenuDTO> menuMap = menus.stream()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user