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