代码拉取完成,页面将自动刷新
同步操作将从 barry异想世界/barry-wallet 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
系统主要功能为账户资金交易,可用于会员虚拟钱包,实体消费卡,积分等有交易需求的系统
系统设计灵活易于扩展,采用多种设计模式,可简单适配不同业务场景,点击《企业中台化落地:从战略分析到战术实践及架构演进过程》
WalletService
:简单实现多种交易方式需求Behavior
:用行为定义交易后产生的结果变化,如增加/减少金额,属性变化等CheckPolicy
:不同策略组合实现不同的交易行为需求在wallet-service项目的service
中增加现实类
DefaultService
抽象类TradeRecord
tradeType()
中配置交易类型behavior()
中创建交易行为对象checkPolicies()
中组合该交易类型的交易规则策略public class LockService extends DefaultService {
public LockService(Wallet wallet) {
super(TradeRecord.builder().wallet(wallet).build());
}
@Override
protected TradeConfig tradeConfig() {
return new TradeConfig() {
@Override
public TradeType tradeType() {
return TradeType.LOCK;
}
@Override
public Behavior behavior() {
return new LockBehavior(getWallet());
}
@Override
public List<CheckPolicy> checkPolicies() {
return CheckPolicyBuilder.builder()
.add(new NoAvailableStatusAllowed(getWallet()))
.build();
}
};
}
}
在wallet-domain项目的behavior
中增加行为现实类
DefaultBehavior
抽象类doAction()
,增加操作逻辑getInOutFlag()
资金进出状态public class LockBehavior extends DefaultBehavior {
public LockBehavior(Wallet wallet) {
super(wallet);
}
/**
* 执行
*/
@Override
public void doAction() {
super.doAction();
wallet.setWalletStatus(WalletStatus.LOCKED);
}
/**
* 进出状态
*
*/
@Override
public InOutFlag getInOutFlag() {
return InOutFlag.NONE;
}
}
在wallet-domain项目的policy
中增加行为现实类
CheckPolicy
接口check()
中设置具体业务规则public class NoAvailableStatusAllowed implements CheckPolicy {
/**
* 钱包
*/
private final Wallet wallet;
public NoAvailableStatusAllowed(Wallet wallet) {
this.wallet = wallet;
}
/**
* 检查
*
*/
@Override
public void check() {
if (!WalletStatus.AVAILABLE.equals(wallet.getWalletStatus())){
throw new BizException("钱包状态不可用");
}
}
}
这个项目 MIT 协议, 请点击 LICENSE.md 了解更多细节。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。