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"), 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; 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(); } 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"); } 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(); } 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); } // // // /** 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打入池子,池底永远比积分要多出来,意味积分的价格会一直上涨, 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() ); } } } src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java
@@ -47,5 +47,6 @@ private String siPosition; private String siPositionPercent; private String fireScorePercent; } 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> 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,