xiaoyong931011
2023-04-07 26a8d4cf5c9b365c09f438c4c166e843542c5ace
在mq之前,先更新订单状态
6 files modified
2 files added
460 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java 5 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/AdminAgentInfo.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 104 ●●●● patch | view | raw | blame | history
src/main/resources/static/febs/index.js 2 ●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/poorSet.html 126 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/profitSetting.html 161 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -80,7 +80,7 @@
//    }
    /**
     * 比较两个级别的大小,levelOne大于levelTwo返回1,否则返回0
     * 比较两个级别的大小,levelOne大于levelTwo返回1,levelOne等于levelTwo返回2,否则返回0
     */
    public int compareLevel(String levelOne ,String levelTwo) {
        int codeOne = 0;
@@ -96,6 +96,9 @@
        if(codeOne > codeTwo){
            return 1;
        }
        if(codeOne == codeTwo){
            return 2;
        }
        return 0;
    }
}
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -118,7 +118,17 @@
    /**
     * 董事现金补贴
     */
    PARTNER_CASH_PERK(23);
    PARTNER_CASH_PERK(23),
    /**
     * 代理现金补贴
     */
    AGENT_CASH_PERK(24),
    /**
     * 代理积分补贴
     */
    AGENT_SCORE_PERK(25);
    private final int value;
src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
@@ -8,6 +8,18 @@
@Getter
public enum PerkEnum {
    /**
     * 积分池积分价格 = 积分池现金 / 积分池积分
     */
    POOL_SCORE_PRICE("PERK_SET", "POOL_SCORE_PRICE"),
    /**
     * 积分池积分
     */
    POOL_SCORE("PERK_SET", "POOL_SCORE"),
    /**
     * 积分池现金
     */
    POOL_CASH("PERK_SET", "POOL_CASH"),
    /**
     * 合伙人享全公司入单分红5%加权(现金)
     */
    PARTNER_CASH_PERK_PERCENT("PERK_SET", "PARTNER_CASH_PERK_PERCENT"),
src/main/java/cc/mrbird/febs/mall/entity/AdminAgentInfo.java
New file
@@ -0,0 +1,38 @@
package cc.mrbird.febs.mall.entity;
import lombok.Data;
import java.math.BigDecimal;
/**
 * 代理设置
 * {"teamIncome":"20000","directCnt":2,"cashPercent":"2","scorePercent":"1"}
 * {"teamIncome":"50000","directCnt":2,"cashPercent":"4","scorePercent":"2"}
 * {"teamIncome":"200000","directCnt":2,"cashPercent":"6","scorePercent":"3"}
 * {"teamIncome":"500000","directCnt":2,"cashPercent":"8","scorePercent":"4"}
 * {"teamIncome":"1000000","directCnt":2,"cashPercent":"10","scorePercent":"5"}
 * {"teamIncome":"2000000","directCnt":2,"cashPercent":"12","scorePercent":"6"}
 */
@Data
public class AdminAgentInfo {
    /**
     * 团队业绩
     */
    private BigDecimal teamIncome;
    /**
     * 直推个数
     */
    private Integer directCnt;
    /**
     * 现金补贴比例
     */
    private BigDecimal cashPercent;
    /**
     * 积分补贴比例
     */
    private BigDecimal scorePercent;
}
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -17,10 +17,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -252,15 +249,76 @@
         * 3、团队下不同代理级别获取不用的比例的现金和积分
         */
        if(StrUtil.isNotEmpty(mallMember.getReferrerIds())){
            //团队补贴对象
            List<MallMember> mallMemberTeamPerk = new ArrayList<>();
            String referrerIds = mallMember.getReferrerIds();
            List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ",");
            if(CollUtil.isNotEmpty(referrerIdList)){
            List<MallMember> mallMembers = mallMemberMapper.selectByInviteIds(referrerIdList);
            if(CollUtil.isNotEmpty(mallMembers)){
//                mallMembers.stream().
                /**
                 * 根据等级分组,获取对应的<级别,会员数组>map
                 */
                Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel));
                Set<String> set = collect.keySet(); // 得到所有key的集合
                for (String key : set) {
                    /**
                     * 团队补贴从v1到v6
                     */
                    int compareMin = MemberLevelEnum.V1.compareLevel(key, MemberLevelEnum.V1.getType());
                    int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), key);
                    if(compareMin >= 1 && compareMax >= 1){
                        List<MallMember> value = collect.get(key);
                        mallMemberTeamPerk.add(value.get(0));
                    }
                }
            }
        }
            if(CollUtil.isNotEmpty(mallMemberTeamPerk)){
                String levelNormal = MemberLevelEnum.NORMAL.getType();
                BigDecimal cashPercentNormal = BigDecimal.ZERO;
                BigDecimal scorePercentNormal = BigDecimal.ZERO;
                for(MallMember teamPerkMember : mallMemberTeamPerk){
                    String level = teamPerkMember.getLevel();
                    //比较两个级别的大小,level大于levelNormal返回1
                    int compareLevel = MemberLevelEnum.V1.compareLevel(level, levelNormal);
                    if(compareLevel == 1){
                        Long teamPerkMemberId = teamPerkMember.getId();
                        DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                MemberLevelEnum.V1.getType(), level);
                        AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class);
                        BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE);
                        BigDecimal scorePercent = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE);
                        //极差
                        cashPercent = cashPercent.subtract(cashPercentNormal);
                        scorePercent = scorePercent.subtract(scorePercentNormal);
                        BigDecimal cashAmount = amountTC.multiply(cashPercent).setScale(2, BigDecimal.ROUND_DOWN);
                        BigDecimal scoreCnt = amountTC.multiply(scorePercent).setScale(2, BigDecimal.ROUND_DOWN);
                        if(cashAmount.compareTo(BigDecimal.ZERO) > 0){
                            addWalletInfoAndMoneyFlow(cashAmount,
                                    teamPerkMemberId,
                                    "balance",
                                    MoneyFlowTypeEnum.AGENT_CASH_PERK.getValue(),
                                    FlowTypeEnum.BALANCE.getValue(),
                                    orderNo);
                        }
                        if(scoreCnt.compareTo(BigDecimal.ZERO) > 0){
                            addWalletInfoAndMoneyFlow(scoreCnt,
                                    teamPerkMemberId,
                                    "score",
                                    MoneyFlowTypeEnum.AGENT_SCORE_PERK.getValue(),
                                    FlowTypeEnum.SCORE.getValue(),
                                    orderNo);
                        }
                        levelNormal = level;
                        cashPercentNormal = cashPercent;
                        scorePercentNormal = scorePercent;
                    }
                }
            }
        }
    }
