From 17b569ed8554e755c9e5feedf6e7882cdf2c8d01 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 16 Apr 2021 16:48:27 +0800
Subject: [PATCH] Merge branch 'activity' of http://120.27.238.55:7000/r/exchange into activity

---
 src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java               |    4 
 src/main/java/com/xcong/excoin/common/listener/RedisListenerConfig.java        |   25 ++++++
 src/test/java/com/xcong/excoin/MemberTest.java                                 |  134 +++++++++++++++++++++++++++++++++
 src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java    |    1 
 src/main/java/com/xcong/excoin/common/listener/RedisKeyExpirationListener.java |   31 +++++++
 5 files changed, 193 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/common/listener/RedisKeyExpirationListener.java b/src/main/java/com/xcong/excoin/common/listener/RedisKeyExpirationListener.java
new file mode 100644
index 0000000..e4658c9
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/listener/RedisKeyExpirationListener.java
@@ -0,0 +1,31 @@
+package com.xcong.excoin.common.listener;
+
+import com.xcong.excoin.utils.mail.ZzSmsSend;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author wzy
+ * @date 2021-04-16
+ **/
+@Slf4j
+@Component
+@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true")
+public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
+
+    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
+        super(listenerContainer);
+    }
+
+    @Override
+    public void onMessage(Message message, byte[] pattern) {
+        String expireKey = message.toString();
+        if (expireKey.equalsIgnoreCase("whole_bomb_execute")) {
+            ZzSmsSend.sendVerifyCode("15773002834", "123456", 2);
+        }
+    }
+}
diff --git a/src/main/java/com/xcong/excoin/common/listener/RedisListenerConfig.java b/src/main/java/com/xcong/excoin/common/listener/RedisListenerConfig.java
new file mode 100644
index 0000000..554bc35
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/listener/RedisListenerConfig.java
@@ -0,0 +1,25 @@
+package com.xcong.excoin.common.listener;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+
+/**
+ * @author wzy
+ * @date 2021-04-16
+ **/
+@Configuration
+@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true")
+public class RedisListenerConfig {
+
+    @Bean
+    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
+
+        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
+        container.setConnectionFactory(connectionFactory);
+//        container.addMessageListener(new RedisExpiredListener(), new PatternTopic("__keyevent@0__:expired"));
+        return container;
+    }
+}
diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
index 3b914bc..d31f6f0 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
@@ -288,6 +288,7 @@
     }
 
     public void wholeBomb() {
+        redisUtils.set("whole_bomb_execute", 1, 30);
         Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
         if (CollUtil.isEmpty(dataModelMap)) {
             return;
diff --git a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
index 70ed481..18a727c 100644
--- a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
@@ -21,11 +21,11 @@
 @Slf4j
 public class DingTalkUtils {
 
-    private static final String SECRET = "SECc0b73559742b950f07eabbd050c406a6abb3b67d112d3735289e90f58884c543";
+    private static final String SECRET = "SECbc84fd6c2edb9f2f440f9f969981ca310ba553e7c7994cf68cf26e4607cc5943";
 
     public static void sendActionCard(int type) {
         log.info("send dingtalk");
-        String url = "https://oapi.dingtalk.com/robot/send?access_token=161d5e5b60ae5d6b4c80f2a9c35f9f212961a7c7154aa7e94b99503eca3886b0";
+        String url = "https://oapi.dingtalk.com/robot/send?access_token=54a0d627111f3667f7e98691c15becadb742c4da895e60f6d77392389e49658a";
         Long timestamp = System.currentTimeMillis();
         try {
             String sign = generateSign(timestamp);
diff --git a/src/test/java/com/xcong/excoin/MemberTest.java b/src/test/java/com/xcong/excoin/MemberTest.java
new file mode 100644
index 0000000..da4f357
--- /dev/null
+++ b/src/test/java/com/xcong/excoin/MemberTest.java
@@ -0,0 +1,134 @@
+package com.xcong.excoin;
+
+import cn.hutool.core.collection.CollUtil;
+import com.xcong.excoin.common.system.dto.RegisterDto;
+import com.xcong.excoin.modules.documentary.dao.FollowFollowerProfitDao;
+import com.xcong.excoin.modules.documentary.dao.FollowFollowerSettingDao;
+import com.xcong.excoin.modules.documentary.dao.FollowTraderInfoDao;
+import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto;
+import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity;
+import com.xcong.excoin.modules.documentary.entity.FollowFollowerSettingEntity;
+import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
+import com.xcong.excoin.modules.member.service.MemberService;
+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.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2021-04-16
+ **/
+@Slf4j
+@SpringBootTest
+public class MemberTest {
+
+    @Autowired
+    private MemberService memberService;
+
+    @Test
+    public void baseInsert() {
+        for(int i = 0; i < 100; i++) {
+            String phonePrefix = "199999999";
+            if (i < 10) {
+                phonePrefix = phonePrefix + "0" + i;
+            } else {
+                phonePrefix = phonePrefix + i;
+            }
+
+            RegisterDto registerDto = new RegisterDto();
+            registerDto.setAccount(phonePrefix);
+            registerDto.setType(1);
+            registerDto.setCode("a123456");
+            registerDto.setRefererId("49027637");
+            memberService.register(registerDto);
+        }
+    }
+
+    @Autowired
+    private FollowFollowerSettingDao followFollowerSettingDao;
+    @Autowired
+    private FollowTraderInfoDao followTraderInfoDao;
+    @Autowired
+    private FollowFollowerProfitDao followFollowerProfitDao;
+
+    @Test
+    public void followTrader() {
+        DocumentaryOrderSetDto documentaryOrderSetDto = new DocumentaryOrderSetDto();
+        documentaryOrderSetDto.setTraderId(1L);
+        documentaryOrderSetDto.setFollowCnt(1);
+        documentaryOrderSetDto.setFollowType(1);
+        documentaryOrderSetDto.setSymbols("BTC,ETH,LTC,BCH,EOS,XRP,ETC");
+
+        Long traderId = documentaryOrderSetDto.getTraderId();
+        Long memberId = 1L;
+
+        FollowFollowerSettingEntity isExistSetting = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId, traderId);
+        if (isExistSetting == null) {
+            //新增【跟随者设置】数据
+            FollowFollowerSettingEntity followFollowerSettingEntity = new FollowFollowerSettingEntity();
+            followFollowerSettingEntity.setMemberId(memberId);
+            followFollowerSettingEntity.setTraderId(traderId);
+            FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId);
+            Long traderMemberId = followTraderInfoEntity.getMemberId();
+            followFollowerSettingEntity.setTraderMemberId(traderMemberId);
+            followFollowerSettingEntity.setSymbols(documentaryOrderSetDto.getSymbols());
+            followFollowerSettingEntity.setFollowType(documentaryOrderSetDto.getFollowType());
+            followFollowerSettingEntity.setFollowCnt(documentaryOrderSetDto.getFollowCnt());
+            followFollowerSettingEntity.setMaxFollowCnt(documentaryOrderSetDto.getMaxFollowCnt());
+            followFollowerSettingDao.insert(followFollowerSettingEntity);
+            //更新【跟随者收益】数据
+            Map<String, Object> columnMap = new HashMap<>();
+            columnMap.put("member_id", memberId);
+            columnMap.put("trade_id", traderId);
+            List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap);
+            if (CollUtil.isNotEmpty(selectByMap)) {
+                FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0);
+                followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y);
+                followFollowerProfitDao.updateById(followFollowerProfitEntity);
+            } else {
+                FollowFollowerProfitEntity followFollowerProfitEntity = new FollowFollowerProfitEntity();
+                followFollowerProfitEntity.setMemberId(memberId);
+                followFollowerProfitEntity.setTradeId(traderId);
+                followFollowerProfitEntity.setTradeMemberId(traderMemberId);
+                followFollowerProfitEntity.setTotalPrincipal(BigDecimal.ZERO);
+                followFollowerProfitEntity.setTotalProfit(BigDecimal.ZERO);
+                followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y);
+                followFollowerProfitDao.insert(followFollowerProfitEntity);
+            }
+        } else {
+            //更新【跟随者收益】数据
+            Map<String, Object> columnMap = new HashMap<>();
+            columnMap.put("member_id", memberId);
+            columnMap.put("trade_id", traderId);
+            List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap);
+            if (CollUtil.isNotEmpty(selectByMap)) {
+                FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0);
+                followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y);
+                followFollowerProfitDao.updateById(followFollowerProfitEntity);
+            }else {
+                FollowFollowerProfitEntity followFollowerProfitEntity = new FollowFollowerProfitEntity();
+                followFollowerProfitEntity.setMemberId(memberId);
+                followFollowerProfitEntity.setTradeId(traderId);
+                FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId);
+                Long traderMemberId = followTraderInfoEntity.getMemberId();
+                followFollowerProfitEntity.setTradeMemberId(traderMemberId);
+                followFollowerProfitEntity.setTotalPrincipal(BigDecimal.ZERO);
+                followFollowerProfitEntity.setTotalProfit(BigDecimal.ZERO);
+                followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y);
+                followFollowerProfitDao.insert(followFollowerProfitEntity);
+            }
+
+            isExistSetting.setSymbols(documentaryOrderSetDto.getSymbols());
+            isExistSetting.setFollowType(documentaryOrderSetDto.getFollowType());
+            isExistSetting.setFollowCnt(documentaryOrderSetDto.getFollowCnt());
+            isExistSetting.setMaxFollowCnt(documentaryOrderSetDto.getMaxFollowCnt());
+            followFollowerSettingDao.updateById(isExistSetting);
+        }
+    }
+}

--
Gitblit v1.9.1