|
@@ -1,6 +1,7 @@
|
|
|
|
|
|
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;
|
|
@@ -9,15 +10,23 @@ 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;
|
|
@@ -34,6 +43,9 @@ public class NewsServiceImpl extends SuperServiceImpl<NewsMapper, News> implemen
|
|
|
@Resource
|
|
|
private NewsMapper newsMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
public BaseDao<News> getRepository() {
|
|
|
return newsMapper;
|
|
@@ -58,6 +70,92 @@ public class NewsServiceImpl extends SuperServiceImpl<NewsMapper, News> implemen
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增新闻
|
|
|
+ * @param entity
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int insert(News entity) {
|
|
|
+ if (BeanUtil.isEmpty(entity.getPkId())) {
|
|
|
+ entity.setPkId(IdGenerator.getIdStr());
|
|
|
+ // TODO: 2022/11/29 获取系统登录用户id(数据库中设置id和作者)
|
|
|
+ entity.setAuthorId(userService.queryLoginUser());
|
|
|
+ entity.setAuthor(userService.queryLoginUserName());
|
|
|
+ entity.setCreateBy(userService.queryLoginUser());
|
|
|
+ entity.setUpdateBy(userService.queryLoginUser());
|
|
|
+ }
|
|
|
+ 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) {
|
|
|
+ entity.setUpdateBy(userService.queryLoginUser());
|
|
|
+ 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) {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 首页新闻资讯 前台展示
|
|
|
*
|