KKSU
2025-01-10 85f6036ad23c66b97bc7c253f4d04c762fe2fde3
feat(activity): 优化活动列表展示和状态管理

- 在活动列表中添加活动状态和类型描述
- 实现活动状态切换时更新相关商品销售状态
- 优化活动删除逻辑
- 添加 ActivityTypeEnum 和 YesOrNoOrIngEnum 的 getEnum 方法
- 更新活动列表模板,增加状态显示和操作按钮控制
4 files modified
98 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/ActivityTypeEnum.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoOrIngEnum.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java 24 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/activity/list.html 57 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/ActivityTypeEnum.java
@@ -18,4 +18,12 @@
        this.value = value;
        this.desc = desc;
    }
    public static ActivityTypeEnum getEnum(int value) {
        for (ActivityTypeEnum activityTypeEnum : ActivityTypeEnum.values()) {
            if (activityTypeEnum.getValue() == value) {
                return activityTypeEnum;
            }
        }
        return null;
    }
}
src/main/java/cc/mrbird/febs/common/enumerates/YesOrNoOrIngEnum.java
@@ -23,4 +23,13 @@
        this.desc = desc;
    }
    public static YesOrNoOrIngEnum getEnum(int value) {
        for (YesOrNoOrIngEnum type : YesOrNoOrIngEnum.values()) {
            if (type.getValue() == value) {
                return type;
            }
        }
        return null;
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java
@@ -201,13 +201,14 @@
        List<MallActivity> mallActivities = this.baseMapper.selectList(
                new LambdaQueryWrapper<MallActivity>()
                        .select(MallActivity::getId, MallActivity::getName)
                        .eq(MallActivity::getState, YesOrNoOrIngEnum.YES.getValue())
        );
        if(CollUtil.isNotEmpty(mallActivities)){
            for (MallActivity mallActivity : mallActivities) {
                AdminMallActivityListVo adminMallActivityListVo = new AdminMallActivityListVo();
                adminMallActivityListVo.setId(mallActivity.getId());
                adminMallActivityListVo.setName(mallActivity.getName());
                String desc = YesOrNoOrIngEnum.getEnum(mallActivity.getState()).getDesc();
                String desc1 = ActivityTypeEnum.getEnum(mallActivity.getType()).getDesc();
                adminMallActivityListVo.setName(mallActivity.getName()+desc+desc1);
                mallActivityList.add(adminMallActivityListVo);
            }
        }
@@ -219,12 +220,27 @@
        MallActivity mallActivity = this.baseMapper.selectById(id);
        mallActivity.setState(state);
        this.baseMapper.updateById(mallActivity);
        if(YesOrNoOrIngEnum.NO.getValue() == state){
            List<MallGoods> mallGoods = mallGoodsMapper.selectList(
                    new LambdaQueryWrapper<MallGoods>()
                            .eq(MallGoods::getActivityId, id)
            );
            if(CollUtil.isNotEmpty(mallGoods)){
                mallGoodsMapper.update(null,
                        new LambdaQueryWrapper<MallGoods>()
                                .eq(MallGoods::getIsSale, MallGoods.ISSALE_STATUS_DISABLED)
                                .eq(MallGoods::getActivityId, id)
                );
            }
        }
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public FebsResponse delAdminActivity(Long id) {
        this.baseMapper.deleteById(id);
        return new FebsResponse().success().message("操作成功");
    }
@@ -234,14 +250,14 @@
        List<MallActivity> mallActivities = this.baseMapper.selectList(
                new LambdaQueryWrapper<MallActivity>()
                        .select(MallActivity::getId, MallActivity::getName)
                        .eq(MallActivity::getState, YesOrNoOrIngEnum.YES.getValue())
                        .eq(MallActivity::getType, type)
        );
        if(CollUtil.isNotEmpty(mallActivities)){
            for (MallActivity mallActivity : mallActivities) {
                AdminMallActivityListVo adminMallActivityListVo = new AdminMallActivityListVo();
                adminMallActivityListVo.setId(mallActivity.getId());
                adminMallActivityListVo.setName(mallActivity.getName());
                String desc = YesOrNoOrIngEnum.getEnum(mallActivity.getState()).getDesc();
                adminMallActivityListVo.setName(mallActivity.getName()+desc);
                mallActivityList.add(adminMallActivityListVo);
            }
        }
src/main/resources/templates/febs/views/modules/activity/list.html
@@ -93,7 +93,7 @@
        table.on('tool(activityTable)', function (obj) {
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'delAct') {
            if (layEvent === 'activityDeleteEvent') {
                febs.modal.confirm('删除', '确认删除该活动?', function () {
                    delAct(data.id);
                });
@@ -184,25 +184,48 @@
                    {field: 'startTime', title: '开始时间', minWidth: 150,align:'left'},
                    {field: 'endTime', title: '结束时间', minWidth: 150,align:'left'},
                    {field: 'state', title: '状态', templet: '#activityStateSwitch', minWidth: 130,align:'center'},
                    {field: 'actRemark', title: '活动说明', minWidth: 150,align:'left'},
                    {title: '操作', toolbar: '#activityOption', minWidth: 200},
                ]],
                done: function(res, curr, count) {
                    // 遍历每一行数据
                    res.data.forEach(function(item, index) {
                        // 根据状态值控制按钮显示
                        if (item.state === 0) {
                            // 如果状态为1,显示
                            $('#activityOption' + index).show();
                        } else {
                            // 否则,隐藏
                            $('#activityOption' + index).hide();
                        }
                    });
                }
                ]]
            });
        }
        // function initTable() {
        //     tableIns = febs.table.init({
        //         elem: $view.find('table'),
        //         id: 'activityTable',
        //         url: ctx + 'admin/activity/list',
        //         cols: [[
        //             {field: 'name', title: '名称', minWidth: 150,align:'left'},
        //             {field: 'code', title: '编码', minWidth: 150,align:'left'},
        //             {field: 'maxImage', title: '大图',
        //                 templet: function (d) {
        //                     return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.maxImage+'" alt=""></a>';
        //                 }, minWidth: 150,align:'center'},
        //             {field: 'minImage', title: '小图',
        //                 templet: function (d) {
        //                     return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.minImage+'" alt=""></a>';
        //                 }, minWidth: 150,align:'center'},
        //             {field: 'startTime', title: '开始时间', minWidth: 150,align:'left'},
        //             {field: 'endTime', title: '结束时间', minWidth: 150,align:'left'},
        //             {field: 'state', title: '状态', templet: '#activityStateSwitch', minWidth: 130,align:'center'},
        //             {field: 'actRemark', title: '活动说明', minWidth: 150,align:'left'},
        //             {title: '操作', toolbar: '#activityOption', minWidth: 200},
        //         ]],
        //         done: function(res, curr, count) {
        //             // 遍历每一行数据
        //             res.data.forEach(function(item, index) {
        //                 // 根据状态值控制按钮显示
        //                 if (item.state === 2) {
        //                     // 如果状态为1,显示
        //                     $('#activityOption' + index).show();
        //                 } else {
        //                     // 否则,隐藏
        //                     $('#activityOption' + index).hide();
        //                 }
        //             });
        //         }
        //     });
        // }
        form.on('switch(activityStateSwitch)', function (data) {
            if (data.elem.checked) {
                changeState(data.value,1);