PubulishUtil.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. package jnpf.base.util.visualUtil;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.google.common.collect.ImmutableMap;
  6. import jnpf.base.UserInfo;
  7. import jnpf.base.entity.*;
  8. import jnpf.base.model.module.PropertyJsonModel;
  9. import jnpf.base.model.online.AuthFlieds;
  10. import jnpf.base.model.online.PerColModels;
  11. import jnpf.base.model.online.VisualMenuModel;
  12. import jnpf.base.service.*;
  13. import jnpf.constant.JnpfConst;
  14. import jnpf.exception.WorkFlowException;
  15. import jnpf.util.*;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Component;
  18. import java.util.*;
  19. import java.util.stream.Collectors;
  20. /**
  21. * 功能发布
  22. *
  23. * @author JNPF开发平台组
  24. * @version V3.4
  25. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  26. * @date 2022/4/7
  27. */
  28. @Component
  29. public class PubulishUtil {
  30. @Autowired
  31. private ModuleService moduleService;
  32. @Autowired
  33. private ModuleButtonService moduleButtonService;
  34. @Autowired
  35. private ModuleColumnService moduleColumnService;
  36. @Autowired
  37. private ModuleFormService moduleFormService;
  38. @Autowired
  39. private ModuleDataAuthorizeService moduleDataAuthorizeService;
  40. @Autowired
  41. private ModuleDataAuthorizeSchemeService moduleDataAuthorizeSchemeService;
  42. @Autowired
  43. private SystemService systemService;
  44. /**
  45. * 功能类型
  46. */
  47. private final static Integer Type = 3;
  48. /**
  49. * pc父级菜单 默认
  50. */
  51. private static final String pcCate = "功能示例";
  52. /**
  53. * app父级菜单 默认
  54. */
  55. private static final String appCate = "移动应用";
  56. /**
  57. * pc端分类
  58. */
  59. private static final String pcCategory = JnpfConst.WEB;
  60. /**
  61. * app端分类
  62. */
  63. private static final String appCategory = JnpfConst.APP;
  64. /**
  65. * pc父级菜单id 默认
  66. */
  67. private String parentId;
  68. /**
  69. * app父级菜单id
  70. */
  71. private String appParentId;
  72. /**
  73. * 图标
  74. */
  75. private final static String icon = "icon-ym icon-ym-webForm";
  76. private final static List<String> symbol = new ArrayList() {{
  77. add("@userId");
  78. add("@organizeId");
  79. }};
  80. private final static Map<Integer, String> pcAddress = ImmutableMap.of(3, "model", 8, "portal", 10, "report", 11, "form");
  81. public void publishMenu(VisualMenuModel visualMenuModel) throws WorkFlowException {
  82. UserInfo userInfo = UserProvider.getUser();
  83. List<ModuleEntity> moduleList = moduleService.getModuleList(visualMenuModel.getId());
  84. ModuleEntity moduleEntity = new ModuleEntity();
  85. PerColModels pcPerCols = visualMenuModel.getPcPerCols() != null ? visualMenuModel.getPcPerCols() : new PerColModels();
  86. PerColModels appPerCols = visualMenuModel.getAppPerCols() != null ? visualMenuModel.getAppPerCols() : new PerColModels();
  87. moduleEntity.setCategory(pcCategory);
  88. moduleEntity.setFullName(visualMenuModel.getFullName());
  89. moduleEntity.setEnCode(visualMenuModel.getEnCode());
  90. moduleEntity.setIcon(icon);
  91. moduleEntity.setType(visualMenuModel.getType());
  92. moduleEntity.setModuleId(visualMenuModel.getId());
  93. PropertyJsonModel jsonModel = new PropertyJsonModel();
  94. jsonModel.setModuleId(visualMenuModel.getId());
  95. jsonModel.setIconBackgroundColor("");
  96. jsonModel.setIsTree(0);
  97. jsonModel.setWebType(visualMenuModel.getWebType());
  98. moduleEntity.setPropertyJson(JsonUtil.getObjectToString(jsonModel));
  99. moduleEntity.setSortCode((999L));
  100. moduleEntity.setEnabledMark(1);
  101. moduleEntity.setCreatorTime(DateUtil.getNowDate());
  102. moduleEntity.setCreatorUserId(userInfo.getUserId());
  103. String address = pcAddress.get(visualMenuModel.getType());
  104. moduleEntity.setUrlAddress(address + "/" + visualMenuModel.getEnCode());
  105. if (Objects.equals(visualMenuModel.getType(), 11)) {
  106. moduleEntity.setPageAddress(visualMenuModel.getWebAddress());
  107. }
  108. if (1 == visualMenuModel.getPc()) {
  109. List<Integer> pcAuth = visualMenuModel.getPcAuth();
  110. if (pcAuth == null || pcAuth.size() == 0 || pcAuth.size() != 4) {
  111. pcAuth = Arrays.asList(0, 0, 0, 0);
  112. }
  113. moduleEntity.setIsButtonAuthorize(pcAuth.get(0));
  114. moduleEntity.setIsColumnAuthorize(pcAuth.get(1));
  115. moduleEntity.setIsDataAuthorize(pcAuth.get(2));
  116. moduleEntity.setIsFormAuthorize(pcAuth.get(3));
  117. List<ModuleEntity> pcModuleList = moduleList.stream().filter(module -> pcCategory.equals(module.getCategory())).collect(Collectors.toList());
  118. //是否生成过菜单
  119. if (pcModuleList.size() > 0) {
  120. for (ModuleEntity entity : pcModuleList) {
  121. //变更权限
  122. if (pcPerCols != null) alterPer(entity, pcPerCols);
  123. //更新菜单
  124. entity.setPropertyJson(JsonUtil.getObjectToString(jsonModel));
  125. entity.setIsButtonAuthorize(pcAuth.get(0));
  126. entity.setIsColumnAuthorize(pcAuth.get(1));
  127. entity.setIsDataAuthorize(pcAuth.get(2));
  128. entity.setIsFormAuthorize(pcAuth.get(3));
  129. entity.setUrlAddress(moduleEntity.getUrlAddress());
  130. entity.setPageAddress(moduleEntity.getPageAddress());
  131. moduleService.update(entity.getId(), entity);
  132. }
  133. }
  134. this.createMenu(moduleEntity, visualMenuModel, pcPerCols, true);
  135. }
  136. Map<Integer, String> appAddress = ImmutableMap.of(3, "dynamicModel", 8, "visualPortal", 11, "form");
  137. moduleEntity.setCategory(appCategory);
  138. String portalAddress = appAddress.get(visualMenuModel.getType());
  139. String urlAddress = StringUtil.isNotEmpty(portalAddress) ? "/pages/apply/" + portalAddress + "/index?id=" + visualMenuModel.getId() : visualMenuModel.getEnCode();
  140. moduleEntity.setUrlAddress(urlAddress);
  141. if (Objects.equals(visualMenuModel.getType(), 11)) {
  142. moduleEntity.setUrlAddress(visualMenuModel.getAppAddress());
  143. moduleEntity.setPageAddress(visualMenuModel.getAppAddress());
  144. }
  145. if (1 == visualMenuModel.getApp()) {
  146. List<Integer> appAuth = visualMenuModel.getAppAuth();
  147. if (appAuth == null || appAuth.size() == 0 || appAuth.size() != 4) {
  148. appAuth = Arrays.asList(0, 0, 0, 0);
  149. }
  150. moduleEntity.setIsButtonAuthorize(appAuth.get(0));
  151. moduleEntity.setIsColumnAuthorize(appAuth.get(1));
  152. moduleEntity.setIsDataAuthorize(appAuth.get(2));
  153. moduleEntity.setIsFormAuthorize(appAuth.get(3));
  154. List<ModuleEntity> appModuleList = moduleList.stream().filter(module -> appCategory.equals(module.getCategory())).collect(Collectors.toList());
  155. if (appModuleList.size() > 0) {
  156. for (ModuleEntity entity : appModuleList) {
  157. //变更权限
  158. if (appPerCols != null) alterPer(entity, appPerCols);
  159. //更新菜单
  160. entity.setPropertyJson(JsonUtil.getObjectToString(jsonModel));
  161. entity.setIsButtonAuthorize(appAuth.get(0));
  162. entity.setIsColumnAuthorize(appAuth.get(1));
  163. entity.setIsDataAuthorize(appAuth.get(2));
  164. entity.setIsFormAuthorize(appAuth.get(3));
  165. entity.setUrlAddress(moduleEntity.getUrlAddress());
  166. entity.setPageAddress(moduleEntity.getPageAddress());
  167. moduleService.update(entity.getId(), entity);
  168. }
  169. }
  170. this.createMenu(moduleEntity, visualMenuModel, appPerCols, false);
  171. }
  172. }
  173. /**
  174. * 创建菜单验证
  175. *
  176. * @param moduleEntity
  177. * @return
  178. */
  179. private void createMenu(ModuleEntity moduleEntity, VisualMenuModel visualMenuModel, PerColModels perCols, Boolean isPc) throws WorkFlowException {
  180. List<ModuleEntity> list = new ArrayList<>();
  181. List<String> parentIds;
  182. if (isPc) {
  183. parentIds = visualMenuModel.getPcModuleParentId();
  184. } else {
  185. parentIds = visualMenuModel.getAppModuleParentId();
  186. }
  187. //创建菜单
  188. String fullName = moduleEntity.getFullName();
  189. String enCode = moduleEntity.getEnCode();
  190. List<ModuleEntity> moduleList = moduleService.getModuleList(visualMenuModel.getId());
  191. if (CollectionUtil.isEmpty(parentIds) && CollectionUtil.isEmpty(moduleList)) {
  192. throw new WorkFlowException("上级不能为空");
  193. }
  194. for (String pid : parentIds) {
  195. ModuleEntity saveEnt = BeanUtil.copyProperties(moduleEntity, ModuleEntity.class);
  196. saveEnt.setId(RandomUtil.uuId());
  197. String copyNum = UUID.randomUUID().toString().substring(0, 5);
  198. ModuleEntity pInfo = moduleService.getInfo(pid);
  199. //查询不到菜单说明上级是系统
  200. if (pInfo != null) {
  201. saveEnt.setParentId(pid);
  202. saveEnt.setSystemId(pInfo.getSystemId());
  203. } else {
  204. SystemEntity info = systemService.getInfo(pid);
  205. if (info == null) {
  206. throw new WorkFlowException("找不到该上级");
  207. }
  208. saveEnt.setParentId("-1");
  209. saveEnt.setSystemId(pid);
  210. }
  211. saveEnt.setFullName(fullName);
  212. saveEnt.setEnCode(enCode + copyNum);
  213. if (isPc) {
  214. String address = pcAddress.get(visualMenuModel.getType());
  215. saveEnt.setUrlAddress(address + "/" + saveEnt.getEnCode());
  216. }
  217. if (moduleService.isExistByFullName(saveEnt, saveEnt.getCategory(), saveEnt.getSystemId())) {
  218. throw new WorkFlowException("名称重复");
  219. }
  220. if (moduleService.isExistByEnCode(saveEnt, saveEnt.getCategory(), saveEnt.getSystemId())) {
  221. throw new WorkFlowException("编码重复");
  222. }
  223. if (perCols != null) batchCreatePermissions(perCols, saveEnt.getId());
  224. list.add(saveEnt);
  225. }
  226. moduleService.saveBatch(list);
  227. }
  228. private void batchCreatePermissions(PerColModels perColModels, String moduleId) {
  229. List<AuthFlieds> buttonPermission = Objects.nonNull(perColModels.getButtonPermission()) ? perColModels.getButtonPermission() : new ArrayList<>();
  230. List<AuthFlieds> formPermission = Objects.nonNull(perColModels.getFormPermission()) ? perColModels.getFormPermission() : new ArrayList<>();
  231. List<AuthFlieds> listPermission = Objects.nonNull(perColModels.getListPermission()) ? perColModels.getListPermission() : new ArrayList<>();
  232. List<ModuleDataAuthorizeSchemeEntity> dataPermissionScheme = Objects.nonNull(perColModels.getDataPermissionScheme()) ? perColModels.getDataPermissionScheme() : new ArrayList<>();
  233. //按钮
  234. List<ModuleButtonEntity> buttonEntities = buttonPermission.stream().map(button -> {
  235. ModuleButtonEntity buttonEntity = new ModuleButtonEntity();
  236. buttonEntity.setEnabledMark(button.getStatus() ? 1 : 0);
  237. buttonEntity.setEnCode(button.getEnCode());
  238. buttonEntity.setFullName(button.getFullName());
  239. buttonEntity.setParentId("-1");
  240. buttonEntity.setModuleId(moduleId);
  241. buttonEntity.setSortCode(0L);
  242. return buttonEntity;
  243. }).collect(Collectors.toList());
  244. //表单权限
  245. List<ModuleFormEntity> moduleFormEntities = formPermission.stream().map(form -> {
  246. ModuleFormEntity formEntity = new ModuleFormEntity();
  247. formEntity.setBindTable(form.getBindTableName());
  248. formEntity.setEnabledMark(form.getStatus() ? 1 : 0);
  249. formEntity.setEnCode(form.getEnCode());
  250. formEntity.setFullName(form.getFullName());
  251. formEntity.setParentId("-1");
  252. formEntity.setModuleId(moduleId);
  253. formEntity.setFieldRule(form.getRule());
  254. formEntity.setChildTableKey(form.getChildTableKey());
  255. formEntity.setSortCode(0L);
  256. return formEntity;
  257. }).collect(Collectors.toList());
  258. //列表
  259. List<ModuleColumnEntity> moduleColumnEntities = listPermission.stream().map(list -> {
  260. ModuleColumnEntity moduleColumnEntity = new ModuleColumnEntity();
  261. moduleColumnEntity.setBindTable(list.getBindTableName());
  262. moduleColumnEntity.setEnabledMark(list.getStatus() ? 1 : 0);
  263. moduleColumnEntity.setEnCode(list.getEnCode());
  264. moduleColumnEntity.setFullName(list.getFullName());
  265. moduleColumnEntity.setParentId("-1");
  266. moduleColumnEntity.setModuleId(moduleId);
  267. moduleColumnEntity.setSortCode(0L);
  268. moduleColumnEntity.setChildTableKey(list.getChildTableKey());
  269. moduleColumnEntity.setFieldRule(list.getRule());
  270. return moduleColumnEntity;
  271. }).collect(Collectors.toList());
  272. for (ModuleButtonEntity btn : buttonEntities) {
  273. moduleButtonService.create(btn);
  274. }
  275. for (ModuleFormEntity formEntity : moduleFormEntities) {
  276. moduleFormService.create(formEntity);
  277. }
  278. for (ModuleColumnEntity moduleColumnEntity : moduleColumnEntities) {
  279. moduleColumnService.create(moduleColumnEntity);
  280. }
  281. //方案
  282. for (ModuleDataAuthorizeSchemeEntity moduleDataAuthorizeEntity : dataPermissionScheme) {
  283. moduleDataAuthorizeEntity.setId(RandomUtil.uuId());
  284. moduleDataAuthorizeEntity.setModuleId(moduleId);
  285. moduleDataAuthorizeSchemeService.save(moduleDataAuthorizeEntity);
  286. }
  287. //创建全部数据方案
  288. if (Objects.nonNull(perColModels.getDataPermissionScheme())) {
  289. Boolean exist = moduleDataAuthorizeSchemeService.isExistAllData(moduleId);
  290. if (!exist) {
  291. ModuleDataAuthorizeSchemeEntity moduleDataAuthorizeSchemeEntity = new ModuleDataAuthorizeSchemeEntity();
  292. moduleDataAuthorizeSchemeEntity.setFullName("全部数据");
  293. moduleDataAuthorizeSchemeEntity.setEnCode("jnpf_alldata");
  294. moduleDataAuthorizeSchemeEntity.setAllData(1);
  295. moduleDataAuthorizeSchemeEntity.setModuleId(moduleId);
  296. moduleDataAuthorizeSchemeService.create(moduleDataAuthorizeSchemeEntity);
  297. }
  298. }
  299. }
  300. private void getModuleParentId() {
  301. QueryWrapper<ModuleEntity> moduleWrapper = new QueryWrapper<>();
  302. moduleWrapper.lambda().eq(ModuleEntity::getFullName, pcCate).eq(ModuleEntity::getCategory, pcCategory);
  303. ModuleEntity pcModule = moduleService.getOne(moduleWrapper);
  304. if (pcModule != null) {
  305. this.setParentId(pcModule.getId());
  306. }
  307. QueryWrapper<ModuleEntity> appWrapper = new QueryWrapper<>();
  308. appWrapper.lambda().eq(ModuleEntity::getFullName, appCate).eq(ModuleEntity::getCategory, appCategory);
  309. ModuleEntity appModule = moduleService.getOne(appWrapper);
  310. if (appModule != null) {
  311. this.setAppParentId(appModule.getId());
  312. }
  313. }
  314. /**
  315. * 自动变更权限
  316. *
  317. * @param entity
  318. * @param perColModelSour
  319. * @return
  320. */
  321. private void alterPer(ModuleEntity entity, PerColModels perColModelSour) {
  322. String moduleMainId = entity.getId();
  323. PerColModels perColModel = BeanUtil.copyProperties(perColModelSour, PerColModels.class);
  324. PerColModels perColModels = new PerColModels();
  325. //列表
  326. if (perColModel.getListPermission() != null) {
  327. Map<String, String> colMap = new HashMap<>();
  328. List<ModuleColumnEntity> columnEntities = moduleColumnService.getList(moduleMainId);
  329. columnEntities.stream().forEach(col -> colMap.put(col.getEnCode(), col.getId()));
  330. List<AuthFlieds> listPermission = perColModel.getListPermission() != null ? perColModel.getListPermission() : new ArrayList<>();
  331. //只变更状态
  332. List<AuthFlieds> authColList = intersectList1(listPermission, colMap);
  333. Map<String, Boolean> stateMap = new HashMap<>();
  334. authColList.stream().forEach(auth -> stateMap.put(auth.getEnCode(), auth.getStatus()));
  335. for (ModuleColumnEntity columnEntity : columnEntities) {
  336. if (Objects.nonNull(stateMap.get(columnEntity.getEnCode()))) {
  337. columnEntity.setEnabledMark(stateMap.get(columnEntity.getEnCode()) ? 1 : 0);
  338. moduleColumnService.update(columnEntity.getId(), columnEntity);
  339. }
  340. }
  341. //新增
  342. List<AuthFlieds> authColCreList = intersectList2(listPermission, authColList);
  343. perColModels.setListPermission(authColCreList);
  344. }
  345. //表单
  346. if (perColModel.getFormPermission() != null) {
  347. Map<String, String> formMap = new HashMap<>();
  348. List<ModuleFormEntity> formEntities = moduleFormService.getList(moduleMainId);
  349. formEntities.stream().forEach(form -> formMap.put(form.getEnCode(), form.getId()));
  350. List<AuthFlieds> formPermission = perColModel.getFormPermission() != null ? perColModel.getFormPermission() : new ArrayList<>();
  351. List<AuthFlieds> authFormList = intersectList1(formPermission, formMap);
  352. Map<String, Boolean> stateFMap = new HashMap<>();
  353. authFormList.stream().forEach(auth -> stateFMap.put(auth.getEnCode(), auth.getStatus()));
  354. for (ModuleFormEntity formEntity : formEntities) {
  355. if (Objects.nonNull(stateFMap.get(formEntity.getEnCode()))) {
  356. formEntity.setEnabledMark(stateFMap.get(formEntity.getEnCode()) ? 1 : 0);
  357. moduleFormService.update(formEntity.getId(), formEntity);
  358. }
  359. }
  360. List<AuthFlieds> authFormCreList = intersectList2(formPermission, authFormList);
  361. perColModels.setFormPermission(authFormCreList);
  362. }
  363. //按钮权限
  364. if (perColModel.getButtonPermission() != null) {
  365. Map<String, String> btnMap = new HashMap<>();
  366. List<ModuleButtonEntity> buttonEntities = moduleButtonService.getListByModuleIds(moduleMainId);
  367. buttonEntities.stream().forEach(btn -> btnMap.put(btn.getEnCode(), btn.getId()));
  368. List<AuthFlieds> buttonPermission = perColModel.getButtonPermission() != null ? perColModel.getButtonPermission() : new ArrayList<>();
  369. List<AuthFlieds> authBtnList = intersectList1(buttonPermission, btnMap);
  370. Map<String, Boolean> stateBMap = new HashMap<>();
  371. authBtnList.stream().forEach(auth -> stateBMap.put(auth.getEnCode(), auth.getStatus()));
  372. for (ModuleButtonEntity btnEntity : buttonEntities) {
  373. if (Objects.nonNull(stateBMap.get(btnEntity.getEnCode()))) {
  374. btnEntity.setEnabledMark(stateBMap.get(btnEntity.getEnCode()) ? 1 : 0);
  375. moduleButtonService.update(btnEntity.getId(), btnEntity);
  376. }
  377. }
  378. List<AuthFlieds> authBtnCreList = intersectList2(buttonPermission, authBtnList);
  379. perColModels.setButtonPermission(authBtnCreList);
  380. }
  381. //表单权限方案
  382. if (perColModel.getDataPermissionScheme() != null) {
  383. //交集
  384. List<ModuleDataAuthorizeSchemeEntity> togetherList = new ArrayList<>();
  385. List<ModuleDataAuthorizeSchemeEntity> dataAuthorizeSchemeList = moduleDataAuthorizeSchemeService.getList(moduleMainId);
  386. List<ModuleDataAuthorizeSchemeEntity> dataPermissionScheme = perColModel.getDataPermissionScheme();
  387. List<ModuleDataAuthorizeSchemeEntity> dataPermissionSchemeClone = new ArrayList<>(dataPermissionScheme);
  388. for (ModuleDataAuthorizeSchemeEntity authFlieds : dataPermissionScheme) {
  389. for (ModuleDataAuthorizeSchemeEntity schemeEntity : dataAuthorizeSchemeList) {
  390. if (schemeEntity.getConditionJson() == null) {
  391. continue;
  392. }
  393. if (Objects.equals(-9527l, schemeEntity.getSortCode()) && schemeEntity.getConditionText().contains(authFlieds.getConditionText())) {
  394. togetherList.add(authFlieds);
  395. }
  396. }
  397. }
  398. //需要新增 dataPermissionScheme
  399. dataPermissionScheme.removeAll(togetherList);
  400. //需要删除
  401. List<String> collect = dataPermissionSchemeClone.stream().map(ModuleDataAuthorizeSchemeEntity::getDescription).collect(Collectors.toList());
  402. List<ModuleDataAuthorizeSchemeEntity> deleteSchemeList = new ArrayList<>();
  403. if (dataAuthorizeSchemeList.size() > 0) {
  404. for (ModuleDataAuthorizeSchemeEntity item : dataAuthorizeSchemeList) {
  405. if (!collect.contains(item.getDescription()) && Objects.equals(-9527l, item.getSortCode())) {
  406. //需要移除的权限方案
  407. deleteSchemeList.add(item);
  408. }
  409. }
  410. }
  411. for (ModuleDataAuthorizeSchemeEntity scheme : deleteSchemeList) {
  412. moduleDataAuthorizeSchemeService.delete(scheme);
  413. }
  414. perColModels.setDataPermissionScheme(new ArrayList<>(dataPermissionScheme));
  415. }
  416. //新增的权限
  417. batchCreatePermissions(perColModels, moduleMainId);
  418. }
  419. /**
  420. * 取交集 (不需要变动的数据)
  421. *
  422. * @param authFlieds 新提交过来的
  423. * @param databaseMap 数据库存在数据
  424. * @return
  425. */
  426. private List<AuthFlieds> intersectList1(List<AuthFlieds> authFlieds, Map<String, String> databaseMap) {
  427. List<AuthFlieds> lastList = new LinkedList<>();
  428. for (AuthFlieds authFlied : authFlieds) {
  429. if (databaseMap.containsKey(authFlied.getEnCode())) {
  430. lastList.add(authFlied);
  431. }
  432. }
  433. return lastList;
  434. }
  435. /**
  436. * 求差集 (需要新增的数据) create
  437. *
  438. * @param auth1 新提交过来的
  439. * @param auth2 与数据库的交集
  440. * @return
  441. */
  442. private List<AuthFlieds> intersectList2(List<AuthFlieds> auth1, List<AuthFlieds> auth2) {
  443. auth1.removeAll(auth2);
  444. return auth1;
  445. }
  446. /**
  447. * 求差集 (需要变更的数据) delete
  448. *
  449. * @param databaseMap 数据库已存在的数据 <encode,id>
  450. * @param auth2 与数据库的交集
  451. * @return
  452. */
  453. private Map<String, String> intersectList3(Map<String, String> databaseMap, List<AuthFlieds> auth2) {
  454. Map<String, String> changeMap = new HashMap<>();
  455. changeMap.putAll(databaseMap);
  456. for (AuthFlieds authFlieds : auth2) {
  457. if (databaseMap.get(authFlieds.getEnCode()) != null) {
  458. changeMap.remove(authFlieds.getEnCode());
  459. }
  460. }
  461. return changeMap;
  462. }
  463. public void setParentId(String parentId) {
  464. this.parentId = parentId;
  465. }
  466. public void setAppParentId(String appParentId) {
  467. this.appParentId = appParentId;
  468. }
  469. public void publishPortalMenu(VisualMenuModel visualMenuModel) {
  470. }
  471. }