From 09eca02701d369e82b29c08b403688648c1d4bc6 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Tue, 06 Jun 2023 00:27:45 +0800
Subject: [PATCH] 矩阵修改

---
 src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java            |    6 +
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java                |   10 ++
 src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java            |   18 +-
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java   |    2 
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html |    9 +
 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java             |   20 ++++
 src/main/java/cc/mrbird/febs/mall/service/IMatrixTreeNodeService.java          |   10 ++
 src/main/java/cc/mrbird/febs/mall/service/impl/MatrixTreeNodeServiceImpl.java  |   64 ++++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java           |   32 +-----
 src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java                       |   30 +++++
 src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java                     |    5 
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java    |    6 
 src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java              |    1 
 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java               |    5 +
 src/main/resources/application-dev.yml                                         |    2 
 src/test/java/cc/mrbird/febs/TreeTest.java                                     |   40 ++++++++
 src/main/resources/templates/febs/views/modules/order/orderList.html           |   23 ----
 17 files changed, 215 insertions(+), 68 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
index e1f7784..232d796 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -185,4 +185,24 @@
         return BindingBuilder.bind(orderBonusQueue()).to(orderBonusExchange()).with(RabbitQueueEnum.ORDER_BONUS.getRoute());
     }
     //订单分红 end
+
+
+    /**
+     * 矩阵节点
+     * @return
+     */
+    @Bean
+    public DirectExchange matrixTreeExchange() {
+        return new DirectExchange(RabbitQueueEnum.MATRIX_TREE.getExchange());
+    }
+
+    @Bean
+    public Queue matrixTreeQueue() {
+        return new Queue(QueueConstants.MATRIX_TREE);
+    }
+
+    @Bean
+    public Binding matrixTreeBind() {
+        return BindingBuilder.bind(matrixTreeQueue()).to(matrixTreeExchange()).with(RabbitQueueEnum.MATRIX_TREE.getRoute());
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java
index b6729ba..8cacfac 100644
--- a/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java
+++ b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java
@@ -65,15 +65,15 @@
             log.info("                                                      ");
             log.info("国潮奢美 权限系统启动完毕,地址:{}", url);
 
-            boolean auto = febsProperties.isAutoOpenBrowser();
-            if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) {
-                String os = System.getProperty("os.name");
-                // 默认为 windows时才自动打开页面
-                if (StringUtils.containsIgnoreCase(os, FebsConstant.SYSTEM_WINDOWS)) {
-                    //使用默认浏览器打开系统登录页
-                    Runtime.getRuntime().exec("cmd  /c  start " + url);
-                }
-            }
+//            boolean auto = febsProperties.isAutoOpenBrowser();
+//            if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) {
+//                String os = System.getProperty("os.name");
+//                // 默认为 windows时才自动打开页面
+//                if (StringUtils.containsIgnoreCase(os, FebsConstant.SYSTEM_WINDOWS)) {
+//                    //使用默认浏览器打开系统登录页
+//                    Runtime.getRuntime().exec("cmd  /c  start " + url);
+//                }
+//            }
         }
     }
 }
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 3356f8f..ebcf9ff 100644
--- a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
+++ b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
@@ -40,7 +40,20 @@
             return null;
         }
 
-        MemberNode parentNode = findNotWholeNode();
+        MemberNode childTreeRoot = getNode(node.getRefererId());
+
+        MemberNode parentNode = findNotWholeNode(childTreeRoot == null ? root : childTreeRoot);
+        parentNode.addNode(node);
+        return parentNode;
+    }
+
+    public MemberNode addNode(MemberNode node, Long parentNodeId) {
+        if (parentNodeId == null) {
+            root = node;
+            return null;
+        }
+
+        MemberNode parentNode = getNode(parentNodeId);
         parentNode.addNode(node);
         return parentNode;
     }
@@ -49,7 +62,7 @@
      * 层级遍历,查到子节点未满3个的节点
      * @return
      */
