Hentua
2023-04-21 952f6ff37b57adcfd5b057ac7e0c43bb9697a01f
咨询
3 files added
13 files modified
277 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java 12 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java 18 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallNewsCategory.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IMallNewsCategoryService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsCategoryServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallNewsInfoMapper.xml 17 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/knowledgeList.html 169 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsCategory.html 1 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsCategoryAdd.html 6 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoAdd.html 7 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoList.html 6 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html 7 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
@@ -7,7 +7,10 @@
import cc.mrbird.febs.mall.dto.MallNewsInfoDto;
import cc.mrbird.febs.mall.entity.MallNewsCategory;
import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.service.IMallNewsCategoryService;
import cc.mrbird.febs.mall.service.IMallNewsInfoService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
@@ -31,6 +34,7 @@
public class AdminNewsInfoController extends BaseController {
    private final IMallNewsInfoService mallNewsInfoService;
    private final IMallNewsCategoryService mallNewsCategoryService;
    /**
     * 新闻中心-列表
@@ -95,8 +99,12 @@
    }
    @GetMapping(value = "findAllCategoryList")
    public FebsResponse findAllCategoryList() {
        List<MallNewsCategory> categories = mallNewsInfoService.findAllCategory();
    public FebsResponse findAllCategoryList(String code) {
        LambdaQueryWrapper<MallNewsCategory> query = new LambdaQueryWrapper<>();
        if (StrUtil.isNotBlank(code)) {
            query.eq(MallNewsCategory::getCode, code);
        }
        List<MallNewsCategory> categories = mallNewsCategoryService.list(query);
        return new FebsResponse().success().data(categories);
    }
src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java
@@ -12,6 +12,7 @@
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.RequestParam;
/**
 * @author wzy
@@ -34,13 +35,21 @@
        return FebsUtil.view("modules/news/newsInfoList");
    }
    @GetMapping("knowledge")
    @RequiresPermissions("newsInfoList:view")
    public String knowledge() {
        return FebsUtil.view("modules/news/knowledgeList");
    }
    /**
     * 新闻中心-新增
     * @return
     */
    @GetMapping("newsInfoAdd")
    @GetMapping("newsInfoAdd/{code}")
    @RequiresPermissions("newsInfoAdd:add")
    public String newsInfoAdd() {
    public String newsInfoAdd(@PathVariable("code") String code, Model model) {
        model.addAttribute("code", code);
        return FebsUtil.view("modules/news/newsInfoAdd");
    }
@@ -50,10 +59,11 @@
     * @param model
     * @return
     */
    @GetMapping("newsInfoUpdate/{id}")
    @GetMapping("newsInfoUpdate/{id}/{code}")
    @RequiresPermissions("newsInfoUpdate:update")
    public String newsInfoUpdate(@PathVariable long id, Model model) {
    public String newsInfoUpdate(@PathVariable("id") long id, @PathVariable("code") String code, Model model) {
        MallNewsInfo data = mallNewsInfoService.getNewsInfoById(id);
        model.addAttribute("code", code);
        model.addAttribute("newsInfo", data);
        return FebsUtil.view("modules/news/newsInfoUpdate");
    }
src/main/java/cc/mrbird/febs/mall/dto/NewsListDto.java
@@ -21,4 +21,7 @@
    @ApiModelProperty("分类ID")
    private Long categoryId;
    @ApiModelProperty("编码")
    private String code;
}
src/main/java/cc/mrbird/febs/mall/entity/MallNewsCategory.java
@@ -13,4 +13,6 @@
public class MallNewsCategory extends BaseEntity {
    private String title;
    private String code;
}
src/main/java/cc/mrbird/febs/mall/entity/MallNewsInfo.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.mall.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -30,4 +31,7 @@
    private Long categoryId;
    private Integer isTop;
    @TableField(exist = false)
    private String code;
}
src/main/java/cc/mrbird/febs/mall/mapper/MallNewsInfoMapper.java
@@ -11,7 +11,7 @@
public interface MallNewsInfoMapper extends BaseMapper<MallNewsInfo> {
    IPage<AdminMallNewsInfoVo> getNewInfoListInPage(Page<AdminMallNewsInfoVo> page, MallNewsInfo mallNewsInfo);
    IPage<AdminMallNewsInfoVo> getNewInfoListInPage(Page<AdminMallNewsInfoVo> page,@Param("record") MallNewsInfo mallNewsInfo);
    IPage<NewsListVo> selectNewsVoInPage(Page<NewsListVo> page, @Param("record") MallNewsInfo mallNewsInfo);
src/main/java/cc/mrbird/febs/mall/service/IMallNewsCategoryService.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.mall.service;
import cc.mrbird.febs.mall.entity.MallNewsCategory;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IMallNewsCategoryService extends IService<MallNewsCategory> {
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java
@@ -43,6 +43,7 @@
        MallNewsInfo mallNewsInfo = new MallNewsInfo();
        mallNewsInfo.setCategoryId(newsListDto.getCategoryId());
        mallNewsInfo.setCode(newsListDto.getCode());
        return this.baseMapper.selectNewsVoInPage(page, mallNewsInfo);
    }
src/main/java/cc/mrbird/febs/mall/service/impl/MallNewsCategoryServiceImpl.java
New file
@@ -0,0 +1,15 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.mall.entity.MallNewsCategory;
import cc.mrbird.febs.mall.mapper.MallNewsCategoryMapper;
import cc.mrbird.febs.mall.service.IMallNewsCategoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class MallNewsCategoryServiceImpl extends ServiceImpl<MallNewsCategoryMapper, MallNewsCategory> implements IMallNewsCategoryService {
}
src/main/resources/mapper/modules/MallNewsInfoMapper.xml
@@ -8,23 +8,30 @@
               c.title categoryName,
               b.goods_name targetName
        FROM mall_news_info a
        inner join mall_news_category c on a.category_id=c.id
            <if test="record.code != null and record.code != ''">
                and c.code=#{record.code}
            </if>
        left join mall_goods b on a.target_id = b.id
        left join mall_news_category c on a.category_id=c.id
        group by a.id
        order by a.CREATED_TIME desc
    </select>
    <select id="selectNewsVoInPage" resultType="cc.mrbird.febs.mall.vo.NewsListVo">
        select * from mall_news_info
        select * from mall_news_info newsInfo
        inner join mall_news_category category on newsInfo.category_id=category.id
        <where>
            1=1
            <if test="record.categoryId != null">
                and category_id=#{record.categoryId}
                and newsInfo.category_id=#{record.categoryId}
            </if>
            <if test="record.code != null and record.code != ''">
                and category.code=#{record.code}
            </if>
            <if test="record.isTop != null">
                and is_top=#{record.isTop}
                and newsInfo.is_top=#{record.isTop}
            </if>
        </where>
        order by CREATED_TIME desc
        order by newsInfo.CREATED_TIME desc
    </select>
</mapper>
src/main/resources/templates/febs/views/modules/news/knowledgeList.html
New file
@@ -0,0 +1,169 @@
<div class="layui-fluid layui-anim febs-anim" id="febs-knowledge" lay-title="护理小知识">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
                <div class="layui-card-body febs-table-full">
                    <form class="layui-form layui-table-form" lay-filter="knowledge-table-form">
                        <div class="layui-row">
                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="add">
                                    新增
                                </div>
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
                                    <i class="layui-icon">&#xe848;</i>
                                </div>
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
                                    <i class="layui-icon">&#xe79b;</i>
                                </div>
                            </div>
                        </div>
                    </form>
                    <table lay-filter="knowledgeTable" lay-data="{id: 'knowledgeTable'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<style>
    .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">
        <span class="layui-badge-dot febs-bg-orange"></span> 无权限
    </span>
    <a lay-event="edit" shiro:hasPermission="user:update"><i
            class="layui-icon febs-edit-area febs-blue">&#xe7a5;</i></a>
</script>
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
    // 引入组件并初始化
    layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            $view = $('#febs-knowledge'),
            $query = $view.find('#query'),
            $add = $view.find('#add'),
            $reset = $view.find('#reset'),
            $searchForm = $view.find('form'),
            sortObject = {field: 'phone', type: null},
            tableIns;
        form.render();
        // 表格初始化
        initTable();
        // 初始化表格操作栏各个按钮功能
        table.on('tool(knowledgeTable)', function (obj) {
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'newsInfoUpdate') {
                febs.modal.open('编辑', 'modules/news/newsInfoUpdate/' + data.id + '/knowledge', {
                    btn: ['提交', '取消'],
                    yes: function (index, layero) {
                        $('#newsInfo-update').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
                    }
                });
            }
            if (layEvent === 'delNewsInfo') {
                febs.modal.confirm('删除', '确认删除?', function () {
                    delNewsInfo(data.id);
                });
            }
        });
        function delNewsInfo(id) {
            febs.get(ctx + 'admin/news/delNewsInfo/' + id, null, function () {
                febs.alert.success('操作成功');
                $query.click();
            });
        }
        // 查询按钮
        $query.on('click', function () {
            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
            tableIns.reload({where: params, page: {curr: 1}});
        });
        // 刷新按钮
        $reset.on('click', function () {
            $searchForm[0].reset();
            sortObject.type = 'null';
            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
        });
        $add.on('click', function () {
            febs.modal.open('新增', 'modules/news/newsInfoAdd/knowledge', {
                btn: ['提交', '取消'],
                yes: function (index, layero) {
                    $('#newsInfo-add').find('#submit').trigger('click');
                },
                btn2: function () {
                    layer.closeAll();
                }
            });
        });
        function initTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'knowledgeTable',
                url: ctx + 'admin/news/getNewInfoList?code=knowledge',
                cols: [[
                    {field: 'title', title: '标题', minWidth: 120,align:'center'},
                    {field: 'categoryName', title: '分类', minWidth: 120,align:'center'},
                    {field: 'thumb', title: '缩略图',
                        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) {
                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="newsInfoUpdate" shiro:hasPermission="user:update">编辑</button>'
                                +'<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delNewsInfo" shiro:hasPermission="user:update">删除</button>'
                        },minWidth: 300,align:'center'}
                ]]
            });
        }
        // 获取查询参数
        function getQueryParams() {
            return {
            };
        }
        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/newsCategory.html
