From a8a40896108ac780a55ecc504cecdfd041ab2838 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Wed, 19 Apr 2023 00:25:50 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java      |    4 
 src/main/java/cc/mrbird/febs/mall/entity/MatrixTreeNode.java                |   29 ++
 src/main/resources/templates/febs/views/modules/system/bonusSetting.html    |  140 ++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java                  |    4 
 src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java        |   29 ++
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                    |    5 
 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html      |   62 +++--
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java        |   76 +++---
 src/main/resources/mapper/modules/MatrixTreeNodeMapper.xml                  |   14 +
 src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java                    |    2 
 src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java                  |   43 +++
 src/main/java/cc/mrbird/febs/mall/mapper/MatrixTreeNodeMapper.java          |   14 +
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java |    8 
 src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java                     |   94 --------
 src/main/java/cc/mrbird/febs/common/tree/MemberNode.java                    |    6 
 src/test/java/cc/mrbird/febs/TreeTest.java                                  |    2 
 src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html   |   66 +++--
 src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java               |    4 
 18 files changed, 413 insertions(+), 189 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java
new file mode 100644
index 0000000..1354b76
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum MemberLevelEnums {
+
+    ZERO_LEVEL_Y(1, "ZERO_LEVEL", "素人")
+    ,ZERO_LEVEL_N(2, "ZERO_LEVEL", "素人")
+    ,FIRST_LEVEL_Y(1, "FIRST_LEVEL", "玉郎")
+    ,FIRST_LEVEL_N(2, "FIRST_LEVEL", "丽人")
+    ,SECOND_LEVEL_Y(1, "SECOND_LEVEL", "才子")
+    ,SECOND_LEVEL_N(2, "SECOND_LEVEL", "佳人")
+    ,THIRD_LEVEL_Y(1, "THIRD_LEVEL", "蓝颜")
+    ,THIRD_LEVEL_N(2, "THIRD_LEVEL", "红颜")
+    ,FOUR_LEVEL_Y(1, "FOUR_LEVEL", "娇娘")
+    ,FOUR_LEVEL_N(2, "FOUR_LEVEL", "贤仕");
+
+    private int male;
+
+    private String code;
+
+    private String desc;
+    MemberLevelEnums(int male, String code, String desc) {
+        this.male = male;
+        this.code = code;
+        this.desc = desc;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
index 7d7d263..3356f8f 100644
--- a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
+++ b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
@@ -103,7 +103,7 @@
         }
 
         for (MemberNode node : nodeList) {
-            if (node.getMemberId().equals(param) || node.getAddress().equals(param) || node.getInviteId().equals(param)) {
+            if (node.getMemberId().equals(param) || node.getPhone().equals(param) || node.getInviteId().equals(param)) {
                 return node;
             }
 
diff --git a/src/main/java/cc/mrbird/febs/common/tree/MemberNode.java b/src/main/java/cc/mrbird/febs/common/tree/MemberNode.java
index c60e421..ef9e6d2 100644
--- a/src/main/java/cc/mrbird/febs/common/tree/MemberNode.java
+++ b/src/main/java/cc/mrbird/febs/common/tree/MemberNode.java
@@ -14,7 +14,7 @@
 
     private Long memberId;
 
-    private String address;
+    private String phone;
 
     private String inviteId;
 
@@ -22,9 +22,9 @@
 
     public List<MemberNode> CHILD = new LinkedList<>();
 
-    public MemberNode(Long memberId, String address, String inviteId, String refererId) {
+    public MemberNode(Long memberId, String phone, String inviteId, String refererId) {
         this.memberId = memberId;
-        this.address = address;
+        this.phone = phone;
         this.inviteId = inviteId;
         this.refererId = refererId;
     }
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 fa0d6bb..a76379b 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -46,6 +46,10 @@
     public String profitSetting() {
         return FebsUtil.view("modules/system/profitSetting");
     }
+    @GetMapping("bonusSetting")
+    public String bonusSetting() {
+        return FebsUtil.view("modules/system/bonusSetting");
+    }
 
     /**
      * 积分设置
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
index 99ebfc9..927d820 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddMallGoodsDto.java
@@ -92,4 +92,8 @@
      */
     private Integer scorePercent;
 
+    private Integer goodsLevel;
+
+    private Integer normalPer;
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
index 2033730..da1870a 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallGoodsUpdateDto.java
@@ -95,4 +95,8 @@
      * 积分兑换比例
      */
     private Integer scorePercent;
+
+    private Integer goodsLevel;
+
+    private Integer normalPer;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index 969cb07..e6e2041 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -167,4 +167,9 @@
      * 账号级别 1-会员 2-代理 3-股东
      */
     private Integer accountLevel;
+
+    /**
+     * 伞下数量
+     */
+    private Integer childNodeCnt;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MatrixTreeNode.java b/src/main/java/cc/mrbird/febs/mall/entity/MatrixTreeNode.java
new file mode 100644
index 0000000..77d040c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MatrixTreeNode.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName(value = "matrix_tree_node")
+public class MatrixTreeNode extends BaseEntity {
+
+    private Long treeNode;
+
+    private Long parentNode;
+
+    private Integer deep;
+
+    @TableField(exist = false)
+    private String phone;
+
+    @TableField(exist = false)
+    private String name;
+
+    @TableField(exist = false)
+    private String inviteId;
+
+    @TableField(exist = false)
+    private String referrerId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java b/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java
new file mode 100644
index 0000000..419b9c2
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java
@@ -0,0 +1,43 @@
+package cc.mrbird.febs.mall.init;
+
+import cc.mrbird.febs.common.tree.MatrixTree;
+import cc.mrbird.febs.common.tree.MemberNode;
+import cc.mrbird.febs.mall.entity.MatrixTreeNode;
+import cc.mrbird.febs.mall.mapper.MatrixTreeNodeMapper;
+import cn.hutool.core.collection.CollUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+
+/**
+ * 初始化
+ */
+@Slf4j
+@Component
+public class MatrixTreeInit {
+
+    @Autowired
+    private MatrixTreeNodeMapper matrixTreeNodeMapper;
+
+    @PostConstruct
+    public void init() {
+        List<MatrixTreeNode> tree = matrixTreeNodeMapper.selectAllMatrixTreeNode();
+
+        if (CollUtil.isEmpty(tree)) {
+            return;
+        }
+
+        for (MatrixTreeNode node : tree) {
+            MemberNode memberNode = new MemberNode();
+            memberNode.setMemberId(node.getTreeNode());
+            memberNode.setPhone(node.getPhone());
+            memberNode.setInviteId(node.getInviteId());
+            MatrixTree.getInstance().addNode(memberNode);
+        }
+    }
+
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MatrixTreeNodeMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MatrixTreeNodeMapper.java
new file mode 100644
index 0000000..0fc298c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MatrixTreeNodeMapper.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MatrixTreeNode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MatrixTreeNodeMapper extends BaseMapper<MatrixTreeNode> {
+
+    List<MatrixTreeNode> selectAllMatrixTreeNode();
+
+    MatrixTreeNode selectByTreeNode(@Param("treeNode") Long treeNode);
+}
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 c000908..f77deb7 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -40,97 +40,9 @@
     /**
      * 代理分红
      */
-//    @Scheduled(cron = "0 30 0 * * ?")
-//    public void profitJob() {
-//        memberProfitService.agentProfit(null);
-//    }
-
-//    @Scheduled(cron = "0 30 1 * * ?")
-//    public void storeAndDirectorJob() {
-//        memberProfitService.storeAndDirectorProfit(null);
-//    }
-
-//    /**
-//     * 线下服务中心补贴
-//     */
-//    @Scheduled(cron = "0 0 1 * * ?")
-//    public void thankfulJob() {
-//        memberProfitService.thankfulProfit(null);
-//    }
-
-    /**
-     * 代理商补贴 TODO 需要去掉注释
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void agentPerkJob() {
-        memberProfitService.agentPerkJob(null);
+    @Scheduled(cron = "0 30 0 * * ?")
+    public void profitJob() {
+        memberProfitService.agentProfit(null);
     }
 
-    /**
-     * 线下服务中心补贴
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void offLinePerkJob() {
-        memberProfitService.offLinePerkJob(null);
-    }
-
-    /**
-     * 平级奖励补贴
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void teamEqualsPerkJob() {
-        memberProfitService.teamEqualsPerkJob(null);
-    }
-
-    /**
-     * 补贴消息--重试
-     *  一个小时运行一次
-     */
-    @Scheduled(cron = "0 0/5 * * * ?")
-    public void mqPerkRetryJob() {
-        memberProfitService.mqPerkRetryJob();
-    }
-    /**
-     * 联创、合伙人的每日绿色凭证释放
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void scoreRecordReleaseJob() {
-        memberProfitService.scoreRecordReleaseJob();
-    }
-
-    /**
-     * 业绩产生凭证
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void achieveReleaseJob() {
-        memberProfitService.achieveReleaseJob();
-    }
-
-
-
-
-    /**
-     * 静态分红
-     */
-//    @Scheduled(cron = "0 0 0 * * ?")
-//    public void staticProfitJob() {
-//        memberProfitService.staticProfit(null);
-//    }
-
-    /**
-     * 排名奖 每月1号
-     */
-//    @Scheduled(cron = "0 30 0 1 * ?")
-//    public void rankJob() {
-//        memberProfitService.rankProfit();
-//    }
-
-    /**
-     * 积分池,所有消费拿出10%放到积分池,然后按1%每天释放加权平分
-     */
-//    @Scheduled(cron = "0 0 2 * * ?")
-//    @Scheduled(cron = "0 0/5 * * * ? ")
-//    public void scorePool() {
-//        memberProfitService.scorePool();
-//    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index b61b090..c4938c0 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -1,6 +1,9 @@
 package cc.mrbird.febs.mall.service.impl;
 
 import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.tree.MatrixTree;
+import cc.mrbird.febs.common.tree.MemberNode;
+import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -41,54 +44,59 @@
     private final MallMemberMapper memberMapper;
     private final MallOrderInfoMapper mallOrderInfoMapper;
 
-    private final IApiMallMemberWalletService iApiMallMemberWalletService;
     private final IMallMoneyFlowService mallMoneyFlowService;
     private final MallMemberWalletMapper mallMemberWalletMapper;
     private final SqlSessionTemplate sqlSessionTemplate;
-    private final IApiMallMemberWalletService memberWalletService;
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final MallMqRecordMapper mallMqRecordMapper;
+
+    private final MatrixTreeNodeMapper matrixTreeNodeMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void autoUpAgentLevel(Long memberId) {
+        log.info("###代理自动升级###");
         MallMember member = memberMapper.selectById(memberId);
-        if(StrUtil.isBlank(member.getReferrerIds())) {
+
+        MatrixTree tree = MatrixTree.getInstance();
+        MemberNode node = tree.getNode(member.getInviteId());
+        if (node != null) {
             return;
         }
 
-        List<String> ids = StrUtil.split(member.getReferrerIds(), ',');
-        List<MallMember> parentMembers = memberMapper.selectByInviteIds(ids);
-        for (MallMember parent : parentMembers) {
-            // 没有购买套餐无法升级合伙人等级
-            if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
-                continue;
-            }
-            //合伙人的下一个层级
-            String parentLevel = parent.getLevel();
-            String nextLevel = MemberLevelEnum.SECOND_LEVEL.getNextLevel(parentLevel);
-            if (parentLevel.equals(nextLevel)) {
-                log.info("当前层级无下一级:{}", parent.getLevel());
-                continue;
-            }
-
-            DataDictionaryCustom nextLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("AGENT_LEVEL_REQUIRE", nextLevel);
-            AgentInfo agentInfo = JSONObject.parseObject(nextLevelDic.getValue(), AgentInfo.class);
-            if (!directMemberCnt(parent, agentInfo)) {
-                continue;
-            }
-
-            if (!agentCntFinish(parent, agentInfo)) {
-                continue;
-            }
-
-            if (!teamIncome(parent, agentInfo)) {
-                continue;
-            }
-
-            parent.setLevel(nextLevel);
-            memberMapper.updateById(parent);
+        MatrixTreeNode matrixTreeNode = matrixTreeNodeMapper.selectByTreeNode(memberId);
+        if (matrixTreeNode != null) {
+            return;
         }
+
+        node = new MemberNode();
+        node.setInviteId(member.getInviteId());
+        node.setPhone(member.getPhone());
+        node.setRefererId(member.getReferrerId());
+        node.setMemberId(member.getId());
+        MemberNode parentNode = tree.addNode(node);
+
+        matrixTreeNode = new MatrixTreeNode();
+        matrixTreeNode.setTreeNode(memberId);
+        matrixTreeNode.setParentNode(parentNode.getMemberId());
+        matrixTreeNodeMapper.insert(matrixTreeNode);
+
+        List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL);
+        DataDictionaryCustom dic = null;
+        for (DataDictionaryCustom dataDictionaryCustom : dicList) {
+            if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) {
+                dic = dataDictionaryCustom;
+            }
+        }
+
+        if (dic == null) {
+            return;
+        }
+
+        MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
+        parentMember.setChildNodeCnt(parentNode.CHILD.size());
+        parentMember.setLevel(dic.getCode());
+        memberMapper.updateById(parentMember);
     }
 
     /**
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 2bfdc85..df1062a 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
@@ -382,13 +382,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void agentProfit(Date profitDate) {
         log.info("#####==代理分红==start==#####");
-        if (profitDate == null) {
-            profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
-        }
-        // 套餐业绩
-//        BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2);
-        // 普通商品业绩
-//        BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1);
+
         BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate);
 
         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS.getType(), DataDictionaryEnum.AGENT_BONUS.getCode());
diff --git a/src/main/resources/mapper/modules/MatrixTreeNodeMapper.xml b/src/main/resources/mapper/modules/MatrixTreeNodeMapper.xml
new file mode 100644
index 0000000..d2f5c33
--- /dev/null
+++ b/src/main/resources/mapper/modules/MatrixTreeNodeMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MatrixTreeNodeMapper">
+
+    <select id="selectAllMatrixTreeNode" resultType="cc.mrbird.febs.mall.entity.MatrixTreeNode">
+        select a.*, b.phone, b.name, b.invite_id, b.referrer_id from matrix_tree_node a
+          inner join mall_member b on a.tree_node=b.id
+        order by a.id
+    </select>
+
+    <select id="selectByTreeNode" resultType="cc.mrbird.febs.mall.entity.MatrixTreeNode">
+        select * from matrix_tree_node where tree_node=#{treeNode}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
index cce45f6..9d45d25 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
@@ -75,13 +75,13 @@
                                                     <div class="layui-form-mid layui-word-aux">设置商品排序位置,想排列在前,设置的数字越小</div>
                                                 </div>
                                             </div>
-                                            <div class="layui-col-lg6">
-                                                <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label>
-                                                <div class="layui-input-block">
-                                                    <input type="text" name="scorePercent"  lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input">
-                                                    <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div>
-                                                </div>
-                                            </div>
+<!--                                            <div class="layui-col-lg6">-->
+<!--                                                <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label>-->
+<!--                                                <div class="layui-input-block">-->
+<!--                                                    <input type="text" name="scorePercent"  lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input">-->
+<!--                                                    <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div>-->
+<!--                                                </div>-->
+<!--                                            </div>-->
                                         </div>
 
                                         <div class="layui-form-item">
@@ -104,29 +104,33 @@
                                             </div>
                                         </div>
 
-                                        <div class="layui-form-item febs-hide tc-set">
-                                            <label class="layui-form-label">贡献值:</label>
+                                        <div class="layui-form-item tc-set">
+                                            <label class="layui-form-label febs-form-item-require">商品类型</label>
                                             <div class="layui-input-block">
-                                                <input type="text" name="star" placeholder="请输入贡献值" autocomplete="off" class="layui-input">
-                                                <div class="layui-form-mid layui-word-aux">支付后,用户获取对应的贡献值</div>
+                                                <select name="goodsLevel" class="goods-level" lay-filter="goods-level-select">
+                                                    <option value="1">会员套餐</option>
+                                                    <option value="2">代理套餐</option>
+                                                    <option value="2">股东套餐</option>
+                                                </select>
                                             </div>
                                         </div>
 
-<!--                                        <div class="layui-form-item febs-hide tc-set">-->
-<!--                                            <label class="layui-form-label">静态倍数</label>-->
-<!--                                            <div class="layui-input-block">-->
-<!--                                                <input type="text" name="staticMulti" placeholder="请输入静态倍数" autocomplete="off" class="layui-input">-->
-<!--                                                <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分</div>-->
-<!--                                            </div>-->
-<!--                                        </div>-->
+                                        <div class="layui-form-item febs-hide tc-set">
+                                            <label class="layui-form-label">静态倍数</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="staticMulti" placeholder="请输入静态倍数" autocomplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分</div>
+                                            </div>
+                                        </div>
 
-<!--                                        <div class="layui-form-item febs-hide tc-set">-->
-<!--                                            <label class="layui-form-label">静态占比(%)</label>-->
-<!--                                            <div class="layui-input-block">-->
-<!--                                                <input type="text" name="staticProp" placeholder="请输入静态占比" autocomplete="off" class="layui-input">-->
-<!--                                                <div class="layui-form-mid layui-word-aux">所有套餐静态占比相加应等于100%</div>-->
-<!--                                            </div>-->
-<!--                                        </div>-->
+                                        <div class="layui-form-item normal-set">
+                                            <label class="layui-form-label febs-form-item-require">直推比例(%)</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="normalPer" placeholder="请输入直推比例"
+                                                       autoComplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div>
+                                            </div>
+                                        </div>
                                     </div>
 
                                     <div class="layui-tab-item">
@@ -661,6 +665,14 @@
                     $(this).hide();
                 }
             })
+
+            $('.normal-set').each(function () {
+                if (data.value == 2) {
+                    $(this).hide();
+                } else {
+                    $(this).show();
+                }
+            })
         });
     });
 </script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
index a19d98e..008ed59 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
@@ -83,13 +83,13 @@
                                                     <div class="layui-form-mid layui-word-aux">设置商品排序位置,想排列在前,设置的数字越小</div>
                                                 </div>
                                             </div>
-                                            <div class="layui-col-lg6">
-                                                <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label>
-                                                <div class="layui-input-block">
-                                                    <input type="text" name="scorePercent"  lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input">
-                                                    <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div>
-                                                </div>
-                                            </div>
+<!--                                            <div class="layui-col-lg6">-->
+<!--                                                <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label>-->
+<!--                                                <div class="layui-input-block">-->
+<!--                                                    <input type="text" name="scorePercent"  lay-verify="required|integer" placeholder="" autocomplete="off" class="layui-input">-->
+<!--                                                    <div class="layui-word-aux">设置50,即商品价格1000,积分可抵扣的最大金额为1000*50%=500,填写整数,如【50】</div>-->
+<!--                                                </div>-->
+<!--                                            </div>-->
                                         </div>
 
                                         <div class="layui-form-item">
@@ -115,30 +115,32 @@
                                         </div>
 
                                         <div class="layui-form-item febs-hide tc-set">
-                                            <label class="layui-form-label">贡献值:</label>
+                                            <label class="layui-form-label febs-form-item-require">套餐类型</label>
                                             <div class="layui-input-block">
-                                                <input type="text" name="star" lay-verify="required"  placeholder="请输入贡献值" autocomplete="off" class="layui-input">
-                                                <div class="layui-form-mid layui-word-aux">支付后,用户获取对应的贡献值</div>
+                                                <select name="goodsLevel" class="goods-level">
+                                                    <option value="1">会员套餐</option>
+                                                    <option value="2">代理套餐</option>
+                                                    <option value="2">股东套餐</option>
+                                                </select>
                                             </div>
                                         </div>
-<!--                                        <div class="layui-form-item febs-hide tc-set">-->
-<!--                                            <label class="layui-form-label">静态倍数</label>-->
-<!--                                            <div class="layui-input-block">-->
-<!--                                                <input type="text" name="staticMulti" placeholder="请输入静态倍数"-->
-<!--                                                       autoComplete="off" class="layui-input">-->
-<!--                                                <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分-->
-<!--                                                </div>-->
-<!--                                            </div>-->
-<!--                                        </div>-->
 
-<!--                                        <div class="layui-form-item febs-hide tc-set">-->
-<!--                                            <label class="layui-form-label">静态占比(%)</label>-->
-<!--                                            <div class="layui-input-block">-->
-<!--                                                <input type="text" name="staticProp" placeholder="请输入静态占比"-->
-<!--                                                       autoComplete="off" class="layui-input">-->
-<!--                                                <div class="layui-form-mid layui-word-aux">所有套餐静态占比相加应等于100%</div>-->
-<!--                                            </div>-->
-<!--                                        </div>-->
+                                        <div class="layui-form-item febs-hide tc-set">
+                                            <label class="layui-form-label febs-form-item-require">静态倍数</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="staticMulti" placeholder="请输入静态倍数" autocomplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">支付后,赠送(购买金额*静态倍数)的赠送积分</div>
+                                            </div>
+                                        </div>
+
+                                        <div class="layui-form-item normal-set">
+                                            <label class="layui-form-label febs-form-item-require">直推比例(%)</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="normalPer" placeholder="请输入直推比例"
+                                                       autoComplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div>
+                                            </div>
+                                        </div>
                                     </div>
 
                                     <div class="layui-tab-item">
@@ -688,6 +690,7 @@
                 "star": goodsInfo.star,
                 "sortCnt": goodsInfo.sortCnt,
                 "scorePercent": goodsInfo.scorePercent,
+                "goodsLevel": goodsInfo.goodsLevel,
                 "thumbs": thumbs
             });
 
@@ -697,6 +700,7 @@
 
             if (goodsInfo.isNormal == 2) {
                 $(".tc-set").show();
+                $(".normal-set").hide();
             }
 
             if (goodsInfo.hasCarriage == 1) {
@@ -778,6 +782,14 @@
                     $(this).hide();
                 }
             })
+
+            $('.normal-set').each(function () {
+                if (data.value == 2) {
+                    $(this).hide();
+                } else {
+                    $(this).show();
+                }
+            })
         });
 
     });
diff --git a/src/main/resources/templates/febs/views/modules/system/bonusSetting.html b/src/main/resources/templates/febs/views/modules/system/bonusSetting.html
new file mode 100644
index 0000000..9fe455b
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/bonusSetting.html
@@ -0,0 +1,140 @@
+<div class="layui-fluid layui-anim febs-anim" id="bonus-setting" lay-title="系统返利设置">
+    <div class="layui-row layui-col-space8 febs-container">
+        <form class="layui-form" action="" lay-filter="bonus-setting-form">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <blockquote class="layui-elem-quote blue-border">直推设置</blockquote>
+                    <div class="layui-tab-item layui-show">
+                        <table id="agentBonus" lay-filter="agentBonus"></table>
+                    </div>
+                </div>
+
+                <div class="layui-card-body">
+                    <blockquote class="layui-elem-quote blue-border">全网分红设置</blockquote>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label  febs-form-item-require">全网分红比例(%):</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="AGENT_BONUS" lay-verify="required|integer" autocomplete="off" class="layui-input" >
+                        </div>
+                        <div class="layui-word-aux" style="margin-left: 150px;">设置为0则不分红</div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label  febs-form-item-require">每天分红释放比例:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="allCashOut" lay-verify="required|integer" autocomplete="off" class="layui-input" >
+                        </div>
+                        <div class="layui-word-aux" style="margin-left: 150px;">每天从分红池中释放分红的比例,设置为0则不释放</div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label  febs-form-item-require">代理全网分红比例:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="allCashOut" lay-verify="required|integer" autocomplete="off" class="layui-input" >
+                        </div>
+                        <div class="layui-word-aux" style="margin-left: 150px;"></div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label  febs-form-item-require">股东全网分红比例:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="allCashOut" lay-verify="required|integer" autocomplete="off" class="layui-input" >
+                        </div>
+                        <div class="layui-word-aux" style="margin-left: 150px;"></div>
+                    </div>
+                </div>
+                <div class="layui-card-footer">
+                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="bonus-setting-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', 'laytpl', 'table'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            validate = layui.validate,
+            $view = $('#bonus-setting')
+            , laytpl = layui.laytpl
+            , agentBonusArr;
+
+        form.verify(validate);
+        form.render();
+
+        table.render({
+            elem: '#agentBonus'
+            ,cols: [[ //表头
+                {field: 'pushCnt', title: '直推(个)', edit:'text'}
+                ,{field: 'prop', title: '比例', edit:'text'}
+            ]]
+            ,data: []
+        });
+        table.on('edit(agentBonus)', function(obj){
+            var value = obj.value //得到修改后的值
+                ,data = obj.data //得到所在行所有键值
+                ,field = obj.field; //得到字段
+
+            for (let i = 0; i < agentBonusArr.length; i++) {
+                if (agentBonusArr[i].code === data.code) {
+                    var valueData = {};
+                    valueData.pushCnt = data.pushCnt;
+                    valueData.prop = data.prop;
+                    agentBonusArr[i].value = JSON.stringify(valueData);
+                }
+            }
+        });
+
+        dicDataReq("DIRECT_BONUS_SETTING");
+        function dicDataReq(type) {
+            $.get(ctx + 'admin/common/findDicByType/' + type, function (r) {
+                if (r.code === 200) {
+                    var data = r.data;
+                    if ("DIRECT_BONUS_SETTING" == type) {
+                        for (let i = 0; i < data.length; i++) {
+                            data[i].pushCnt = JSON.parse(data[i].value).pushCnt;
+                            data[i].prop = JSON.parse(data[i].value).prop;
+                        }
+                        agentBonusArr = data;
+                        table.reload('agentBonus', {
+                            data : data
+                        });
+                    }
+                }
+            });
+        }
+
+        form.on('submit(bonus-setting-form-submit)', function (data) {
+            data.field.agentBonus = agentBonusArr;
+            $.ajax({
+                'url':ctx + 'admin/system/bonusSystemSetting',
+                'type':'post',
+                'dataType':'json',
+                'headers' : {'Content-Type' : 'application/json;charset=utf-8'},
+                'traditional': true,
+                'data':JSON.stringify(data.field),
+                'success':function (data) {
+                    if (data.code == 200) {
+                        febs.alert.success(data.message);
+                    }
+                },
+                'error':function () {
+                    febs.alert.warn('服务器繁忙');
+                }
+            })
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java
index 28f5322..8312aeb 100644
--- a/src/test/java/cc/mrbird/febs/TreeTest.java
+++ b/src/test/java/cc/mrbird/febs/TreeTest.java
@@ -21,7 +21,7 @@
             MemberNode node = new MemberNode();
             node.setMemberId((long) i);
             node.setInviteId(String.valueOf(i));
-            node.setAddress(String.valueOf(i));
+            node.setPhone(String.valueOf(i));
             instance.addNode(node);
         }
 

--
Gitblit v1.9.1