From c2a08e408b08e21a7595eaeaaf8483c5df030d24 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sun, 26 Sep 2021 16:47:06 +0800
Subject: [PATCH] add agent auto level up

---
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java            |    2 
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java              |    9 +
 src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java                      |    4 
 src/test/java/cc/mrbird/febs/AgentTest.java                                  |   52 ++++++++++
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java               |    6 +
 src/main/resources/mapper/modules/MallMemberMapper.xml                       |   19 +++
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                    |   14 ++
 src/main/java/cc/mrbird/febs/mall/service/IAgentService.java                 |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |    8 +
 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java           |    9 +
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java         |   95 ++++++++++++++++++
 src/main/java/cc/mrbird/febs/common/utils/AppContants.java                   |    3 
 src/main/java/cc/mrbird/febs/mall/mapper/DataDictionaryCustomMapper.java     |    4 
 src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java            |    1 
 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java             |   11 ++
 src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml             |   14 ++
 src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java           |   26 +++++
 17 files changed, 274 insertions(+), 7 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 cdca235..b44e323 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -81,5 +81,14 @@
         return BindingBuilder.bind(orderDelayQueueTtl()).to(delayTtlExchange()).with(RabbitQueueEnum.ORDER_CANCEL_DELAY_TTL.getRoute());
     }
 
