BannerServiceImpl.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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. });
  70. return page;
  71. }
  72. /**
  73. * 获取Banner详情
  74. * @param id
  75. * @return
  76. */
  77. @Override
  78. public Banner get(Serializable id) {
  79. Banner banner = this.getRepository().selectById(id);
  80. String knowledgeId = banner.getKnowledgeId();
  81. if (!StringUtils.isEmpty(knowledgeId)){
  82. Knowledge knowledge = knowledgeService.get(knowledgeId);
  83. if(knowledge != null){
  84. KnowledgeCategory knowledgeCategory = knowledgeCategoryService.findAllByCategoryId(knowledge.getCategoryId());
  85. Map<String,Object> map = new HashMap<>();
  86. map.put("knowledgeName",knowledge.getTitles());
  87. KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(knowledgeCategory.getPkId());
  88. map.put("knowledgeCategory",knowledgeCategoryAdminVo);
  89. banner.setParams(map);
  90. }
  91. }
  92. return banner;
  93. }
  94. /**
  95. * 新增banner
  96. * @param entity
  97. * @return
  98. */
  99. @Override
  100. public int insert(Banner entity) {
  101. if (BeanUtil.isEmpty(entity.getPkId())) {
  102. entity.setPkId(IdGenerator.getIdStr());
  103. entity.setCreateBy(userService.queryLoginUser());
  104. entity.setUpdateBy(userService.queryLoginUser());
  105. }
  106. if (entity.getSort() == null){
  107. entity.setSort(0);
  108. }
  109. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  110. queryWrapper.eq("SORT",entity.getSort());
  111. Integer integer = bannerMapper.selectCount(queryWrapper);
  112. if (integer > 0){
  113. bannerMapper.insertOrUpdateBySort(entity.getSort());
  114. }
  115. return this.getRepository().insert(entity);
  116. }
  117. /**
  118. * 修改banner
  119. * @param entity
  120. * @return
  121. */
  122. @Override
  123. public int update(Banner entity) {
  124. entity.setUpdateBy(userService.queryLoginUser());
  125. if (entity.getSort() != null){
  126. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  127. queryWrapper.eq("SORT",entity.getSort());
  128. Integer integer = bannerMapper.selectCount(queryWrapper);
  129. if (integer > 0){
  130. bannerMapper.insertOrUpdateBySort(entity.getSort());
  131. }
  132. }
  133. return this.getRepository().updateById(entity);
  134. }
  135. /**
  136. * 状态为true,上升;为false,下降
  137. * @param bannerId
  138. * @param status
  139. */
  140. @Transactional(rollbackFor = Exception.class)
  141. public void goUpOrDownUp(String bannerId,Boolean status) {
  142. Banner banner = this.get(bannerId);
  143. Integer sort = banner.getSort();
  144. if (status){
  145. // 上升
  146. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  147. queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
  148. List<Banner> banners = bannerMapper.selectList(queryWrapper);
  149. List<Banner> collect = banners.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
  150. Banner bannerPre = collect.get(collect.size() - 1);
  151. // 交换位置
  152. int temp = sort;
  153. bannerMapper.swapSort(bannerId,bannerPre.getSort());
  154. bannerMapper.swapSort(bannerPre.getPkId(),temp);
  155. } else {
  156. // 下降
  157. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  158. queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
  159. List<Banner> banners = bannerMapper.selectList(queryWrapper);
  160. List<Banner> collect = banners.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
  161. Banner bannerNext = collect.get(0);
  162. // 交换位置
  163. int temp = sort;
  164. bannerMapper.swapSort(bannerId,bannerNext.getSort());
  165. bannerMapper.swapSort(bannerNext.getPkId(),temp);
  166. }
  167. }
  168. /**
  169. * 删除banner
  170. * @param pkId
  171. */
  172. public void deleteBanner(String pkId) {
  173. // 修改sort
  174. Banner banner = this.bannerMapper.selectById(pkId);
  175. bannerMapper.deleteBySort(banner.getSort());
  176. bannerMapper.deleteBanner(pkId);
  177. }
  178. /**
  179. * 前台查询全部banner展示(默认展示10张)
  180. * @return
  181. */
  182. public List<BannerPcVo> getAllList() {
  183. QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
  184. queryWrapper.eq("ENABLED",1);
  185. queryWrapper.orderByAsc("SORT").orderByDesc("CREATE_TIME_");
  186. List<Banner> bannersList = bannerMapper.selectList(queryWrapper);
  187. List<Banner> result = bannersList.parallelStream().limit(10).collect(Collectors.toList());
  188. List<BannerPcVo> collectBannerPcVo = result.parallelStream().map(e -> {
  189. BannerPcVo bannerPcVo = new BannerPcVo();
  190. BeanUtils.copyProperties(e, bannerPcVo);
  191. return bannerPcVo;
  192. }).collect(Collectors.toList());
  193. return collectBannerPcVo;
  194. }
  195. }