From 4f99b1df96a35a0cd1339cc1fa29efc1566c25fc Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 12 Jan 2024 10:25:52 +0800
Subject: [PATCH] 套餐
---
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 7 +++
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 4 ++
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 6 +++
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java | 3 +
src/main/resources/mapper/modules/MallMemberWalletMapper.xml | 4 ++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2 +
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 59 +++++++++++++++++++++++++++++
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 7 +++
src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java | 1
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 2 +
src/main/resources/templates/febs/views/modules/system/perkSet.html | 11 +++++
11 files changed, 105 insertions(+), 1 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 c4a2f63..d540bf4 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
@Getter
public enum DataDictionaryEnum {
+
+ FIRE_SCORE_PERCENT("FIRE_SCORE_PERCENT", "FIRE_SCORE_PERCENT"),
//套餐返利的四个档位
SI_POSITION("SI_POSITION", "SI_POSITION"),
SI_POSITION_PERCENT("SI_POSITION_PERCENT", "SI_POSITION_PERCENT"),
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index 8056c2f..0fc6789 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -148,7 +148,12 @@
/**
* 扣除权益积分
*/
- REDUCE_EQUITY_LIMIT(29);
+ REDUCE_EQUITY_LIMIT(29),
+
+ /**
+ * 每日燃烧
+ */
+ FIRE_SCORE(30);
private final int value;
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 e700020..484021c 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -108,6 +108,10 @@
DataDictionaryEnum.SI_POSITION_PERCENT.getType(),
DataDictionaryEnum.SI_POSITION_PERCENT.getCode(),
adminPerkSetVo.getSiPositionPercent());
+ commonService.updateDataDic(
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getType(),
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getCode(),
+ adminPerkSetVo.getFireScorePercent());
return new FebsResponse().success();
}
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 8eef586..adc03ae 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -209,6 +209,12 @@
);
adminPerkSetVo.setSiPositionPercent(siPositionPercentDic.getValue());
+ DataDictionaryCustom fireScorePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getType(),
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getCode()
+ );
+ adminPerkSetVo.setFireScorePercent(fireScorePercentDic.getValue());
+
model.addAttribute("adminPerkSet", adminPerkSetVo);
return FebsUtil.view("modules/system/perkSet");
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
index cea3a64..fd8bb87 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -5,6 +5,7 @@
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
+import java.util.List;
public interface MallMemberWalletMapper extends BaseMapper<MallMemberWallet> {
@@ -25,4 +26,6 @@
BigDecimal selectSumPrizeScore();
BigDecimal selectSumCommission();
+
+ List<MallMemberWallet> seleListByScore();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
index c9ee9fd..f5f0d78 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -57,6 +57,13 @@
public void thankfulJob() {
memberProfitService.thankfulProfit(null);
}
+ /**
+ * 感恩奖
+ */
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void fireJob() {
+ memberProfitService.fireJob(null);
+ }
//
//
// /**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
index 0a8fd37..b29dd6e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -41,6 +41,8 @@
void storeAndDirectorProfit(Date profitDate);
void scorePool();
+
+ void fireJob(Object o);
/**
* 所有入单金额的50%资金流入池子.静态配额25%金本位积分.动态产出10%金本位积分,意味每入一份单会有35%积分产出,
* 但每入一份单是50打入池子,池底永远比积分要多出来,意味积分的价格会一直上涨,
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 7e68c68..067e1a1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -616,4 +616,63 @@
+";人数:"+cnt);
}
+ @Override
+ public void fireJob(Object o) {
+ List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.seleListByScore();
+ if(CollUtil.isEmpty(mallMemberWallets)){
+ return;
+ }
+ DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getType(),
+ DataDictionaryEnum.FIRE_SCORE_PERCENT.getCode()
+ );
+ BigDecimal fireScorePercent = new BigDecimal(dataDictionaryCustom.getValue()).multiply(new BigDecimal("0.01"));
+
+ BigDecimal totalReduce = BigDecimal.ZERO;
+ for(MallMemberWallet mallMemberWallet : mallMemberWallets){
+ BigDecimal score = mallMemberWallet.getScore();
+ BigDecimal multiply = score.multiply(fireScorePercent).setScale(2,BigDecimal.ROUND_DOWN);//每次需要燃烧的数量
+ iApiMallMemberWalletService.reduce(multiply,mallMemberWallet.getMemberId(),"score");
+ //增加一个流水记录
+ moneyFlowService.addMoneyFlow(
+ mallMemberWallet.getMemberId(),
+ multiply.negate(),
+ MoneyFlowTypeEnum.FIRE_SCORE.getValue(),
+ null,
+ mallMemberWallet.getMemberId(),
+ FlowTypeEnum.SCORE.getValue(),
+ AppContants.IS_RETURN_YES);
+ totalReduce = totalReduce.add(multiply);
+ }
+
+ /**
+ * H金劵减少,更新价格
+ */
+ DataDictionaryCustom poolCashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.POOL_CASH.getType(),
+ PerkEnum.POOL_CASH.getCode());
+ //当前现金池数量
+ BigDecimal poolCash = new BigDecimal(poolCashDic.getValue());
+ DataDictionaryCustom poolScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.POOL_SCORE.getType(),
+ PerkEnum.POOL_SCORE.getCode());
+ //当前H金劵池数量
+ BigDecimal poolScore = new BigDecimal(poolScoreDic.getValue());
+ poolScore = poolScore.subtract(totalReduce).setScale(2,BigDecimal.ROUND_DOWN);
+ dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
+ PerkEnum.POOL_SCORE.getType(),
+ PerkEnum.POOL_SCORE.getCode(),
+ poolScore.toString()
+ );
+
+ if(poolScore.compareTo(BigDecimal.ZERO) > 0 && poolCash.compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal divide = poolCash.divide(poolScore, 8, BigDecimal.ROUND_DOWN);
+ dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
+ PerkEnum.POOL_SCORE_PRICE.getType(),
+ PerkEnum.POOL_SCORE_PRICE.getCode(),
+ divide.toString()
+ );
+ }
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java
index 15360fc..4829386 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java
@@ -47,5 +47,6 @@
private String siPosition;
private String siPositionPercent;
+ private String fireScorePercent;
}
diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
index ac360ba..359023d 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -63,4 +63,8 @@
<select id="selectSumCommission" resultType="java.math.BigDecimal">
select ifnull(sum(commission),0) total from mall_member_wallet
</select>
+
+ <select id="seleListByScore" resultType="cc.mrbird.febs.mall.entity.MallMemberWallet">
+ select * from mall_member_wallet where score > 0
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/system/perkSet.html b/src/main/resources/templates/febs/views/modules/system/perkSet.html
index 6071442..61fb09a 100644
--- a/src/main/resources/templates/febs/views/modules/system/perkSet.html
+++ b/src/main/resources/templates/febs/views/modules/system/perkSet.html
@@ -58,6 +58,16 @@
<div class="layui-form-mid layui-word-aux">。</div>
</div>
</div>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label febs-form-item-require">燃烧系数:</label>
+ <div class="layui-form-mid layui-word-aux">每日燃烧用户H金卷:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="fireScorePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
+ </div>
+ <div class="layui-form-mid layui-word-aux">%。</div>
+ </div>
+ </div>
<blockquote class="layui-elem-quote blue-border">每日套餐返利设置</blockquote>
<div class="layui-form-item">
<div class="layui-inline">
@@ -155,6 +165,7 @@
function initPerkSetValue() {
form.val("perk-set-form", {
+ "fireScorePercent": adminPerkSet.fireScorePercent,
"yiPosition": adminPerkSet.yiPosition,
"yiPositionPercent": adminPerkSet.yiPositionPercent,
"erPosition": adminPerkSet.erPosition,
--
Gitblit v1.9.1