DataAuthController.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.dragoninfo.dcuc.authweb.restcontroller.auth;
  2. import com.alibaba.fastjson.JSON;
  3. import com.dragoninfo.dcuc.auth.auth.dto.DataClassifyDTO;
  4. import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthDTO;
  5. import com.dragoninfo.dcuc.auth.auth.dto.SubDataAuthQueryDTO;
  6. import com.dragoninfo.dcuc.auth.auth.dto.SubDataDTO;
  7. import com.dragoninfo.dcuc.auth.auth.enumresources.SubDataAuthTypeEnum;
  8. import com.dragoninfo.dcuc.auth.auth.facade.IDataAuthFacade;
  9. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.data.*;
  10. import com.dragoninfo.dcuc.authweb.util.VersionUtils;
  11. import com.dragoninfo.dcuc.user.label.ILabelFacade;
  12. import com.dragoninfo.dcuc.user.label.dto.LabelSearchDto;
  13. import com.dragoninfo.dcuc.user.label.vo.LabelTreeVO;
  14. import com.dragoninfo.duceap.core.response.Result;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiImplicitParam;
  17. import io.swagger.annotations.ApiImplicitParams;
  18. import io.swagger.annotations.ApiOperation;
  19. import org.apache.commons.collections.CollectionUtils;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * @author mazq
  30. * @date 2021/4/6
  31. */
  32. @Api(tags ="数据授权API")
  33. @RestController
  34. @RequestMapping("authsvr/"+ VersionUtils.VERSION_UID +"/dataauth")
  35. public class DataAuthController {
  36. Logger logger = LoggerFactory.getLogger(DataAuthController.class);
  37. @Autowired
  38. IDataAuthFacade dataAuthFacade;
  39. @Autowired
  40. ILabelFacade labelFacade;
  41. @ApiOperation(value = "获取属性列表,树形结构:警种1-业务域N")
  42. @ApiImplicitParam(name = "name", value = "查询条件")
  43. @RequestMapping(value = "businessTreeList", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
  44. public Result businessTreeList(@RequestBody LabelSearchDto labelSearchDto){
  45. List<LabelTreeVO> labelTreeList = labelFacade.labelTreeList(labelSearchDto);
  46. return Result.success(labelTreeList);
  47. }
  48. @ApiOperation(value = "获取所有数据资源,返回返回树结构")
  49. @ApiImplicitParam(name = "attrType",value = "数据属性类型 TABLE:表 COLUMN:列")
  50. @GetMapping(value = "allDataTree", produces = "application/json;charset=UTF-8")
  51. public Result<List<DataClassifyVo>> getAllDataResource(@RequestParam("attrType") String attrType){
  52. logger.info("allDataTree>>attrType:{}", attrType);
  53. List<DataClassifyDTO> dtos = dataAuthFacade.getAllDataResourceTree(attrType);
  54. List<DataClassifyVo> vos = dtos.stream().map(item -> {
  55. DataClassifyVo vo = new DataClassifyVo();
  56. BeanUtils.copyProperties(item, vo);
  57. return vo;
  58. }).collect(Collectors.toList());
  59. return Result.success(vos);
  60. }
  61. @ApiOperation(value = "人员数据授权接口")
  62. @PostMapping(value = "userDataAuth", produces = "application/json;charset=UTF-8")
  63. public Result<Boolean> userDataAuth(@RequestBody UserDataAuthAcceptVo vo){
  64. List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
  65. if(CollectionUtils.isEmpty(authVoList)) {
  66. return Result.failMessage("权限集合为空");
  67. }
  68. logger.info("userDataAuth>>userDataAuthAcceptVo",JSON.toJSONString(vo));
  69. SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getUserId(), SubDataAuthTypeEnum.SUB_DATA_AUTH_USER.getValue(), vo.getAuthType(), authVoList);
  70. dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
  71. return Result.success(true);
  72. }
  73. @ApiOperation(value = "机构数据授权接口")
  74. @PostMapping(value = "orgDataAuth", produces = "application/json;charset=UTF-8")
  75. public Result<Boolean> orgDataAuth(@RequestBody OrgDataAuthAcceptVo vo){
  76. List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
  77. if(CollectionUtils.isEmpty(authVoList)){
  78. return Result.failMessage("权限集合为空");
  79. }
  80. logger.info("orgDataAuth>>orgDataAuthAcceptVo",JSON.toJSONString(vo));
  81. SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getOrgId(), SubDataAuthTypeEnum.SUB_DATA_AUTH_ORG.getValue(), vo.getAuthType(), authVoList);
  82. dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
  83. return Result.success(true);
  84. }
  85. @ApiOperation(value = "业务域标签数据授权接口")
  86. @PostMapping(value = "labelDataAuth", produces = "application/json;charset=UTF-8")
  87. public Result<Boolean> labelDataAuth(@RequestBody LabelDataAuthAcceptVo vo){
  88. List<DataAuthAcceptVo> authVoList = vo.getAuthVoList();
  89. if(CollectionUtils.isEmpty(authVoList)){
  90. return Result.failMessage("权限集合为空");
  91. }
  92. logger.info("labelDataAuth>>labelDataAuthAcceptVo",JSON.toJSONString(vo));
  93. SubDataAuthDTO subDataAuthDTO = convertToSubAuthDTO(vo.getCode(), SubDataAuthTypeEnum.SUB_DATA_AUTH_BUSINESS.getValue(), vo.getAuthType(), authVoList);
  94. dataAuthFacade.subDataAuthAdd(subDataAuthDTO);
  95. return Result.success(true);
  96. }
  97. @ApiOperation(value = "查询多个主体相关数据权限")
  98. @PostMapping(value = "subListDataAuth", produces = "application/json;charset=UTF-8")
  99. public Result subDataAuthList(@RequestBody List<SubDataAuthQueryVo> queryVoList) {
  100. return Result.success();
  101. }
  102. @ApiOperation(value = "查询单个主体数据权限")
  103. @PostMapping(value = "getSubDataAuth" , produces = "application/json;charset=UTF-8")
  104. public Result<List<DataClassifyVo>> getSubDataAuth(@RequestBody SubDataAuthQueryVo queryVo){
  105. logger.info("getSubDataAuth >> vo:{}",JSON.toJSONString(queryVo));
  106. SubDataAuthQueryDTO queryDTO = new SubDataAuthQueryDTO();
  107. BeanUtils.copyProperties(queryVo,queryDTO);
  108. List<DataClassifyDTO> dtos = dataAuthFacade.getSubDataAuth(queryDTO);
  109. List<DataClassifyVo> vos = dtos.stream().map(item -> {
  110. DataClassifyVo vo = new DataClassifyVo();
  111. BeanUtils.copyProperties(item, vo);
  112. return vo;
  113. }).collect(Collectors.toList());
  114. return Result.success(vos);
  115. }
  116. @ApiOperation(value = "人员视角数据权限查询-根据人员id查询")
  117. @ApiImplicitParams(value = {
  118. @ApiImplicitParam(name = "userId",value = "人员id"),
  119. @ApiImplicitParam(name = "authType",value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
  120. })
  121. @GetMapping(value = "dataAuthInfoByUserId" , produces = "application/json;charset=UTF-8")
  122. public Result<List<DataClassifyVo>> userDataAuthInfoById(@RequestParam("userId") String userId,
  123. @RequestParam(value = "authType") String authType){
  124. logger.info("dataAuthInfoByUserId >> userId:{},authType:{}", userId, authType);
  125. List<DataClassifyDTO> dtos = dataAuthFacade.userDataAuthInfoByUserId(userId, authType);
  126. List<DataClassifyVo> vos = dtos.stream().map(item -> {
  127. DataClassifyVo vo = new DataClassifyVo();
  128. BeanUtils.copyProperties(item, vo);
  129. return vo;
  130. }).collect(Collectors.toList());
  131. return Result.success(vos);
  132. }
  133. @ApiOperation(value = "人员视角数据权限查询-根据人员身份证号查询")
  134. @ApiImplicitParams(value = {
  135. @ApiImplicitParam(name = "idcard",value = "身份证号"),
  136. @ApiImplicitParam(name = "authType",value = "数据属性授权类型 TABLE:表授权 COLUMN:列授权")
  137. })
  138. @GetMapping(value = "dataAuthInfoByIdcard" , produces = "application/json;charset=UTF-8")
  139. public Result<List<DataClassifyVo>> userDataAuthInfoByIdcard(@RequestParam("idcard") String idcard,
  140. @RequestParam(value = "authType") String authType){
  141. List<DataClassifyDTO> dtos = dataAuthFacade.userDataAuthInfoByIdcard(idcard, authType);
  142. List<DataClassifyVo> vos = dtos.stream().map(item -> {
  143. DataClassifyVo vo = new DataClassifyVo();
  144. BeanUtils.copyProperties(item, vo);
  145. return vo;
  146. }).collect(Collectors.toList());
  147. return Result.success(vos);
  148. }
  149. private SubDataAuthDTO convertToSubAuthDTO(String subId, String subType, String authType,List<DataAuthAcceptVo> authVoList) {
  150. SubDataAuthDTO subDataAuthDTO = new SubDataAuthDTO(subId,subType,authType);
  151. List<SubDataDTO> dataDTOList = new ArrayList<>();
  152. for (DataAuthAcceptVo vo : authVoList) {
  153. SubDataDTO subDataDTO = new SubDataDTO();
  154. subDataDTO.setDataType(vo.getDataType());
  155. subDataDTO.setDataCode(vo.getDataCode());
  156. dataDTOList.add(subDataDTO);
  157. }
  158. subDataAuthDTO.setDataAuthList(dataDTOList);
  159. return subDataAuthDTO;
  160. }
  161. }