-    public MemberNode findNotWholeNode() {
+    public MemberNode findNotWholeNode(MemberNode root) {
         ArrayDeque<MemberNode> deque = new ArrayDeque<>();
         deque.add(root);
 
@@ -77,6 +90,10 @@
         return result;
     }
 
+    public MemberNode findNotWholeNode() {
+        return findNotWholeNode(root);
+    }
+
     /**
      * 查找整个树下对应节点
      * @param param memberId/address/inviteId
@@ -85,6 +102,10 @@
     public MemberNode getNode(Object param) {
         if (root == null) {
             return null;
+        }
+
+        if (root.getMemberId().equals(param) || root.getPhone().equals(param) || root.getInviteId().equals(param)) {
+            return root;
         }
 
         return getNode(root.CHILD, param);
@@ -107,7 +128,10 @@
                 return node;
             }
 
-            return getNode(node.CHILD, param);
+            MemberNode childNode = getNode(node.CHILD, param);
+            if (childNode != null) {
+                return childNode;
+            }
         }
 
         return null;
diff --git a/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java b/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java
index 419b9c2..333b930 100644
--- a/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java
+++ b/src/main/java/cc/mrbird/febs/mall/init/MatrixTreeInit.java
@@ -35,8 +35,11 @@
             memberNode.setMemberId(node.getTreeNode());
             memberNode.setPhone(node.getPhone());
             memberNode.setInviteId(node.getInviteId());
-            MatrixTree.getInstance().addNode(memberNode);
+            memberNode.setRefererId(node.getReferrerId());
+            MatrixTree.getInstance().addNode(memberNode, node.getParentNode());
         }
+
+        MatrixTree instance = MatrixTree.getInstance();
     }
 
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMatrixTreeNodeService.java b/src/main/java/cc/mrbird/febs/mall/service/IMatrixTreeNodeService.java
new file mode 100644
index 0000000..390f6b6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMatrixTreeNodeService.java
@@ -0,0 +1,10 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.common.tree.MemberNode;
+import cc.mrbird.febs.mall.entity.MatrixTreeNode;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IMatrixTreeNodeService extends IService<MatrixTreeNode> {
+
+    public MemberNode addTreeNode(Long memberId);
+}
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 756a322..20e3dd8 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
@@ -49,8 +49,7 @@
     private final SqlSessionTemplate sqlSessionTemplate;
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final MallMqRecordMapper mallMqRecordMapper;
-
-    private final MatrixTreeNodeMapper matrixTreeNodeMapper;
+    private final IMatrixTreeNodeService matrixTreeNodeService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -61,30 +60,9 @@
             return;
         }
 
-        MatrixTree tree = MatrixTree.getInstance();
-        MemberNode node = tree.getNode(member.getInviteId());
-        if (node != null) {
-            return;
-        }
-
-        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 == null ? null : parentNode.getMemberId());
-        matrixTreeNodeMapper.insert(matrixTreeNode);
-
+        MemberNode parentNode = matrixTreeNodeService.addTreeNode(memberId);
         if (parentNode == null) {
+            log.info("父级节点未找到:{}", memberId);
             return;
         }
 
@@ -102,12 +80,12 @@
         }
 
         MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
+        parentMember.setChildNodeCnt(parentNode.CHILD.size());
         int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel());
         if (Integer.parseInt(dic.getValue()) >= levelCode) {
-            parentMember.setChildNodeCnt(parentNode.CHILD.size());
             parentMember.setLevel(dic.getCode());
-            memberMapper.updateById(parentMember);
         }
+        memberMapper.updateById(parentMember);
     }
 
     /**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 783f2c1..ff1222a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -15,6 +15,7 @@
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.ICommonService;
 import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
@@ -114,6 +115,7 @@
         mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
         mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode());
         mallMember.setSex(registerDto.getSex());
+        mallMember.setInsideWith(1);
         mallMember.setBindPhone(registerDto.getAccount());
         mallMember.setSkin("default");
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MatrixTreeNodeServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MatrixTreeNodeServiceImpl.java
new file mode 100644
index 0000000..48885b8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MatrixTreeNodeServiceImpl.java
@@ -0,0 +1,64 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.tree.MatrixTree;
+import cc.mrbird.febs.common.tree.MemberNode;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MatrixTreeNode;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MatrixTreeNodeMapper;
+import cc.mrbird.febs.mall.service.IMatrixTreeNodeService;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class MatrixTreeNodeServiceImpl extends ServiceImpl<MatrixTreeNodeMapper, MatrixTreeNode> implements IMatrixTreeNodeService {
+
+    private final MallMemberMapper mallMemberMapper;
+    private final MatrixTreeNodeMapper matrixTreeNodeMapper;
+
+    @Override
+    public MemberNode addTreeNode(Long memberId) {
+        MallMember mallMember = mallMemberMapper.selectById(memberId);
+        if (mallMember == null) {
+            return null;
+        }
+
+        MatrixTree instance = MatrixTree.getInstance();
+        MemberNode node = instance.getNode(memberId);
+        if (node != null) {
+            return null;
+        }
+
+        if (StrUtil.isNotBlank(mallMember.getReferrerId())) {
+            MemberNode parentNode = instance.getNode(mallMember.getReferrerId());
+
+            MemberNode notWholeNode = null;
+            if (parentNode != null) {
+                notWholeNode = instance.findNotWholeNode(parentNode);
+            } else {
+                notWholeNode = instance.findNotWholeNode();
+            }
+
+            MatrixTreeNode treeNode = new MatrixTreeNode();
+            treeNode.setTreeNode(mallMember.getId());
+            treeNode.setParentNode(notWholeNode.getMemberId());
+            matrixTreeNodeMapper.insert(treeNode);
+        } else {
+            MatrixTreeNode treeNode = new MatrixTreeNode();
+            treeNode.setTreeNode(mallMember.getId());
+            matrixTreeNodeMapper.insert(treeNode);
+        }
+
+        node = new MemberNode();
+        node.setPhone(mallMember.getPhone());
+        node.setMemberId(memberId);
+        node.setInviteId(mallMember.getInviteId());
+        node.setRefererId(mallMember.getReferrerId());
+        return instance.addNode(node);
+    }
+}
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 d087269..91d5d4c 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
@@ -116,7 +116,7 @@
             } else {
 
                 // 判断上级是否与自己购买的套餐符合,若符合则走3级直推逻辑,若不符合则另外一个
-                if (parentMember.getAccountLevel() >= item.getGoodsLevel()) {
+                if (parentMember.getAccountLevel() == 1 && item.getGoodsLevel() != 1) {
                     for (DataDictionaryCustom dataDic : dataDices) {
                         JSONObject jsonObject = JSONObject.parseObject(dataDic.getValue());
                         if (directCnt >= jsonObject.getInteger("pushCnt")) {
@@ -149,8 +149,8 @@
 
                 int index = 1;
                 for (MallMember mallMember : mallMembers) {
-                    if (!item.getGoodsLevel().equals(mallMember.getAccountLevel())) {
-                        break;
+                    if (mallMember.getAccountLevel() == 1) {
+                        continue;
                     }
 
                     if (index == 2) {
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index 2decbc2..ac8b1cc 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -11,6 +11,7 @@
     public static final String AGENT_RETURN_MONEY = "meye_queue_agent_return_money";
     public static final String ORDER_RETURN_MONEY = "meye_queue_order_return_money";
     public static final String ORDER_BONUS = "meye_queue_order_bonus";
+    public static final String MATRIX_TREE = "meye_queue_matrix_tree";
     /**
      * 补贴金额 ,
      *      分享补贴,星级补贴
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index 3f74175..eb08a01 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import cc.mrbird.febs.mall.service.IMatrixTreeNodeService;
 import cc.mrbird.febs.mall.service.IMemberProfitService;
 import cc.mrbird.febs.rabbit.constants.QueueConstants;
 import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum;
@@ -28,6 +29,9 @@
     private IAgentService agentService;
     @Autowired
     private IMemberProfitService memberProfitService;
+
+    @Autowired
+    private IMatrixTreeNodeService matrixTreeNodeService;
 
     @RabbitListener(queues = "meye_queue_order_delay")
     public void orderCancelDelay(String id) {
@@ -68,4 +72,10 @@
         }
     }
 
+    @RabbitListener(queues = QueueConstants.MATRIX_TREE)
+    public void matrixTree(Long memberId) {
+        log.info("矩阵节点消息:{}", memberId);
+        matrixTreeNodeService.addTreeNode(memberId);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index 8e3e72a..4eed134 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -34,7 +34,11 @@
 
     FORCE_VOUCHER_SALE("meye_exchange_force_voucher_sale",
             "meye_route_key_force_voucher_sale",
-            "meye_queue_force_voucher_sale");
+            "meye_queue_force_voucher_sale"),
+
+    MATRIX_TREE("meye_exchange_matrix_tree",
+                               "meye_route_key_matrix_tree",
+                               "meye_queue_matrix_tree");
 
     private String exchange;
 
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index a7552a4..91cc56a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -92,4 +92,9 @@
         log.info("发送订单分红消息:{}", orderId);
         rabbitTemplate.convertAndSend(RabbitQueueEnum.ORDER_BONUS.getExchange(), RabbitQueueEnum.ORDER_BONUS.getRoute(), orderId);
     }
+
+    public void sendMatrixTree(Long memberId) {
+        log.info("发送矩阵节点消息:{}", memberId);
+        rabbitTemplate.convertAndSend(RabbitQueueEnum.MATRIX_TREE.getExchange(), RabbitQueueEnum.MATRIX_TREE.getRoute(), memberId);
+    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 75b24f3..acc964b 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -18,7 +18,7 @@
           username: ct_test
           password: 123456
           driver-class-name: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://120.27.238.55:3406/db_meiye_prd?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&allowMultiQueries=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
+          url: jdbc:mysql://120.27.238.55:3406/db_meiye_mall?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&allowMultiQueries=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
 #          username: db_meiye
 #          password: meiye#@!321
 #          driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 058c38a..ad54201 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -71,6 +71,14 @@
     <input type="checkbox" value={{d.id}} lay-text="正常|禁用" lay-skin="switch" lay-filter="switchStatus">
     {{# } }}
 </script>
+
+<script type="text/html" id="switchInsideWith">
+    {{# if(d.insideWith === 1) { }}
+    <input type="checkbox" value={{d.id}} lay-text="正常|禁用" checked lay-skin="switch" lay-filter="switchInsideWith">
+    {{# } else { }}
+    <input type="checkbox" value={{d.id}} lay-text="正常|禁用" lay-skin="switch" lay-filter="switchInsideWith">
+    {{# } }}
+</script>
 <style>
     .layui-form-onswitch {
         background-color: #5FB878 !important;
@@ -248,6 +256,7 @@
                             }
                         }, minWidth: 100,align:'left'},
                     {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 100,align:'left'},
+                    {field: 'insideWith', title: '余额转增', templet: '#switchInsideWith', minWidth: 100,align:'left'},
                     {field: 'createdTime', title: '注册时间', minWidth: 180,align:'left'},
                     // {title: '操作',
                     //     templet: function (d) {
diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html
index 1b57287..614d757 100644
--- a/src/main/resources/templates/febs/views/modules/order/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -100,8 +100,6 @@
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button>
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button>
     {{# } else if(d.status === 7) { }}
-<!--    <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button>-->
-<!--    <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button>-->
     <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="delOrder">删除</button>
     {{# } else { }}
     <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button>
@@ -330,27 +328,6 @@
                         {field: 'payOrderNo', title: '支付订单号', minWidth: 200,align:'left'},
 
                         {title: '操作', minWidth: 200 ,toolbar: '#mall-order-option',hide:mallOrderOption,align:'left', fixed:'right'},
-                        // {title: '操作',
-                        //     templet: function (d) {
-                        //             if (d.status === 2) {
-                        //                 if(d.deliverType ===2){
-                        //                     return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="takeGoods" shiro:hasPermission="user:update">自提</button>'
-                        //                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
-                        //                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>'
-                        //                 }else{
-                        //                     return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>'
-                        //                         +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
-                        //                         +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>'
-                        //                 }
-                        //             }else if(d.status === 7){
-                        //                 return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
-                        //                     +'<button class="layui-btn layui-btn-xs layui-btn-normal layui-btn-danger" lay-event="delOrder" shiro:hasPermission="user:update">删除</button>'
-                        //                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>'
-                        //             }else{
-                        //                 return '<button class="layui-btn layui-btn-normal layui-btn-xs " lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
-                        //                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>'
-                        //             }
-                        //     },minWidth: 200,align:'center', fixed:'right'}
                 ]]
             });
         }
diff --git a/src/test/java/cc/mrbird/febs/TreeTest.java b/src/test/java/cc/mrbird/febs/TreeTest.java
index 8312aeb..455ec6d 100644
--- a/src/test/java/cc/mrbird/febs/TreeTest.java
+++ b/src/test/java/cc/mrbird/febs/TreeTest.java
@@ -2,9 +2,20 @@
 
 import cc.mrbird.febs.common.tree.MatrixTree;
 import cc.mrbird.febs.common.tree.MemberNode;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.service.IAgentService;
+import cc.mrbird.febs.mall.service.IMatrixTreeNodeService;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -27,4 +38,33 @@
 
         System.out.println(111);
     }
+
+    @Autowired
+    private MallMemberMapper mallMemberMapper;
+
+    @Autowired
+    private IMatrixTreeNodeService matrixTreeNodeService;
+
+    @Autowired
+    private MallOrderInfoMapper mallOrderInfoMapper;
+
+    @Autowired
+    private IAgentService agentService;
+
+    @Test
+    public void initMemberTreeTest() {
+        LambdaQueryWrapper<MallOrderInfo> orderQuery = new LambdaQueryWrapper<>();
+        orderQuery.eq(MallOrderInfo::getStatus, 2)
+                .eq(MallOrderInfo::getOrderType, 1)
+                .orderByAsc(MallOrderInfo::getId);
+        List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectList(orderQuery);
+
+        for (MallOrderInfo mallOrderInfo : mallOrderInfos) {
+            agentService.autoUpAgentLevel(mallOrderInfo.getMemberId());
+        }
+
+        MatrixTree instance = MatrixTree.getInstance();
+        System.out.println(111);
+    }
+
 }

--
Gitblit v1.9.1