From 286c0308534688baf50d93c1fc8c2f372912bd40 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 09 May 2025 10:42:43 +0800 Subject: [PATCH] feat(mall): 重构轮播图模块 --- src/main/java/cc/mrbird/febs/mall/controller/banner/AdminBannerController.java | 13 ++ src/main/java/cc/mrbird/febs/mall/controller/banner/AdminNewsInfoController.java | 2 src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java | 2 src/main/java/cc/mrbird/febs/mall/controller/banner/ViewBannerController.java | 2 src/main/java/cc/mrbird/febs/mall/vo/banner/BannerDictionaryEnumVo.java | 11 ++ src/main/java/cc/mrbird/febs/mall/service/impl/AdminBannerServiceImpl.java | 9 + src/main/java/cc/mrbird/febs/mall/controller/banner/ViewNewsController.java | 2 src/main/java/cc/mrbird/febs/common/enumerates/BannerDictionaryEnum.java | 45 +++++++++ src/main/java/cc/mrbird/febs/mall/controller/CommonController.java | 2 src/main/java/cc/mrbird/febs/mall/entity/PlatformBanner.java | 8 + src/main/java/cc/mrbird/febs/mall/controller/banner/ApiMallNewsController.java | 9 + src/main/java/cc/mrbird/febs/mall/service/IAdminBannerService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallNewsServiceImpl.java | 37 +++++++ src/main/resources/mapper/modules/PlatformBannerMapper.xml | 15 ++ src/main/resources/templates/febs/views/modules/banner/platformBannerDetail.html | 37 +++++++ src/main/resources/templates/febs/views/modules/banner/platformBanner.html | 63 ++++++++++-- src/main/resources/templates/febs/views/modules/banner/platformBannerAdd.html | 32 ++++++ 17 files changed, 268 insertions(+), 23 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/BannerDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/BannerDictionaryEnum.java new file mode 100644 index 0000000..28bdda4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/BannerDictionaryEnum.java @@ -0,0 +1,45 @@ +package cc.mrbird.febs.common.enumerates; + +import cc.mrbird.febs.mall.vo.banner.BannerDictionaryEnumVo; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +public enum BannerDictionaryEnum { + /** + * 类型 1-轮播图2-开屏页3-商城4-首页社区 + */ + SOCIAL(4, "社区首页"), + SHOP_STORE(3, "商城首页"), + OPEN_XCX(2, "开屏页"), + LUN_BO(1, "小程序首页"); + + private int type; + + private String code; + + BannerDictionaryEnum(int type, String code) { + this.type = type; + this.code = code; + } + + public static List<BannerDictionaryEnumVo> getAllType() { + ArrayList<BannerDictionaryEnumVo> bannerDictionaryEnumVos = new ArrayList<>(); + for (BannerDictionaryEnum bannerDictionaryEnum : values()) { + BannerDictionaryEnumVo bannerDictionaryEnumVo = new BannerDictionaryEnumVo(); + bannerDictionaryEnumVo.setType(bannerDictionaryEnum.getType()); + bannerDictionaryEnumVo.setCode(bannerDictionaryEnum.getCode()); + bannerDictionaryEnumVos.add(bannerDictionaryEnumVo); + } + + return bannerDictionaryEnumVos; + } + + + public static void main(String[] args) { + List<BannerDictionaryEnumVo> allType = BannerDictionaryEnum.getAllType(); + System.out.println(allType); + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java index 7710a60..afc1e6f 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java @@ -232,7 +232,7 @@ CommonDictionaryEnum.TIME_URL_INDEX.getCode() ); if (timeStop == null) { - timeStop = "0"; + timeStop = "3"; } apiIndexSetVo.setTimeStop(timeStop); return new FebsResponse().success().data(apiIndexSetVo); diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminBannerController.java b/src/main/java/cc/mrbird/febs/mall/controller/banner/AdminBannerController.java similarity index 90% rename from src/main/java/cc/mrbird/febs/mall/controller/AdminBannerController.java rename to src/main/java/cc/mrbird/febs/mall/controller/banner/AdminBannerController.java index 34baf65..3a3a7fd 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminBannerController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/banner/AdminBannerController.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.controller; +package cc.mrbird.febs.mall.controller.banner; import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.controller.BaseController; @@ -63,4 +63,15 @@ iAdminBannerService.platformBannerAdd(platformBannerEntity); return new FebsResponse().success(); } + + + /** + * 轮播图-获取分类 + * @return + */ + @GetMapping(value = "/typeAll") + public FebsResponse typeAll() { + + return iAdminBannerService.typeAll(); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java b/src/main/java/cc/mrbird/febs/mall/controller/banner/AdminNewsInfoController.java similarity index 98% rename from src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java rename to src/main/java/cc/mrbird/febs/mall/controller/banner/AdminNewsInfoController.java index 456b314..aa7d59a 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/banner/AdminNewsInfoController.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.controller; +package cc.mrbird.febs.mall.controller.banner; import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.controller.BaseController; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java b/src/main/java/cc/mrbird/febs/mall/controller/banner/ApiMallNewsController.java similarity index 89% rename from src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java rename to src/main/java/cc/mrbird/febs/mall/controller/banner/ApiMallNewsController.java index cbdaa62..dd69018 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallNewsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/banner/ApiMallNewsController.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.controller; +package cc.mrbird.febs.mall.controller.banner; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.NewsListDto; @@ -68,6 +68,13 @@ return newsService.findAllBanner(); } + @ApiOperation(value = "轮播广告根据分类查询", notes = "轮播广告根据分类查询") + @GetMapping(value = "/bannerByType/{type}") + public FebsResponse bannerByType(@PathVariable("type") int type) { + + return newsService.bannerByType(type); + } + @ApiOperation(value = "首页视频", notes = "首页视频") @GetMapping(value = "/indexVideo") public FebsResponse indexVideo() { diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewBannerController.java b/src/main/java/cc/mrbird/febs/mall/controller/banner/ViewBannerController.java similarity index 97% rename from src/main/java/cc/mrbird/febs/mall/controller/ViewBannerController.java rename to src/main/java/cc/mrbird/febs/mall/controller/banner/ViewBannerController.java index 8101b74..5d2369a 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewBannerController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/banner/ViewBannerController.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.controller; +package cc.mrbird.febs.mall.controller.banner; import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsConstant; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java b/src/main/java/cc/mrbird/febs/mall/controller/banner/ViewNewsController.java similarity index 98% rename from src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java rename to src/main/java/cc/mrbird/febs/mall/controller/banner/ViewNewsController.java index b30b048..3dc635c 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/banner/ViewNewsController.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.controller; +package cc.mrbird.febs.mall.controller.banner; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.common.utils.FebsUtil; diff --git a/src/main/java/cc/mrbird/febs/mall/entity/PlatformBanner.java b/src/main/java/cc/mrbird/febs/mall/entity/PlatformBanner.java index bd68690..e53c4d4 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/PlatformBanner.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/PlatformBanner.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @@ -45,9 +46,16 @@ * 是否置顶 1-是2-否 */ private String isTop; + /** + * 类型 1-轮播图2-开屏页3-商城4-首页社区 + */ + private int type; //商品ID @TableField(exist = false) private Long goodsId; + + @TableField(exist = false) + private String timeStop; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminBannerService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminBannerService.java index 94ea501..0dcd8c5 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminBannerService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminBannerService.java @@ -19,4 +19,6 @@ FebsResponse platformBannerDelete(@NotNull(message = "{required}") Long id); void platformBannerAdd(@Valid PlatformBanner platformBannerEntity); + + FebsResponse typeAll(); } 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 8ffa9b7..fa7f50e 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallNewsService.java @@ -21,4 +21,6 @@ FebsResponse findAllBanner(); FebsResponse indexVideo(); + + FebsResponse bannerByType(int type); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminBannerServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminBannerServiceImpl.java index 945a648..5caef7f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminBannerServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminBannerServiceImpl.java @@ -2,9 +2,11 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.BannerDictionaryEnum; import cc.mrbird.febs.mall.entity.PlatformBanner; import cc.mrbird.febs.mall.mapper.PlatformBannerMapper; import cc.mrbird.febs.mall.service.IAdminBannerService; +import cc.mrbird.febs.mall.vo.banner.BannerDictionaryEnumVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -16,6 +18,7 @@ import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; @Slf4j @Service @@ -68,4 +71,10 @@ platformBannerMapper.insert(platformBannerEntityAdd); } + + @Override + public FebsResponse typeAll() { + List<BannerDictionaryEnumVo> allType = BannerDictionaryEnum.getAllType(); + return new FebsResponse().success().data(allType); + } } 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 b912e2d..9f81d9a 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,6 +1,8 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.BannerDictionaryEnum; +import cc.mrbird.febs.common.enumerates.CommonDictionaryEnum; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.mall.dto.NewsListDto; import cc.mrbird.febs.mall.entity.*; @@ -88,4 +90,39 @@ ); return new FebsResponse().success().data(dataDictionaryCustom.getValue()); } + + @Override + public FebsResponse bannerByType(int type) { + + String timeStop = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + CommonDictionaryEnum.TIME_URL_INDEX.getType(), + CommonDictionaryEnum.TIME_URL_INDEX.getCode() + ).getValue(); + if (timeStop == null) { + timeStop = "3"; + } + QueryWrapper<PlatformBanner> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("type",type); + queryWrapper.orderByAsc("sort"); + queryWrapper.orderByAsc("is_top"); + List<PlatformBanner> paymentMethodList = platformBannerMapper.selectList(queryWrapper); + if(CollUtil.isNotEmpty(paymentMethodList)){ + if(BannerDictionaryEnum.OPEN_XCX.getType() == type) + for(PlatformBanner platformBanner : paymentMethodList){ + platformBanner.setTimeStop(timeStop); + + if("1".equals(platformBanner.getIsJump()) && + 1 == platformBanner.getIsInside()){ + String jumpUrl = platformBanner.getJumpUrl(); + QueryWrapper<MallGoods> queryWrapperGoods = new QueryWrapper<>(); + queryWrapperGoods.eq("goods_no",jumpUrl); + List<MallGoods> goodsList = mallGoodsMapper.selectList(queryWrapperGoods); + if(CollUtil.isNotEmpty(goodsList)){ + platformBanner.setGoodsId(goodsList.get(0).getId()); + } + } + } + } + return new FebsResponse().success().data(paymentMethodList); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/banner/BannerDictionaryEnumVo.java b/src/main/java/cc/mrbird/febs/mall/vo/banner/BannerDictionaryEnumVo.java new file mode 100644 index 0000000..fd13308 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/banner/BannerDictionaryEnumVo.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.mall.vo.banner; + +import lombok.Data; + +@Data +public class BannerDictionaryEnumVo { + + private int type; + + private String code; +} diff --git a/src/main/resources/mapper/modules/PlatformBannerMapper.xml b/src/main/resources/mapper/modules/PlatformBannerMapper.xml index 4421d20..94dd598 100644 --- a/src/main/resources/mapper/modules/PlatformBannerMapper.xml +++ b/src/main/resources/mapper/modules/PlatformBannerMapper.xml @@ -2,12 +2,19 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cc.mrbird.febs.mall.mapper.PlatformBannerMapper"> - <select id="findPlatformBannerInPage" resultType="cc.mrbird.febs.mall.entity.PlatformBanner"> - SELECT + <select id="findPlatformBannerInPage" resultType="cc.mrbird.febs.mall.entity.PlatformBanner"> + SELECT * FROM platform_banner - order by created_time desc - </select> + <where> + <if test="record != null" > + <if test="record.type!=null and record.type!=0"> + and type = #{record.type} + </if> + </if> + </where> + order by sort desc + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/banner/platformBanner.html b/src/main/resources/templates/febs/views/modules/banner/platformBanner.html index 35416b8..03f841d 100644 --- a/src/main/resources/templates/febs/views/modules/banner/platformBanner.html +++ b/src/main/resources/templates/febs/views/modules/banner/platformBanner.html @@ -3,15 +3,32 @@ <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="user-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="reset"> - <i class="layui-icon"></i> - </div> - </div> - </div> - </form> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">分类</label> + <div class="layui-input-inline"> + <select name="type" class="banner-type"> + <option value="0">请选择</option> + </select> + </div> + </div> + + </div> + </div> + <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-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> <table lay-filter="bannerTable" lay-data="{id: 'bannerTable'}"></table> </div> </div> @@ -78,14 +95,28 @@ table = layui.table, dropdown = layui.dropdown, $view = $('#febs-banner'), + $query = $view.find('#query'), $reset = $view.find('#reset'), $add = $view.find('#add'), $searchForm = $view.find('form'), - sortObject = {field: 'spread', type: null}, + sortObject = {field: 'sort', type: null}, tableIns ; form.render(); + + //(下拉框) + $.get(ctx + 'admin/banner/typeAll', function (res) { + var data = res.data; + for (let k in data) + { + $(".banner-type").append("<option value='" + data[k].type + "'>" + data[k].code + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + form.render(); + }); + }); // 表格初始化 initTable(); @@ -136,7 +167,13 @@ $reset.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(); @@ -166,7 +203,9 @@ // 获取查询参数 function getQueryParams() { - return {}; + return { + type: $searchForm.find("select[name='type']").val(), + }; } function initTable() { diff --git a/src/main/resources/templates/febs/views/modules/banner/platformBannerAdd.html b/src/main/resources/templates/febs/views/modules/banner/platformBannerAdd.html index 8d80367..7c6a05f 100644 --- a/src/main/resources/templates/febs/views/modules/banner/platformBannerAdd.html +++ b/src/main/resources/templates/febs/views/modules/banner/platformBannerAdd.html @@ -20,6 +20,26 @@ </div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">排序:</label> + <div class="layui-input-block"> + <input type="text" name="sort" lay-verify="required" + placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">类别:</label> + <div class="layui-input-block"> + <select name="type" class="banner-type"> + <option value="">请选择</option> + </select> + </div> + </div> + </div> + + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">图片:</label> <div class="layui-input-block"> <div class="layui-upload"> @@ -122,6 +142,18 @@ element = layui.element; form.render(); + //(下拉框) + $.get(ctx + 'admin/banner/typeAll', function (res) { + var data = res.data; + for (let k in data) + { + $(".banner-type").append("<option value='" + data[k].type + "'>" + data[k].code + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + form.render(); + }); + }); //图片上传 upload.render({ diff --git a/src/main/resources/templates/febs/views/modules/banner/platformBannerDetail.html b/src/main/resources/templates/febs/views/modules/banner/platformBannerDetail.html index 9ade2cf..57b2bf0 100644 --- a/src/main/resources/templates/febs/views/modules/banner/platformBannerDetail.html +++ b/src/main/resources/templates/febs/views/modules/banner/platformBannerDetail.html @@ -22,6 +22,26 @@ </div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">排序:</label> + <div class="layui-input-block"> + <input type="text" name="sort" lay-verify="required" + placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label febs-form-item-require">类别:</label> + <div class="layui-input-block"> + <select name="type" class="banner-type" id="type"> + <option value="">请选择</option> + </select> + </div> + </div> + </div> + + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">图片:</label> <div class="layui-input-block"> <div class="layui-upload"> @@ -140,6 +160,19 @@ }); form.render(); + //(下拉框) + $.get(ctx + 'admin/banner/typeAll', function (res) { + var data = res.data; + for (let k in data) + { + $(".banner-type").append("<option value='" + data[k].type + "'>" + data[k].code + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + $("#type").val(banner.type) + form.render(); + }); + }); initBannerTable(); @@ -153,7 +186,9 @@ "isInside": banner.isInside, "jumpUrl": banner.jumpUrl, "isTop": banner.isTop, - "isJump": banner.isJump + "sort": banner.sort, + "isJump": banner.isJump, + "type": banner.type, }); $('#bannerImgUpload').append('<img src="' + banner.imageUrl + '" alt="" class="layui-upload-img single-image" style="width: 130px">'); -- Gitblit v1.9.1