✏️ 业务中台逻辑
一点点业务中台个人开发总结
对于频繁的数据处理,最优方式是设计统一的业务中台。
业务中台可以是抽象借口,有多个接口实现,所有的业务处理都走业务中台接口,也可以是一套统一通用的调用逻辑,但不推荐。
这是一个最简单的抽象业务中台。
public interface AssetBusinessService {
/**
* 执行业务处理
* @param request 统一的资产变动请求(包含用户ID、变动金额、业务类型等)
*/
void process(AssetChangeRequest request);
/**
* 获取支持的业务类型(如:RECHARGE, CONSUME, ADJUST)
*/
BusinessTypeEnum getSupportedType();
}
例如用户资源扣减和充值、管理员调配。不同类型的业务他们可以有独立的接口实现。
例如,使用业务中台进行统一货币调配,记录业务日志。
中台统一调用逻辑
@Service
public class AssetMiddlesoftware {
// 自动注入所有实现类
@Autowired
private List<AssetBusinessService> services;
@Transactional(rollbackFor = Exception.class)
public void execute(AssetChangeRequest request) {
// 1. 记录前置业务日志(统一入口)
log.info("开始处理业务: {}, 请求参数: {}", request.getBusinessType(), request);
// 2. 找到对应的策略实现并执行底层逻辑
AssetBusinessService service = services.stream()
.filter(s -> s.getSupportedType() == request.getBusinessType())
.findFirst()
.orElseThrow(() -> new BusinessException("未定义的业务类型"));
service.process(request);
// 3. 统一货币扣减/增加逻辑(确保底层执行方式一致)
assetCoreMapper.updateBalance(request.getUserId(), request.getAmount());
// 4. 记录后置资产流水日志
assetLogMapper.insert(new AssetLog(request));
}
}
例如用户消耗100货币,那么用户消耗接口记录用户消耗日志,然后调用用户业务中台,业务中台扣减货币然后记录业务中台日志。
用户充值,管理员调配都类似。
对于充值接口,也可以制作一个抽象的充值接口,对接第三方平台的时候进行独立实现。
支付宝或者微信,虽然平台不同但底层调用相同,他们的具体实现是独立的。
