OrganizeAdministratorServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. package jnpf.permission.service.impl;
  2. import cn.hutool.core.text.StrPool;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.google.common.collect.ImmutableList;
  7. import com.google.common.collect.Lists;
  8. import jnpf.base.entity.ModuleEntity;
  9. import jnpf.base.entity.SystemEntity;
  10. import jnpf.base.service.DbLinkService;
  11. import jnpf.base.service.ModuleService;
  12. import jnpf.base.service.SuperServiceImpl;
  13. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  14. import jnpf.base.Pagination;
  15. import jnpf.base.service.SystemService;
  16. import jnpf.config.ConfigValueUtil;
  17. import jnpf.constant.JnpfConst;
  18. import jnpf.constant.MsgCode;
  19. import jnpf.database.model.dto.PrepSqlDTO;
  20. import jnpf.database.sql.util.SqlFrameFastUtil;
  21. import jnpf.database.util.DataSourceUtil;
  22. import jnpf.constant.PermissionConst;
  23. import jnpf.database.util.DbTypeUtil;
  24. import jnpf.database.util.JdbcUtil;
  25. import jnpf.database.util.TenantDataSourceUtil;
  26. import jnpf.model.login.UserSystemVO;
  27. import jnpf.model.tenant.TenantAuthorizeModel;
  28. import jnpf.permission.entity.OrganizeAdministratorEntity;
  29. import jnpf.permission.entity.OrganizeEntity;
  30. import jnpf.permission.entity.UserEntity;
  31. import jnpf.permission.entity.UserRelationEntity;
  32. import jnpf.permission.mapper.OrganizeAdminIsTratorMapper;
  33. import jnpf.permission.model.organizeadministrator.OrganizeAdministratorListVo;
  34. import jnpf.permission.model.organizeadministrator.OrganizeAdministratorModel;
  35. import jnpf.permission.service.*;
  36. import jnpf.util.*;
  37. import org.springframework.beans.factory.annotation.Autowired;
  38. import org.springframework.stereotype.Service;
  39. import org.springframework.transaction.annotation.Transactional;
  40. import java.util.*;
  41. import java.util.stream.Collectors;
  42. /**
  43. * 机构分级管理员
  44. *
  45. * @author JNPF开发平台组
  46. * @version V3.1.0
  47. * @copyright 引迈信息技术有限公司
  48. * @date 2019年9月26日 上午9:18
  49. */
  50. @Service
  51. public class OrganizeAdministratorServiceImpl extends SuperServiceImpl<OrganizeAdminIsTratorMapper, OrganizeAdministratorEntity> implements OrganizeAdministratorService {
  52. @Autowired
  53. private OrganizeService organizeService;
  54. @Autowired
  55. private UserService userService;
  56. @Autowired
  57. private UserRelationService userRelationService;
  58. @Autowired
  59. private DbLinkService dbLinkService;
  60. @Autowired
  61. private SystemService systemApi;
  62. @Autowired
  63. private ModuleService moduleApi;
  64. @Autowired
  65. private ConfigValueUtil configValueUtil;
  66. @Autowired
  67. private AuthorizeService authorizeService;
  68. @Autowired
  69. private DataSourceUtil dataSourceUtils;
  70. @Override
  71. public OrganizeAdministratorEntity getOne(String userId, String organizeId) {
  72. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  73. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  74. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getOrganizeId, organizeId);
  75. // 排序
  76. queryWrapper.lambda().orderByAsc(OrganizeAdministratorEntity::getSortCode)
  77. .orderByDesc(OrganizeAdministratorEntity::getCreatorTime);
  78. return this.getOne(queryWrapper);
  79. }
  80. @Override
  81. public List<OrganizeAdministratorEntity> getOrganizeAdministratorEntity(String userId) {
  82. return getOrganizeAdministratorEntity(userId, PermissionConst.ORGANIZE, false);
  83. }
  84. @Override
  85. public List<OrganizeAdministratorEntity> getOrganizeAdministratorEntity(String userId, String type, boolean filterMain) {
  86. List<OrganizeAdministratorEntity> list = new ArrayList<>();
  87. UserEntity entity1 = userService.getInfo(userId);
  88. List<UserSystemVO> userStanding = authorizeService.getUserStanding(false, entity1.getId());
  89. boolean isAdmin = userStanding.stream().filter(t -> "1".equals(t.getId())).count() > 0;
  90. // 查询非组织权限
  91. if ((entity1 != null && isAdmin) && !PermissionConst.ORGANIZE.equals(type)) {
  92. List<String> collect = new ArrayList<>();
  93. List<String> moduleAuthorize = new ArrayList<>();
  94. List<String> moduleUrlAddressAuthorize = new ArrayList<>();
  95. if (configValueUtil.isMultiTenancy()) {
  96. TenantAuthorizeModel tenantAuthorizeModel = TenantDataSourceUtil.getCacheModuleAuthorize(UserProvider.getUser().getTenantId());
  97. moduleAuthorize = tenantAuthorizeModel.getModuleIdList();
  98. moduleUrlAddressAuthorize = tenantAuthorizeModel.getUrlAddressList();
  99. }
  100. if (PermissionConst.SYSTEM.equals(type)) {
  101. collect = systemApi.getList(null, false, false, filterMain, false, moduleAuthorize).stream().map(SystemEntity::getId).collect(Collectors.toList());
  102. } else if (PermissionConst.MODULE.equals(type)) {
  103. collect = moduleApi.getList(false, moduleAuthorize, moduleUrlAddressAuthorize).stream().map(ModuleEntity::getId).collect(Collectors.toList());
  104. }
  105. for (String t : collect) {
  106. OrganizeAdministratorEntity entity = new OrganizeAdministratorEntity();
  107. entity.setOrganizeId(t);
  108. entity.setId(RandomUtil.uuId());
  109. entity.setOrganizeType(type);
  110. entity.setUserId(userId);
  111. list.add(entity);
  112. }
  113. return list;
  114. }
  115. // 组织权限
  116. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  117. if (PermissionConst.ORGANIZE.equals(type)) {
  118. queryWrapper.lambda().isNull(OrganizeAdministratorEntity::getOrganizeType);
  119. } else if (StringUtil.isNotEmpty(type)) {
  120. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getOrganizeType, type);
  121. }
  122. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  123. // 排序
  124. queryWrapper.lambda().orderByAsc(OrganizeAdministratorEntity::getSortCode)
  125. .orderByDesc(OrganizeAdministratorEntity::getCreatorTime);
  126. list = this.list(queryWrapper);
  127. return list;
  128. }
  129. @Override
  130. public List<OrganizeAdministratorEntity> getOrganizeAdministratorEntity(String userId, String type) {
  131. // 组织权限
  132. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  133. if (PermissionConst.ORGANIZE.equals(type)) {
  134. queryWrapper.lambda().isNull(OrganizeAdministratorEntity::getOrganizeType);
  135. } else if (StringUtil.isNotEmpty(type)) {
  136. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getOrganizeType, type);
  137. }
  138. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  139. // 排序
  140. queryWrapper.lambda().orderByAsc(OrganizeAdministratorEntity::getSortCode)
  141. .orderByDesc(OrganizeAdministratorEntity::getCreatorTime);
  142. List<OrganizeAdministratorEntity> list = this.list(queryWrapper);
  143. return list;
  144. }
  145. @Override
  146. @Transactional
  147. public void create(OrganizeAdministratorEntity entity) {
  148. // 判断是新建还是删除
  149. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  150. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getOrganizeId, entity.getOrganizeId());
  151. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, entity.getUserId());
  152. // 查出数据是否重复
  153. OrganizeAdministratorEntity administratorEntity = this.getOne(queryWrapper);
  154. if (administratorEntity == null) {
  155. entity.setId(RandomUtil.uuId());
  156. entity.setCreatorUserId(UserProvider.getLoginUserId());
  157. entity.setCreatorTime(new Date());
  158. } else {
  159. entity.setId(administratorEntity.getId());
  160. entity.setCreatorUserId(UserProvider.getLoginUserId());
  161. entity.setLastModifyTime(new Date());
  162. }
  163. this.saveOrUpdate(entity);
  164. }
  165. @Override
  166. public void createList(List<OrganizeAdministratorEntity> list, String userId) {
  167. // QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  168. // queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId,userId);
  169. // queryWrapper.lambda().select(OrganizeAdministratorEntity::getCreatorTime);
  170. // IPage<OrganizeAdministratorEntity> list1 = this.page(new Page<>(1, 1), queryWrapper);
  171. // boolean isData = !list1.getRecords().isEmpty() && ObjectUtil.isNotEmpty(list1.getRecords().get(0).getCreatorTime());
  172. // Date creatorTime = isData?list1.getRecords().get(0).getCreatorTime():new Date();
  173. // this.remove(queryWrapper);
  174. // for (OrganizeAdministratorEntity entity : list) {
  175. // entity.setCreatorTime(creatorTime);
  176. // this.save(entity);
  177. // }
  178. // userService.delCurUser(MsgCode.PS010.get(), ImmutableList.of(userId),2);
  179. try {
  180. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  181. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  182. Page<OrganizeAdministratorEntity> page = new Page<>(1, 1);
  183. IPage<OrganizeAdministratorEntity> list1 = this.page(page, queryWrapper);
  184. boolean isData = !list1.getRecords().isEmpty() && ObjectUtil.isNotEmpty(list1.getRecords().get(0).getCreatorTime());
  185. String now = isData ? DateUtil.dateFormat(list1.getRecords().get(0).getCreatorTime()) : DateUtil.getNow();
  186. JdbcUtil.creUpDe(new PrepSqlDTO(XSSEscape.escapeEmpty(SqlFrameFastUtil.ADMINISTRATOR_DEL.replace("{userId}", userId))).withConn(dataSourceUtils, null));
  187. String sql = DbTypeUtil.checkOracle(dataSourceUtils) || DbTypeUtil.checkPostgre(dataSourceUtils) ?
  188. SqlFrameFastUtil.INSERT_ADMINISTRATOR2 : SqlFrameFastUtil.INSERT_ADMINISTRATOR;
  189. String column_key = StringUtil.EMPTY, column_plceholder = StringUtil.EMPTY, column_value = TenantDataSourceUtil.getTenantColumn();
  190. if (StringUtil.isNotEmpty(column_value)) {
  191. column_key = StrPool.COMMA + configValueUtil.getMultiTenantColumn();
  192. column_plceholder = ",?";
  193. }
  194. sql = sql.replace("%COLUMN_KEY%", column_key).replace("%COLUMN_PLACEHOLDER%", column_plceholder);
  195. PrepSqlDTO dto = new PrepSqlDTO(sql).withConn(dataSourceUtils, null);
  196. for (OrganizeAdministratorEntity entity : list) {
  197. List<Object> data = new LinkedList<>();
  198. data.add(RandomUtil.uuId());
  199. data.add(userId);
  200. data.add(entity.getOrganizeId());
  201. data.add(entity.getOrganizeType());
  202. data.add(entity.getThisLayerAdd());
  203. data.add(entity.getThisLayerEdit());
  204. data.add(entity.getThisLayerDelete());
  205. data.add(entity.getSubLayerAdd());
  206. data.add(entity.getSubLayerEdit());
  207. data.add(entity.getSubLayerDelete());
  208. data.add(entity.getThisLayerSelect());
  209. data.add(entity.getSubLayerSelect());
  210. data.add(entity.getManagerGroup());
  211. data.add(now);
  212. data.add(UserProvider.getLoginUserId());
  213. data.add(1);
  214. if (StringUtil.isNotEmpty(column_value)) {
  215. data.add(column_value);
  216. }
  217. dto.addMultiData(data);
  218. }
  219. JdbcUtil.creUpDeBatchOneSql(dto);
  220. userService.delCurUser(MsgCode.PS010.get(), ImmutableList.of(userId));
  221. } catch (Exception e) {
  222. e.printStackTrace();
  223. log.error("分级报错:" + e.getMessage());
  224. }
  225. }
  226. @Override
  227. public boolean update(String organizeId, OrganizeAdministratorEntity entity) {
  228. entity.setId(entity.getId());
  229. entity.setLastModifyTime(DateUtil.getNowDate());
  230. entity.setLastModifyUserId(UserProvider.getLoginUserId());
  231. return this.updateById(entity);
  232. }
  233. @Override
  234. public boolean deleteByUserId(String userId) {
  235. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  236. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  237. boolean remove = this.remove(queryWrapper);
  238. userService.delCurUser(MsgCode.PS010.get(), ImmutableList.of(userId));
  239. userService.updateStand(ImmutableList.of(userId), 2);
  240. return remove;
  241. }
  242. @Override
  243. public List<OrganizeAdministratorEntity> getInfoByUserId(String userId) {
  244. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  245. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  246. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getEnabledMark, 1);
  247. return this.list(queryWrapper);
  248. }
  249. @Override
  250. public OrganizeAdministratorEntity getInfo(String id) {
  251. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  252. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getId, id);
  253. return this.getOne(queryWrapper);
  254. }
  255. @Override
  256. public void delete(OrganizeAdministratorEntity entity) {
  257. this.removeById(entity.getId());
  258. }
  259. @Override
  260. public String getManagerGroupByUserId(String userId) {
  261. if (StringUtil.isEmpty(userId)) {
  262. return null;
  263. }
  264. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  265. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getUserId, userId);
  266. List<OrganizeAdministratorEntity> list = this.list(queryWrapper);
  267. return list.size() > 0 ? list.get(0).getManagerGroup() : null;
  268. }
  269. @Override
  270. public OrganizeAdministratorEntity getInfoByOrganizeId(String organizeId) {
  271. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  272. queryWrapper.lambda().eq(OrganizeAdministratorEntity::getOrganizeId, organizeId);
  273. return this.getOne(queryWrapper);
  274. }
  275. @Override
  276. public List<OrganizeAdministratorEntity> getListByOrganizeId(List<String> organizeIdList) {
  277. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  278. queryWrapper.lambda().in(OrganizeAdministratorEntity::getOrganizeId, organizeIdList);
  279. return this.list(queryWrapper);
  280. }
  281. @Override
  282. public List<OrganizeAdministratorListVo> getList(Pagination pagination) {
  283. List<OrganizeAdministratorEntity> list = getOrganizeAdministratorEntity(UserProvider.getLoginUserId(), PermissionConst.ORGANIZE, false);
  284. Map<String, String> orgIdNameMaps = organizeService.getInfoList();
  285. List<String> organizeIdList;
  286. Map<String, OrganizeEntity> orgMaps = organizeService.getOrgMaps(null, true, null);
  287. // 存放所有的有资格管理的组织id
  288. if (UserProvider.getUser().getIsAdministrator()) {
  289. organizeIdList = new ArrayList<>(orgMaps.keySet());
  290. } else {
  291. Set<String> orgId = new HashSet<>(16);
  292. // 判断自己是哪些组织的管理员
  293. list.stream().forEach(t -> {
  294. if (t != null) {
  295. // t.getThisLayerAdd() == 1 || t.getThisLayerEdit() == 1 || t.getThisLayerDelete() == 1 || (StringUtil.isNotEmpty(String.valueOf(t.getSubLayerSelect())) && t.getThisLayerSelect() == 1)
  296. if (t.getSubLayerSelect() != null && t.getThisLayerSelect() == 1) {
  297. orgId.add(t.getOrganizeId());
  298. }
  299. // t.getSubLayerAdd() == 1 || t.getSubLayerEdit() == 1 || t.getSubLayerDelete() == 1 || (StringUtil.isNotEmpty(String.valueOf(t.getSubLayerSelect())) && t.getSubLayerSelect() == 1)
  300. if (t.getSubLayerSelect() != null && t.getSubLayerSelect() == 1) {
  301. List<String> underOrganizations = organizeService.getUnderOrganizations(t.getOrganizeId(), true);
  302. orgId.addAll(underOrganizations);
  303. }
  304. }
  305. });
  306. organizeIdList = new ArrayList<>(orgId);
  307. }
  308. if (organizeIdList.size() < 1) {
  309. organizeIdList.add("");
  310. }
  311. List<OrganizeAdministratorListVo> jsonToList = new ArrayList<>();
  312. List<List<String>> organizeList = Lists.partition(organizeIdList, 1000);
  313. List<String> userId = new ArrayList<>();
  314. for (List<String> objectId : organizeList) {
  315. userId.addAll(userRelationService.getListByOrgId(objectId).stream().map(UserRelationEntity::getUserId).collect(Collectors.toList()));
  316. }
  317. userId.remove(UserProvider.getUser().getUserId());
  318. if (userId.isEmpty()) {
  319. return jsonToList;
  320. }
  321. QueryWrapper<UserEntity> userWrapper = new QueryWrapper<>();
  322. userWrapper.lambda().select(UserEntity::getId, UserEntity::getAccount, UserEntity::getRealName, UserEntity::getGender, UserEntity::getMobilePhone);
  323. List<List<String>> userIdList = Lists.partition(userId, 1000);
  324. userWrapper.lambda().and(t -> {
  325. for (List<String> id : userIdList) {
  326. t.in(UserEntity::getId, id).or();
  327. }
  328. });
  329. userWrapper.lambda().eq(UserEntity::getEnabledMark, 1);
  330. if (StringUtil.isNotEmpty(pagination.getKeyword())) {
  331. userWrapper.lambda().and(
  332. t -> t.like(UserEntity::getRealName, pagination.getKeyword())
  333. .or().like(UserEntity::getAccount, pagination.getKeyword())
  334. .or().like(UserEntity::getMobilePhone, pagination.getKeyword())
  335. );
  336. }
  337. List<UserEntity> userList = userService.list(userWrapper);
  338. if (userList.isEmpty()) {
  339. return jsonToList;
  340. }
  341. QueryWrapper<OrganizeAdministratorEntity> queryWrapper = new QueryWrapper<>();
  342. queryWrapper.lambda().isNotNull(OrganizeAdministratorEntity::getManagerGroup);
  343. queryWrapper.lambda().select(OrganizeAdministratorEntity::getUserId, OrganizeAdministratorEntity::getCreatorTime, OrganizeAdministratorEntity::getManagerGroup);
  344. List<List<String>> userIds = Lists.partition(userList.stream().map(UserEntity::getId).collect(Collectors.toList()), 1000);
  345. queryWrapper.lambda().and(t -> {
  346. for (List<String> id : userIds) {
  347. t.in(OrganizeAdministratorEntity::getUserId, id).or();
  348. }
  349. });
  350. queryWrapper.lambda().orderByDesc(OrganizeAdministratorEntity::getCreatorTime);
  351. List<OrganizeAdministratorEntity> entityList = this.list(queryWrapper);
  352. List<String> ids = new ArrayList<>();
  353. for (OrganizeAdministratorEntity entity : entityList) {
  354. if (!ids.contains(entity.getUserId())) {
  355. ids.add(entity.getUserId());
  356. }
  357. }
  358. List listPage = PageUtil.getListPage((int) pagination.getCurrentPage(), (int) pagination.getPageSize(), ids);
  359. if (!listPage.isEmpty()) {
  360. List<OrganizeAdministratorEntity> organizeAdminList = entityList.stream().filter(t -> listPage.contains(t.getUserId())).distinct().sorted(Comparator.comparing(OrganizeAdministratorEntity::getCreatorTime).reversed()).collect(Collectors.toList());
  361. for (OrganizeAdministratorEntity entity : organizeAdminList) {
  362. UserEntity info = userList.stream().filter(t -> t.getId().equals(entity.getUserId())).findFirst().orElse(null);
  363. if (info != null) {
  364. OrganizeAdministratorListVo vo = JsonUtil.getJsonToBean(info, OrganizeAdministratorListVo.class);
  365. // 所属组织
  366. List<UserRelationEntity> orgRelationByUserId = userRelationService.getAllOrgRelationByUserId(entity.getUserId());
  367. StringBuilder orgName = new StringBuilder();
  368. orgRelationByUserId.stream().forEach(or -> {
  369. OrganizeEntity organizeEntity = orgMaps.get(or.getObjectId());
  370. if (organizeEntity != null && StringUtil.isNotEmpty(organizeEntity.getOrganizeIdTree())) {
  371. String fullNameByOrgIdTree = organizeService.getFullNameByOrgIdTree(orgIdNameMaps, organizeEntity.getOrganizeIdTree(), "/");
  372. orgName.append("," + fullNameByOrgIdTree);
  373. }
  374. });
  375. // 组织名称
  376. String org = orgName.length() > 0 ? orgName.toString().replaceFirst(",", "") : "";
  377. vo.setOrganizeId(org);
  378. vo.setManagerGroup(entity.getManagerGroup());
  379. vo.setCreatorTime(entity.getCreatorTime().getTime());
  380. jsonToList.add(vo);
  381. }
  382. }
  383. }
  384. return pagination.setData(jsonToList, ids.size());
  385. }
  386. @Override
  387. public List<String> getOrganizeUserList(String type) {
  388. if (UserProvider.getUser().getIsAdministrator()) {
  389. return organizeService.getList(true).stream().map(OrganizeEntity::getId).collect(Collectors.toList());
  390. }
  391. List<OrganizeAdministratorEntity> list = getOrganizeAdministratorEntity(UserProvider.getLoginUserId());
  392. Set<String> orgId = new HashSet<>(16);
  393. // 判断自己是哪些组织的管理员
  394. list.stream().forEach(t -> {
  395. if (t != null) {
  396. if (t.getSubLayerSelect() != null && t.getThisLayerSelect() == 1) {
  397. orgId.add(t.getOrganizeId());
  398. }
  399. if (t.getSubLayerSelect() != null && t.getSubLayerSelect() == 1) {
  400. List<String> underOrganizations = organizeService.getUnderOrganizations(t.getOrganizeId(), true);
  401. orgId.addAll(underOrganizations);
  402. }
  403. }
  404. });
  405. List<String> orgIds = new ArrayList<>(orgId);
  406. if (JnpfConst.CURRENT_ORG_SUB.equals(type)) {
  407. return orgIds;
  408. }
  409. List<String> userList = userRelationService.getListByObjectIdAll(orgIds).stream().map(UserRelationEntity::getUserId).collect(Collectors.toList());
  410. return userList;
  411. }
  412. @Override
  413. public List<OrganizeEntity> getListByAuthorize() {
  414. // 通过权限转树
  415. List<OrganizeAdministratorEntity> listss = getOrganizeAdministratorEntity(UserProvider.getLoginUserId());
  416. Set<String> orgIds = new HashSet<>(16);
  417. // 判断自己是哪些组织的管理员
  418. listss.stream().forEach(t -> {
  419. if (t != null) {
  420. if (t.getThisLayerSelect() != null && t.getThisLayerSelect() == 1) {
  421. orgIds.add(t.getOrganizeId());
  422. }
  423. if (t.getSubLayerSelect() != null && t.getSubLayerSelect() == 1) {
  424. List<String> underOrganizations = organizeService.getUnderOrganizations(t.getOrganizeId(), true);
  425. orgIds.addAll(underOrganizations);
  426. }
  427. }
  428. });
  429. List<String> list1 = new ArrayList<>(orgIds);
  430. // 得到所有有权限的组织
  431. List<OrganizeEntity> organizeName = organizeService.getOrganizeName(list1);
  432. return organizeName;
  433. }
  434. @Override
  435. public OrganizeAdministratorModel getOrganizeAdministratorList() {
  436. // 通过权限转树
  437. List<OrganizeAdministratorEntity> list = getOrganizeAdministratorEntity(UserProvider.getUser().getUserId());
  438. List<String> addList = new ArrayList<>();
  439. List<String> editList = new ArrayList<>();
  440. List<String> deleteList = new ArrayList<>();
  441. List<String> selectList = new ArrayList<>();
  442. // 判断自己是哪些组织的管理员
  443. list.forEach(t -> {
  444. if (t != null) {
  445. //查询
  446. if (t.getThisLayerSelect() != null && t.getThisLayerSelect() == 1) {
  447. selectList.add(t.getOrganizeId());
  448. //修改
  449. if (t.getThisLayerEdit() != null && t.getThisLayerEdit() == 1) {
  450. editList.add(t.getOrganizeId());
  451. }
  452. //删除
  453. if (t.getThisLayerDelete() != null && t.getThisLayerDelete() == 1) {
  454. deleteList.add(t.getOrganizeId());
  455. }
  456. //新增
  457. if (t.getThisLayerAdd() != null && t.getThisLayerAdd() == 1) {
  458. addList.add(t.getOrganizeId());
  459. }
  460. }
  461. //查询
  462. if (t.getSubLayerSelect() != null && t.getSubLayerSelect() == 1) {
  463. List<String> underOrganizations = organizeService.getUnderOrganizations(t.getOrganizeId(), false);
  464. selectList.addAll(underOrganizations);
  465. //修改
  466. if (t.getSubLayerEdit() != null && t.getSubLayerEdit() == 1) {
  467. editList.addAll(underOrganizations);
  468. }
  469. //删除
  470. if (t.getSubLayerDelete() != null && t.getSubLayerDelete() == 1) {
  471. deleteList.addAll(underOrganizations);
  472. }
  473. //新增
  474. if (t.getSubLayerAdd() != null && t.getSubLayerAdd() == 1) {
  475. addList.addAll(underOrganizations);
  476. }
  477. }
  478. }
  479. });
  480. OrganizeAdministratorModel model = new OrganizeAdministratorModel(addList, editList, deleteList, selectList);
  481. return model;
  482. }
  483. }