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