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