src/main/java/cc/mrbird/febs/mall/controller/AdminMallGoodsController.java
@@ -404,5 +404,10 @@ return new FebsResponse().success().data(adminMallGoodsService.findAdminMallGoodsCouponVoTreeList()); } @GetMapping(value = "/goodsTreeSet") public FebsResponse goodsTreeSet() { return new FebsResponse().success().data(adminMallGoodsService.findAdminMallGoodsVoTreeList()); } } src/main/java/cc/mrbird/febs/mall/dto/CouponRuleAddDto.java
@@ -5,6 +5,8 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.List; @Data @ApiModel(value = "CouponRuleAddDto", description = "参数类") public class CouponRuleAddDto { @@ -27,4 +29,7 @@ @DecimalMax(value = "10000", inclusive = false, message = "字段不能大于10000") private BigDecimal realAmount; //优惠卷IDs private List<Long> goodsIds; } src/main/java/cc/mrbird/febs/mall/mapper/CouponGoodsMapper.java
@@ -10,5 +10,7 @@ List<Long> selectByGoodId(Long id); List<Long> selectByCouponId(Long id); List<CouponGoods> selectByGoodIdAndCouponId(@Param("goodsId")Long goodsId, @Param("couponId")Long couponId); } src/main/java/cc/mrbird/febs/mall/service/IAdminMallGoodsService.java
@@ -72,4 +72,6 @@ List<AdminMallGoodsCouponTreeVo> findAdminMallGoodsCouponVoTree(); List<AdminMallGoodsCouponTreeListVo> findAdminMallGoodsCouponVoTreeList(); List<AdminMallGoodsCouponTreeListVo> findAdminMallGoodsVoTreeList(); } src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsService.java
@@ -865,6 +865,25 @@ mallGoodsCoupon.setCostAmount(couponRuleAddDto.getCostAmount()); mallGoodsCoupon.setRealAmount(couponRuleAddDto.getRealAmount()); mallGoodsCouponMapper.insert(mallGoodsCoupon); Long couponId = mallGoodsCoupon.getId(); QueryWrapper<CouponGoods> objectQueryWrapperCoupon = new QueryWrapper<>(); objectQueryWrapperCoupon.eq("coupon_id",couponId); List<CouponGoods> couponGoodsList = couponGoodsMapper.selectList(objectQueryWrapperCoupon); if(CollUtil.isNotEmpty(couponGoodsList)){ for(CouponGoods couponGoods : couponGoodsList){ couponGoodsMapper.deleteById(couponGoods); } } if(CollUtil.isNotEmpty(couponRuleAddDto.getGoodsIds())){ List<Long> goodsIds = couponRuleAddDto.getGoodsIds(); for(Long goodsId : goodsIds){ CouponGoods couponGoods = new CouponGoods(); couponGoods.setGoodsId(goodsId); couponGoods.setCouponId(couponId); couponGoodsMapper.insert(couponGoods); } } return new FebsResponse().success().message("操作成功"); } @@ -906,7 +925,10 @@ @Override public AdminMallGoodsCouponVo selectGoodsCouponById(long id) { return mallGoodsCouponMapper.selectGoodsCouponById(id); List<Long> goodsIds = couponGoodsMapper.selectByCouponId(id); AdminMallGoodsCouponVo adminMallGoodsCouponVo = mallGoodsCouponMapper.selectGoodsCouponById(id); adminMallGoodsCouponVo.setGoodsIds(goodsIds); return adminMallGoodsCouponVo; } @Override @@ -925,6 +947,25 @@ mallGoodsCoupon.setCostAmount(adminMallGoodsCouponVo.getCostAmount()); mallGoodsCoupon.setRealAmount(adminMallGoodsCouponVo.getRealAmount()); mallGoodsCouponMapper.updateById(mallGoodsCoupon); Long couponId = mallGoodsCoupon.getId(); QueryWrapper<CouponGoods> objectQueryWrapperCoupon = new QueryWrapper<>(); objectQueryWrapperCoupon.eq("coupon_id",couponId); List<CouponGoods> couponGoodsList = couponGoodsMapper.selectList(objectQueryWrapperCoupon); if(CollUtil.isNotEmpty(couponGoodsList)){ for(CouponGoods couponGoods : couponGoodsList){ couponGoodsMapper.deleteById(couponGoods); } } if(CollUtil.isNotEmpty(adminMallGoodsCouponVo.getGoodsIds())){ List<Long> goodsIds = adminMallGoodsCouponVo.getGoodsIds(); for(Long goodsId : goodsIds){ CouponGoods couponGoods = new CouponGoods(); couponGoods.setGoodsId(goodsId); couponGoods.setCouponId(couponId); couponGoodsMapper.insert(couponGoods); } } return new FebsResponse().success().message("操作成功"); } @@ -963,4 +1004,22 @@ } return objects; } @Override public List<AdminMallGoodsCouponTreeListVo> findAdminMallGoodsVoTreeList() { QueryWrapper<MallGoods> objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("is_sale",1); List<MallGoods> mallGoodsList = mallGoodsMapper.selectList(objectQueryWrapper); List<AdminMallGoodsCouponTreeListVo> objects = new ArrayList<>(); if(CollUtil.isNotEmpty(mallGoodsList)){ for(MallGoods mallGoods : mallGoodsList){ AdminMallGoodsCouponTreeListVo adminMallGoodsCouponTreeListVo = new AdminMallGoodsCouponTreeListVo(); adminMallGoodsCouponTreeListVo.setId(mallGoods.getId()); adminMallGoodsCouponTreeListVo.setName(mallGoods.getGoodsName()); objects.add(adminMallGoodsCouponTreeListVo); } } return objects; } } src/main/java/cc/mrbird/febs/mall/vo/AdminMallGoodsCouponVo.java
@@ -5,6 +5,7 @@ import javax.validation.constraints.*; import java.math.BigDecimal; import java.util.List; @Data @ApiModel(value = "AdminMallGoodsCouponVo", description = "信息返回类") @@ -28,4 +29,6 @@ @DecimalMin(value = "0", inclusive = false, message = "字段不能小于0") @DecimalMax(value = "10000", inclusive = false, message = "字段不能大于10000") private BigDecimal realAmount; private List<Long> goodsIds; } src/main/resources/mapper/modules/CouponGoodsMapper.xml
@@ -8,6 +8,12 @@ where goods_id = #{id} </select> <select id="selectByCouponId" resultType="java.lang.Long"> select a.goods_id from coupon_goods a where coupon_id = #{id} </select> <select id="selectByGoodIdAndCouponId" resultType="cc.mrbird.febs.mall.entity.CouponGoods"> select a.* from coupon_goods a src/main/resources/templates/febs/views/modules/goods/goodsCouponAdd.html
@@ -46,6 +46,17 @@ <div class="layui-form-mid">(元)金额。</div> <div class="layui-form-mid layui-word-aux">满足0元减免100元,则代表100元无门槛优惠卷。</div> </div> <blockquote class="layui-elem-quote blue-border">商品设置</blockquote> <div class="layui-form-item coupon-rule"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">商品:</label> <div class="layui-input-block"> <div id="coupon-rule"></div> </div> </div> </div> </div> </div> </div> @@ -86,9 +97,48 @@ validate = layui.validate, element = layui.element; var couponRule = xmSelect.render({ el: '#coupon-rule', language: 'zn', prop : { value : 'id', children : 'child' }, iconfont: { parent: 'hidden', }, toolbar: { show: true, }, // radio: true, clickClose: true, tree: { show: true, //非严格模式 strict: false, }, data: [] }) febs.get(ctx + 'admin/goods/goodsTreeSet', null, function(res) { couponRule.update({ data : res.data, autoRow: true, }); }) form.render(); form.on('submit(coupon-rule-add-form-submit)', function (data) { let couponRuleList = couponRule.getValue(); if (couponRuleList.length > 0) { var couponIds = []; layui.each(couponRuleList, function (key, item) { couponIds.push(item.id) }); data.field.goodsIds=couponIds; } $.ajax({ 'url':ctx + 'admin/goods/couponRuleAdd', 'type':'post', src/main/resources/templates/febs/views/modules/goods/goodsCouponUpdate.html
@@ -45,6 +45,17 @@ <div class="layui-form-mid">(元)金额。</div> <div class="layui-form-mid layui-word-aux">满足0元减免100元,则代表100元无门槛优惠卷。</div> </div> <blockquote class="layui-elem-quote blue-border">商品设置</blockquote> <div class="layui-form-item coupon-rule"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">商品:</label> <div class="layui-input-block"> <div id="coupon-rule"></div> </div> </div> </div> </div> </div> </div> @@ -88,7 +99,37 @@ form.render(); initValue(); var couponRuleGoodsIds = xmSelect.render({ el: '#coupon-rule', language: 'zn', prop : { value : 'id', children : 'child' }, iconfont: { parent: 'hidden', }, toolbar: { show: true, }, // radio: true, clickClose: true, tree: { show: true, //非严格模式 strict: false, }, data: [] }) febs.get(ctx + 'admin/goods/goodsTreeSet', null, function(res) { couponRuleGoodsIds.update({ data : res.data, autoRow: true, }); initValue(); }) function initValue() { form.val("coupon-rule-update-form", { @@ -98,9 +139,18 @@ "costAmount": couponRule.costAmount, "realAmount": couponRule.realAmount }); couponRuleGoodsIds.setValue(couponRule.goodsIds); } form.on('submit(coupon-rule-update-form-submit)', function (data) { let couponRuleList = couponRuleGoodsIds.getValue(); if (couponRuleList.length > 0) { var couponIds = []; layui.each(couponRuleList, function (key, item) { couponIds.push(item.id) }); data.field.goodsIds=couponIds; } $.ajax({ 'url':ctx + 'admin/goods/couponUpdate', 'type':'post',