ModuleUseNumServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package jnpf.base.service.impl;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import jnpf.base.UserInfo;
  5. import jnpf.base.entity.ModuleEntity;
  6. import jnpf.base.entity.ModuleUserNumEntity;
  7. import jnpf.base.entity.SystemEntity;
  8. import jnpf.base.mapper.ModuleUseNumMapper;
  9. import jnpf.base.model.module.MenuSelectByUseNumVo;
  10. import jnpf.base.service.ModuleService;
  11. import jnpf.base.service.ModuleUseNumService;
  12. import jnpf.base.service.SuperServiceImpl;
  13. import jnpf.base.service.SystemService;
  14. import jnpf.constant.JnpfConst;
  15. import jnpf.util.JsonUtil;
  16. import jnpf.util.UserProvider;
  17. import jnpf.util.context.RequestContext;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.util.*;
  21. import java.util.stream.Collectors;
  22. @Service
  23. public class ModuleUseNumServiceImpl extends SuperServiceImpl<ModuleUseNumMapper, ModuleUserNumEntity> implements ModuleUseNumService {
  24. @Autowired
  25. private ModuleService moduleService;
  26. @Autowired
  27. private SystemService systemService;
  28. @Override
  29. public Boolean insertOrUpdateUseNum(String moduleId) {
  30. String appCode = RequestContext.getAppCode();
  31. UserInfo user = UserProvider.getUser();
  32. LambdaQueryWrapper<ModuleUserNumEntity> queryWrapper = new LambdaQueryWrapper<>();
  33. queryWrapper.eq(ModuleUserNumEntity::getModuleId, moduleId);
  34. queryWrapper.eq(ModuleUserNumEntity::getSystemCode, appCode);
  35. queryWrapper.eq(ModuleUserNumEntity::getUserId, user.getUserId());
  36. queryWrapper.eq(ModuleUserNumEntity::getSystemCode, appCode);
  37. ModuleUserNumEntity userNumEntity = this.getOne(queryWrapper);
  38. if (userNumEntity == null) {
  39. userNumEntity = new ModuleUserNumEntity();
  40. userNumEntity.setSystemCode(appCode);
  41. userNumEntity.setUserId(user.getUserId());
  42. userNumEntity.setModuleId(moduleId);
  43. userNumEntity.setUseNum(1);
  44. userNumEntity.setLastModifyTime(new Date());
  45. return this.save(userNumEntity);
  46. }
  47. userNumEntity.setSystemCode(appCode);
  48. userNumEntity.setUseNum(userNumEntity.getUseNum() + 1);
  49. userNumEntity.setLastModifyTime(null);
  50. return this.updateById(userNumEntity);
  51. }
  52. @Override
  53. public Boolean deleteUseNum(String ModuleId) {
  54. UserInfo user = UserProvider.getUser();
  55. LambdaQueryWrapper<ModuleUserNumEntity> queryWrapper = new LambdaQueryWrapper<>();
  56. queryWrapper.eq(ModuleUserNumEntity::getModuleId, ModuleId);
  57. queryWrapper.eq(ModuleUserNumEntity::getUserId, user.getUserId());
  58. return this.remove(queryWrapper);
  59. }
  60. /**
  61. * 获取常用数据
  62. *
  63. * @param type 0-最近常用 1-最近使用
  64. * @return 返回常用数据
  65. */
  66. @Override
  67. public List<MenuSelectByUseNumVo> getMenuUseNum(Integer type, List<String> authMenuList, List<ModuleEntity> allMenu) {
  68. if (CollectionUtil.isEmpty(authMenuList)) {
  69. return Collections.EMPTY_LIST;
  70. }
  71. boolean isPc = RequestContext.isOrignPc();
  72. String category = isPc ? JnpfConst.WEB : JnpfConst.APP;
  73. String appCode = RequestContext.getAppCode();
  74. SystemEntity infoByEnCode = systemService.getInfoByEnCode(appCode);
  75. UserInfo user = UserProvider.getUser();
  76. LambdaQueryWrapper<ModuleUserNumEntity> queryWrapper = new LambdaQueryWrapper<>();
  77. queryWrapper.eq(ModuleUserNumEntity::getUserId, user.getUserId());
  78. List<ModuleUserNumEntity> moduleUserNumEntities = this.list(queryWrapper);
  79. if (moduleUserNumEntities == null || moduleUserNumEntities.isEmpty()) {
  80. return new ArrayList<MenuSelectByUseNumVo>();
  81. }
  82. List<ModuleUserNumEntity> moduleUserNumEntityList = new ArrayList<>();
  83. if (type.equals(0)) {
  84. moduleUserNumEntityList = moduleUserNumEntities.stream()
  85. .sorted(Comparator.comparing(ModuleUserNumEntity::getUseNum).reversed())
  86. .distinct()
  87. .collect(Collectors.toList());
  88. } else if (type.equals(1)) {
  89. moduleUserNumEntityList = moduleUserNumEntities.stream()
  90. .sorted(Comparator.comparing(ModuleUserNumEntity::getLastModifyTime, Comparator.nullsLast(Comparator.naturalOrder())).reversed())
  91. .distinct()
  92. .collect(Collectors.toList());
  93. }
  94. if (CollectionUtil.isEmpty(moduleUserNumEntityList)) {
  95. return new ArrayList<>();
  96. }
  97. List<MenuSelectByUseNumVo> menuSelectByUseNumVos = new ArrayList<>();
  98. Map<String, ModuleEntity> moduleEntityMap = allMenu.stream().collect(Collectors.toMap(ModuleEntity::getId, t -> t));
  99. for (ModuleUserNumEntity moduleUserNumEntity : moduleUserNumEntityList) {
  100. ModuleEntity info = moduleEntityMap.get(moduleUserNumEntity.getModuleId());
  101. if (info != null && Objects.equals(info.getEnabledMark(), 1)) {
  102. MenuSelectByUseNumVo vo = JsonUtil.getJsonToBean(info, MenuSelectByUseNumVo.class);
  103. vo.setHasChildren(false);
  104. vo.setSystemCode(moduleUserNumEntity.getSystemCode());
  105. vo.setCategory(info.getCategory());
  106. if (menuSelectByUseNumVos.size() > 12) break;
  107. if (authMenuList.contains(vo.getId()) && category.equals(vo.getCategory())) {
  108. if (vo.getSystemId().equals(infoByEnCode.getId()) || JnpfConst.MAIN_SYSTEM_CODE.equals(infoByEnCode.getEnCode())) {
  109. menuSelectByUseNumVos.add(vo);
  110. }
  111. }
  112. }
  113. }
  114. return menuSelectByUseNumVos;
  115. }
  116. @Override
  117. public List<MenuSelectByUseNumVo> getMenuUseNumRecent() {
  118. UserInfo user = UserProvider.getUser();
  119. return null;
  120. }
  121. }