+    @Bean
+    public Queue autoLevelUpAgentQueue() {
+        return new Queue(QueueConstants.AGENT_AUTO_LEVEL_UP);
+    }
+
+    @Bean
+    public Binding autoLevelUpBind() {
+        return BindingBuilder.bind(autoLevelUpAgentQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT);
+    }
 
 }
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java
new file mode 100644
index 0000000..64ace66
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ * @author wzy
+ * @date 2021-09-26
+ **/
+@Getter
+public enum AgentLevelEnum {
+
+    FIRST_LEVEL("普通会员"),
+    SECOND_LEVEL("业务经理"),
+    THIRD_LEVEL("区域代理"),
+    FOUR_LEVEL("代理"),
+    FIFTH_LEVEL("总代"),
+    SIX_LEVEL("董事"),
+    SEVEN_LEVEL("股东");
+
+
+    private String name;
+
+    AgentLevelEnum(String name) {
+        this.name = name;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index c2b96b7..79d69c3 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -65,4 +65,7 @@
     public static final String REDIS_ORDER_OVERTIME_PREFIX = "order_overtime_";
     public static final String REDIS_ORDER_OVERTIME = "order_overtime_{}_{}";
 
+    public static final String AGENT_LEVEL = "AGENT_LEVEL";
+    public static final String AGENT_LEVEL_REQUIRE = "AGENT_LEVEL_REQUIRE";
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
index 86b661e..2b6aeb0 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
@@ -15,6 +15,8 @@
      * 下单数量要求 1-直推 2-团队
      */
     private Integer orderType;
+    public static final Integer ORDER_TYPE_DIRECT = 1;
+    public static final Integer ORDER_TYPE_TEAM = 2;
 
     /**
      * 下单数量
@@ -39,6 +41,6 @@
     /**
      * 团队收益 1-指定金额 2-比例
      */
-    private BigDecimal teamIncomeType;
+    private Integer teamIncomeType;
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/DataDictionaryCustomMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/DataDictionaryCustomMapper.java
index 602eb3a..80c1e6b 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/DataDictionaryCustomMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/DataDictionaryCustomMapper.java
@@ -18,4 +18,8 @@
     IPage<AdminPayMethodVo> getPayMethodListInPage(Page<AdminPayMethodVo> page, @Param("record")PayMethodDto payMethodDto);
 
     AdminMallPayMethodEditVo getMallPayMethodEditInfoById(@Param("id")long id);
+
+    DataDictionaryCustom selectNextAgentLevelInfo(@Param("level") String agentLevel);
+
+    DataDictionaryCustom selectDicDataByTypeAndCode(String type, String code);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index ad0f53a..4650b3b 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -34,4 +34,10 @@
     Integer selectOwnCntByInviteId(@Param("inviteId") String inviteId);
 
     Integer selectOwnOrderCntByInviteId(@Param("inviteId") String inviteId);
+
+    List<MallMember> selectByRefererId(@Param("inviteId") String inviteId);
+
+    List<MallMember> selectChildAgentList(@Param("inviteId") String inviteId, @Param("agentLevel") String agentLevel);
+
+    List<MallMember> selectByInviteIds(@Param("list") List<String> inviteIds);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index e7f2769..ed0386e 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -38,4 +38,6 @@
     List<MallOrderItem> getMallOrderItemByOrderId(@Param("id")long id);
 
     List<MallOrderInfo> selectOrderInfoByStatus(@Param("status") Integer status);
+
+    Integer selectCntDirectOrTeam(@Param("type") Integer type, @Param("inviteId") String inviteId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
index 10c5976..de87f80 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -2,7 +2,7 @@
 
 public interface IAgentService {
 
-    void autoUpAgentLevel();
+    void autoUpAgentLevel(Long memberId);
 
-    void returnMoneyToAgent();
+    void returnMoneyToAgent(Long orderId);
 }
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 4142ac7..cfc8201 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,9 +1,21 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.mall.entity.AgentInfo;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.service.IAgentService;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import jdk.nashorn.internal.ir.IfNode;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -14,13 +26,90 @@
 @RequiredArgsConstructor
 public class AgentServiceImpl implements IAgentService {
 
-    @Override
-    public void autoUpAgentLevel() {
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+    private final MallMemberMapper memberMapper;
+    private final MallOrderInfoMapper orderInfoMapper;
 
+    @Override
+    public void autoUpAgentLevel(Long memberId) {
+        MallMember member = memberMapper.selectById(memberId);
+        if(StrUtil.isBlank(member.getReferrerIds())) {
+            return;
+        }
+
+        List<String> ids = StrUtil.split(member.getReferrerIds(), ',');
+        List<MallMember> parentMembers = memberMapper.selectByInviteIds(ids);
+        for (MallMember parent : parentMembers) {
+            DataDictionaryCustom nextLevel = dataDictionaryCustomMapper.selectNextAgentLevelInfo(parent.getLevel());
+            if (nextLevel == null) {
+                log.info("当前层级无下一级:{}", parent.getLevel());
+                return;
+            }
+
+            AgentInfo agentInfo = JSONObject.parseObject(nextLevel.getValue(), AgentInfo.class);
+            if (!orderCntFinish(parent, agentInfo)) {
+                return;
+            }
+
+            if (!agentCntFinish(parent, agentInfo)) {
+                return;
+            }
+
+            parent.setLevel(nextLevel.getCode());
+            memberMapper.updateById(parent);
+        }
+    }
+
+    /**
+     * 判断用户直推下单数量或团队下单数量是否达标
+     *
+     * @return
+     */
+    private boolean orderCntFinish(MallMember member, AgentInfo agentInfo) {
+        Integer cnt = orderInfoMapper.selectCntDirectOrTeam(agentInfo.getOrderType(), member.getInviteId());
+
+        if (cnt >= agentInfo.getOrderCnt()) {
+            return true;
+        }
+        log.info("用户{}订单未达标, 当前数量为:{},要求数量:{}, 当前等级为:{}", member.getAccount(), cnt, agentInfo.getOrderCnt(), member.getLevel());
+        return false;
+    }
+
+    /**
+     * 判断下级代理数量是否达标
+     *
+     * @return
+     */
+    private boolean agentCntFinish(MallMember member, AgentInfo agentInfo) {
+        if (agentInfo.getLastCnt() == null) {
+            return true;
+        }
+
+        // 直推用户
+        List<MallMember> directMember = memberMapper.selectByRefererId(member.getInviteId());
+        if (CollUtil.isEmpty(directMember)) {
+            return false;
+        }
+
+        // 用户团队达到指定代理数量,且都不在同一条线
+        int i = 0;
+        for (MallMember child : directMember) {
+            List<MallMember> mallMembers = memberMapper.selectChildAgentList(child.getInviteId(), member.getLevel());
+            if (CollUtil.isNotEmpty(mallMembers)) {
+                i++;
+            }
+        }
+
+        if (i >= agentInfo.getLastCnt()) {
+            return true;
+        }
+
+        log.info("用户:{}代理数量未达标, 当前等级:{}, 当前数量:{}, 目标数量:{}", member.getAccount(), member.getLevel(), i, agentInfo.getLastCnt());
+        return false;
     }
 
     @Override
-    public void returnMoneyToAgent() {
+    public void returnMoneyToAgent(Long orderId) {
 
     }
 }
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 10d2594..3799ce2 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
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.service.impl;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.*;
@@ -53,6 +54,7 @@
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final IApiMallMemberWalletService walletService;
     private final MallMemberPaymentMapper mallMemberPaymentMapper;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -95,7 +97,7 @@
         mallMember.setName(registerDto.getAccount());
         mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE);
         mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
-        mallMember.setLevel("1");
+        mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
         mallMember.setSex("男");
 
         this.baseMapper.insert(mallMember);
@@ -220,6 +222,10 @@
             mallMemberVo.setHasPayment(1);
         }
 
+        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel());
+        if (dic != null) {
+            mallMemberVo.setLevelName(dic.getDescription());
+        }
         MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
         mallMemberVo.setBalance(wallet.getBalance());
         return new FebsResponse().success().data(mallMemberVo);
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 2656088..f2c3807 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -7,4 +7,5 @@
 public class QueueConstants {
 
     public static final String QUEUE_DEFAULT = "queue_default";
+    public static final String AGENT_AUTO_LEVEL_UP = "queue_agent_auto_level_up";
 }
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 c4d5a29..4569e1a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.rabbit.consumer;
 
+import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
 import cc.mrbird.febs.rabbit.constants.QueueConstants;
 import cc.mrbird.febs.rabbit.enumerates.RabbitQueueEnum;
@@ -22,6 +23,8 @@
 
     @Autowired
     private IApiMallOrderInfoService orderInfoService;
+    @Autowired
+    private IAgentService agentService;
 
     @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
     public void agentReturn(Message message, Channel channel) {
@@ -33,4 +36,10 @@
         log.info("订单超时支付自动取消:{}", id);
         orderInfoService.autoCancelOrder(Long.parseLong(id));
     }
+
+    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
+    public void agentAutoLevelUp(String id) {
+        log.info("收到代理自动升级消息:{}", id);
+        agentService.autoUpAgentLevel(Long.parseLong(id));
+    }
 }
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 dc6e308..1ba5bd2 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -12,6 +12,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 import java.util.UUID;
 
@@ -60,4 +61,14 @@
             }
         });
     }
