From 7dce9828e84642d5f37429fff2448dd9c11f71aa Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 07 Jan 2025 11:17:52 +0800 Subject: [PATCH] feat(mall): 添加折扣活动功能 --- src/main/java/cc/mrbird/febs/mall/controller/ViewActivityController.java | 4 src/main/java/cc/mrbird/febs/mall/vo/AdminDiscountVO.java | 17 ++++ src/main/java/cc/mrbird/febs/mall/entity/MallActivity.java | 7 + src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java | 6 + src/main/resources/application-test.yml | 6 src/main/resources/templates/febs/views/modules/activity/discountUpdate.html | 45 +++++----- src/main/resources/templates/febs/views/modules/activity/add.html | 106 +++++++++++++++++++++++++- src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java | 10 ++ src/main/resources/application.yml | 2 src/main/java/cc/mrbird/febs/mall/service/IActivityService.java | 3 10 files changed, 171 insertions(+), 35 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java index 9db62f5..5d6a651 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminActivityController.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.entity.MallActivity; import cc.mrbird.febs.mall.service.IActivityService; +import cc.mrbird.febs.mall.vo.AdminDiscountVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -38,4 +39,13 @@ public FebsResponse addActivity(@RequestBody @Valid MallActivity mallActivity) { return iActivityService.addActivity(mallActivity); } + + /** + * 修改折扣活动 + */ + @PostMapping("discountUpdate") + @ControllerEndpoint(operation = "修改折扣活动", exceptionMessage = "操作失败") + public FebsResponse discountUpdate(@RequestBody @Valid AdminDiscountVO adminDiscountVO) { + return iActivityService.discountUpdate(adminDiscountVO); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewActivityController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewActivityController.java index cc7f772..89ae14c 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewActivityController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewActivityController.java @@ -33,8 +33,8 @@ /** * 新增 */ - @GetMapping("activityAdd") - @RequiresPermissions("activityAdd:add") + @GetMapping("add") + @RequiresPermissions("add:add") public String activityAdd() { return FebsUtil.view("modules/activity/add"); } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallActivity.java b/src/main/java/cc/mrbird/febs/mall/entity/MallActivity.java index 61db229..7f87e92 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallActivity.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallActivity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; @Data @@ -32,4 +33,10 @@ * 活动类型 1、折扣 2、优惠券 */ private Integer type; + + private Long couponId;//优惠券id + + private BigDecimal discountSize;//折扣粒度 + + private String activityGoodsIds;//关联的商品ids } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IActivityService.java b/src/main/java/cc/mrbird/febs/mall/service/IActivityService.java index 3c4eb88..0ac891d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IActivityService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IActivityService.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.entity.MallActivity; +import cc.mrbird.febs.mall.vo.AdminDiscountVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -11,4 +12,6 @@ IPage<MallActivity> getAdminListInPage(MallActivity mallActivity, QueryRequest request); FebsResponse addActivity(MallActivity mallActivity); + + FebsResponse discountUpdate(AdminDiscountVO adminDiscountVO); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java index 8f32a07..740c408 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ActivityServiceImpl.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.mall.entity.MallActivity; import cc.mrbird.febs.mall.mapper.MallActivityMapper; import cc.mrbird.febs.mall.service.IActivityService; +import cc.mrbird.febs.mall.vo.AdminDiscountVO; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -45,4 +46,9 @@ this.baseMapper.insert(mallActivity); return null; } + + @Override + public FebsResponse discountUpdate(AdminDiscountVO adminDiscountVO) { + return null; + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminDiscountVO.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminDiscountVO.java new file mode 100644 index 0000000..c933e71 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminDiscountVO.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "AdminDiscountVO", description = "信息返回类") +public class AdminDiscountVO { + + private Long activityId;//活动ID + + private BigDecimal discountSize;//折扣力度 + + private String goodsIds;//折扣商品列表 +} diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 2292ceb..bcdaf4f 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -15,10 +15,10 @@ datasource: # 数据源-1,名称为 base base: - username: db_blnka - password: blnka!@#123 + username: db_e2 + password: db_e20806123!@# driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://121.37.162.173:3306/db_blnka?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + url: jdbc:mysql://120.27.238.55:3406/db_e2?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 redis: # Redis数据库索引(默认为 0) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index be3f6da..8cff713 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: profiles: - active: dev + active: test servlet: multipart: diff --git a/src/main/resources/templates/febs/views/modules/activity/add.html b/src/main/resources/templates/febs/views/modules/activity/add.html index 99ecea9..427b8d5 100644 --- a/src/main/resources/templates/febs/views/modules/activity/add.html +++ b/src/main/resources/templates/febs/views/modules/activity/add.html @@ -10,25 +10,43 @@ <div class="layui-tab-content"> <div class="layui-tab-item layui-show"> - <div class="layui-row layui-col-space10 layui-form-item"> - <div class="layui-col-lg6"> + <div class="layui-row layui-col-lg6 layui-form-item"> <label class="layui-form-label febs-form-item-require">名称:</label> <div class="layui-input-block"> <input type="text" name="actName" 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"> + <div class="layui-row layui-col-lg6 layui-form-item discount-rule"> + <label class="layui-form-label febs-form-item-require">关联商品</label> + <div class="layui-input-block"> + <div id="discount-rule"></div> + </div> + </div> + + <div class="layui-row layui-col-lg6 layui-form-item"> <label class="layui-form-label febs-form-item-require">类型</label> <div class="layui-input-block"> - <select name="type" class="award-type" lay-filter="award-type-select"> + <select name="type" class="activity-type" lay-filter="activity-type-select"> <option value="1">折扣</option> <option value="2">优惠卷</option> </select> </div> + </div> + + <div class="layui-row layui-col-lg6 discount-size layui-form-item"> + <label class="layui-form-label">折扣力度</label> + <div class="layui-input-block"> + <input type="text" name="discountSize" placeholder="折扣力度" autocomplete="off" class="layui-input"> + <div class="layui-form-mid layui-word-aux">0.98:就是98折</div> + </div> + </div> + + <div class="layui-row layui-col-lg6 febs-hide layui-form-item coupon-size"> + <label class="layui-form-label">优惠卷:</label> + <div class="layui-input-block"> + <div id="coupon-rule"></div> </div> </div> @@ -40,6 +58,9 @@ placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> </div> </div> + </div> + + <div class="layui-form-item"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">结束时间:</label> <div class="layui-input-block"> @@ -152,6 +173,62 @@ element = layui.element; form.render(); + var activityGoodsIds = xmSelect.render({ + el: '#discount-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) { + activityGoodsIds.update({ + data : res.data, + autoRow: true, + }); + }) + + var couponRule = xmSelect.render({ + el: '#coupon-rule', + language: 'zn', + prop : { + value : 'id', + children : 'child' + }, + iconfont: { + parent: 'hidden', + }, + // radio: true, + clickClose: true, + tree: { + show: true, + //非严格模式 + strict: false, + }, + data: [] + }) + + febs.get(ctx + 'admin/goods/couponTreeSet', null, function(res) { + couponRule.update({ + data : res.data, + autoRow: true, + }); + }) laydate.render({ elem: '#febs-form-group-date-start' @@ -206,5 +283,22 @@ }) return false; }); + + form.on('select(activity-type-select)', function(data){ + $('.discount-size').each(function() { + if (data.value == 1) { + $(this).show(); + } else { + $(this).hide(); + } + }) + $('.coupon-size').each(function() { + if (data.value == 2) { + $(this).show(); + } else { + $(this).hide(); + } + }) + }); }); </script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/activity/discountUpdate.html b/src/main/resources/templates/febs/views/modules/activity/discountUpdate.html index 50ff7aa..24ed948 100644 --- a/src/main/resources/templates/febs/views/modules/activity/discountUpdate.html +++ b/src/main/resources/templates/febs/views/modules/activity/discountUpdate.html @@ -13,13 +13,22 @@ <input type="text" name="id" placeholder="" autoComplete="off" class="layui-input febs-hide"> <blockquote class="layui-elem-quote blue-border">折扣</blockquote> + <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="discountSize" lay-verify="required" + placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + </div> <blockquote class="layui-elem-quote blue-border">参与商品</blockquote> - <div class="layui-form-item coupon-rule"> + <div class="layui-form-item discount-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 id="discount-rule"></div> </div> </div> </div> @@ -60,15 +69,15 @@ eleTree = layui.eleTree, $view = $('#activity-discount-update'), layedit = layui.layedit, - couponRule = [[${couponRule}]], + activity = [[${activity}]], upload = layui.upload, validate = layui.validate, element = layui.element; form.render(); - var couponRuleGoodsIds = xmSelect.render({ - el: '#coupon-rule', + var activityGoodsIds = xmSelect.render({ + el: '#discount-rule', language: 'zn', prop : { value : 'id', @@ -91,7 +100,7 @@ }) febs.get(ctx + 'admin/goods/goodsTreeSet', null, function(res) { - couponRuleGoodsIds.update({ + activityGoodsIds.update({ data : res.data, autoRow: true, }); @@ -101,27 +110,17 @@ function initValue() { form.val("activity-discount-update-form", { - "id": couponRule.id, - "name": couponRule.name, - "type": couponRule.type, - "expireDay": couponRule.expireDay, - "costAmount": couponRule.costAmount, - "realAmount": couponRule.realAmount + "id": activity.id, + "realAmount": activity.realAmount }); - couponRuleGoodsIds.setValue(couponRule.goodsIds); + activityGoodsIds.setValue(activity.goodsIds); } form.on('submit(activity-discount-update-form-submit)', function (data) { - let type = data.field.type; - let costAmount = data.field.costAmount; - if(type == 2 && costAmount <= 0){ - febs.alert.warn("累计满减卷,满足金额不能为0"); - return false; - } - let couponRuleList = couponRuleGoodsIds.getValue(); - if (couponRuleList.length > 0) { + let activityList = activityGoodsIds.getValue(); + if (activityList.length > 0) { var couponIds = []; - layui.each(couponRuleList, function (key, item) { + layui.each(activityList, function (key, item) { couponIds.push(item.id) }); data.field.goodsIds=couponIds; @@ -137,7 +136,7 @@ if(data.code==200){ layer.closeAll(); febs.alert.success(data.message); - $('#febs-coupon-rule').find('#reset').click(); + $('#febs-activity').find('#reset').click(); }else{ febs.alert.warn(data.message); } -- Gitblit v1.9.1