AppFunInfoController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.dragoninfo.dcuc.authweb.restcontroller.auth;
  2. import com.dragoninfo.dcuc.auth.auth.dto.AppFunTreeDTO;
  3. import com.dragoninfo.dcuc.auth.auth.entity.AppFunInfo;
  4. import com.dragoninfo.dcuc.auth.auth.vo.AppFunInfoVo;
  5. import com.dragoninfo.dcuc.auth.auth.vo.TreeInfoVO;
  6. import com.dragoninfo.dcuc.auth.auth.vo.appfun.RespAppFunTreeVo;
  7. import com.dragoninfo.dcuc.auth.power.facade.IAppFunInfoFacade;
  8. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.AppFunTreeVo;
  9. import com.dragoninfo.duceap.core.response.Result;
  10. import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
  11. import com.dragonsoft.duceap.base.entity.search.SearchDTO;
  12. import com.dragonsoft.duceap.base.enums.BooleanEnum;
  13. import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
  14. import com.dragonsoft.duceap.commons.util.tree.SimpleTreeNodeItemResolver;
  15. import com.dragonsoft.duceap.commons.util.tree.TreeNodeUtils;
  16. import com.dragonsoft.duceap.core.search.Searchable;
  17. import com.dragonsoft.duceap.web.annotation.Permission;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiImplicitParam;
  20. import io.swagger.annotations.ApiImplicitParams;
  21. import io.swagger.annotations.ApiOperation;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.BeanUtils;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.data.domain.Page;
  27. import org.springframework.validation.annotation.Validated;
  28. import org.springframework.web.bind.annotation.*;
  29. import java.util.ArrayList;
  30. import java.util.List;
  31. import java.util.Map;
  32. import java.util.stream.Collectors;
  33. /**
  34. * 菜单功能信息
  35. *
  36. * @author Administrator
  37. */
  38. @Api(tags = {"授权模块-菜单管理接口"})
  39. @Permission(value = "power_config")
  40. @RestController
  41. @RequestMapping(value = "authsvr/v2/appfuninfo")
  42. public class AppFunInfoController {
  43. public static Logger logger = LoggerFactory.getLogger(AppFunInfoController.class);
  44. @Autowired
  45. private IAppFunInfoFacade iAppFunInfoFacade;
  46. /**
  47. * 获取所有菜单信息列表
  48. *
  49. * @return
  50. */
  51. @ApiOperation(value = "获取所有菜单信息列表")
  52. @ApiImplicitParam(name = "appId", value = "应用id")
  53. @GetMapping(value = "/menuTreeList")
  54. public Result<List<Map<String, Object>>> getMenuTreeList(@RequestParam(value = "appId") String appId) {
  55. List<TreeInfoVO> funList = iAppFunInfoFacade.getAllTreeList(appId, null);
  56. List<Map<String, Object>> maps = TreeNodeUtils.generateTree(funList, new SimpleTreeNodeItemResolver("code", "pid"));
  57. for (Map<String, Object> map : maps) {
  58. List children = (List) map.get("children");
  59. if (CollectionUtils.isNotEmpty(children)) {
  60. map.put("isParent", true);
  61. }
  62. }
  63. return Result.success(maps);
  64. }
  65. @ApiOperation(value = "根据id获取应用的菜单")
  66. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "菜单ID", required = true
  67. , example = "40288a8b699fc2500169a33b20540000")})
  68. @GetMapping(value = "/menuCode/{id}")
  69. public Result<List<AppFunInfoVo>> getMenuCode(@PathVariable("id") String codeId) {
  70. List<AppFunInfo> resultList = iAppFunInfoFacade.getCode(codeId);
  71. List<AppFunInfoVo> vos = new ArrayList<>();
  72. for (AppFunInfo source : resultList) {
  73. AppFunInfoVo vo = new AppFunInfoVo();
  74. BeanUtils.copyProperties(source, vo);
  75. vos.add(vo);
  76. }
  77. return Result.success(vos);
  78. }
  79. /**
  80. * 获取菜单、功能初始化
  81. *
  82. * @param
  83. * @return
  84. */
  85. @ApiOperation(value = "根据id获取应用的菜单")
  86. @ApiImplicitParam(name = "appId", value = "应用id")
  87. @GetMapping(value = "/menu/{appId}")
  88. public Result<List<Map<String, Object>>> getMenu(@PathVariable("appId") String appId) {
  89. //获取该应用的所有节点
  90. List<TreeInfoVO> appAllTreeList = iAppFunInfoFacade.getAllTreeList(appId, BooleanEnum.TRUE.value);
  91. List<Map<String, Object>> maps = TreeNodeUtils.generateTree(appAllTreeList, new SimpleTreeNodeItemResolver("code", "pid"));
  92. for (Map<String, Object> map : maps) {
  93. List children = (List) map.get("children");
  94. if (CollectionUtils.isNotEmpty(children)) {
  95. map.put("isParent", true);
  96. }
  97. }
  98. return Result.success(maps);
  99. }
  100. @ApiOperation(value = "查询功能资源列表")
  101. @ApiImplicitParam(name = "searchable", value = "查询条件(name:功能名称,like;isActive:在用状态(0:停用 1:启用),=;)")
  102. @PostMapping(value = "/search")
  103. public Result<List<AppFunInfoVo>> appFunInfoPage(Searchable searchable) {
  104. SearchDTO searchDTO = searchable.toSearchDTO();
  105. Page<AppFunInfoVo> page = iAppFunInfoFacade.appFunInfoPage(searchDTO);
  106. return Result.success(page.getTotalElements(), page.getContent());
  107. }
  108. @ApiOperation(value = "查询功能详情")
  109. @ApiImplicitParam(name = "id", value = "id")
  110. @GetMapping(value = "/{id}")
  111. public Result<AppFunInfoVo> toDetail(@PathVariable("id") String id) {
  112. //查询查询功能详情
  113. AppFunInfoVo appFunInfoVo = iAppFunInfoFacade.getById(id);
  114. return Result.success(appFunInfoVo);
  115. }
  116. @ApiOperation(value = "功能资源新增")
  117. @ApiImplicitParam(name = "功能资源新增", value = "功能资源新增")
  118. @PostMapping(value = "/save")
  119. public Result saveAppFunInfo(@Validated @RequestBody AppFunInfoVo appFunInfoVo) {
  120. AppFunInfo appFunInfo = new AppFunInfo();
  121. BeanUtils.copyProperties(appFunInfoVo, appFunInfo);
  122. ResponseStatus responseStatus = iAppFunInfoFacade.save(appFunInfo);
  123. if (!responseStatus.getStatusCode().equals(ResponseStatus.SUCCESS_CODE)){
  124. return Result.fail(responseStatus.getStatusCode(), responseStatus.getMessage());
  125. }
  126. return Result.success();
  127. }
  128. @ApiOperation(value = "功能资源修改")
  129. @ApiImplicitParam(name = "功能资源修改", value = "功能资源修改")
  130. @PutMapping(value = "/update")
  131. public Result updateAppFunInfo(@Validated @RequestBody AppFunInfoVo appFunInfoVo) {
  132. ResponseStatus responseStatus = iAppFunInfoFacade.updateAppFunInfo(appFunInfoVo);
  133. if (!responseStatus.getStatusCode().equals(ResponseStatus.SUCCESS_CODE)){
  134. return Result.fail(responseStatus.getStatusCode(), responseStatus.getMessage());
  135. }
  136. return Result.success();
  137. }
  138. @ApiOperation(value = "功能资源删除")
  139. @ApiImplicitParam(name = "功能资源删除", value = "功能资源删除")
  140. @DeleteMapping(value = "/{id}")
  141. public Result deleteAppFunInfo(@PathVariable("id") String id) {
  142. ResponseStatus responseStatus = iAppFunInfoFacade.deleteById(id);
  143. if (!responseStatus.getStatusCode().equals(ResponseStatus.SUCCESS_CODE)){
  144. return Result.fail(responseStatus.getStatusCode(), responseStatus.getMessage());
  145. }
  146. return Result.success();
  147. }
  148. @ApiOperation(value = "全量应用功能树")
  149. @ApiImplicitParam(name = "exclude", value = "exclude 是否需要排除已经通过角色授权的菜单,true 需要排除, 非必填,不选时默认为false")
  150. @GetMapping(value = "/allMenuTree")
  151. public Result allMenuTree(@RequestParam(value = "exclude", required = false) Boolean exclude) {
  152. if(null == exclude) {
  153. exclude = false;
  154. }
  155. List<AppFunTreeDTO> treeDTOS = iAppFunInfoFacade.allMenuTree(exclude);
  156. List<AppFunTreeVo> list = treeDTOS.stream().map(item -> {
  157. AppFunTreeVo treeVo = new AppFunTreeVo();
  158. BeanUtils.copyProperties(item, treeVo);
  159. return treeVo;
  160. }).collect(Collectors.toList());
  161. return Result.success(list);
  162. }
  163. /**
  164. * 查看角色关联的菜单树
  165. */
  166. @ApiOperation(value = "角色关联的菜单树")
  167. @ApiImplicitParam(name = "roleId", value = "角色id")
  168. @GetMapping(value = "/menuTree")
  169. public Result<List<RespAppFunTreeVo>> getRoleMenuTree(@RequestParam("roleId") String roleId) {
  170. List<RespAppFunTreeVo> treeVos = iAppFunInfoFacade.getRoleMenuTree(roleId);
  171. return Result.success(treeVos);
  172. }
  173. }