From 8845e56ec5052b5402c790826c3a6921b628f032 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 01 Dec 2022 14:58:12 +0800
Subject: [PATCH] 20221130

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java |   27 +++++++++++++
 src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java           |    9 ++++
 src/main/resources/mapper/dapp/DappMemberDao.xml                          |   11 +++++
 src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java               |    4 +-
 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java          |    2 +
 src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java                   |    1 
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java |    4 ++
 src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java                        |    2 +
 src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java           |    9 ++++
 src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java              |   19 +++++++++
 10 files changed, 86 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
index c4c8f17..292e3f4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -1,8 +1,6 @@
 package cc.mrbird.febs.dapp.mapper;
 
-import cc.mrbird.febs.dapp.dto.TeamListDto;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
-import cc.mrbird.febs.dapp.vo.TeamListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -50,4 +48,6 @@
     void updateMemberActiveStatus(@Param("accountStatus")int i, @Param("id")Long id);
 
     List<DappMemberEntity> selectMemberInfoByRefererId(@Param("refererId")String inviteId);
+
+    Integer selectCountByAccountTypeAndRefererId(@Param("accountType")String code, @Param("refererId")String inviteId);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
index 5300a2b..43a3356 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -30,4 +30,6 @@
     void memberOut(Long id);
     //转账拨币
     void bnbTransfer(Long id);
+
+    void agentUp(String inviteId);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 6e21588..dfc2076 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -22,6 +22,7 @@
 import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
 import cc.mrbird.febs.dapp.vo.ApiRunListInfoVo;
 import cc.mrbird.febs.dapp.vo.TeamListVo;
+import cc.mrbird.febs.rabbit.producer.ChainProducer;
 import cc.mrbird.febs.system.entity.User;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -58,6 +59,7 @@
     private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final DappSystemProfitDao dappSystemProfitDao;
+    private final ChainProducer chainProducer;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -148,6 +150,8 @@
                 connectDto.setInviteId(null);
             }
             member = insertMember(connectDto.getAddress(), connectDto.getInviteId());
+            //升级用户的代理等级
+            chainProducer.sendAgentUpMsg(connectDto.getInviteId());
         }
 
         String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign());
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index c5e7d8f..eae081e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -473,6 +473,33 @@
 
     }
 
+    @Override
+    public void agentUp(String inviteId) {
+        //根据邀请码获取用户信息
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+        if(ObjectUtil.isEmpty(dappMemberEntity)){
+            return;
+        }
+        String accountType = dappMemberEntity.getAccountType();
+        if(DataDictionaryEnum.BIG_BOSS.getCode().equals(accountType)){
+            return;
+        }
+        //当前为BOSS,且直推中有两个BOSS以上,则升级BIG_BOSS
+        if(DataDictionaryEnum.BOSS.getCode().equals(accountType)){
+            Integer bossCount = dappMemberDao.selectCountByAccountTypeAndRefererId(DataDictionaryEnum.BOSS.getCode(),inviteId);
+            if(2 <= bossCount){
+                dappMemberDao.updateMemberAccountType(DataDictionaryEnum.BIG_BOSS.getCode(),dappMemberEntity.getId());
+            }
+        }
+        //当前为AGENT,且直推中有两个以上,则升级BOSS
+        if(DataDictionaryEnum.AGENT.getCode().equals(accountType)){
+            Integer bossCount = dappMemberDao.selectCountByAccountTypeAndRefererId(null,inviteId);
+            if(2 <= bossCount){
+                dappMemberDao.updateMemberAccountType(DataDictionaryEnum.BOSS.getCode(),dappMemberEntity.getId());
+            }
+        }
+    }
+
     public static void main(String[] args) {
         String refererIds = "1,2,3,4,5," +
                             "6,7,8,9,10," +
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index 1e9fbc3..409db43 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,7 @@
  **/
 public class QueueConstants {
 
+    public static final String QUEUE_BNB_AGENT_UP = "queue_bnb_agent_up";
     public static final String QUEUE_BNB_TRANSFER = "queue_bnb_transfer";
     public static final String QUEUE_MEMBER_OUT = "queue_bnb_member_out";
     public static final String QUEUE_LEVEL_PROFIT = "queue_bnb_level_profit_transfer";
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index bde8845..ddec68a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -5,6 +5,8 @@
 
 @Getter
 public enum QueueEnum {
+    //代理升级
+    BNB_AGENT_UP("exchange_bnb_agent_up", "route_key_bnb_agent_up", "queue_bnb_agent_up"),
     //转账拨币
     BNB_TRANSFER("exchange_bnb_transfer", "route_key_bnb_transfer", "queue_bnb_transfer"),
     //计算是否有人出局
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index 01f00dd..21c1ed8 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -158,4 +158,23 @@
         return BindingBuilder.bind(bnbTransferQueue()).to(bnbTransferExchange()).with(QueueEnum.BNB_TRANSFER.getRoute());
     }
     // === 转账拨币 end ===
+
+
+
+    // === 代理升级 start ===
+    @Bean
+    public DirectExchange agentUpExchange() {
+        return new DirectExchange(QueueEnum.BNB_AGENT_UP.getExchange());
+    }
+
+    @Bean
+    public Queue agentUpQueue() {
+        return new Queue(QueueEnum.BNB_AGENT_UP.getQueue());
+    }
+
+    @Bean
+    public Binding agentUpBind() {
+        return BindingBuilder.bind(agentUpQueue()).to(agentUpExchange()).with(QueueEnum.BNB_AGENT_UP.getRoute());
+    }
+    // === 代理升级 end ===
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
index 1f1d768..141d89a 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -72,4 +72,13 @@
         log.info("消费转账拨币:{}", id);
         dappSystemService.bnbTransfer(id);
     }
+
+    /**代理升级
+     * @param inviteId
+     */
+    @RabbitListener(queues = QueueConstants.QUEUE_BNB_AGENT_UP)
+    public void agentUp(String inviteId) {
+        log.info("代理升级:{}", inviteId);
+        dappSystemService.agentUp(inviteId);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
index 4c55582..c92878b 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -91,4 +91,13 @@
         CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
         rabbitTemplate.convertAndSend(QueueEnum.BNB_TRANSFER.getExchange(), QueueEnum.BNB_TRANSFER.getRoute(), id, correlationData);
     }
+
+    /**
+     * 代理升级
+     */
+    public void sendAgentUpMsg(String inviteId) {
+        log.info("代理升级:{}", inviteId);
+        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+        rabbitTemplate.convertAndSend(QueueEnum.BNB_AGENT_UP.getExchange(), QueueEnum.BNB_AGENT_UP.getRoute(), inviteId, correlationData);
+    }
 }
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index 4ea0687..4a8c54f 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -165,4 +165,15 @@
         from dapp_member a
         where referer_id = #{refererId}
     </select>
+
+    <select id="selectCountByAccountTypeAndRefererId" resultType="java.lang.Integer">
+        select count(id)
+        from dapp_member
+        <where>
+            referer_id = #{refererId}
+            <if test="code != null">
+                and account_type = @{code}
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1