From 595b2b00b7bff045b21bd830004e3a00b2c8ee03 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 16 May 2022 10:52:26 +0800
Subject: [PATCH] complete news

---
 src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java              |    2 
 src/main/resources/templates/febs/views/modules/news/newsInfoList.html     |   25 ++++++
 src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java         |   12 +++
 src/main/resources/mapper/modules/MallNewsInfoMapper.xml                   |   13 +++
 src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java                 |    2 
 src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java  |   17 ++++
 src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java                     |   24 ++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java |   33 ++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java    |   29 ++++++-
 src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java                       |   23 +++++
 src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html   |    9 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java           |    5 +
 12 files changed, 186 insertions(+), 8 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
index f09959a..456b314 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
@@ -91,4 +91,21 @@
         return new FebsResponse().success().data(categories);
     }
 
+    @PostMapping(value = "/topNews/{id}")
+    public FebsResponse topNews(@PathVariable Long id) {
+        MallNewsInfo mallNewsInfo = new MallNewsInfo();
+        mallNewsInfo.setIsTop(1);
+        mallNewsInfo.setId(id);
+        mallNewsInfoService.updateById(mallNewsInfo);
+        return new FebsResponse().success();
+    }
+
+    @PostMapping(value = "/unTopNews/{id}")
+    public FebsResponse unTopNews(@PathVariable Long id) {
+        MallNewsInfo mallNewsInfo = new MallNewsInfo();
+        mallNewsInfo.setIsTop(2);
+        mallNewsInfo.setId(id);
+        mallNewsInfoService.updateById(mallNewsInfo);
+        return new FebsResponse().success();
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
index c19e4e4..a6c4956 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java
@@ -1,16 +1,17 @@
 package cc.mrbird.febs.mall.controller;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.NewsListDto;
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
 import cc.mrbird.febs.mall.service.IApiMallNewsService;
+import cc.mrbird.febs.mall.vo.NewsListVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -27,10 +28,28 @@
 
     private final IApiMallNewsService newsService;
 
+    @ApiOperation(value = "新闻分类", notes = "新闻分类")
+    @GetMapping(value = "/findNewsInfoCategory")
+    public FebsResponse findNewsInfoCategory() {
+        return new FebsResponse().success().data(newsService.findNewsCategoryList());
+    }
+
+    @ApiOperation(value ="获取新闻列表-分页", notes = "获取新闻列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = NewsListVo.class)
+    })
+    @PostMapping(value = "/findNewsInPage")
+    public FebsResponse findNewsInPage(@RequestBody NewsListDto newsListDto) {
+        return new FebsResponse().success().data(newsService.findNewsInPage(newsListDto));
+    }
+
     @ApiOperation(value = "新闻列表", notes = "新闻列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = NewsListVo.class)
+    })
     @GetMapping(value = "/findNews")
     public FebsResponse findNews() {
-        return new FebsResponse().success().data(newsService.list());
+        return new FebsResponse().success().data(newsService.findTopNews());
     }
 
     @ApiOperation(value = "新闻详情", notes = "新闻详情")
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java
new file mode 100644
index 0000000..c3bae67
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2022-05-16
+ **/
+@Data
+@ApiModel(value = "NewsListDto", description = "新闻列表接口接收参数类")
+public class NewsListDto {
+
+    @ApiModelProperty("每页数量")
+    private int pageSize = 10;
+
+    @ApiModelProperty("页码")
+    private int pageNum = 1;
+
+    @ApiModelProperty("分类ID")
+    private Long categoryId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
index 54f98af..6a08872 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
@@ -28,4 +28,6 @@
     private String thumb;
 
     private Long categoryId;
+
+    private Integer isTop;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java
index 4f6a05c..4c3a65f 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java
@@ -1,13 +1,18 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.NewsListDto;
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
 import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo;
+import cc.mrbird.febs.mall.vo.NewsListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface MallNewsInfoMapper extends BaseMapper<MallNewsInfo> {
 
     IPage<AdminMallNewsInfoVo> getNewInfoListInPage(Page<AdminMallNewsInfoVo> page, MallNewsInfo mallNewsInfo);
 
+    IPage<NewsListVo> selectNewsVoInPage(Page<NewsListVo> page, @Param("record") MallNewsInfo mallNewsInfo);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java
index cc0c7b3..ae36851 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java
@@ -1,7 +1,19 @@
 package cc.mrbird.febs.mall.service;
 
+import cc.mrbird.febs.mall.dto.NewsListDto;
+import cc.mrbird.febs.mall.entity.MallNewsCategory;
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
+import cc.mrbird.febs.mall.vo.NewsListVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 public interface IApiMallNewsService extends IService<MallNewsInfo> {
+
+    List<MallNewsCategory> findNewsCategoryList();
+
+    IPage<NewsListVo> findNewsInPage(NewsListDto newsListDto);
+
+    List<NewsListVo> findTopNews();
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java
index fa9ef3a..d565af2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java
@@ -1,12 +1,20 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.mall.dto.NewsListDto;
+import cc.mrbird.febs.mall.entity.MallNewsCategory;
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
+import cc.mrbird.febs.mall.mapper.MallNewsCategoryMapper;
 import cc.mrbird.febs.mall.mapper.MallNewsInfoMapper;
 import cc.mrbird.febs.mall.service.IApiMallNewsService;
+import cc.mrbird.febs.mall.vo.NewsListVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -17,4 +25,29 @@
 @RequiredArgsConstructor
 public class ApiMallNewsServiceImpl extends ServiceImpl<MallNewsInfoMapper, MallNewsInfo> implements IApiMallNewsService {
 
+    private final MallNewsCategoryMapper mallNewsCategoryMapper;
+
+    @Override
+    public List<MallNewsCategory> findNewsCategoryList() {
+        return mallNewsCategoryMapper.selectList(null);
+    }
+
+    @Override
+    public IPage<NewsListVo> findNewsInPage(NewsListDto newsListDto) {
+        Page<NewsListVo> page = new Page<>(newsListDto.getPageNum(), newsListDto.getPageSize());
+
+        MallNewsInfo mallNewsInfo = new MallNewsInfo();
+        mallNewsInfo.setCategoryId(newsListDto.getCategoryId());
+        return this.baseMapper.selectNewsVoInPage(page, mallNewsInfo);
+    }
+
+    @Override
+    public List<NewsListVo> findTopNews() {
+        Page<NewsListVo> page = new Page<>(1, 999);
+        MallNewsInfo mallNewsInfo = new MallNewsInfo();
+        mallNewsInfo.setIsTop(1);
+
+        IPage<NewsListVo> pageList = this.baseMapper.selectNewsVoInPage(page, mallNewsInfo);
+        return pageList.getRecords();
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java
index 44b193a..be2e7c9 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java
@@ -31,4 +31,6 @@
     private Integer type;
 
     private String categoryName;
+
+    private Integer isTop;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java
new file mode 100644
index 0000000..c912e7c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java
@@ -0,0 +1,23 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2022-05-16
+ **/
+@Data
+@ApiModel(value = "NewsListVo")
+public class NewsListVo {
+
+    private Long id;
+
+    private Long title;
+
+    private String thumb;
+
+    private Date createdTime;
+}
diff --git a/src/main/resources/mapper/modules/MallNewsInfoMapper.xml b/src/main/resources/mapper/modules/MallNewsInfoMapper.xml
index ebb2b60..c0bf00f 100644
--- a/src/main/resources/mapper/modules/MallNewsInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallNewsInfoMapper.xml
@@ -14,4 +14,17 @@
         order by a.CREATED_TIME desc
     </select>
 
+    <select id="selectNewsVoInPage" resultType="cc.mrbird.febs.mall.vo.NewsListVo">
+        select * from mall_news_info
+        <where>
+            1=1
+            <if test="record.categoryId != null">
+                and category_id=#{record.categoryId}
+            </if>
+            <if test="record.isTop != null">
+                and is_top=#{record.isTop}
+            </if>
+        </where>
+        order by CREATED_TIME desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/news/newsInfoList.html b/src/main/resources/templates/febs/views/modules/news/newsInfoList.html
index 6b584bf..4d6d8b7 100644
--- a/src/main/resources/templates/febs/views/modules/news/newsInfoList.html
+++ b/src/main/resources/templates/febs/views/modules/news/newsInfoList.html
@@ -28,7 +28,17 @@
     .layui-table-cell {
         height: auto;
     }
+    .layui-form-onswitch {
+        background-color: #5FB878 !important;
+    }
 </style>
+<script type="text/html" id="isTopSwitch">
+    {{# if(d.isTop === 1) { }}
+    <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="isTopSwitch">
+    {{# } else { }}
+    <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="isTopSwitch">
+    {{# } }}
+</script>
 <!-- 表格操作栏 start -->
 <script type="text/html" id="user-option">
     <span shiro:lacksPermission="user:view,user:update,user:delete">
@@ -124,6 +134,7 @@
                         templet: function (d) {
                             return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.thumb+'" alt=""></a>';
                         }, minWidth: 150,align:'center'},
+                    {templet: '#isTopSwitch', title: '是否首页显示', minWidth: 120,align:'center'},
                     {field: 'createdTime', title: '创建时间', minWidth: 120,align:'center'},
                     {title: '操作',
                         templet: function (d) {
@@ -140,5 +151,19 @@
             };
         }
 
+        form.on('switch(isTopSwitch)', function (data) {
+            console.log(data.value);
+            if (data.elem.checked) {
+                febs.post(ctx + 'admin/news/topNews/' + data.value, null, function () {
+                    febs.alert.success('设置成功');
+                    $query.click();
+                });
+            } else {
+                febs.post(ctx + 'admin/news/unTopNews/' + data.value, null, function () {
+                    febs.alert.success('设置成功');
+                    $query.click();
+                });
+            }
+        })
     })
 </script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html b/src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html
index cf3e101..b272524 100644
--- a/src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html
+++ b/src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html
@@ -101,6 +101,8 @@
                 var form = layui.form;
                 form.render();
             });
+
+            initUserValue();
         });
 
         form.render();
@@ -108,12 +110,14 @@
             elem: '#febs-form-group-date'
         });
 
+
         layedit.set({	//设置图片接口
             uploadImage: {
                 url: 'admin/goods/uploadFileBase64', //接口url
                 type: 'post',
             }
         });
+
         //创建一个编辑器
         var index = layedit.build('lay_edit',{
             height: 300
@@ -177,10 +181,7 @@
             });
         }
 
-
-        initUserValue();
         function initUserValue() {
-            console.log(newsInfo);
             var thumb = newsInfo.thumb;
             $('#thumbImage').html('<img src="' + thumb + '" alt="" class="layui-upload-img" style="width: 100px">')
             form.val("newsInfo-update-form", {
@@ -191,6 +192,8 @@
                 "thumb": newsInfo.thumb,
                 "content": newsInfo.content,
             });
+
+            layedit.setContent(index, newsInfo.content, false);
         }
     });
 </script>
\ No newline at end of file

--
Gitblit v1.9.1