KnowledgeLabelServiceImpl.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package com.redxun.knowledge.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  5. import com.redxun.common.base.db.BaseDao;
  6. import com.redxun.common.base.db.BaseService;
  7. import com.redxun.common.base.search.QueryFilter;
  8. import com.redxun.common.model.JPaasUser;
  9. import com.redxun.common.tool.IdGenerator;
  10. import com.redxun.common.service.impl.SuperServiceImpl;
  11. import com.redxun.common.tool.StringUtils;
  12. import com.redxun.knowledge.common.UserService;
  13. import com.redxun.knowledge.entity.dao.Banner;
  14. import com.redxun.knowledge.entity.dao.Knowledge;
  15. import com.redxun.knowledge.entity.dao.KnowledgeApprove;
  16. import com.redxun.knowledge.entity.dao.KnowledgeLabel;
  17. import com.redxun.knowledge.entity.vo.BannerAdminVo;
  18. import com.redxun.knowledge.entity.vo.KnowledgeLabelVo;
  19. import com.redxun.knowledge.mapper.KnowledgeLabelMapper;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.util.*;
  23. import java.util.stream.Collectors;
  24. import javax.annotation.Resource;
  25. /**
  26. * [业务--知识标签表]业务服务类
  27. */
  28. @Service
  29. public class KnowledgeLabelServiceImpl extends SuperServiceImpl<KnowledgeLabelMapper, KnowledgeLabel> implements BaseService<KnowledgeLabel> {
  30. @Resource
  31. private UserService userService;
  32. @Resource
  33. private KnowledgeLabelMapper knowledgeLabelMapper;
  34. @Override
  35. public BaseDao<KnowledgeLabel> getRepository() {
  36. return knowledgeLabelMapper;
  37. }
  38. /**
  39. * 新增/修改标签数据
  40. *
  41. * @param id 标签ID
  42. * @param name 标签名称
  43. * @param sort 标签排序
  44. * @return
  45. */
  46. @Transactional(rollbackFor = Exception.class)
  47. public KnowledgeLabel saveOrUpdateTags(String id, String name, Integer sort) {
  48. KnowledgeLabel knowledgeLabel = new KnowledgeLabel();
  49. if (StringUtils.isEmpty(id)) {
  50. knowledgeLabel.setPkId(IdGenerator.getIdStr());
  51. knowledgeLabel.setCreateBy(userService.queryLoginUser());
  52. knowledgeLabel.setCreateTime(new Date());
  53. } else {
  54. knowledgeLabel.setPkId(id);
  55. knowledgeLabel.setUpdateBy(userService.queryLoginUser());
  56. knowledgeLabel.setCreateTime(new Date());
  57. }
  58. knowledgeLabel.setName(name);
  59. knowledgeLabel.setSort(sort);
  60. // 更新sort
  61. knowledgeLabelMapper.adjustSort(sort);
  62. if (saveOrUpdate(knowledgeLabel)) {
  63. return knowledgeLabelMapper.selectById(knowledgeLabel.getPkId());
  64. }
  65. return null;
  66. }
  67. public IPage<KnowledgeLabelVo> findAllTags(QueryFilter filter) {
  68. IPage<KnowledgeLabelVo> page = knowledgeLabelMapper.findAllTags(filter.getPage(), filter.getParams());
  69. List<KnowledgeLabelVo> knowledgeLabelVos = page.getRecords();
  70. knowledgeLabelVos.forEach(e -> {
  71. JPaasUser user = userService.queryUser(e.getOperator());
  72. if (user != null) {
  73. e.setOperatorName(user.getFullName());
  74. }
  75. });
  76. return page;
  77. }
  78. public List<KnowledgeLabelVo> labels(Integer tops) {
  79. List<KnowledgeLabelVo> labels = knowledgeLabelMapper.selectTops(tops);
  80. labels.forEach(e -> {
  81. JPaasUser user = userService.queryUser(e.getOperator());
  82. if (user != null) {
  83. e.setOperatorName(user.getFullName());
  84. }
  85. });
  86. return labels;
  87. }
  88. /**
  89. * 调整知识标签排序位置
  90. *
  91. * @param labelId 标签ID
  92. * @param status true 上升 false 下降
  93. * @return
  94. */
  95. @Transactional(rollbackFor = Exception.class)
  96. public void exchangePosition(String labelId, Boolean status) {
  97. KnowledgeLabel label = get(labelId);
  98. if (label == null) {
  99. return;
  100. }
  101. Integer sort = label.getSort();
  102. KnowledgeLabel labelTarget = null;
  103. List<KnowledgeLabel> labels = knowledgeLabelMapper.selectList(new QueryWrapper<KnowledgeLabel>().eq("IS_DEL", 0).orderByAsc("SORT"));
  104. if (status) {
  105. // 上升
  106. List<KnowledgeLabel> collect = labels.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
  107. if (ObjectUtils.isNotEmpty(collect)) {
  108. labelTarget = collect.get(collect.size() - 1);
  109. }
  110. } else {
  111. // 下降
  112. List<KnowledgeLabel> collect = labels.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
  113. if (ObjectUtils.isNotEmpty(collect)) {
  114. labelTarget = collect.get(0);
  115. }
  116. }
  117. // 交换位置
  118. if (labelTarget != null) {
  119. knowledgeLabelMapper.updateSort(labelId, labelTarget.getSort());
  120. knowledgeLabelMapper.updateSort(labelTarget.getPkId(), sort);
  121. }
  122. }
  123. public String delLabel(String labelId) {
  124. knowledgeLabelMapper.delLabel(labelId);
  125. return labelId;
  126. }
  127. }