KKSU
2025-01-09 e15c348bc992de7331d14d76451032358aae9289
feat(mall): 商品列表增加活动筛选功能

- 在商品列表页面添加活动筛选下拉框
- 实现根据活动类型获取活动列表的接口和方法
- 修改商品列表查询条件,增加活动ID筛选
6 files modified
60 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IActivityService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiCouponVo.java 2 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallGoodsMapper.xml 3 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/goods/goodsList.html 27 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java
@@ -57,6 +57,12 @@
        return new FebsResponse().success().data(iActivityService.getAdminActivityList());
    }
    @GetMapping(value = "/activityListByType/{type}")
    public FebsResponse activityListByType(@NotNull(message = "{required}") @PathVariable Integer type) {
        return new FebsResponse().success().data(iActivityService.getAdminActivityListByType(type));
    }
    /**
     * 活动-开启
     */
src/main/java/cc/mrbird/febs/mall/service/IActivityService.java
@@ -24,4 +24,6 @@
    FebsResponse changeAdminState(Long id, Integer state);
    FebsResponse delAdminActivity(Long id);
    List<AdminMallActivityListVo> getAdminActivityListByType(Integer type);
}
src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java
@@ -227,4 +227,24 @@
        this.baseMapper.deleteById(id);
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public List<AdminMallActivityListVo> getAdminActivityListByType(Integer type) {
        List<AdminMallActivityListVo> mallActivityList = new ArrayList<>();
        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());
                mallActivityList.add(adminMallActivityListVo);
            }
        }
        return mallActivityList;
    }
}
src/main/java/cc/mrbird/febs/mall/vo/ApiCouponVo.java
@@ -10,6 +10,8 @@
@ApiModel(value = "ApiCouponVo", description = "信息返回类")
public class ApiCouponVo {
    private Long id;
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "过期天数")
src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -190,6 +190,9 @@
                <if test="record.goodsType != null and record.goodsType != ''">
                    and a.goods_type=#{record.goodsType}
                </if>
                <if test="record.activityId != null">
                    and a.activity_id=#{record.activityId}
                </if>
            </if>
        </where>
        group by a.id
src/main/resources/templates/febs/views/modules/goods/goodsList.html
@@ -13,6 +13,14 @@
                                            <input type="text" placeholder="商品名称" name="goodsName" autocomplete="off" class="layui-input">
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">活动</label>
                                        <div class="layui-input-inline">
                                            <select name="activityId" class="activity-option">
                                                <option value="">请选择</option>
                                            </select>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
@@ -111,8 +119,22 @@
        let currPageGoods = 1;//首先默认值为1,防止出错
        //获取当前页
        currPageGoods = $view.find(".layui-laypage-em").next().html();
        //(下拉框)
        $.get(ctx + 'admin/activity/activityListByType/1', function (res) {
            var data = res.data;
            for (var k in data)
            {
                $(".activity-option").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                form.render();
            });
        });
        // 表格初始化
        initTable();
        initGoodsTable();
        // 初始化表格操作栏各个按钮功能
        table.on('tool(goodsListTable)', function (obj) {
@@ -224,7 +246,7 @@
            });
        });
        function initTable() {
        function initGoodsTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'goodsListTable',
@@ -283,6 +305,7 @@
        function getQueryParams() {
            return {
                goodsName: $searchForm.find('input[name="goodsName"]').val().trim(),
                activityId: $searchForm.find("select[name='activityId']").val(),
            };
        }