From 9dfb2a22680a768400fdef99a16acffca87ace8c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 13 Mar 2023 16:10:00 +0800
Subject: [PATCH] 贡献点设置
---
src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java | 4 +
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 4 +
src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java | 3
src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html | 26 ++++----
src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java | 2
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 7 ++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 4 +
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 82 +++++++++++++++++++++------
8 files changed, 98 insertions(+), 34 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 2ceea29..f0cafc8 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,10 @@
@Getter
public enum DataDictionaryEnum {
/**
+ * 贡献点设置-购买商品获得
+ */
+ STAR_GET("PERK_SET","STAR_GET"),
+ /**
* 商城每天新增业绩×本级别占比÷级别的总贡献值×个人贡献值数量=个人每天补贴
* 举例:假如您购买了礼包六1万元的产品(20个贡献值),身份是三星合伙人,同级别总共有50个贡献值,今天全网新增业绩50万,
* 当天补贴:500000×6%=30000÷50=600×20=12000
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
index a8e9d18..92a3cb7 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -71,6 +71,10 @@
DataDictionaryEnum.SCORE_CHANGE.getType(),
DataDictionaryEnum.SCORE_CHANGE.getCode(),
hlmScoreSetDto.getScoreChange());
+ commonService.updateDataDic(
+ DataDictionaryEnum.STAR_GET.getType(),
+ DataDictionaryEnum.STAR_GET.getCode(),
+ hlmScoreSetDto.getStarGet());
return new FebsResponse().success();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
index f3145df..69dda1d 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -46,9 +46,8 @@
@ApiOperation(value = "判断是否允许创建订单", notes = "判断是否允许创建订单")
@PostMapping(value = "/judgeCreateOrder")
public FebsResponse judgeCreateOrder(@RequestBody AddOrderDto addOrderDto) {
- boolean result = mallOrderInfoService.judgeCreateOrder(addOrderDto);
- return new FebsResponse().success().data(result);
+ return mallOrderInfoService.judgeCreateOrder(addOrderDto);
}
@ApiOperation(value = "创建订单", notes = "创建订单")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index 35ad3da..30abf20 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -90,6 +90,13 @@
String scoreChange = ObjectUtil.isEmpty(scoreChangeDic.getValue()) ? "0" : scoreChangeDic.getValue();
hlmScoreSetDto.setScoreChange(scoreChange);
}
+ DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.STAR_GET.getType(),
+ DataDictionaryEnum.STAR_GET.getCode());
+ if (starGetDic != null) {
+ String starGet = ObjectUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue();
+ hlmScoreSetDto.setStarGet(starGet);
+ }
model.addAttribute("hlmScoreSet", hlmScoreSetDto);
return FebsUtil.view("modules/system/hlmScoreSet");
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java
index 1845ae3..7b75920 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java
@@ -10,6 +10,10 @@
@ApiModel(value = "HlmScoreSetDto", description = "积分设置")
public class HlmScoreSetDto {
/**
+ * 贡献点设置-购买商品获得
+ */
+ private String starGet;
+ /**
* 签到设置-签到积分
*/
private String signScore;
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
index a4e5b90..00d995d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -37,7 +37,7 @@
FebsResponse bangCardSign(BangCardSignDto bangCardSignDto);
- boolean judgeCreateOrder(AddOrderDto addOrderDto);
+ FebsResponse judgeCreateOrder(AddOrderDto addOrderDto);
ApiScoreSetVo myScoreSet();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 7004685..7b2941a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -465,13 +465,40 @@
* 增加贡献值,增加流水
*/
if (starSum.compareTo(BigDecimal.ZERO) > 0) {
- mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
- mallMoneyFlowService.addMoneyFlow(
- memberId,
- starSum,
- MoneyFlowTypeEnum.STAR.getValue(),
- orderInfo.getOrderNo(),
- FlowTypeEnum.STAR.getValue());
+ //系统设置的个人贡献点最大值
+ DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.STAR_GET.getType(),
+ DataDictionaryEnum.STAR_GET.getCode());
+ if(ObjectUtil.isNotEmpty(starGetDic)){
+ String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue();
+ BigDecimal starGet = new BigDecimal(starGetStr);
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ BigDecimal star = new BigDecimal(mallMemberWallet.getStar());
+ if(starGet.compareTo(star.add(starSum)) < 0){
+ if(starGet.compareTo(star) > 0){
+ BigDecimal subtract = starGet.subtract(star);
+ if(subtract.compareTo(starSum) < 0){
+ starSum = subtract;
+ }
+ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ starSum,
+ MoneyFlowTypeEnum.STAR.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.STAR.getValue());
+ }
+ }else{
+ mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ starSum,
+ MoneyFlowTypeEnum.STAR.getValue(),
+ orderInfo.getOrderNo(),
+ FlowTypeEnum.STAR.getValue());
+ }
+ }
}
/**
* 增加补贴额度
@@ -806,18 +833,41 @@
}
@Override
- public boolean judgeCreateOrder(AddOrderDto addOrderDto) {
- boolean flag = false;
-
+ public FebsResponse judgeCreateOrder(AddOrderDto addOrderDto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
if (CollUtil.isEmpty(addOrderDto.getItems())) {
- return false;
+ throw new FebsException("请选择购买商品");
}
+ boolean hasTc = false;
BigDecimal total = BigDecimal.ZERO;
for (AddOrderItemDto item : addOrderDto.getItems()) {
MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ /**
+ * 贡献点判断
+ */
+ if (mallGoods.getIsNormal() == 2) {
+ hasTc = true;
+ }
BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
total = total.add(amount);
+ }
+ if(hasTc){
+ //系统设置的个人贡献点最大值
+ DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.STAR_GET.getType(),
+ DataDictionaryEnum.STAR_GET.getCode());
+ if(ObjectUtil.isNotEmpty(starGetDic)){
+ String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue();
+ BigDecimal starGet = new BigDecimal(starGetStr);
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ BigDecimal star = new BigDecimal(mallMemberWallet.getStar());
+ if(starGet.compareTo(star) <= 0){
+ throw new FebsException("无法购买套餐");
+ }
+ }
}
/**
* 使用积分折扣现金
@@ -840,16 +890,12 @@
if(ObjectUtil.isNotEmpty(scoreChangeDic)){
scoreChange = new BigDecimal(scoreChangeDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN);
}
- scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange);
+ scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange).setScale(2,BigDecimal.ROUND_DOWN);
if(scorePercentMaxAmount.compareTo(score) < 0){
- flag = false;
- }else{
- flag = true;
+ throw new FebsException("最多可使用"+scorePercentMaxAmount+"积分");
}
- }else{
- flag = true;
}
- return flag;
+ return new FebsResponse().success();
}
@Override
diff --git a/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html b/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html
index b1c44b2..38e532f 100644
--- a/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html
+++ b/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html
@@ -3,7 +3,6 @@
<form class="layui-form" action="" lay-filter="hlm-score-set-form">
<div class="layui-card">
<div class="layui-card-body">
-
<blockquote class="layui-elem-quote blue-border">签到</blockquote>
<div class="layui-form-item">
<div class="layui-inline">
@@ -25,14 +24,6 @@
</div>
</div>
-<!-- <blockquote class="layui-elem-quote blue-border">签到</blockquote>-->
-<!-- <div class="layui-form-item">-->
-<!-- <label class="layui-form-label febs-form-item-require">签到积分:</label>-->
-<!-- <div class="layui-input-block">-->
-<!-- <input type="text" name="signScore" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input" >-->
-<!-- <div class="layui-word-aux">每次签到赠送积分数量,填写整数,如【35】</div>-->
-<!-- </div>-->
-<!-- </div>-->
<blockquote class="layui-elem-quote blue-border">积分与现金</blockquote>
<div class="layui-form-item">
<label class="layui-form-label febs-form-item-require">抵扣现金(%):</label>
@@ -47,12 +38,20 @@
<input type="text" name="scoreChange" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
<div class="layui-word-aux">设置1,则1积分等于1元,设置2,则2积分等于1元,填写整数,如【1】</div>
</div>
-
</div>
- </div>
- <div class="layui-card-footer">
- <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-score-set-submit" id="submit">保存</button>
+ <blockquote class="layui-elem-quote blue-border">贡献点</blockquote>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">个人最大值:</label>
+ <div class="layui-input-block">
+ <input type="text" name="starGet" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ <div class="layui-word-aux">设置50,则购买商品,则赠送贡献点,超过50,则不再增加,设置为0,则没有限制,填写整数,如【50】</div>
+ </div>
+ </div>
+ <div class="layui-card-footer">
+ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-score-set-submit" id="submit">保存</button>
+ </div>
+ </div>
</div>
</div>
</form>
@@ -92,6 +91,7 @@
function initHlmScoreSetValue() {
form.val("hlm-score-set-form", {
+ "starGet": hlmScoreSet.starGet,
"signScore": hlmScoreSet.signScore,
"signScoreDays": hlmScoreSet.signScoreDays,
"signScoreCnt": hlmScoreSet.signScoreCnt,
--
Gitblit v1.9.1