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