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);
}