+
+    /**
+     * 发送代理自动升级消息
+     *
+     * @param memberId
+     */
+    public void sendAutoLevelUpMsg(@NotNull Long memberId) {
+        log.info("发送代理自动升级消息:{}", memberId);
+        rabbitTemplate.convertAndSend(ExchangeConstants.EXCHANGE_DEFAULT, RouteKeyConstants.ROUTE_KEY_DEFAULT, memberId);
+    }
 }
diff --git a/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
index 390daa3..102362d 100644
--- a/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
+++ b/src/main/resources/mapper/modules/DataDictionaryCustomMapper.xml
@@ -14,4 +14,18 @@
         select * from data_dictionary_custom where id = #{id}
     </select>
 
+
+    <select id="selectNextAgentLevelInfo" resultType="cc.mrbird.febs.mall.entity.DataDictionaryCustom">
+        select * from data_dictionary_custom x
+        where x.type='AGENT_LEVEL_REQUIRE' and x.code = (
+            select a.code from data_dictionary_custom a
+            where a.type='AGENT_LEVEL' and a.value > (select b.value from data_dictionary_custom b where b.type='AGENT_LEVEL' and b.code=#{level})
+            order by a.value limit 1
+        )
+    </select>
+
+    <select id="selectDicDataByTypeAndCode" resultType="cc.mrbird.febs.mall.entity.DataDictionaryCustom">
+        select * from data_dictionary_custom a
+        where a.type=#{type} and a.code=#{code}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 0d4b86e..8a6fe9f 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -94,4 +94,23 @@
                  inner join mall_order_info b on e.id=b.member_id and b.status=4
         where e.invite_id=#{inviteId} or e.referrer_id=#{inviteId}
     </select>
+
+    <select id="selectByRefererId" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select * from mall_member
+        where referrer_id=#{inviteId}
+    </select>
+
+    <select id="selectChildAgentList" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select * from mall_member
+        where find_in_set(#{inviteId}, referrer_ids) and level=#{agentLevel}
+    </select>
+
+    <select id="selectByInviteIds" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select * from mall_member
+        where  invite_id IN
+        <foreach collection = "list" item = "item"  separator=","  open = "(" close = ")" >
+            #{item}
+        </foreach >
+        order by id desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 82931b5..e59fcf6 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -142,4 +142,18 @@
     <select id="selectOrderInfoByStatus" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
         select * from mall_order_info where status=#{status}
     </select>
+
+    <select id="selectCntDirectOrTeam" resultType="java.lang.Integer">
+        select IFNULL(count(1), 0) from mall_order_info a
+          inner join mall_member b on a.member_id=b.ID
+        <where>
+            a.status=4
+            <if test="type == 1">
+                and b.referrer_id=#{inviteId}
+            </if>
+            <if test="type == 2">
+                and find_in_set(#{inviteId}, b.referrer_ids)
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 1c6f049..1ba4792 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,10 +1,19 @@
 package cc.mrbird.febs;
 
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.mall.entity.AgentInfo;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.loadtime.Agent;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
 
 /**
  * @author wzy
@@ -17,8 +26,51 @@
     @Autowired
     private AgentProducer agentProducer;
 
+    @Autowired
+    private DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+    @Autowired
+    private IAgentService agentService;
+
     @Test
     public void agentTest() {
 //        agentProducer.sendDelayMsg(1L, 10000L);
     }
+
+    @Test
+    public void insertAgentTest() {
+        AgentInfo agentInfo = new AgentInfo();
+        agentInfo.setOrderType(2);
+        agentInfo.setOrderCnt(2000);
+        agentInfo.setLastCnt(3);
+        agentInfo.setDirectIncome(BigDecimal.valueOf(50));
+        agentInfo.setTeamIncome(BigDecimal.valueOf(15));
+        agentInfo.setTeamIncomeType(2);
+
+        DataDictionaryCustom data = new DataDictionaryCustom();
+        data.setType("AGENT_LEVEL_REQUIRE");
+        data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
+        data.setValue(JSONObject.toJSONString(agentInfo));
+        dataDictionaryCustomMapper.insert(data);
+    }
+
+    @Test
+    public void insertData() {
+        int i = 1;
+        for (AgentLevelEnum value : AgentLevelEnum.values()) {
+            DataDictionaryCustom data = new DataDictionaryCustom();
+            data.setType("AGENT_LEVEL");
+            data.setDescription(value.getName());
+            data.setCode(value.name());
+            data.setValue(String.valueOf(i));
+            dataDictionaryCustomMapper.insert(data);
+        }
+
+    }
+
+    @Test
+    public void autoLevelUp() {
+        // agentService.autoUpAgentLevel(3L);
+        agentProducer.sendAutoLevelUpMsg(3L);
+    }
 }

--
Gitblit v1.9.1