@@ -117,6 +117,7 @@
                url: ctx + 'admin/news/findNewsCategoryList',
                cols: [[
                    {field: 'title', title: '标题', minWidth: 120,align:'center'},
                    {field: 'code', title: '编码', minWidth: 120,align:'center'},
                    {field: 'createdTime', title: '创建时间', minWidth: 120,align:'center'},
                    {title: '操作',
                        templet: function (d) {
src/main/resources/templates/febs/views/modules/news/newsCategoryAdd.html
@@ -34,6 +34,12 @@
                <input type="text" name="title" lay-verify="required" autocomplete="off" data-th-value="${obj == null ? '':obj.title}" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">编码:</label>
            <div class="layui-input-block">
                <input type="text" name="code" lay-verify="required" autocomplete="off" data-th-value="${obj == null ? '':obj.code}" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item febs-hide">
            <button class="layui-btn" lay-submit="" lay-filter="newsCategory-add-form-submit" id="submit"></button>
        </div>
src/main/resources/templates/febs/views/modules/news/newsInfoAdd.html
@@ -81,6 +81,7 @@
            form = layui.form,
            laydate = layui.laydate,
            layedit = layui.layedit,
            code = [[${code}]],
            $view = $('#newsInfo-add'),
            validate = layui.validate;
@@ -123,7 +124,11 @@
            febs.post(ctx + 'admin/news/addNewsInfo', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-newInfo').find('#reset').click();
                if (code == 'notice') {
                    $('#febs-newInfo').find('#reset').click();
                } else {
                    $('#febs-knowledge').find('#reset').click();
                }
            });
            return false;
        });
src/main/resources/templates/febs/views/modules/news/newsInfoList.html
@@ -73,7 +73,7 @@
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'newsInfoUpdate') {
                febs.modal.open('编辑', 'modules/news/newsInfoUpdate/' + data.id, {
                febs.modal.open('编辑', 'modules/news/newsInfoUpdate/' + data.id +'/notice', {
                    btn: ['提交', '取消'],
                    yes: function (index, layero) {
                        $('#newsInfo-update').find('#submit').trigger('click');
@@ -111,7 +111,7 @@
        });
        $add.on('click', function () {
            febs.modal.open('新增', 'modules/news/newsInfoAdd/', {
            febs.modal.open('新增', 'modules/news/newsInfoAdd/notice', {
                btn: ['提交', '取消'],
                yes: function (index, layero) {
                    $('#newsInfo-add').find('#submit').trigger('click');
@@ -126,7 +126,7 @@
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'newInfoTable',
                url: ctx + 'admin/news/getNewInfoList',
                url: ctx + 'admin/news/getNewInfoList?code=notice',
                cols: [[
                    {field: 'title', title: '标题', minWidth: 120,align:'center'},
                    {field: 'categoryName', title: '分类', minWidth: 120,align:'center'},
src/main/resources/templates/febs/views/modules/news/newsInfoUpdate.html
@@ -88,6 +88,7 @@
            form = layui.form,
            laydate = layui.laydate,
            layedit = layui.layedit,
            code = [[${code}]],
            newsInfo = [[${newsInfo}]],
            $view = $('#newsInfo-update'),
            $uploadDel = $view.find('#uploadDel'),
@@ -136,7 +137,11 @@
            febs.post(ctx + 'admin/news/updateNewsInfo', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-newInfo').find('#reset').click();
                if (code == 'notice') {
                    $('#febs-newInfo').find('#reset').click();
                } else {
                    $('#febs-knowledge').find('#reset').click();
                }
            });
            return false;
        });