mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-21 03:25:12 +08:00
交易分账 重构
This commit is contained in:
@@ -36,10 +36,10 @@ spring:
|
||||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
#url: jdbc:mysql://192.168.2.2:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
#username: jsowell_dev
|
||||
url: jdbc:mysql://192.168.2.2:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: jsowell_prd_copy
|
||||
url: jdbc:mysql://192.168.2.2:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: jsowell_dev
|
||||
#url: jdbc:mysql://192.168.2.2:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
#username: jsowell_prd_copy
|
||||
password: 123456
|
||||
# 从库数据源
|
||||
slave:
|
||||
|
||||
@@ -288,9 +288,54 @@ public class SpringBootTestController {
|
||||
@Test
|
||||
public void testCalculateTheBalanceDeductionAmount() {
|
||||
String memberId = "123456";
|
||||
BigDecimal amount = new BigDecimal("99.9");
|
||||
List<BalanceDeductionAmountVO> list = orderBasicInfoService.calculateTheBalanceDeductionAmount(memberId, amount);
|
||||
System.out.println(JSON.toJSONString(list));
|
||||
BigDecimal amount = new BigDecimal("20");
|
||||
|
||||
List<BalanceDeductionAmountVO> resultList = Lists.newArrayList();
|
||||
// 查询会员的余额充值记录 按照充值时间正序
|
||||
List<MemberAdapayRecord> memberAdapayRecords = Lists.newArrayList();
|
||||
memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("1").balanceAmt(new BigDecimal("50")).build());
|
||||
memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("2").balanceAmt(new BigDecimal("60")).build());
|
||||
memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("3").balanceAmt(new BigDecimal("10")).build());
|
||||
|
||||
// 定义一个临时金额等于消费金额
|
||||
BigDecimal tempAmount = new BigDecimal(amount.toString());
|
||||
for (MemberAdapayRecord memberAdapayRecord : memberAdapayRecords) {
|
||||
// 该笔支付剩余金额 取出一笔判断是否剩余金额够支付订单消费吗
|
||||
BigDecimal balanceAmt = memberAdapayRecord.getBalanceAmt();
|
||||
// 该笔支付扣除金额
|
||||
BigDecimal deductionAmount;
|
||||
// 获取延时分账模式 延时分账的使用撤销方法退款,实时分账的使用退款方法
|
||||
// AdapayCallbackRecord callbackRecord = adapayCallbackRecordService.selectByPaymentId(memberAdapayRecord.getPaymentId());
|
||||
// String payMode = null;
|
||||
// if (callbackRecord != null) {
|
||||
// JSONObject expendJsonObject = JSON.parseObject(callbackRecord.getExpend());
|
||||
// payMode = expendJsonObject.getString("payMode");
|
||||
// }
|
||||
// 消费金额 - 剩余金额
|
||||
tempAmount = tempAmount.subtract(balanceAmt);
|
||||
if (tempAmount.compareTo(BigDecimal.ZERO) >= 0) {
|
||||
// 计算以后,大于等于0,说明这笔支付剩余金额需要扣完
|
||||
deductionAmount = balanceAmt;
|
||||
BalanceDeductionAmountVO build = BalanceDeductionAmountVO.builder()
|
||||
.memberId(memberId)
|
||||
.paymentId(memberAdapayRecord.getPaymentId())
|
||||
.deductionAmount(deductionAmount)
|
||||
.build();
|
||||
resultList.add(build);
|
||||
} else {
|
||||
// 如果小于0,则说明剩余的钱用不完,扣除金额等于消费金额,并结束循环
|
||||
deductionAmount = balanceAmt.add(tempAmount);
|
||||
BalanceDeductionAmountVO build = BalanceDeductionAmountVO.builder()
|
||||
.memberId(memberId)
|
||||
.paymentId(memberAdapayRecord.getPaymentId())
|
||||
.deductionAmount(deductionAmount)
|
||||
.build();
|
||||
resultList.add(build);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println(JSON.toJSONString(resultList));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user