KKSU
2024-01-12 4f99b1df96a35a0cd1339cc1fa29efc1566c25fc
套餐
11 files modified
106 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java 7 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 59 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminPerkSetVo.java 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberWalletMapper.xml 4 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/perkSet.html 11 ●●●●● patch | view | raw | blame | history
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,