ModuleDataServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package jnpf.base.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import jnpf.base.Page;
  4. import jnpf.base.Pagination;
  5. import jnpf.base.UserInfo;
  6. import jnpf.base.entity.ModuleDataEntity;
  7. import jnpf.base.entity.SystemEntity;
  8. import jnpf.base.mapper.ModuleDataMapper;
  9. import jnpf.base.model.module.ModuleModel;
  10. import jnpf.base.service.ModuleDataService;
  11. import jnpf.base.service.ModuleService;
  12. import jnpf.base.service.SuperServiceImpl;
  13. import jnpf.base.service.SystemService;
  14. import jnpf.constant.JnpfConst;
  15. import jnpf.consts.DeviceType;
  16. import jnpf.model.UserMenuModel;
  17. import jnpf.model.login.AllMenuSelectVO;
  18. import jnpf.permission.model.authorize.AuthorizeVO;
  19. import jnpf.permission.service.AuthorizeService;
  20. import jnpf.util.JsonUtil;
  21. import jnpf.util.RandomUtil;
  22. import jnpf.util.StringUtil;
  23. import jnpf.util.UserProvider;
  24. import jnpf.util.context.RequestContext;
  25. import jnpf.util.treeutil.ListToTreeUtil;
  26. import jnpf.util.treeutil.SumTree;
  27. import jnpf.util.treeutil.newtreeutil.TreeDotUtils;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.stereotype.Service;
  30. import java.util.*;
  31. import java.util.stream.Collectors;
  32. /**
  33. * @author JNPF开发平台组
  34. * @version V3.4.2
  35. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  36. * @date 2022/5/30
  37. */
  38. @Service
  39. public class ModuleDataServiceImpl extends SuperServiceImpl<ModuleDataMapper, ModuleDataEntity> implements ModuleDataService {
  40. @Autowired
  41. private ModuleService moduleService;
  42. @Autowired
  43. private AuthorizeService authorizeApi;
  44. @Autowired
  45. private SystemService systemService;
  46. @Override
  47. public List<ModuleDataEntity> getList(String category, Page page) {
  48. List<ModuleModel> moduleModels = menuList(category).stream().filter(t -> category.equals(t.getCategory())).collect(Collectors.toList());
  49. if (StringUtil.isNotEmpty(page.getKeyword())) {
  50. moduleModels = moduleModels.stream().filter(t -> t.getFullName().contains(page.getKeyword())).collect(Collectors.toList());
  51. }
  52. List<String> moduleId = moduleModels.stream().map(ModuleModel::getId).collect(Collectors.toList());
  53. if (moduleId.size() == 0) {
  54. return new ArrayList<>();
  55. }
  56. UserInfo userInfo = UserProvider.getUser();
  57. QueryWrapper<ModuleDataEntity> queryWrapper = new QueryWrapper<>();
  58. queryWrapper.lambda().eq(ModuleDataEntity::getCreatorUserId, userInfo.getUserId());
  59. queryWrapper.lambda().eq(ModuleDataEntity::getModuleType, category);
  60. queryWrapper.lambda().in(ModuleDataEntity::getModuleId, moduleId);
  61. return this.list(queryWrapper);
  62. }
  63. @Override
  64. public void create(String moduleId) {
  65. UserInfo userInfo = UserProvider.getUser();
  66. boolean pc = DeviceType.PC.getDevice().equals(userInfo.getLoginDevice());
  67. ModuleDataEntity entity = new ModuleDataEntity();
  68. entity.setId(RandomUtil.uuId());
  69. entity.setCreatorUserId(userInfo.getUserId());
  70. entity.setCreatorTime(new Date());
  71. entity.setEnabledMark(1);
  72. entity.setModuleId(moduleId);
  73. entity.setSystemId(pc ? userInfo.getSystemId() : userInfo.getAppSystemId());
  74. entity.setModuleType(pc ? JnpfConst.WEB : JnpfConst.APP);
  75. this.save(entity);
  76. }
  77. @Override
  78. public ModuleDataEntity getInfo(String ObjectId) {
  79. UserInfo userInfo = UserProvider.getUser();
  80. boolean pc = DeviceType.PC.getDevice().equals(userInfo.getLoginDevice());
  81. QueryWrapper<ModuleDataEntity> queryWrapper = new QueryWrapper<>();
  82. queryWrapper.lambda().eq(ModuleDataEntity::getModuleId, ObjectId).eq(ModuleDataEntity::getCreatorUserId, userInfo.getUserId());
  83. queryWrapper.lambda().eq(ModuleDataEntity::getModuleType, pc ? JnpfConst.WEB : JnpfConst.APP);
  84. return this.getOne(queryWrapper);
  85. }
  86. @Override
  87. public boolean isExistByObjectId(String moduleId) {
  88. UserInfo userInfo = UserProvider.getUser();
  89. boolean pc = DeviceType.PC.getDevice().equals(userInfo.getLoginDevice());
  90. QueryWrapper<ModuleDataEntity> queryWrapper = new QueryWrapper<>();
  91. queryWrapper.lambda().eq(ModuleDataEntity::getModuleId, moduleId)
  92. .eq(ModuleDataEntity::getModuleType, pc ? JnpfConst.WEB : JnpfConst.APP)
  93. .eq(ModuleDataEntity::getCreatorUserId, userInfo.getUserId());
  94. return this.count(queryWrapper) > 0 ? true : false;
  95. }
  96. @Override
  97. public void delete(ModuleDataEntity entity) {
  98. this.removeById(entity.getId());
  99. }
  100. @Override
  101. public void delete(String moduleId) {
  102. QueryWrapper<ModuleDataEntity> queryWrapper = new QueryWrapper<>();
  103. queryWrapper.lambda().eq(ModuleDataEntity::getModuleId, moduleId);
  104. this.remove(queryWrapper);
  105. }
  106. @Override
  107. public List<AllMenuSelectVO> getDataList(Page page) {
  108. List<String> idAll = getList(JnpfConst.APP, new Page()).stream().map(ModuleDataEntity::getModuleId).collect(Collectors.toList());
  109. List<ModuleModel> menuListAll = menuList();
  110. List<ModuleModel> menuList = menuListAll;
  111. if (StringUtil.isNotEmpty(page.getKeyword())) {
  112. menuList = menuList.stream().filter(t -> t.getFullName().contains(page.getKeyword())).collect(Collectors.toList());
  113. }
  114. List<UserMenuModel> list = JsonUtil.getJsonToList(ListToTreeUtil.treeWhere(menuList, menuListAll), UserMenuModel.class);
  115. for (UserMenuModel model : list) {
  116. model.setIsData(idAll.contains(model.getId()));
  117. }
  118. List<UserMenuModel> modelList = modelList(list);
  119. List<SumTree<UserMenuModel>> menuAll = TreeDotUtils.convertListToTreeDot(modelList, "-1");
  120. List<AllMenuSelectVO> data = JsonUtil.getJsonToList(menuAll, AllMenuSelectVO.class);
  121. return data;
  122. }
  123. @Override
  124. public List<AllMenuSelectVO> getAppDataList(Pagination pagination) {
  125. List<AllMenuSelectVO> listVO = new LinkedList<>();
  126. List<String> idAll = getList(JnpfConst.APP, new Page()).stream().map(ModuleDataEntity::getModuleId).collect(Collectors.toList());
  127. List<ModuleModel> moduleModels = menuList();
  128. List<ModuleModel> appData = moduleModels.stream().filter(t -> idAll.contains(t.getId())).collect(Collectors.toList());
  129. String keyword = pagination.getKeyword();
  130. if (StringUtil.isNotEmpty(keyword)) {
  131. appData = appData.stream().filter(t -> t.getFullName().contains(keyword)).collect(Collectors.toList());
  132. }
  133. if (appData.size() == 0) {
  134. return new ArrayList<>();
  135. }
  136. List<UserMenuModel> list = JsonUtil.getJsonToList(ListToTreeUtil.treeWhere(appData, moduleModels), UserMenuModel.class);
  137. List<UserMenuModel> modelList = modelList(list);
  138. List<SumTree<UserMenuModel>> menuAll = TreeDotUtils.convertListToTreeDot(modelList);
  139. listVO.addAll(JsonUtil.getJsonToList(menuAll, AllMenuSelectVO.class));
  140. return listVO;
  141. }
  142. private List<UserMenuModel> modelList(List<UserMenuModel> list) {
  143. List<UserMenuModel> lists = list.stream().filter(t -> "-1".equals(t.getParentId())).collect(Collectors.toList());
  144. List<UserMenuModel> modelList = new ArrayList<>();
  145. for (UserMenuModel userMenuModel : lists) {
  146. List<String> idList = new ArrayList<>();
  147. String id = userMenuModel.getId();
  148. parentList(list, id, idList);
  149. List<UserMenuModel> collect = list.stream().filter(t -> idList.contains(t.getId())).collect(Collectors.toList());
  150. for (UserMenuModel menuModel : collect) {
  151. menuModel.setParentId(id);
  152. }
  153. modelList.addAll(collect);
  154. modelList.add(userMenuModel);
  155. }
  156. return modelList;
  157. }
  158. private void parentList(List<UserMenuModel> list, String parentId, List<String> idList) {
  159. List<UserMenuModel> menuList = list.stream().filter(t -> parentId.equals(t.getParentId())).collect(Collectors.toList());
  160. for (UserMenuModel menu : menuList) {
  161. List<UserMenuModel> collect = list.stream().filter(t -> t.getParentId().equals(menu.getId())).collect(Collectors.toList());
  162. idList.addAll(collect.stream().filter(t -> !Objects.equals(t.getType(), 1)).map(UserMenuModel::getId).collect(Collectors.toList()));
  163. if (collect.size() > 0) {
  164. parentList(list, menu.getId(), idList);
  165. }
  166. if (!Objects.equals(menu.getType(), 1)) {
  167. idList.add(menu.getId());
  168. }
  169. }
  170. }
  171. private List<ModuleModel> menuList() {
  172. String appSystemId = UserProvider.getUser().getAppSystemId();
  173. AuthorizeVO authorizeModel = authorizeApi.getAuthorizeByUser(false);
  174. List<ModuleModel> menuList = authorizeModel.getModuleList().stream().filter(t ->
  175. !JnpfConst.MODULE_CODE.contains(t.getEnCode()) && JnpfConst.APP.equals(t.getCategory()) && t.getSystemId().equals(appSystemId)
  176. ).collect(Collectors.toList());
  177. return menuList;
  178. }
  179. private List<ModuleModel> menuList(String category) {
  180. String appCode = RequestContext.getAppCode();
  181. AuthorizeVO authorizeModel = authorizeApi.getAuthorizeByUser(true);
  182. List<ModuleModel> menuList = authorizeModel.getModuleList().stream().filter(t -> category.equals(t.getCategory())).collect(Collectors.toList());
  183. if (!JnpfConst.MAIN_SYSTEM_CODE.equals(appCode)) {
  184. SystemEntity systemEntity = systemService.getInfoByEnCode(appCode);
  185. String systemId = JnpfConst.WEB.equals(category) ? systemEntity.getId() : UserProvider.getUser().getAppSystemId();
  186. menuList = menuList.stream().filter(t -> t.getSystemId().equals(systemId)).collect(Collectors.toList());
  187. }
  188. return menuList;
  189. }
  190. @Override
  191. public List<ModuleModel> getFavoritesList(List<ModuleModel> moduleList) {
  192. String category = RequestContext.isOrignPc() ? JnpfConst.WEB : JnpfConst.APP;
  193. SystemEntity infoByEnCode = systemService.getInfoByEnCode(RequestContext.getAppCode());
  194. List<ModuleModel> moduleModels = moduleList.stream().filter(t -> category.equals(t.getCategory())).collect(Collectors.toList());
  195. Map<String, ModuleModel> map = moduleModels.stream().collect(Collectors.toMap(ModuleModel::getId, t -> t));
  196. List<String> moduleId = moduleModels.stream().map(ModuleModel::getId).collect(Collectors.toList());
  197. if (moduleId.size() == 0) {
  198. return new ArrayList<>();
  199. }
  200. UserInfo userInfo = UserProvider.getUser();
  201. QueryWrapper<ModuleDataEntity> queryWrapper = new QueryWrapper<>();
  202. queryWrapper.lambda().eq(ModuleDataEntity::getCreatorUserId, userInfo.getUserId());
  203. queryWrapper.lambda().eq(ModuleDataEntity::getModuleType, category);
  204. queryWrapper.lambda().in(ModuleDataEntity::getModuleId, moduleId);
  205. if (!RequestContext.isOrignPc() && infoByEnCode != null) {
  206. queryWrapper.lambda().in(ModuleDataEntity::getSystemId, infoByEnCode.getId());
  207. }
  208. List<ModuleDataEntity> list = this.list(queryWrapper);
  209. List<ModuleModel> listRes = new ArrayList<>();
  210. for (ModuleDataEntity moduleDataEntity : list) {
  211. ModuleModel moduleModel = map.get(moduleDataEntity.getModuleId());
  212. listRes.add(moduleModel);
  213. }
  214. return listRes;
  215. }
  216. }