Helius
2022-05-16 595b2b00b7bff045b21bd830004e3a00b2c8ee03
complete news
10 files modified
2 files added
194 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java 29 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java 23 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallNewsInfoMapper.xml 13 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoList.html 25 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html 9 ●●●●● patch | view | raw | blame | history
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();
    }
}
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 = "新闻详情")
src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
@@ -28,4 +28,6 @@
    private String thumb;
    private Long categoryId;
    private Integer isTop;
}
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);
}
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();
}
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();
    }
}
src/main/java/cc/mrbird/febs/mall/vo/AdminMallNewsInfoVo.java
@@ -31,4 +31,6 @@
    private Integer type;
    private String categoryName;
    private Integer isTop;
}
src/main/java/cc/mrbird/febs/mall/vo/NewsListVo.java
New file
@@ -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;
}
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>
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>
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>