🎨 重构 ballcat-spring-boot-starter-pay模块, 使其按需加载指定支付方式

This commit is contained in:
b2baccline
2021-01-22 19:29:02 +08:00
parent 884504dde7
commit e6ffc2e035
15 changed files with 186 additions and 128 deletions

View 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>

View File

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

View File

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

View File

@@ -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>