BannerServiceImpl.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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.redxun.common.base.db.BaseDao;
  5. import com.redxun.common.base.db.BaseService;
  6. import com.redxun.common.base.db.PageHelper;
  7. import com.redxun.common.base.search.QueryFilter;
  8. import com.redxun.common.service.impl.SuperServiceImpl;
  9. import com.redxun.common.tool.BeanUtil;
  10. import com.redxun.common.tool.IdGenerator;
  11. import com.redxun.feign.org.UserClient;
  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.KnowledgeCategory;
  16. import com.redxun.knowledge.entity.vo.BannerAdminVo;
  17. import com.redxun.knowledge.entity.vo.BannerPcVo;
  18. import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
  19. import com.redxun.knowledge.mapper.BannerMapper;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.util.StringUtils;
  26. import javax.annotation.Resource;
  27. import java.io.Serializable;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;
  31. import java.util.stream.Collectors;
  32. /**
  33. * [业务--首页banner表]业务服务类
  34. */
  35. @Slf4j
  36. @Service
  37. public class BannerServiceImpl extends SuperServiceImpl<BannerMapper, Banner> implements BaseService<Banner> {
  38. @Resource
  39. private BannerMapper bannerMapper;
  40. @Autowired
  41. private KnowledgeServiceImpl knowledgeService;
  42. @Autowired
  43. private KnowledgeCategoryServiceImpl knowledgeCategoryService;
  44. @Autowired
  45. private UserService userService;
  46. @Override
  47. public BaseDao<Banner> getRepository() {
  48. return bannerMapper;
  49. }
  50. /**
  51. * 后台查询全部banner展示(分页)
  52. * @param filter
  53. * @return
  54. */
  55. public IPage findAllBanner(QueryFilter filter) {
  56. Map<String, Object> params = PageHelper.constructParams(filter);
  57. IPage page = bannerMapper.findAllBanner(filter.getPage(), filter.getParams(), params);
  58. List<BannerAdminVo> bannerAdminVos = page.getRecords();
  59. bannerAdminVos.forEach(e -> {
  60. String knowledgeId = e.getKnowledgeId();
  61. if (!StringUtils.isEmpty(knowledgeId)){
  62. Map<String, Object> map = new HashMap<>();
  63. Knowledge knowledge = knowledgeService.get(knowledgeId);
  64. if (knowledge != null){
  65. map.put("knowledgeName",knowledge.getTitles());
  66. }
  67. e.setParams(map);
  68. }
  69. e.setOperatorName(userService.queryUser(e.getUpdateBy()).getFullName());
  70. });
  71. return page;
  72. }
  73. /**
  74. * 获取Banner详情
  75. * @param id
  76. * @return
  77. */
  78. @Override
  79. public Banner get(Serializable id) {
  80. Banner banner = this.getRepository().selectById(id);
  81. String knowledgeId = banner.getKnowledgeId();
  82. if (!StringUtils.isEmpty(knowledgeId)){
  83. Knowledge knowledge = knowledgeService.get(knowledgeId);
  84. if(knowledge != null){
  85. KnowledgeCategory knowledgeCategory = knowledgeCategoryService.findAllByCategoryId(knowledge.getCategoryId());
  86. Map<String,Object> map = new HashMap<>();
  87. map.put("knowledgeName",knowledge.getTitles());
  88. KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(knowledgeCategory.getPkId());
  89. map.put("knowledgeCategory",knowledgeCategoryAdminVo);
  90. banner.setParams(map);
  91. }
  92. }
  93. return banner;
  94. }
  95. /**
  96. * 新增banner
  97. * @param entity
  98. * @return
  99. */
  100. @Override
  101. public int insert(Banner entity) {
  102. if (BeanUtil.isEmpty(entity.getPkId())) {
  103. entity.setPkId(IdGenerator.getIdStr());
  104. entity.setCreateBy(userService.queryLoginUser());
  105. entity.setUpdateBy(userService.queryLoginUser());
  106. }
  107. if (entity.getSort() == null){
  108. entity.setSort(0);
  109. }
  110. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  111. queryWrapper.eq("SORT",entity.getSort());
  112. Integer integer = bannerMapper.selectCount(queryWrapper);
  113. if (integer > 0){
  114. bannerMapper.insertOrUpdateBySort(entity.getSort());
  115. }
  116. return this.getRepository().insert(entity);
  117. }
  118. /**
  119. * 修改banner
  120. * @param entity
  121. * @return
  122. */
  123. @Override
  124. public int update(Banner entity) {
  125. entity.setUpdateBy(userService.queryLoginUser());
  126. if (entity.getSort() != null){
  127. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  128. queryWrapper.eq("SORT",entity.getSort());
  129. Integer integer = bannerMapper.selectCount(queryWrapper);
  130. if (integer > 0){
  131. bannerMapper.insertOrUpdateBySort(entity.getSort());
  132. }
  133. }
  134. if (entity.getKnowledgeId() == null){
  135. entity.setKnowledgeId("");
  136. }
  137. return this.getRepository().updateById(entity);
  138. }
  139. /**
  140. * 状态为true,上升;为false,下降
  141. * @param bannerId
  142. * @param status
  143. */
  144. @Transactional(rollbackFor = Exception.class)
  145. public void goUpOrDownUp(String bannerId,Boolean status) {
  146. Banner banner = this.get(bannerId);
  147. Integer sort = banner.getSort();
  148. if (status){
  149. // 上升
  150. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  151. queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
  152. List<Banner> banners = bannerMapper.selectList(queryWrapper);
  153. List<Banner> collect = banners.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
  154. Banner bannerPre = collect.get(collect.size() - 1);
  155. // 交换位置
  156. int temp = sort;
  157. bannerMapper.swapSort(bannerId,bannerPre.getSort());
  158. bannerMapper.swapSort(bannerPre.getPkId(),temp);
  159. } else {
  160. // 下降
  161. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  162. queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
  163. List<Banner> banners = bannerMapper.selectList(queryWrapper);
  164. List<Banner> collect = banners.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
  165. Banner bannerNext = collect.get(0);
  166. // 交换位置
  167. int temp = sort;
  168. bannerMapper.swapSort(bannerId,bannerNext.getSort());
  169. bannerMapper.swapSort(bannerNext.getPkId(),temp);
  170. }
  171. }
  172. /**
  173. * 删除banner
  174. * @param pkId
  175. */
  176. public void deleteBanner(String pkId) {
  177. // 修改sort
  178. Banner banner = this.bannerMapper.selectById(pkId);
  179. bannerMapper.deleteBySort(banner.getSort());
  180. bannerMapper.deleteBanner(pkId);
  181. }
  182. /**
  183. * 前台查询全部banner展示(默认展示10张)
  184. * @return
  185. */
  186. public List<BannerPcVo> getAllList() {
  187. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  188. queryWrapper.eq("ENABLED",1);
  189. queryWrapper.orderByAsc("SORT").orderByDesc("CREATE_TIME_");
  190. List<Banner> bannersList = bannerMapper.selectList(queryWrapper);
  191. List<Banner> result = bannersList.parallelStream().limit(10).collect(Collectors.toList());
  192. List<BannerPcVo> collectBannerPcVo = result.parallelStream().map(e -> {
  193. BannerPcVo bannerPcVo = new BannerPcVo();
  194. BeanUtils.copyProperties(e, bannerPcVo);
  195. return bannerPcVo;
  196. }).collect(Collectors.toList());
  197. return collectBannerPcVo;
  198. }
  199. }