🎨 重构 ballcat-spring-boot-starter-pay模块, 使其按需加载指定支付方式
This commit is contained in:
30
ballcat-extends/ballcat-extend-pay-virtual/pom.xml
Normal file
30
ballcat-extends/ballcat-extend-pay-virtual/pom.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ballcat-extends</artifactId>
|
||||
<groupId>com.hccake</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ballcat-extend-pay-virtual</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>live.lingting</groupId>
|
||||
<artifactId>virtual-currency</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-common-core</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.hccake.starter.pay.viratual;
|
||||
|
||||
import com.hccake.ballcat.common.core.thread.AbstractQueueThread;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import live.lingting.virtual.currency.Transaction;
|
||||
|
||||
/**
|
||||
* 用于校验交易的线程
|
||||
*
|
||||
* @author lingting 2021/1/5 11:08
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractVerifyThread<T extends VerifyObj, R> extends AbstractQueueThread<T> {
|
||||
|
||||
@Override
|
||||
public long getBatchSize() {
|
||||
// 校验对象不需要堆积太多, 10条直接处理
|
||||
return 10;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据校验对象信息获取交易数据
|
||||
* @param obj 校验对象信息
|
||||
* @return live.lingting.virtual.currency.Transaction
|
||||
* @author lingting 2021-01-05 11:22
|
||||
*/
|
||||
public abstract Optional<Transaction> getTransaction(T obj);
|
||||
|
||||
/**
|
||||
* 处理交易
|
||||
* @param obj 校验对象信息
|
||||
* @param optional 交易数据
|
||||
* @author lingting 2021-01-05 11:13
|
||||
*/
|
||||
public abstract void handler(T obj, @NotNull Optional<Transaction> optional);
|
||||
|
||||
/**
|
||||
* 失败处理
|
||||
* @param obj 校验对象
|
||||
* @param optional 交易数据
|
||||
* @param r 处理结果
|
||||
* @author lingting 2021-01-05 11:18
|
||||
*/
|
||||
public abstract void failed(T obj, @NotNull Optional<Transaction> optional, R r);
|
||||
|
||||
/**
|
||||
* 成功处理
|
||||
* @param obj 校验对象
|
||||
* @param optional 交易数据
|
||||
* @param r 处理结果
|
||||
* @author lingting 2021-01-05 11:19
|
||||
*/
|
||||
public abstract void success(T obj, @NotNull Optional<Transaction> optional, R r);
|
||||
|
||||
/**
|
||||
* 缓存校验对象
|
||||
* @param obj 校验对象
|
||||
* @author lingting 2021-01-05 11:17
|
||||
*/
|
||||
public abstract void cache(T obj);
|
||||
|
||||
/**
|
||||
* 读取所有缓存的校验对象
|
||||
* @return java.util.List<T>
|
||||
* @author lingting 2021-01-05 11:17
|
||||
*/
|
||||
public abstract List<T> readCache();
|
||||
|
||||
/**
|
||||
* 异常处理
|
||||
* @param obj 校验对象
|
||||
* @param e 异常信息
|
||||
* @author lingting 2021-01-05 11:29
|
||||
*/
|
||||
public abstract void error(T obj, Throwable e);
|
||||
|
||||
@Override
|
||||
public void preProcessor() {
|
||||
for (T obj : readCache()) {
|
||||
// 把缓存中的所有数据插入线程
|
||||
putObject(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(List<T> list) throws Exception {
|
||||
for (T obj : list) {
|
||||
try {
|
||||
handler(obj, getTransaction(obj));
|
||||
}
|
||||
catch (Throwable e) {
|
||||
error(obj, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
setName(this.getClass().getSimpleName());
|
||||
super.afterPropertiesSet();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.hccake.starter.pay.viratual;
|
||||
|
||||
/**
|
||||
* 线程处理对象需要实现此类
|
||||
*
|
||||
* @author lingting 2021/1/5 11:15
|
||||
*/
|
||||
public interface VerifyObj {
|
||||
|
||||
/**
|
||||
* 获取当前订单的交易hash
|
||||
* @return java.lang.String
|
||||
* @author lingting 2021-01-05 11:15
|
||||
*/
|
||||
String getHash();
|
||||
|
||||
}
|
||||
@@ -16,5 +16,6 @@
|
||||
<module>ballcat-extend-dingtalk</module>
|
||||
<module>ballcat-extend-kafka</module>
|
||||
<module>ballcat-extend-kafka-stream</module>
|
||||
</modules>
|
||||
<module>ballcat-extend-pay-virtual</module>
|
||||
</modules>
|
||||
</project>
|
||||
Reference in New Issue
Block a user