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