diff --git a/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/category/CategoryController.java b/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/category/CategoryController.java new file mode 100644 index 0000000..215a39c --- /dev/null +++ b/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/category/CategoryController.java @@ -0,0 +1,28 @@ +package com.electromagnetic.industry.software.data.manage.controller.category; + +import com.electromagnetic.industry.software.data.manage.facade.Category.CategoryFacade; +import electromagnetic.data.framework.share.model.ElectromagneticResult; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RequestMapping("/data/ed/category") +@RestController +public class CategoryController { + + @Resource + CategoryFacade categoryFacade; + + /** + * 目录树查询 + */ + @ApiOperation(value = "目录树查询", notes = "") + @RequestMapping(value = "/tree", method = RequestMethod.GET) + public ElectromagneticResult categoryTree() { + return categoryFacade.categoryTree(); + } + +} diff --git a/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/user/UserController.java b/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/user/UserController.java index f47a2dd..9eea355 100644 --- a/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/user/UserController.java +++ b/bootstrap/src/main/java/com/electromagnetic/industry/software/data/manage/controller/user/UserController.java @@ -45,7 +45,6 @@ public class UserController { @ApiOperation(value = "获取单条用户信息", notes = "") @RequestMapping(value = "/getInfo", method = RequestMethod.GET) public ElectromagneticResult getSingleUser(GetSingleUserRequest getSingleUserRequest) { - System.out.println(getSingleUserRequest.getUserId()); return userFacade.getSingleUser(getSingleUserRequest); } diff --git a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/category/model/Category.java b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/category/model/Category.java new file mode 100644 index 0000000..6643fc2 --- /dev/null +++ b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/category/model/Category.java @@ -0,0 +1,82 @@ +package com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model; + +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Data +public class Category implements Serializable { + + /** + * 主键ID + */ + private Long id; + + /** + * 目录类型ID + */ + private String categoryTypeId; + + /** + * 上级编码,为空则为一级 + */ + private String parentId; + + /** + * 目录编码 + */ + private String categoryId; + + /** + * 目录名称 + */ + private String categoryName; + + /** + * 目录状态 + */ + private String categoryStatus; + + /** + * 创建人 + */ + private String creator; + + /** + * 创建人姓名 + */ + private String creatorName; + + /** + * 创建时间 + */ + private Date gmtCreate; + + /** + * 编辑人 + */ + private String modifier; + + /** + * 编辑人姓名 + */ + private String modifierName; + + /** + * 编辑时间 + */ + private Date gmtModified; + + /** + * 是否有效:0-无效 1-有效 + */ + private int effectFlag; + + /** + * 子目录 + */ + private List children = new ArrayList<>(); +} diff --git a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/repository/CategoryRepository.java b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/repository/CategoryRepository.java new file mode 100644 index 0000000..42d01a0 --- /dev/null +++ b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/repository/CategoryRepository.java @@ -0,0 +1,18 @@ +package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; + +import java.util.List; + +public interface CategoryRepository { + + /** + * 获取顶级节点 + */ + List getTopCategories(); + + /** + * 获取所有节点 + */ + List getAllCategories(); +} diff --git a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/CategoryService.java b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/CategoryService.java new file mode 100644 index 0000000..1a62adb --- /dev/null +++ b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/CategoryService.java @@ -0,0 +1,14 @@ +package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; + +import java.util.List; + +public interface CategoryService { + + /** + * 构建树结构 + */ + public List buildCategoryTree(); + +} diff --git a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/TokenService.java b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/TokenService.java index a17daed..2bdacf1 100644 --- a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/TokenService.java +++ b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/TokenService.java @@ -1,6 +1,5 @@ package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service; -import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User; import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo; diff --git a/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/impl/CategoryServiceImpl.java b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..ab1cc51 --- /dev/null +++ b/domain/src/main/java/com/electromagnetic/industry/software/data/manage/domain/boardservice/user/service/impl/CategoryServiceImpl.java @@ -0,0 +1,83 @@ +package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.impl; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; +import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.CategoryRepository; +import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.CategoryService; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class CategoryServiceImpl implements CategoryService { + + @Resource + CategoryRepository categoryRepository; + + /** + * 构建树结构 + */ + @Override + public List buildCategoryTree(){ + List categories = categoryRepository.getAllCategories(); + List returnList = new ArrayList<>(); + List tempList = categories.stream().map(Category::getCategoryId).collect(Collectors.toList()); + for (Category category : categories) { + if (!tempList.contains(category.getParentId())) { + recursionFn(categories, category); + returnList.add(category); + } + } + if (returnList.isEmpty()) { + returnList = categories; + } + return returnList; + } + + /** + * 递归列表 + * @param list + * @param category + */ + private void recursionFn (List list, Category category) { + List childList = getChildList(list, category); + category.setChildren(childList); + for (Category child : childList) { + if (hasChild(list, child)) { + recursionFn(list, child); + } + } + } + + /** + * 得到子节点列表 + * @param list + * @param category + * @return + */ + private List getChildList(List list, Category category) { + List childList = new ArrayList<>(); + Iterator it = list.iterator(); + while (it.hasNext()) { + Category child = it.next(); + if (!StringUtils.isEmpty(child.getParentId()) && child.getParentId().equals(category.getCategoryId())) { + childList.add(child); + } + } + return childList; + } + + /** + * 判断是否有子节点 + * @param list + * @param category + * @return + */ + private boolean hasChild(List list, Category category) { + return !getChildList(list, category).isEmpty(); + } +} diff --git a/facade/src/main/java/com/electromagnetic/industry/software/data/manage/facade/Category/CategoryFacade.java b/facade/src/main/java/com/electromagnetic/industry/software/data/manage/facade/Category/CategoryFacade.java new file mode 100644 index 0000000..63b1509 --- /dev/null +++ b/facade/src/main/java/com/electromagnetic/industry/software/data/manage/facade/Category/CategoryFacade.java @@ -0,0 +1,12 @@ +package com.electromagnetic.industry.software.data.manage.facade.Category; + +import java.util.List; +import electromagnetic.data.framework.share.model.ElectromagneticResult; + +public interface CategoryFacade { + + /** + * 构建树结构 + */ + ElectromagneticResult categoryTree(); +} diff --git a/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/dao/CategoryMapper.java b/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/dao/CategoryMapper.java new file mode 100644 index 0000000..762c437 --- /dev/null +++ b/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/dao/CategoryMapper.java @@ -0,0 +1,22 @@ +package com.electromagnetic.industry.software.data.manage.repository.dao; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface CategoryMapper { + + /** + * 获取顶级节点 + * @return + */ + List selectTopCategories(); + + /** + * 获取所有节点 + * @return + */ + List selectAllCategories(); +} diff --git a/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/impl/CategoryRepositoryImpl.java b/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/impl/CategoryRepositoryImpl.java new file mode 100644 index 0000000..ae4471f --- /dev/null +++ b/infrastructure/repository/src/main/java/com/electromagnetic/industry/software/data/manage/repository/impl/CategoryRepositoryImpl.java @@ -0,0 +1,33 @@ +package com.electromagnetic.industry.software.data.manage.repository.impl; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; +import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.CategoryRepository; +import com.electromagnetic.industry.software.data.manage.repository.dao.CategoryMapper; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +@Repository +public class CategoryRepositoryImpl implements CategoryRepository { + + @Resource + CategoryMapper categoryMapper; + + /** + * 获取顶级节点 + */ + @Override + public List getTopCategories(){ + return categoryMapper.selectTopCategories(); + } + + /** + * 获取所有节点 + */ + @Override + public List getAllCategories(){ + return categoryMapper.selectAllCategories(); + } + +} diff --git a/infrastructure/repository/src/main/resources/sqlmapper/CategoryMapper.xml b/infrastructure/repository/src/main/resources/sqlmapper/CategoryMapper.xml new file mode 100644 index 0000000..86f06c8 --- /dev/null +++ b/infrastructure/repository/src/main/resources/sqlmapper/CategoryMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + select category_type_id, parent_id, category_id, category_name, category_status, + creator, creator_name, gmt_create, modifier, modifier_name, gmt_modified, effect_flag + from ed_category + + + + + + \ No newline at end of file diff --git a/service/src/main/java/com/electromagnetic/industry/software/data/manage/service/facade/user/CategoryFacadeImpl.java b/service/src/main/java/com/electromagnetic/industry/software/data/manage/service/facade/user/CategoryFacadeImpl.java new file mode 100644 index 0000000..cd38858 --- /dev/null +++ b/service/src/main/java/com/electromagnetic/industry/software/data/manage/service/facade/user/CategoryFacadeImpl.java @@ -0,0 +1,26 @@ +package com.electromagnetic.industry.software.data.manage.service.facade.user; + +import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category; +import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.CategoryService; +import com.electromagnetic.industry.software.data.manage.facade.Category.CategoryFacade; +import electromagnetic.data.framework.share.model.ElectromagneticResult; +import electromagnetic.data.framework.share.model.ElectromagneticResultUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class CategoryFacadeImpl implements CategoryFacade { + + @Resource + CategoryService categoryService; + + /** + * 构建树结构 + */ + public ElectromagneticResult categoryTree(){ + List list =categoryService.buildCategoryTree(); + return ElectromagneticResultUtil.success(list); + } +}