@@ -283,18 +341,31 @@
            //获得数量
            BigDecimal perkEnumDicPercentPerk = perkEnumDicPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
            if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){
                addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,flowType,orderNo);
            }
        }
    }
    /**
     * 操作用户钱包数据,增加流水
     * @param amount
     * @param memberId
     * @param walletField
     * @param type
     * @param flowType
     * @param orderNo
     */
    private void addWalletInfoAndMoneyFlow(BigDecimal amount,Long memberId,String walletField,int type,int flowType,String orderNo){
                //增加
                iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
        iApiMallMemberWalletService.add(amount,memberId,walletField);
                //增加一个流水记录
                mallMoneyFlowService.addMoneyFlow(
                        memberId,
                        perkEnumDicPercentPerk,
                amount,
                        type,
                        orderNo,
                        flowType,
                        AppContants.IS_RETURN_YES);
            }
        }
    }
    /**
@@ -320,16 +391,7 @@
            if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){
                for(MallMember mallMember : mallMembers){
                    Long memberId = mallMember.getId();
                    //增加余额
                    iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
                    //增加一个获得现金的流水记录
                    mallMoneyFlowService.addMoneyFlow(
                            memberId,
                            perkEnumDicPercentPerk,
                            type,
                            orderNo,
                            flowType,
                            AppContants.IS_RETURN_YES);
                    addWalletInfoAndMoneyFlow(perkEnumDicPercentPerk,memberId,walletField,type,flowType,orderNo);
                }
            }
        }
src/main/resources/static/febs/index.js
@@ -3,6 +3,6 @@
    validate: 'lay/modules/validate'
}).define(['febs', 'conf'], function (exports) {
    layui.febs.initPage();
    console.log("\n %c FEBS-Shiro 2.0 %c https://github.com/wuyouzhuguli/FEBS-Shiro %c 如果该项目对您有帮助的话,还请点个star给予精神支持!🐤", "color: #fff; font-size: .84rem;background: #366ed8; padding:5px 0;", "font-size: .84rem;background: #fff; border: 2px solid #b0e0a8;border-left: none; padding:3px 0;"," font-size: .84rem;background: #fcf9ec; padding:5px 0;margin-left: 8px");
    // console.log("\n %c FEBS-Shiro 2.0 %c https://github.com/wuyouzhuguli/FEBS-Shiro %c 如果该项目对您有帮助的话,还请点个star给予精神支持!🐤", "color: #fff; font-size: .84rem;background: #366ed8; padding:5px 0;", "font-size: .84rem;background: #fff; border: 2px solid #b0e0a8;border-left: none; padding:3px 0;"," font-size: .84rem;background: #fcf9ec; padding:5px 0;margin-left: 8px");
    exports('index', {});
});
src/main/resources/templates/febs/views/modules/system/poorSet.html
New file
@@ -0,0 +1,126 @@
<div class="layui-fluid layui-anim febs-anim" id="pool-set" lay-title="积分池设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="pool-set-form">
            <div class="layui-card">
                <div class="layui-card-body">
                    <blockquote class="layui-elem-quote blue-border">积分池比例设置</blockquote>
                    <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">每单购买套餐金额:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="buySetMealPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <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">每单产生:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="buySetMealPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <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">价格:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="buySetMealPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </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">获得【现金】比例:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="directCashPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <div class="layui-form-mid layui-word-aux">%,获得【积分】比例:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="directScorePerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <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">获得【现金】比例:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="partnerCashPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <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">获得【现金】比例:</div>
                            <div class="layui-input-inline">
                                <input type="text" name="directorCashPerkPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
                            </div>
                            <div class="layui-form-mid layui-word-aux">%。</div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="pool-set-form-submit" id="submit">保存</button>
                </div>
            </div>
        </form>
    </div>
</div>
<style>
    .layui-form-label {
        width: 120px;
    }
    .layui-form-item .layui-input-block {
        margin-left: 150px;
    }
    .layui-table-form .layui-form-item {
        margin-bottom: 20px !important;
    }
</style>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            adminPerkSet = [[${adminPerkSet}]],
            validate = layui.validate,
            $view = $('#pool-set');
        form.verify(validate);
        initPerkSetValue();
        form.render();
        function initPerkSetValue() {
            form.val("pool-set-form", {
                "buySetMealPerkPercent": adminPerkSet.buySetMealPerkPercent,
                "directCashPerkPercent": adminPerkSet.directCashPerkPercent,
                "directScorePerkPercent": adminPerkSet.directScorePerkPercent,
                "partnerCashPerkPercent": adminPerkSet.partnerCashPerkPercent,
                "directorCashPerkPercent": adminPerkSet.directorCashPerkPercent
            });
        }
        form.on('submit(pool-set-form-submit)', function (data) {
            console.log(data);
            febs.post(ctx + 'admin/system/perkSet', data.field, function (res) {
                febs.alert.success('设置成功');
            });
            window.location.reload();
            return false;
        });
    });
</script>
src/main/resources/templates/febs/views/modules/system/profitSetting.html
@@ -1,27 +1,16 @@
<div class="layui-fluid layui-anim febs-anim" id="profit-setting" lay-title="收益设置">
<div class="layui-fluid layui-anim febs-anim" id="profit-setting" lay-title="代理设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="profit-setting-form">
            <div class="layui-card">
                <div class="layui-card-body">
                    <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                        <ul class="layui-tab-title">
                            <li class="layui-this">分红设置</li>
                            <li>代理分红</li>
                            <li>排名分红</li>
                            <li>间推分红</li>
                        </ul>
                        <blockquote class="layui-elem-quote blue-border">代理设置</blockquote>
                        <div class="layui-tab-content">
                            <div class="layui-tab-item layui-show" id="bonus-global-setting">
                            </div>
                            <div class="layui-tab-item">
                            <div class="layui-tab-item layui-show">
                                <table id="agentBonus" lay-filter="agentBonus"></table>
                            </div>
                            <div class="layui-tab-item">
                                <table id="rankBonus" lay-filter="rankBonus"></table>
                            </div>
                            <div class="layui-tab-item">
                                <table id="indirectDistrib" lay-filter="indirectDistrib"></table>
                                <div class="layui-word-aux">间推分红即为隔代收益,将直推奖励按照对应比例依次向上级返利,直至结算到一元为止</div>
                                <div class="layui-word-aux">1:分大小区,即【业绩】为小区所有业绩之和。</div>
                                <div class="layui-word-aux">2:直推5人,即有五个区,减去其中业绩最多的一个区域后,满足【业绩要求】,即可升级下一级。</div>
                                <div class="layui-word-aux">2:【现金补贴比例】和【积分补贴比例】,采取级差制。</div>
                            </div>
                        </div>
                    </div>
@@ -32,11 +21,6 @@
                </div>
            </div>
        </form>
<!--        <div class="layui-form-item febs-hide">-->
<!--            <button class="layui-btn" lay-submit="" lay-filter="profit-setting-form-submit" id="submit-form"></button>-->
<!--            <button type="reset" class="layui-btn" id="reset"></button>-->
<!--        </div>-->
    </div>
</div>
<style>
@@ -52,23 +36,6 @@
        margin-bottom: 20px !important;
    }
</style>
<script type="text/html" id="bonusSystem">
    {{#  layui.each(d, function(index, item){ }}
    <div class="layui-form-item">
        <label class="layui-form-label">{{item.description}}:</label>
        <div class="layui-input-block">
            <input type="text" name="{{item.code}}" lay-verify="number" value="{{item.value}}" autocomplete="off" class="layui-input">
        </div>
        {{# if(item.code == 'INDRECT_BONUS') { }}
        <div class="layui-word-aux" style="margin-left: 150px;">间推分红即为隔代收益,将直推奖励按照对应比例依次向上级返利,直至结算到一元为止</div>
        {{# }}}
        {{# if(item.code == 'THANKFUL_BONUS') { }}
        <div class="layui-word-aux" style="margin-left: 150px;">将推荐人的收益(代理,直推,排名)的对应比例加权平分给下面直推</div>
        {{# }}}
    </div>
    {{# }) }}
</script>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'laytpl', 'table'], function () {
        var $ = layui.jquery,
@@ -77,12 +44,8 @@
            table = layui.table,
            validate = layui.validate,
            $view = $('#profit-setting')
            , templateHtml = bonusSystem.innerHTML
            , $bonusSystem = $("#bonus-global-setting")
            , laytpl = layui.laytpl
            , agentBonusArr
            , rankBonusArr
            , indirectBonusArr;
            , agentBonusArr;
        form.verify(validate);
        form.render();
@@ -90,11 +53,11 @@
        table.render({
            elem: '#agentBonus'
            ,cols: [[ //表头
                {field: 'description', title: '代理', edit:'text'}
                ,{field: 'prop', title: '返利比例(%)', edit:'text'}
                ,{field: 'achieve', title: '团队业绩(万元)', edit:'text'}
                ,{field: 'direct', title: '直推(个)', edit:'text'}
                ,{field: 'lastAgentCnt', title: '上一级代理(个)', edit:'text'}
                {field: 'description', title: '名称'}
                ,{field: 'teamIncome', title: '业绩要求(元)', edit:'text'}
                ,{field: 'directCnt', title: '直推(个)', edit:'text'}
                ,{field: 'cashPercent', title: '现金补贴比例(%)', edit:'text'}
                ,{field: 'scorePercent', title: '积分补贴比例(%)', edit:'text'}
                ,{field: 'type', title: '比例', edit:'text', hide:'true'}
                ,{field: 'code', title: '比例', edit:'text', hide:'true'}
            ]]
@@ -108,106 +71,30 @@
            for (let i = 0; i < agentBonusArr.length; i++) {
                if (agentBonusArr[i].code === data.code) {
                    var valueData = {};
                    valueData.teamIncome = data.achieve;
                    valueData.profitProp = data.prop;
                    valueData.directCnt = data.direct;
                    valueData.lastAgentCnt = data.lastAgentCnt;
                    valueData.teamIncome = data.teamIncome;
                    valueData.directCnt = data.directCnt;
                    valueData.cashPercent = data.cashPercent;
                    valueData.scorePercent = data.scorePercent;
                    agentBonusArr[i].value = JSON.stringify(valueData);
                }
            }
        });
        table.render({
            elem: '#rankBonus'
            ,cols: [[ //表头
                {field: 'description', title: '排名'}
                ,{field: 'value', title: '返利比例(%)', edit:'text'}
                ,{field: 'type', title: '比例', edit:'text', hide:'true'}
                ,{field: 'code', title: '比例', edit:'text', hide:'true'}
            ]]
            ,data: []
        });
        table.on('edit(rankBonus)', function(obj){
            var value = obj.value //得到修改后的值
                ,data = obj.data //得到所在行所有键值
                ,field = obj.field; //得到字段
            for (let i = 0; i < rankBonusArr.length; i++) {
                if (rankBonusArr[i].code === data.code) {
                    rankBonusArr[i].value = value;
                }
            }
        });
        table.render({
            elem: '#indirectDistrib'
            ,cols: [[ //表头
                {field: 'pushCnt', title: '直推人数', edit:'text'}
                ,{field: 'prop', title: '返利比例(%)', edit:'text'}
                ,{field: 'type', title: '比例', edit:'text', hide:'true'}
                ,{field: 'code', title: '比例', edit:'text', hide:'true'}
            ]]
            ,data: []
        });
        table.on('edit(indirectDistrib)', function(obj){
            var value = obj.value //得到修改后的值
                ,data = obj.data //得到所在行所有键值
                ,field = obj.field; //得到字段
            for (let i = 0; i < indirectBonusArr.length; i++) {
                if (indirectBonusArr[i].code === data.code) {
                    var valueData = {};
                    valueData.pushCnt = data.pushCnt;
                    valueData.prop = data.prop;
                    indirectBonusArr[i].value = JSON.stringify(valueData);
                }
            }
        });
        dicDataReq("BONUS_TYPE");
        dicDataReq("AGENT_LEVEL_REQUIRE");
        dicDataReq("RANK_AWARD");
        dicDataReq("INDIRECT_BONUS_SETTING");
        // dicDataReq("AGENT_LEVEL_REQUIRE");
        dicDataReq("AGENT_PERK_SET");
        function dicDataReq(type) {
            $bonusSystem.empty();
            $.get(ctx + 'admin/common/findDicByType/' + type, function (r) {
                if (r.code === 200) {
                    var data = r.data;
                    if ("BONUS_TYPE" == type) {
                        laytpl(templateHtml).render(data, function(html) {
                            $bonusSystem.append(html);
                        })
                    }
                    if ("AGENT_LEVEL_REQUIRE" == type) {
                    if ("AGENT_PERK_SET" == type) {
                        for (let i = 0; i < data.length; i++) {
                            data[i].prop = JSON.parse(data[i].value).profitProp;
                            data[i].achieve = JSON.parse(data[i].value).teamIncome;
                            data[i].direct = JSON.parse(data[i].value).directCnt;
                            data[i].lastAgentCnt = JSON.parse(data[i].value).lastAgentCnt;
                            data[i].teamIncome = JSON.parse(data[i].value).teamIncome;
                            data[i].directCnt = JSON.parse(data[i].value).directCnt;
                            data[i].cashPercent = JSON.parse(data[i].value).cashPercent;
                            data[i].scorePercent = JSON.parse(data[i].value).scorePercent;
                        }
                        agentBonusArr = data;
                        table.reload('agentBonus', {
                            data : data
                        });
                    }
                    if ("RANK_AWARD" == type) {
                        rankBonusArr = data;
                        table.reload('rankBonus', {
                            data : data
                        });
                    }
                    if ("INDIRECT_BONUS_SETTING" == type) {
                        for (let i = 0; i < data.length; i++) {
                            data[i].prop = JSON.parse(data[i].value).prop;
                            data[i].pushCnt = JSON.parse(data[i].value).pushCnt;
                        }
                        indirectBonusArr = data;
                        table.reload('indirectDistrib', {
                            data : data
                        });
                    }
@@ -217,8 +104,6 @@
        form.on('submit(profit-setting-form-submit)', function (data) {
            data.field.agentBonus = agentBonusArr;
            data.field.rankBonus = rankBonusArr;
            data.field.indrectDistrib = indirectBonusArr;
            $.ajax({
                'url':ctx + 'admin/system/bonusSystemSetting',
                'type':'post',