wanghaicheng преди 5 години
родител
ревизия
c712451f08

+ 27 - 72
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/controller/QuanNewsController.java

@@ -3,23 +3,10 @@ package cn.com.ty.lift.quan.news.controller;
 import cn.com.ty.lift.quan.news.dao.entity.QuanNews;
 import cn.com.ty.lift.quan.news.service.impl.QuanNewsServiceImpl;
 import cn.com.xwy.boot.web.dto.RestResponse;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.mysql.cj.jdbc.Blob;
 import lombok.AllArgsConstructor;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.sql.rowset.serial.SerialBlob;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.sql.SQLException;
-
 
 /**
  * <p>
@@ -37,37 +24,42 @@ public class QuanNewsController {
 
     @GetMapping("/list")
     /**
-     * @description 分页展示新闻公告
+     * @description 分页展示置顶新闻+普通新闻
      * @date 2019/12/2 15:39
      * @param [页码, 页大小]
      * @return cn.com.xwy.boot.web.dto.RestResponse
      */
-    public RestResponse list(@RequestParam int pageNum, @RequestParam int pageSize) {
-        Page<QuanNews> page = new Page<>(pageNum, pageSize);
-        IPage<QuanNews> top_serial = quanNewsService.page(page, new QueryWrapper<QuanNews>().eq("top_serial", "0"));
-        if (!top_serial.getRecords().isEmpty()) {
-            return RestResponse.ok(top_serial, "1", "查询成功");
-        } else {
-            return RestResponse.ok(null, "9", "无数据");
-        }
+    public RestResponse list(@RequestParam int pageNum, @RequestParam int pageSize, @RequestParam int haveTops) {
+        return quanNewsService.news(pageNum, pageSize, haveTops);
     }
 
-    @GetMapping("/top")
+    @PostMapping("/top")
     /**
      * @description 置顶
      * @date 2019/12/2 15:40
-     * @param [id]
+     * @param [新闻id]
      * @return cn.com.xwy.boot.web.dto.RestResponse
      */
-    public RestResponse top(@RequestParam int id) {
+    public RestResponse top(@RequestParam Integer id) {
         return quanNewsService.top(id);
     }
 
+    @PostMapping("/top/cancel")
+    /**
+     * @description 取消置顶
+     * @date 2019/12/3 13:28
+     * @param [新闻id]
+     * @return cn.com.xwy.boot.web.dto.RestResponse
+     */
+    public RestResponse cancelTop(@RequestParam Integer id) {
+        return quanNewsService.cancelTop(id);
+    }
+
     @GetMapping("/{id}")
     /**
      * @description 根据id获取新闻
      * @date 2019/12/2 15:48
-     * @param [id]
+     * @param [新闻id]
      * @return cn.com.xwy.boot.web.dto.RestResponse
      */
     public RestResponse news(@PathVariable int id) {
@@ -79,52 +71,19 @@ public class QuanNewsController {
         }
     }
 
-    @GetMapping("/top1")
-    /**
-     * @description 获取置顶新闻
-     * @date 2019/12/2 15:48
-     * @param [id]
-     * @return cn.com.ty.lift.quan.news.dao.entity.News
-     */
-    public RestResponse top1(@RequestParam int id) {
-        QuanNews one = quanNewsService.getOne(new QueryWrapper<QuanNews>().eq("top_serial", 1));
-        if (null != one) {
-            return RestResponse.ok(one, "1", "查询成功");
-        } else {
-            return RestResponse.ok(null, "9", "无数据");
-        }
-    }
-
     @PostMapping("/add")
     /**
      * @description 新增新闻
      * @date 2019/12/2 15:48
-     * @param [title, content, videoFile, releaseId]
+     * @param [新闻标题, 新闻内容, 视频文件, 发布人id]
      * @return org.springframework.http.ResponseEntity
      */
-    public RestResponse add(@RequestParam String title, @RequestParam String content, @RequestParam MultipartFile videoFile, @RequestParam Long releaseId) throws Exception {
-        QuanNews news = new QuanNews();
-        SerialBlob blob = new SerialBlob(content.getBytes("UTF8"));
-        news.setTitle(title).setContent(blob).setReleaseId(releaseId);
-        System.out.println("视频名称:" + videoFile.getOriginalFilename());
-        FileOutputStream fos;
-        fos = new FileOutputStream("c:/" + videoFile.getOriginalFilename());
-        fos.write(videoFile.getBytes());
-        fos.close();
-        return RestResponse.ok(null,"1","新增成功");
+    public RestResponse add(@RequestParam String title, @RequestParam String content, @RequestParam MultipartFile videoFile, @RequestParam Integer isTop, @RequestParam Long releaseId, @RequestParam String releaseUser) {
+        QuanNews quanNews = new QuanNews();
+        quanNews.setTitle(title).setContent(content).setReleaseId(releaseId).setReleaseUser(releaseUser);
+        return quanNewsService.addNew(quanNews,videoFile, isTop);
     }
 
-//    @PostMapping("/add/top")
-//    @ApiOperation("新增置顶新闻")
-//    public ResponseEntity addTop() {
-//
-//    }
-
-//    @GetMapping("/top/up")
-//    @ApiOperation("置顶上移")
-//    @GetMapping("/top/down")
-//    @ApiOperation("置顶下移")
-
     @PostMapping("/update")
     /**
      * @description 根据id更新新闻信息
@@ -132,22 +91,18 @@ public class QuanNewsController {
      * @param [新闻id, 新闻标题, 新闻内容]
      * @return org.springframework.http.ResponseEntity
      */
-    public RestResponse updateNews(@RequestParam int id, @RequestParam String title, @RequestParam Blob content) {
-        return quanNewsService.updateNews(id, title, content);
+    public RestResponse updateNews(@RequestBody QuanNews quanNews) {
+        return quanNewsService.updateNews(quanNews.getId(), quanNews.getTitle(), quanNews.getContent());
     }
 
     @PostMapping("/delete")
     /**
      * @description 根据id删除新闻
      * @date 2019/12/2 15:49
-     * @param [id]
+     * @param [新闻id]
      * @return org.springframework.http.ResponseEntity
      */
     public RestResponse delete(@RequestParam int id) {
-        if (quanNewsService.removeById(id)) {
-            return RestResponse.ok(null, "0", "删除失败");
-        } else {
-            return RestResponse.ok(null, "1", "删除成功");
-        }
+        return quanNewsService.delete(id);
     }
 }

+ 4 - 4
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/dao/entity/QuanNews.java

@@ -33,7 +33,7 @@ public class QuanNews implements Serializable {
     private Integer id;
 
     /**
-     * 置顶排序
+     * 置顶排序 0不置顶 非0就是置顶(按照数字大小排序)
      */
     @TableField("top_serial")
     private Integer topSerial;
@@ -48,13 +48,13 @@ public class QuanNews implements Serializable {
      * 内容+图片
      */
     @TableField("content")
-    private Blob content;
+    private String content;
 
     /**
      * 视频地址
      */
-    @TableField("video")
-    private String video;
+    @TableField("video_path")
+    private String videoPath;
 
     /**
      * 发布时间

+ 164 - 13
lift-quan-service/src/main/java/cn/com/ty/lift/quan/news/service/impl/QuanNewsServiceImpl.java

@@ -5,9 +5,16 @@ import cn.com.ty.lift.quan.news.dao.mapper.QuanNewsMapper;
 import cn.com.ty.lift.quan.news.service.QuanNewsService;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mysql.cj.jdbc.Blob;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -18,33 +25,177 @@ import org.springframework.stereotype.Service;
  * @since 2019-12-02
  */
 @Service
+@Transactional
 public class QuanNewsServiceImpl extends ServiceImpl<QuanNewsMapper, QuanNews> implements QuanNewsService {
 
-    public RestResponse updateNews(int id, String title, Blob content) {
+    public RestResponse updateNews(int id, String title, String content) {
         QuanNews byId = this.getById(id);
-        if (null == byId) {
-            return RestResponse.ok(null, "0", "不存在此新闻");
-        } else {
+        if (null != byId) {
             byId.setTitle(title).setContent(content);
             if (this.updateById(byId)) {
                 return RestResponse.ok(null, "1", "更新成功");
             } else {
                 return RestResponse.ok(null, "0", "更新失败");
             }
+        } else {
+            return RestResponse.ok(null, "0", "不存在此新闻");
         }
     }
 
+    /**
+     * @description 将新闻置顶
+     * @date 2019/12/3 11:23
+     */
     public RestResponse top(int id) {
-        QuanNews one = this.getOne(new QueryWrapper<QuanNews>().eq("id", id));
-        if (one != null) {
-            QuanNews top_serial = this.getOne(new QueryWrapper<QuanNews>().eq("top_serial", 1));
-            top_serial.setTopSerial(0);
-            this.updateById(top_serial);
-            one.setTopSerial(1);
-            this.updateById(one);
+        QuanNews byId = this.getById(id);
+        if (byId != null) {
+            if (byId.getTopSerial() != 0) {
+                //如果新闻在置顶新闻中
+                QuanNews top = this.getOne(new QueryWrapper<QuanNews>().eq("top_serial", 1));
+                top.setTopSerial(byId.getTopSerial());
+                byId.setTopSerial(1);
+                //更新排序
+                this.updateById(top);
+                this.updateById(byId);
+            } else {
+                //如果新闻不是置顶新闻
+                //获取置顶新闻
+                List<QuanNews> news = this.list(new QueryWrapper<QuanNews>().select("id", "top_serial").ne("top_serial", 0));
+                if (!news.isEmpty()) {
+                    //如果有置顶新闻
+                    news.forEach(n -> {
+                        n.setTopSerial(n.getTopSerial() + 1);
+                    });
+                }
+                byId.setTopSerial(1);
+                //更新置顶新闻列表,新闻
+                if (this.updateBatchById(news, 100) && this.updateById(byId)) {
+                    return RestResponse.ok(null, "1", "置顶成功");
+                } else {
+                    return RestResponse.ok(null, "0", "置顶失败");
+                }
+            }
             return RestResponse.ok(null, "1", "置顶成功");
         } else {
             return RestResponse.ok(null, "0", "新闻不存在");
         }
     }
-}
+
+    /**
+     * @description 新闻取消置顶
+     * @date 2019/12/3 13:28
+     */
+    public RestResponse cancelTop(Integer id) {
+        QuanNews byId = this.getById(id);
+        if (null != byId) {
+            //如果有这个新闻
+            if (byId.getTopSerial() != 0) {
+                byId.setTopSerial(0);
+                //如果有这个置顶新闻
+                List<QuanNews> tops = this.list(new QueryWrapper<QuanNews>().select("id", "top_serial").ne("top_serial", 0).ne("id", id));
+                //如果没有置顶新闻
+                if (tops.isEmpty()) {
+                    if (this.updateById(byId)) {
+                        return RestResponse.ok(null, "1", "取消置顶成功");
+                    } else {
+                        return RestResponse.ok(null, "0", "取消置顶失败");
+                    }
+                }
+
+                //比这个新闻排序大的都 序号-1
+                tops.forEach(top -> {
+                    if (top.getTopSerial() > byId.getTopSerial()) {
+                        top.setTopSerial(top.getTopSerial() - 1);
+                    }
+                });
+                if (this.updateById(byId) && this.updateBatchById(tops)) {
+                    return RestResponse.ok(null, "1", "取消置顶成功");
+                } else {
+                    return RestResponse.ok(null, "0", "取消置顶失败");
+                }
+            } else {
+                //如果不是置顶新闻
+                return RestResponse.ok(null, "1", "不是置顶新闻");
+            }
+        } else {
+            //没有这个新闻
+            return RestResponse.ok(null, "9", "无此新闻");
+        }
+    }
+
+    /**
+     * @description 时间倒序查询置顶新闻+普通新闻列表
+     * @date 2019/12/3 10:30
+     */
+    public RestResponse news(Integer pageNum, Integer pageSize, Integer haveTops) {
+        Page<QuanNews> page = new Page<>(pageNum, pageSize);
+        IPage<QuanNews> news = this.page(page, new QueryWrapper<QuanNews>().eq("top_serial", "0").orderByDesc("release_date"));
+        if (haveTops != 0) {
+            List topNews = this.list(new QueryWrapper<QuanNews>().ne("top_serial", "0").orderBy(true, true, "top_serial"));
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("topNews", topNews);
+            map.put("news", news);
+            return RestResponse.ok(map, "1", "查询成功");
+        } else {
+            return RestResponse.ok(news, "1", "查询成功");
+        }
+    }
+
+    public RestResponse addNew(QuanNews quanNews, MultipartFile videoFile, Integer isTop) {
+//            String title, String content, MultipartFile videoFile, Integer isTop, Long releaseId, String releaseUser
+        //上传视频到Oss,获取视频地址
+        //上传视频到Oss,获取视频地址
+        //上传视频到Oss,获取视频地址
+        //上传视频到Oss,获取视频地址
+        //上传视频到Oss,获取视频地址
+        //上传视频到Oss,获取视频地址
+        //获取发布人名称
+        List<QuanNews> tops = null;
+        if (isTop != 0) {
+            //获取置顶新闻列表
+            tops = this.list(new QueryWrapper<QuanNews>().ne("top_serial", 0));
+            //设置新添加新闻的数据
+            quanNews.setReleaseDate(LocalDateTime.now()).setVideoPath("videoPath").setTopSerial(1);
+            //遍历排序加1
+            if (!tops.isEmpty()) {
+                tops.forEach(top -> {
+                    top.setTopSerial(top.getTopSerial() + 1);
+                });
+                if (this.updateBatchById(tops) && this.save(quanNews)) {
+                    return RestResponse.ok(null, "1", "新增成功");
+                } else {
+                    return RestResponse.ok(null, "0", "新增失败");
+                }
+            } else {
+                if (this.save(quanNews)) {
+                    return RestResponse.ok(null, "1", "新增成功");
+                } else {
+                    return RestResponse.ok(null, "0", "新增失败");
+                }
+            }
+        }
+        //设置新添加新闻的数据
+        quanNews.setReleaseDate(LocalDateTime.now()).setVideoPath("videoPath");
+        if (this.save(quanNews)) {
+            return RestResponse.ok(null, "1", "新增成功");
+        } else {
+            return RestResponse.ok(null, "0", "新增失败");
+        }
+    }
+
+    public RestResponse delete(int id) {
+        QuanNews byId = this.getById(id);
+        if (null != byId) {
+            if (byId.getTopSerial() != 0) {
+                this.cancelTop(id);
+            }
+            if (this.removeById(id)) {
+                return RestResponse.ok(null, "1", "删除成功");
+            } else {
+                return RestResponse.ok(null, "0", "删除失败");
+            }
+        } else {
+            return RestResponse.ok(null, "9", "无数据");
+        }
+    }
+}

+ 1 - 2
lift-system-service/src/main/resources/application.yml

@@ -24,5 +24,4 @@ spring:
 xwy:
   mybatis:
     audit:
-      enabled: true
-
+      enabled: true