RoleAuthInfoController.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. package com.dragoninfo.dcuc.authweb.restcontroller.auth;
  2. import com.alibaba.fastjson.JSON;
  3. import com.dragoninfo.dcuc.auth.auth.dto.RoleAuthDto;
  4. import com.dragoninfo.dcuc.auth.auth.dto.StaffAssignDTO;
  5. import com.dragoninfo.dcuc.auth.auth.entity.RoleInfo;
  6. import com.dragoninfo.dcuc.auth.auth.entity.StaffAssignAuthInfo;
  7. import com.dragoninfo.dcuc.auth.auth.facade.IRoleAuthInfoFacade;
  8. import com.dragoninfo.dcuc.auth.auth.facade.IRoleInfoFacade;
  9. import com.dragoninfo.dcuc.auth.auth.facade.IStaffAssignAuthInfoFacade;
  10. import com.dragoninfo.dcuc.auth.auth.vo.RoleAuthParamVo;
  11. import com.dragoninfo.dcuc.auth.auth.vo.RoleInfoVO;
  12. import com.dragoninfo.dcuc.authweb.business.MtAuthBusiness;
  13. import com.dragoninfo.dcuc.authweb.common.SysConstants;
  14. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.RoleAuthUserVo;
  15. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.StaffAssignAuthInfoVo;
  16. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.StaffOperateVo;
  17. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.StaffRoleOperateVo;
  18. import com.dragoninfo.dcuc.duceap.facade.ICodeListResourceFacade;
  19. import com.dragoninfo.dcuc.org.entity.OrgInfo;
  20. import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
  21. import com.dragoninfo.dcuc.user.user.entity.UserInfo;
  22. import com.dragoninfo.dcuc.user.user.entity.UserInfoView;
  23. import com.dragoninfo.dcuc.user.user.enumresources.YesNotEnum;
  24. import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade;
  25. import com.dragoninfo.duceap.core.enums.RoleLevelEnum;
  26. import com.dragoninfo.duceap.core.response.Result;
  27. import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
  28. import com.dragonsoft.duceap.base.entity.metadata.CodeRecord;
  29. import com.dragonsoft.duceap.base.entity.search.SearchDTO;
  30. import com.dragonsoft.duceap.base.entity.security.SecurityUser;
  31. import com.dragonsoft.duceap.commons.util.string.StringUtils;
  32. import com.dragonsoft.duceap.core.context.ContextUtils;
  33. import com.dragonsoft.duceap.core.entity.page.PageImpl;
  34. import com.dragonsoft.duceap.core.search.Searchable;
  35. import com.dragonsoft.duceap.core.search.enums.SearchOperator;
  36. import com.dragonsoft.duceap.core.search.filter.Condition;
  37. import com.dragonsoft.duceap.web.annotation.Permission;
  38. import io.swagger.annotations.Api;
  39. import io.swagger.annotations.ApiImplicitParam;
  40. import io.swagger.annotations.ApiImplicitParams;
  41. import io.swagger.annotations.ApiOperation;
  42. import org.springframework.beans.BeanUtils;
  43. import org.springframework.beans.factory.annotation.Autowired;
  44. import org.springframework.data.domain.Page;
  45. import org.springframework.http.MediaType;
  46. import org.springframework.web.bind.annotation.*;
  47. import java.util.*;
  48. @Api(tags = {"授权模块-角色授权管理接口"})
  49. @RestController
  50. @RequestMapping(value = "authsvr/v2/roleauthinfo")
  51. public class RoleAuthInfoController {
  52. @Autowired
  53. private IRoleAuthInfoFacade iRoleAuthInfoFacade;
  54. @Autowired
  55. private IUserInfoFacade iUserInfoFacade;
  56. @Autowired
  57. private IOrgInfoFacade iOrgInfoFacade;
  58. @Autowired
  59. private IRoleInfoFacade roleInfoFacade;
  60. @Autowired
  61. private IStaffAssignAuthInfoFacade staffAssignAuthInfoFacade;
  62. @Autowired
  63. private MtAuthBusiness mtAuthBusiness;
  64. @Autowired
  65. private ICodeListResourceFacade iCodeListResourceFacade;
  66. /**
  67. * 角色视图 人员列表
  68. * @param
  69. * @return
  70. */
  71. @ApiOperation(value = "角色视图 人员列表")
  72. @ApiImplicitParams({@ApiImplicitParam(name = "RoleAuthUserVo", value = "角色视图-人员列表参数")
  73. })
  74. @PostMapping(value = "/roleStaffList/_search")
  75. public Result<List<UserInfoView>> roleStaffList( RoleAuthUserVo vo) {
  76. if (StringUtils.isEmpty(vo.getOrgId())) {
  77. return Result.success(new ArrayList<UserInfoView>());
  78. }
  79. OrgInfo orgInfo = iOrgInfoFacade.detail(vo.getOrgId());
  80. //找到角色id
  81. RoleInfo roleInfo = roleInfoFacade.get(vo.getRoleId());
  82. String orgLevel = null;
  83. if (StringUtils.isNotEmpty(orgInfo.getOrgLevel())) {
  84. orgLevel = orgInfo.getOrgLevel();
  85. }
  86. if (roleInfo.getRoleLevel() != null
  87. && !RoleLevelEnum.TY.getValue().equals(roleInfo.getRoleLevel())
  88. && !roleInfo.getRoleLevel().equals(orgLevel)) {
  89. return Result.success(new ArrayList<UserInfoView>());
  90. }
  91. List<UserInfoView> list = new ArrayList<UserInfoView>();
  92. Searchable searchable = Searchable.newSearchable();
  93. searchable.addSearchFilter("deleted", SearchOperator.eq,YesNotEnum.NO.getValue());
  94. searchable.addSearchFilter("name", SearchOperator.ne,iUserInfoFacade.getRootUser());
  95. searchable.addSearchFilter("org_id", SearchOperator.eq,vo.getOrgId());
  96. if(StringUtils.isNotEmpty(vo.getName())){
  97. searchable.addSearchFilter("name", SearchOperator.like,vo.getName());
  98. }
  99. //当角色有警种时候过滤警种
  100. if (StringUtils.isNotEmpty(roleInfo.getPoliceCategory())) {
  101. searchable.addSearchFilter("police_category", SearchOperator.eq, roleInfo.getPoliceCategory());
  102. }
  103. //当有业务域时候
  104. if (StringUtils.isNotEmpty(roleInfo.getRoleBusiness())) {
  105. for (String business : roleInfo.getRoleBusiness().split(",")) {
  106. searchable.addSearchFilter("police_business", SearchOperator.like,business);
  107. list.addAll(iUserInfoFacade.roleInfoList(searchable.toSearchDTO()));
  108. }
  109. //去重
  110. HashSet userInfoViewSet = new HashSet(list);
  111. list.clear();
  112. list.addAll(userInfoViewSet);
  113. } else {
  114. list.addAll(iUserInfoFacade.expList(searchable.toSearchDTO()));
  115. }
  116. Map<String, ArrayList<CodeRecord>> listCodes = iCodeListResourceFacade.listCodes("code", "DM_POLICE_BUSINESS,T_MD_ORG_LEVEL,DM_USER_TYPE");
  117. HashMap<String, Map<String, String>> map = getConvertMap(listCodes);
  118. //标码翻译
  119. for (UserInfoView userInfo : list) {
  120. if (StringUtils.isNotEmpty(userInfo.getPoliceBusiness())){
  121. String[] policeBusinessOld = userInfo.getPoliceBusiness().split(",");
  122. String policeBusinesssNew="";
  123. for (String businesss : policeBusinessOld) {
  124. policeBusinesssNew+= StringUtils.isEmpty(policeBusinesssNew)?map.get("DM_POLICE_BUSINESS").get(businesss):","+map.get("DM_POLICE_BUSINESS").get(businesss);
  125. }
  126. userInfo.setPoliceBusiness(policeBusinesssNew);
  127. }
  128. // String policeBusinessLable = map.get("DM_POLICE_BUSINESS").get(userInfo.getPoliceBusiness());
  129. String orgLevelLable = map.get("T_MD_ORG_LEVEL").get(userInfo.getOrgLevel());
  130. userInfo.setOrgLevel(orgLevelLable);
  131. String userTypeLable = map.get("DM_USER_TYPE").get(userInfo.getUserType());
  132. userInfo.setUserType(userTypeLable);
  133. }
  134. return Result.success(list);
  135. }
  136. private HashMap<String, Map<String, String>> getConvertMap(Map<String, ArrayList<CodeRecord>> listCodes) {
  137. HashMap<String, Map<String, String>> allConvertMap = new HashMap<>();
  138. for (Map.Entry<String, ArrayList<CodeRecord>> entry : listCodes.entrySet()) {
  139. String codeName = entry.getKey();
  140. ArrayList<CodeRecord> valueList = entry.getValue();
  141. HashMap<String, String> codeConvertMap = new HashMap<>();
  142. valueList.forEach(item->codeConvertMap.put(item.getValue(),item.getLabel()));
  143. allConvertMap.put(codeName,codeConvertMap);
  144. }
  145. return allConvertMap;
  146. }
  147. /**
  148. * 人员视图 人员列表
  149. *
  150. * @param
  151. * @return
  152. */
  153. @ApiOperation(value = "人员视图 人员列表")
  154. @ApiImplicitParam(name = "searchDTO", value = "查询条件(orgId必须)",required = true)
  155. @PostMapping(value = "/staffRolePage/_search")
  156. public Result<List<UserInfo>> staffRolePage(SearchDTO searchDTO) {
  157. SecurityUser curUser = (SecurityUser) ContextUtils.getUserInfo();
  158. Searchable searchable = Searchable.toSearchable(searchDTO);
  159. searchable.addSearchFilter("deleted",SearchOperator.eq,YesNotEnum.NO.getValue());
  160. searchable.addSearchFilter("name",SearchOperator.ne,iUserInfoFacade.getRootUser());
  161. Page<UserInfo> page = iUserInfoFacade.userList(searchDTO);
  162. if (!iUserInfoFacade.getRootUser().equals(curUser.getName())) {
  163. String mtIds = mtAuthBusiness.getMtAuth(curUser.getId(), SysConstants.MT_APP);
  164. if (StringUtils.isEmpty(mtIds)) {
  165. return Result.success(0L,null);
  166. }
  167. }
  168. return Result.success(page.getTotalElements(),page.getContent());
  169. }
  170. /**
  171. * 人员视图 人员列表
  172. * @param
  173. * @return
  174. */
  175. @ApiOperation(value = "人员视图 人员列表")
  176. @ApiImplicitParam(name = "searchDTO", value = "查询条件(orgId必须)",required = true)
  177. @PostMapping(value = "/staffUserPage/_search")
  178. public Result<List<UserInfo>> staffUserPage(SearchDTO searchDTO) {
  179. SecurityUser curUser = (SecurityUser) ContextUtils.getUserInfo();
  180. Searchable searchable = Searchable.toSearchable(searchDTO);
  181. searchable.addSearchFilter("deleted",SearchOperator.eq,YesNotEnum.NO.getValue());
  182. searchable.addSearchFilter("name",SearchOperator.ne,iUserInfoFacade.getRootUser());
  183. // Set jobType = new HashSet();
  184. // jobType.add(JobTypeEnum.LZ.getValue());
  185. // jobType.add(JobTypeEnum.SW.getValue());
  186. // jobType.add(JobTypeEnum.TX.getValue());
  187. // jobType.add(JobTypeEnum.FP.getValue());
  188. // searchable.addSearchFilter("jobType",SearchOperator.notIn,jobType);
  189. Page<UserInfo> page = iUserInfoFacade.userList(searchable.toSearchDTO());
  190. if (!iUserInfoFacade.getRootUser().equals(curUser.getName())) {
  191. String mtIds = mtAuthBusiness.getMtAuth(curUser.getId(), SysConstants.MT_APP);
  192. if (StringUtils.isEmpty(mtIds)) {
  193. return Result.success(0L,null);
  194. }
  195. }
  196. return Result.success(page.getTotalElements(),page.getContent());
  197. }
  198. /**
  199. * 人员视图-角色已勾选
  200. * @param userId 用户Id
  201. * @return
  202. */
  203. @ApiOperation(value = "人员视图-角色已勾选")
  204. @ApiImplicitParam(name = "userId", value = "用户id(orgId必须)",required = true)
  205. @GetMapping(value = "/roleChecked")
  206. public Result<List<StaffAssignAuthInfoVo>> getRoleChecked(@RequestParam(value = "userId", required = false) String userId) {
  207. if (StringUtils.isEmpty(userId)) {
  208. return Result.success(new ArrayList());
  209. }
  210. Searchable searchable = Searchable.newSearchable();
  211. searchable.addSearchFilter("staffId",SearchOperator.eq,userId);
  212. List<StaffAssignAuthInfo> staffAssignAuthInfoList = staffAssignAuthInfoFacade.findForList(searchable.toSearchDTO());
  213. List<StaffAssignAuthInfoVo> vos = new ArrayList<>();
  214. for (StaffAssignAuthInfo source : staffAssignAuthInfoList) {
  215. StaffAssignAuthInfoVo vo = new StaffAssignAuthInfoVo();
  216. BeanUtils.copyProperties(source,vo);
  217. vos.add(vo);
  218. }
  219. return Result.success(vos);
  220. }
  221. /**
  222. * 分页查询机构拥有的应用角色配额情况
  223. * @param
  224. * @return
  225. */
  226. @ApiOperation(value = "分页查询机构拥有的应用角色配额情况")
  227. @ApiImplicitParam(name = "searchDTO", value = "查询条件(appId必须)",required = true)
  228. @PostMapping(value = "roleRoleList/_search")
  229. public Result<List<RoleInfoVO>> getRoleList(SearchDTO searchDTO) {
  230. String appId = null;
  231. String orgId = null;
  232. Page<RoleInfoVO> page = new PageImpl();
  233. Searchable searchable = Searchable.toSearchable(searchDTO);
  234. Condition appIdCondition = searchable.getSearchFilterByKey("appId_eq");
  235. searchable.removeSearchFilter("appId_eq");
  236. Condition orgIdCondition = searchable.getSearchFilterByKey("orgId_eq");
  237. if(null == appIdCondition || StringUtils.isBlank((String) appIdCondition.getValue())){
  238. return Result.success(page.getTotalElements(),page.getContent());
  239. }
  240. if(orgIdCondition!=null && StringUtils.isNotBlank((String) orgIdCondition.getValue())){
  241. orgId = (String) orgIdCondition.getValue();
  242. }
  243. appId = (String) appIdCondition.getValue();
  244. SecurityUser curUser = (SecurityUser) ContextUtils.getUserInfo();
  245. if (!iUserInfoFacade.getRootUser().equals(curUser.getName())) {
  246. String mtIds = mtAuthBusiness.getMtAuth(curUser.getId(), SysConstants.MT_APP);
  247. if (StringUtils.isEmpty(mtIds)) {
  248. return Result.success(0L,null);
  249. }
  250. }
  251. RoleAuthParamVo vo=new RoleAuthParamVo();
  252. vo.setAppId(appId);
  253. vo.setOrgId(orgId);
  254. vo.setSearchDTO(searchable.toSearchDTO());
  255. page = roleInfoFacade.getOrgRoleQuota(vo);
  256. return Result.success(page.getTotalElements(),page.getContent());
  257. }
  258. /**
  259. * 人员视图 应用角色列表
  260. * @param
  261. * @return
  262. */
  263. @ApiOperation(value = "人员视图 应用角色列表")
  264. @ApiImplicitParams({
  265. @ApiImplicitParam(name = "roleName", value = "角色名称"),
  266. @ApiImplicitParam(name = "userId", value = "用户id",required = true),
  267. @ApiImplicitParam(name = "appName", value = "应用名称")
  268. })
  269. @GetMapping(value = "/staffRoleList")
  270. public Result<List<RoleInfoVO>> staffRoleList(@RequestParam(value = "roleName",required = false) String roleName,@RequestParam("userId") String userId,
  271. @RequestParam(value = "appName",required = false) String appName) {
  272. if (StringUtils.isBlank(userId)) {
  273. return Result.success(new ArrayList<RoleInfoVO>());
  274. }
  275. Searchable roleSearchable = Searchable.newSearchable();
  276. roleSearchable.addSearchFilter("userId",SearchOperator.eq,userId);
  277. if (StringUtils.isNotEmpty(roleName)) {
  278. roleSearchable.addSearchFilter("name",SearchOperator.like,roleName);
  279. }
  280. if (StringUtils.isNotEmpty(appName)) {
  281. roleSearchable.addSearchFilter("appName",SearchOperator.like,appName);
  282. }
  283. //TODO
  284. //DTO待设计
  285. List<RoleInfoVO> roleInfoVOList = roleInfoFacade.staffRoleList(roleSearchable.toSearchDTO());
  286. Searchable staffSearchable = Searchable.newSearchable();
  287. staffSearchable.addSearchFilter("staffId",SearchOperator.eq,userId);
  288. List<StaffAssignAuthInfo> staffAssignAuthInfoList = staffAssignAuthInfoFacade.findForList(staffSearchable.toSearchDTO());
  289. Map<String, String> roleMap = new HashMap<String, String>();
  290. for (StaffAssignAuthInfo assignAuthInfo : staffAssignAuthInfoList) {
  291. roleMap.put(assignAuthInfo.getRoleId(), assignAuthInfo.getActiveTime());
  292. }
  293. Map<String, ArrayList<CodeRecord>> listCodes = iCodeListResourceFacade.listCodes("code", "DM_POLICE_BUSINESS,DM_ROLE_LEVEL,T_MD_POLICE_TYPE");
  294. HashMap<String, Map<String, String>> map = getConvertMap(listCodes);
  295. for (RoleInfoVO roleInfoVO : roleInfoVOList) {
  296. if (roleMap.containsKey(roleInfoVO.getId())) {
  297. roleInfoVO.setCause(1);
  298. roleInfoVO.setActiveTime(roleMap.get(roleInfoVO.getId()));
  299. } else {
  300. roleInfoVO.setActiveTime("长期");
  301. }
  302. String policeBusinessLable = map.get("DM_POLICE_BUSINESS").get(roleInfoVO.getRoleBusiness());
  303. roleInfoVO.setRoleBusiness(policeBusinessLable);
  304. String roleLevelLable = map.get("DM_ROLE_LEVEL").get(roleInfoVO.getRoleLevel());
  305. roleInfoVO.setRoleLevel(roleLevelLable);
  306. String policeCategory = map.get("T_MD_POLICE_TYPE").get(roleInfoVO.getPoliceCategory());
  307. roleInfoVO.setPoliceCategory(policeCategory);
  308. }
  309. return Result.success(roleInfoVOList);
  310. }
  311. /**
  312. * 角色视图保存
  313. *
  314. * @param
  315. * @return
  316. */
  317. @ApiOperation(value = "角色视图保存")
  318. @Permission(value = "auth_mge_config")
  319. @PostMapping(value = "/role", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  320. public Result saveRole(@RequestBody StaffRoleOperateVo staffRoleOperateVo) {
  321. //SecurityUser user = (SecurityUser) ContextUtils.getUserInfo();
  322. // String staffJson = staffRoleOperateVo.getStaffJson();
  323. // String delStaffJson = staffRoleOperateVo.getDelStaffJson();
  324. // String appId = staffRoleOperateVo.getAppId();
  325. // String roleId = staffRoleOperateVo.getRoleId();
  326. // String orgId = staffRoleOperateVo.getOrgId();
  327. // String appOrgId = staffRoleOperateVo.getAppOrgId();
  328. RoleAuthDto dto=new RoleAuthDto();
  329. BeanUtils.copyProperties(staffRoleOperateVo, dto);
  330. //TODO
  331. //dto待设计
  332. ResponseStatus responseStatus = staffAssignAuthInfoFacade.saveStaffRoleAuth(dto);
  333. String statusCode = responseStatus.getStatusCode();
  334. if(ResponseStatus.FAIL_CODE.equals(statusCode)){
  335. return Result.fail(responseStatus.getMessage());
  336. }else {
  337. return Result.success(responseStatus.getMessage());
  338. }
  339. }
  340. /**
  341. * 人员视图保存
  342. * @return
  343. */
  344. @ApiOperation(value = "人员视图保存")
  345. @Permission(value = "auth_mge_config")
  346. @PostMapping (value = "/staff", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  347. public Result saveStaff(@RequestBody StaffOperateVo staffOperateVo) {
  348. String userId = staffOperateVo.getUserId();
  349. String saveIds = JSON.toJSONString(staffOperateVo.getSaveIds());
  350. String deleteIds = JSON.toJSONString(staffOperateVo.getDeleteIds());
  351. StaffAssignDTO staffAssignDTO=new StaffAssignDTO(userId, saveIds, deleteIds);
  352. ResponseStatus responseStatus = staffAssignAuthInfoFacade.saveStaff(staffAssignDTO);
  353. Result result = new Result(responseStatus.getStatusCode(),responseStatus.getMessage(),null,null);
  354. return result;
  355. }
  356. /**
  357. * 获取角色视图勾选人员
  358. * 获取人员视图勾选角色
  359. *
  360. * @param
  361. * @return
  362. */
  363. @ApiOperation(value = "获取角色视图勾选人员,获取人员视图勾选角色",
  364. notes = "type表示获取类型,获取类型:role获取勾选人员 其他:获取勾选角色。type=role时appId, roleId, orgId")
  365. @ApiImplicitParams({
  366. @ApiImplicitParam(name = "type", value = "获取类型:role获取勾选人员 其他:获取勾选角色"),
  367. @ApiImplicitParam(name = "appId", value = "应用id",required = true),
  368. @ApiImplicitParam(name = "orgId", value = "机构id", required = true),
  369. @ApiImplicitParam(name = "roleId", value = "角色id"),
  370. @ApiImplicitParam(name = "staffId", value = "人员id")
  371. })
  372. @GetMapping(value = "/checked")
  373. @ResponseBody
  374. public Result<List<StaffAssignAuthInfoVo>> getCheckedStaff(@RequestParam(value = "type", required = true) String type,
  375. @RequestParam(value = "appId", required = true) String appId,
  376. @RequestParam(value = "orgId", required = false) String orgId,
  377. @RequestParam(value = "roleId", required = false) String roleId,
  378. @RequestParam(value = "staffId", required = false) String staffId) {
  379. List<StaffAssignAuthInfo> staffAssignAuthInfoList;
  380. if (type.equals("role")) {
  381. //获取勾选人员
  382. staffAssignAuthInfoList = iRoleAuthInfoFacade.getStaff(appId, roleId, orgId);
  383. } else {
  384. //获取勾选角色
  385. staffAssignAuthInfoList = iRoleAuthInfoFacade.getRole(appId, staffId);
  386. }
  387. List<StaffAssignAuthInfoVo> vos = new ArrayList<>();
  388. for (StaffAssignAuthInfo source : staffAssignAuthInfoList) {
  389. StaffAssignAuthInfoVo vo = new StaffAssignAuthInfoVo();
  390. BeanUtils.copyProperties(source,vo);
  391. vos.add(vo);
  392. }
  393. return Result.success(vos);
  394. }
  395. }