123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package com.redxun.knowledge.service;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.redxun.common.base.db.BaseDao;
- import com.redxun.common.base.db.BaseService;
- import com.redxun.common.base.db.PageHelper;
- import com.redxun.common.base.entity.QueryData;
- import com.redxun.common.base.search.QueryFilter;
- import com.redxun.common.base.search.QueryFilterBuilder;
- import com.redxun.common.service.impl.SuperServiceImpl;
- import com.redxun.common.tool.BeanUtil;
- import com.redxun.common.tool.IdGenerator;
- import com.redxun.feign.org.UserClient;
- import com.redxun.knowledge.common.UserService;
- import com.redxun.knowledge.entity.dao.Banner;
- import com.redxun.knowledge.entity.dao.News;
- import com.redxun.knowledge.entity.vo.NewsAdminVo;
- import com.redxun.knowledge.entity.vo.NewsPcVo;
- import com.redxun.knowledge.mapper.NewsMapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * [业务--新闻表]业务服务类
- */
- @Slf4j
- @Service
- public class NewsServiceImpl extends SuperServiceImpl<NewsMapper, News> implements BaseService<News> {
- @Resource
- private NewsMapper newsMapper;
- @Autowired
- private UserService userService;
- @Override
- public BaseDao<News> getRepository() {
- return newsMapper;
- }
- /**
- * 后台新闻列表(分页)
- *
- * @param filter
- * @return
- */
- public IPage findAllNews(QueryFilter filter) {
- Map<String, Object> params = PageHelper.constructParams(filter);
- IPage page = newsMapper.findAllNews(filter.getPage(), filter.getParams(),params);
- List<News> newsList = page.getRecords();
- List<NewsAdminVo> collectNewsAdminVoList = newsList.parallelStream().map(e -> {
- NewsAdminVo newsAdminVo = new NewsAdminVo();
- BeanUtils.copyProperties(e, newsAdminVo);
- return newsAdminVo;
- }).collect(Collectors.toList());
- page.setRecords(collectNewsAdminVoList);
- return page;
- }
- /**
- * 新增新闻
- * @param entity
- * @return
- */
- @Override
- public int insert(News entity) {
- if (BeanUtil.isEmpty(entity.getPkId())) {
- entity.setPkId(IdGenerator.getIdStr());
- entity.setAuthorId(entity.getAuthorId());
- entity.setAuthor(entity.getAuthor());
- }
- if (entity.getSort() == null){
- entity.setSort(0);
- }
- QueryWrapper<News> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("SORT",entity.getSort());
- Integer integer = newsMapper.selectCount(queryWrapper);
- if (integer > 0){
- newsMapper.insertOrUpdateBySort(entity.getSort());
- }
- return this.getRepository().insert(entity);
- }
- /**
- * 修改新闻
- * @param entity
- * @return
- */
- @Override
- public int update(News entity) {
- if (entity.getSort() != null){
- QueryWrapper<News> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("SORT",entity.getSort());
- Integer integer = newsMapper.selectCount(queryWrapper);
- if (integer > 0){
- newsMapper.insertOrUpdateBySort(entity.getSort());
- }
- }
- return this.getRepository().updateById(entity);
- }
- @Override
- public void delete(Serializable id) {
- // 修改sort
- News news = this.baseMapper.selectById(id);
- newsMapper.deleteBySort(news.getSort());
- newsMapper.deleteNews(id);
- }
- /**
- * 状态为true,上升;为false,下降
- * @param newsId
- * @param status
- */
- @Transactional(rollbackFor = Exception.class)
- public void goUpOrDownUp(String newsId,Boolean status) {
- News news = this.get(newsId);
- Integer sort = news.getSort();
- if (status){
- // 上升
- QueryWrapper<News> queryWrapper = new QueryWrapper<>();
- queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
- List<News> newsList = newsMapper.selectList(queryWrapper);
- List<News> collect = newsList.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
- News newsPre = collect.get(collect.size() - 1);
- // 交换位置
- int temp = sort;
- newsMapper.swapSort(newsId,newsPre.getSort());
- newsMapper.swapSort(newsPre.getPkId(),temp);
- } else {
- // 下降
- QueryWrapper<News> queryWrapper = new QueryWrapper<>();
- queryWrapper.orderByAsc("SORT").orderByDesc("ENABLED");
- List<News> newsList = newsMapper.selectList(queryWrapper);
- List<News> collect = newsList.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
- News newsNext = collect.get(0);
- // 交换位置
- int temp = sort;
- newsMapper.swapSort(newsId,newsNext.getSort());
- newsMapper.swapSort(newsNext.getPkId(),temp);
- }
- }
- /**
- * 首页新闻资讯 前台展示
- *
- * @return
- */
- public List<NewsPcVo> getAllList() {
- // 组装分页
- QueryData queryData = new QueryData();
- queryData.setPageNo(1);
- queryData.setPageSize(10);
- QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData);
- IPage page = this.findAllNews(filter);
- // 查询后台展示结果
- List<NewsAdminVo> records = page.getRecords();
- // 前台展示结果处理
- List<NewsPcVo> collectNewsPcVoList = records.stream().
- filter(e -> e.getEnabled() == 1).
- limit(6).
- map(e -> {
- NewsPcVo newsPcVo = new NewsPcVo();
- BeanUtils.copyProperties(e, newsPcVo);
- return newsPcVo;
- }).collect(Collectors.toList());
- return collectNewsPcVoList;
- }
- /**
- * 前台分页列表
- *
- * @param filter
- * @return
- */
- public IPage findAllPcNews(QueryFilter filter) {
- IPage page = newsMapper.findAllPcNews(filter.getPage(), filter.getParams());
- return page;
- }
- }
|