diff --git a/ballcat-dependencies/pom.xml b/ballcat-dependencies/pom.xml index 6bf15374..bee0eb20 100644 --- a/ballcat-dependencies/pom.xml +++ b/ballcat-dependencies/pom.xml @@ -61,7 +61,7 @@ 3.0.3 1.13.1 1.2.8 - 0.3.2 + 0.4.1 4.11.28.ALL @@ -407,7 +407,7 @@ live.lingting - virtual-currency + virtual-currency-all ${virtual-currency.version} diff --git a/ballcat-extends/ballcat-extend-pay-virtual/pom.xml b/ballcat-extends/ballcat-extend-pay-virtual/pom.xml index 56ab5066..705a750d 100644 --- a/ballcat-extends/ballcat-extend-pay-virtual/pom.xml +++ b/ballcat-extends/ballcat-extend-pay-virtual/pom.xml @@ -19,7 +19,7 @@ live.lingting - virtual-currency + virtual-currency-all diff --git a/ballcat-extends/ballcat-extend-pay-virtual/src/main/java/com/hccake/starter/pay/viratual/AbstractVerifyThread.java b/ballcat-extends/ballcat-extend-pay-virtual/src/main/java/com/hccake/starter/pay/viratual/AbstractVerifyThread.java index b3095a4e..e9b7f9df 100644 --- a/ballcat-extends/ballcat-extend-pay-virtual/src/main/java/com/hccake/starter/pay/viratual/AbstractVerifyThread.java +++ b/ballcat-extends/ballcat-extend-pay-virtual/src/main/java/com/hccake/starter/pay/viratual/AbstractVerifyThread.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Optional; import javax.validation.constraints.NotNull; import lombok.extern.slf4j.Slf4j; -import live.lingting.virtual.currency.Transaction; +import live.lingting.virtual.currency.core.model.TransactionInfo; /** * 用于校验交易的线程 @@ -27,7 +27,7 @@ public abstract class AbstractVerifyThread extends Abstr * @return live.lingting.virtual.currency.Transaction * @author lingting 2021-01-05 11:22 */ - public abstract Optional getTransaction(T obj); + public abstract Optional getTransaction(T obj); /** * 处理交易 @@ -35,7 +35,7 @@ public abstract class AbstractVerifyThread extends Abstr * @param optional 交易数据 * @author lingting 2021-01-05 11:13 */ - public abstract void handler(T obj, @NotNull Optional optional); + public abstract void handler(T obj, @NotNull Optional optional); /** * 失败处理 @@ -44,7 +44,7 @@ public abstract class AbstractVerifyThread extends Abstr * @param r 处理结果 * @author lingting 2021-01-05 11:18 */ - public abstract void failed(T obj, @NotNull Optional optional, R r); + public abstract void failed(T obj, @NotNull Optional optional, R r); /** * 成功处理 @@ -53,7 +53,7 @@ public abstract class AbstractVerifyThread extends Abstr * @param r 处理结果 * @author lingting 2021-01-05 11:19 */ - public abstract void success(T obj, @NotNull Optional optional, R r); + public abstract void success(T obj, @NotNull Optional optional, R r); /** * 异常处理 diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/config/OmniConfig.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/config/OmniConfig.java index fcbb242b..a468e8b8 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/config/OmniConfig.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/config/OmniConfig.java @@ -4,7 +4,6 @@ import com.hccake.starter.pay.virtual.BitcoinProperties; import java.util.function.Supplier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import live.lingting.virtual.currency.properties.OmniProperties; /** * @author lingting 2021/1/5 16:24 @@ -13,16 +12,15 @@ import live.lingting.virtual.currency.properties.OmniProperties; public class OmniConfig { @Bean - public OmniProperties bitcoinProperties(BitcoinProperties properties) { + public live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties bitcoinProperties( + BitcoinProperties properties) { // omni 使用的接口限制请求频率(5-10s一次), 需要根据项目实现, 这里直接返回true Supplier lock = () -> true; Supplier unlock = () -> true; - return new OmniProperties() - // 节点 - .setOmniEndpoints(properties.getOmni().getEndpoints()) + return new live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties() // 比特节点 - .setBitcoinEndpoints(properties.getEndpoints()) + .setEndpoints(properties.getEndpoints()) // 请求锁 .setLock(lock).setUnlock(unlock); } diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/enums/Contract.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/enums/Contract.java index a8a1e258..1c519b4f 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/enums/Contract.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/enums/Contract.java @@ -4,10 +4,12 @@ package com.hccake.sample.pay.virtual.enums; * @author lingting 2021/3/3 10:22 */ public enum Contract { + /** * USDT */ USDT, ; + } diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/AbstractThread.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/AbstractThread.java index 5b4f87bc..97f7d1cb 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/AbstractThread.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/AbstractThread.java @@ -11,8 +11,8 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import lombok.extern.slf4j.Slf4j; -import live.lingting.virtual.currency.Transaction; -import live.lingting.virtual.currency.enums.TransactionStatus; +import live.lingting.virtual.currency.core.model.TransactionInfo; +import live.lingting.virtual.currency.core.enums.TransactionStatus; /** * 配置基本校验 @@ -45,7 +45,7 @@ public abstract class AbstractThread extends AbstractVerifyThread } @Override - public void handler(Order obj, Optional optional) { + public void handler(Order obj, Optional optional) { /* * 不管哪个平台的充值订单, 验证逻辑都是一样的 * @@ -65,7 +65,7 @@ public abstract class AbstractThread extends AbstractVerifyThread return; } - Transaction transaction = optional.get(); + TransactionInfo transaction = optional.get(); if (transaction.getStatus() == TransactionStatus.WAIT) { // 交易需要等待继续查询 @@ -116,13 +116,13 @@ public abstract class AbstractThread extends AbstractVerifyThread } @Override - public void success(Order obj, Optional optional, Result verifyResult) { + public void success(Order obj, Optional optional, Result verifyResult) { log.info("交易成功, 订单数据: {}, 交易信息: {}, 结果: {}", JsonUtils.toJson(obj), !optional.isPresent() ? "null" : JsonUtils.toJson(optional.get()), JsonUtils.toJson(verifyResult)); } @Override - public void failed(Order obj, Optional optional, Result verifyResult) { + public void failed(Order obj, Optional optional, Result verifyResult) { log.info("交易失败, 订单数据: {}, 交易信息: {}, 结果: {}", JsonUtils.toJson(obj), !optional.isPresent() ? "null" : JsonUtils.toJson(optional.get()), JsonUtils.toJson(verifyResult)); } diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/EtherscanThread.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/EtherscanThread.java index 2672531a..7be3b77e 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/EtherscanThread.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/EtherscanThread.java @@ -6,8 +6,8 @@ import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import live.lingting.virtual.currency.Transaction; -import live.lingting.virtual.currency.service.impl.InfuraServiceImpl; +import live.lingting.virtual.currency.core.model.TransactionInfo; +import live.lingting.virtual.currency.etherscan.EtherscanServiceImpl; /** * @author lingting 2021/1/5 15:22 @@ -17,7 +17,7 @@ import live.lingting.virtual.currency.service.impl.InfuraServiceImpl; @RequiredArgsConstructor public class EtherscanThread extends AbstractThread { - private final InfuraServiceImpl service; + private final EtherscanServiceImpl service; @Override public void init() { @@ -25,7 +25,7 @@ public class EtherscanThread extends AbstractThread { } @Override - public Optional getTransaction(Order obj) { + public Optional getTransaction(Order obj) { try { return service.getTransactionByHash(obj.getHash()); } diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/OmniThread.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/OmniThread.java index 7004a692..e31195cf 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/OmniThread.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/OmniThread.java @@ -6,8 +6,8 @@ import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import live.lingting.virtual.currency.Transaction; -import live.lingting.virtual.currency.service.impl.BtcOmniServiceImpl; +import live.lingting.virtual.currency.bitcoin.BitcoinServiceImpl; +import live.lingting.virtual.currency.core.model.TransactionInfo; /** * @author lingting 2021/1/5 15:22 @@ -17,7 +17,7 @@ import live.lingting.virtual.currency.service.impl.BtcOmniServiceImpl; @RequiredArgsConstructor public class OmniThread extends AbstractThread { - private final BtcOmniServiceImpl service; + private final BitcoinServiceImpl service; @Override public void init() { @@ -25,7 +25,7 @@ public class OmniThread extends AbstractThread { } @Override - public Optional getTransaction(Order obj) { + public Optional getTransaction(Order obj) { try { return service.getTransactionByHash(obj.getHash()); } diff --git a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/TronscanThread.java b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/TronscanThread.java index 4e0fcc34..087c70b7 100644 --- a/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/TronscanThread.java +++ b/ballcat-samples/ballcat-sample-pay/src/main/java/com/hccake/sample/pay/virtual/thread/TronscanThread.java @@ -6,8 +6,8 @@ import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import live.lingting.virtual.currency.Transaction; -import live.lingting.virtual.currency.service.impl.TronscanServiceImpl; +import live.lingting.virtual.currency.core.model.TransactionInfo; +import live.lingting.virtual.currency.tronscan.TronscanServiceImpl; /** * @author lingting 2021/1/5 15:22 @@ -25,7 +25,7 @@ public class TronscanThread extends AbstractThread { } @Override - public Optional getTransaction(Order obj) { + public Optional getTransaction(Order obj) { try { return service.getTransactionByHash(obj.getHash()); } diff --git a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/BitcoinProperties.java b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/BitcoinProperties.java index c8340162..ef0e0043 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/BitcoinProperties.java +++ b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/BitcoinProperties.java @@ -1,7 +1,6 @@ package com.hccake.starter.pay.virtual; -import live.lingting.virtual.currency.endpoints.BitcoinEndpoints; -import live.lingting.virtual.currency.endpoints.OmniEndpoints; +import live.lingting.virtual.currency.bitcoin.endpoints.BitcoinEndpoints; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -17,24 +16,9 @@ public class BitcoinProperties { */ private Boolean enabled = true; - /** - * 使用 omni 平台 - */ - private Omni omni; - /** * 比特节点 */ private BitcoinEndpoints endpoints; - @Data - public static class Omni { - - /** - * 节点 - */ - private OmniEndpoints endpoints; - - } - } diff --git a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EthereumProperties.java b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EtherscanProperties.java similarity index 80% rename from ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EthereumProperties.java rename to ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EtherscanProperties.java index 9225e755..7360091f 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EthereumProperties.java +++ b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/EtherscanProperties.java @@ -1,21 +1,23 @@ package com.hccake.starter.pay.virtual; -import live.lingting.virtual.currency.endpoints.InfuraEndpoints; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; +import live.lingting.virtual.currency.etherscan.endpoints.EtherscanEndpoints; /** * @author lingting 2021/1/22 17:47 */ @Data @ConfigurationProperties(prefix = "ballcat.pay.ethereum") -public class EthereumProperties { +public class EtherscanProperties { /** * 是否开启 */ private Boolean enabled = true; + private EtherscanEndpoints endpoints; + /** * 使用 infura 平台. 网址 https://infura.io/dashboard */ @@ -24,11 +26,6 @@ public class EthereumProperties { @Data public static class Infura { - /** - * 节点 - */ - private InfuraEndpoints endpoints; - /** * 在 注册后, 创建的app的 projectId */ diff --git a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/TronscanProperties.java b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/TronscanProperties.java index 6efd3f0a..a9926078 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/TronscanProperties.java +++ b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/TronscanProperties.java @@ -1,6 +1,6 @@ package com.hccake.starter.pay.virtual; -import live.lingting.virtual.currency.endpoints.TronscanEndpoints; +import live.lingting.virtual.currency.tronscan.endpoints.TronscanEndpoints; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/VirtualPayAutoConfiguration.java b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/VirtualPayAutoConfiguration.java index 2ac3b2eb..e6f7bec0 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/VirtualPayAutoConfiguration.java +++ b/ballcat-starters/ballcat-spring-boot-starter-pay/src/main/java/com/hccake/starter/pay/virtual/VirtualPayAutoConfiguration.java @@ -8,20 +8,18 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import live.lingting.virtual.currency.properties.InfuraProperties; -import live.lingting.virtual.currency.properties.OmniProperties; -import live.lingting.virtual.currency.properties.TronscanProperties; -import live.lingting.virtual.currency.service.impl.BtcOmniServiceImpl; -import live.lingting.virtual.currency.service.impl.InfuraServiceImpl; -import live.lingting.virtual.currency.service.impl.TronscanServiceImpl; +import live.lingting.virtual.currency.bitcoin.BitcoinServiceImpl; +import live.lingting.virtual.currency.core.Contract; +import live.lingting.virtual.currency.etherscan.EtherscanServiceImpl; +import live.lingting.virtual.currency.tronscan.TronscanServiceImpl; /** * @author lingting 2021/1/5 9:52 */ @Slf4j @RequiredArgsConstructor -@ConditionalOnClass(InfuraProperties.class) -@EnableConfigurationProperties({ BitcoinProperties.class, EthereumProperties.class, +@ConditionalOnClass(Contract.class) +@EnableConfigurationProperties({ BitcoinProperties.class, EtherscanProperties.class, com.hccake.starter.pay.virtual.TronscanProperties.class }) public class VirtualPayAutoConfiguration { @@ -35,13 +33,15 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean + @ConditionalOnClass(EtherscanServiceImpl.class) @ConditionalOnProperty(prefix = "ballcat.pay.ethereum", name = "enabled", havingValue = "true", matchIfMissing = true) - public InfuraProperties infuraProperties(EthereumProperties properties) { - EthereumProperties.Infura infura = properties.getInfura(); - return new InfuraProperties() + public live.lingting.virtual.currency.etherscan.properties.EtherscanProperties infuraProperties( + EtherscanProperties properties) { + EtherscanProperties.Infura infura = properties.getInfura(); + return new live.lingting.virtual.currency.etherscan.properties.EtherscanProperties() // 节点 - .setEndpoints(infura.getEndpoints()) + .setEndpoints(properties.getEndpoints()) // project id .setProjectId(infura.getProjectId()) // project secret @@ -54,9 +54,11 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean - @ConditionalOnBean(InfuraProperties.class) - public InfuraServiceImpl infuraService(InfuraProperties properties) { - return new InfuraServiceImpl(properties); + @ConditionalOnClass(EtherscanServiceImpl.class) + @ConditionalOnBean(live.lingting.virtual.currency.etherscan.properties.EtherscanProperties.class) + public EtherscanServiceImpl infuraService( + live.lingting.virtual.currency.etherscan.properties.EtherscanProperties properties) { + return new EtherscanServiceImpl(properties); } /* @@ -69,10 +71,12 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean + @ConditionalOnClass(TronscanServiceImpl.class) @ConditionalOnProperty(prefix = "ballcat.pay.tronscan", name = "enabled", havingValue = "true", matchIfMissing = true) - public TronscanProperties tronscanProperties(com.hccake.starter.pay.virtual.TronscanProperties properties) { - return new TronscanProperties() + public live.lingting.virtual.currency.tronscan.properties.TronscanProperties tronscanProperties( + TronscanProperties properties) { + return new live.lingting.virtual.currency.tronscan.properties.TronscanProperties() // 节点 .setEndpoints(properties.getEndpoints()); } @@ -83,8 +87,9 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean - @ConditionalOnBean(TronscanProperties.class) - public TronscanServiceImpl tronscanService(TronscanProperties properties) { + @ConditionalOnBean(live.lingting.virtual.currency.tronscan.properties.TronscanProperties.class) + public TronscanServiceImpl tronscanService( + live.lingting.virtual.currency.tronscan.properties.TronscanProperties properties) { return new TronscanServiceImpl(properties); } @@ -98,14 +103,14 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean + @ConditionalOnClass(BitcoinServiceImpl.class) @ConditionalOnProperty(prefix = "ballcat.pay.bitcoin", name = "enabled", havingValue = "true", matchIfMissing = true) - public OmniProperties bitcoinProperties(BitcoinProperties properties) { - return new OmniProperties() - // 节点 - .setOmniEndpoints(properties.getOmni().getEndpoints()) + public live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties bitcoinProperties( + BitcoinProperties properties) { + return new live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties() // 比特节点 - .setBitcoinEndpoints(properties.getEndpoints()); + .setEndpoints(properties.getEndpoints()); } /** @@ -114,9 +119,10 @@ public class VirtualPayAutoConfiguration { */ @Bean @ConditionalOnMissingBean - @ConditionalOnBean(OmniProperties.class) - public BtcOmniServiceImpl bitcoinService(OmniProperties properties) { - return new BtcOmniServiceImpl(properties); + @ConditionalOnBean(live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties.class) + public BitcoinServiceImpl bitcoinService( + live.lingting.virtual.currency.bitcoin.properties.BitcoinProperties properties) { + return new BitcoinServiceImpl(properties); } } diff --git a/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/common/redis/RedisHelper.java b/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/common/redis/RedisHelper.java index 35be6c40..54c59981 100644 --- a/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/common/redis/RedisHelper.java +++ b/ballcat-starters/ballcat-spring-boot-starter-redis/src/main/java/com/hccake/ballcat/common/redis/RedisHelper.java @@ -332,7 +332,7 @@ public class RedisHelper { return getList().leftPush(key, val); } - public static Long listRightPush(String key, String val){ + public static Long listRightPush(String key, String val) { return getList().rightPush(key, val); }