mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-11 18:59:51 +08:00
update 解析扣款记录bug
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package com.jsowell.pile.service.orderlogic;
|
package com.jsowell.pile.service.orderlogic;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@@ -414,33 +415,59 @@ public abstract class AbstractOrderLogic implements InitializingBean {
|
|||||||
|
|
||||||
BigDecimal tempAmount = new BigDecimal(orderAmount.toString()); // 临时金额
|
BigDecimal tempAmount = new BigDecimal(orderAmount.toString()); // 临时金额
|
||||||
for (OrderPayRecord record : payRecordList) {
|
for (OrderPayRecord record : payRecordList) {
|
||||||
JSONObject jsonObject = JSON.parseObject(record.getDeductionRecord());
|
// String deductionRecord = record.getDeductionRecord();
|
||||||
String paymentId = jsonObject.getString("paymentId");
|
// JSONObject jsonObject = JSON.parseObject(deductionRecord);
|
||||||
BigDecimal payAmount = record.getPayAmount(); // 此交易单支付的金额
|
|
||||||
// 该笔支付扣除金额
|
List<JSONObject> jsonObjects = parseDeductionRecord(record.getDeductionRecord());
|
||||||
BigDecimal deductionAmount;
|
for (JSONObject object : jsonObjects) {
|
||||||
// 该笔支付解冻金额
|
String paymentId = object.getString("paymentId");
|
||||||
BigDecimal unfreezeAmount = null;
|
BigDecimal payAmount = object.getBigDecimal("amount"); // 此交易单支付的金额
|
||||||
// 临时消费金额 = 临时消费金额 - 该笔交易的剩余金额
|
// 该笔支付扣除金额
|
||||||
tempAmount = tempAmount.subtract(payAmount);
|
BigDecimal deductionAmount;
|
||||||
if (tempAmount.compareTo(BigDecimal.ZERO) >= 0) {
|
// 该笔支付解冻金额
|
||||||
// 计算以后,大于等于0,说明这笔支付剩余金额需要扣完,还要继续扣下一笔
|
BigDecimal unfreezeAmount = null;
|
||||||
deductionAmount = payAmount;
|
// 临时消费金额 = 临时消费金额 - 该笔交易的剩余金额
|
||||||
unfreezeAmount = payAmount.subtract(deductionAmount); // 支付金额 - 扣除金额 = 需要退回的金额
|
tempAmount = tempAmount.subtract(payAmount);
|
||||||
Map<String, Object> map = Maps.newHashMap();
|
if (tempAmount.compareTo(BigDecimal.ZERO) >= 0) {
|
||||||
map.put("paymentId", paymentId);
|
// 计算以后,大于等于0,说明这笔支付剩余金额需要扣完,还要继续扣下一笔
|
||||||
map.put("unfreezeAmount", unfreezeAmount);
|
deductionAmount = payAmount;
|
||||||
resultList.add(map);
|
unfreezeAmount = payAmount.subtract(deductionAmount); // 支付金额 - 扣除金额 = 需要退回的金额
|
||||||
} else {
|
Map<String, Object> map = Maps.newHashMap();
|
||||||
// 如果小于0,则说明该笔交易的剩余金额用不完,扣除金额等于临时消费金额,并结束循环
|
map.put("paymentId", paymentId);
|
||||||
deductionAmount = payAmount.add(tempAmount); // 该笔交易的剩余金额加上一个负数临时消费金额,就是该笔交易扣除金额
|
map.put("unfreezeAmount", unfreezeAmount);
|
||||||
unfreezeAmount = payAmount.subtract(deductionAmount); // 支付金额 - 扣除金额 = 需要退回的金额
|
resultList.add(map);
|
||||||
Map<String, Object> map = Maps.newHashMap();
|
} else {
|
||||||
map.put("paymentId", paymentId);
|
// 如果小于0,则说明该笔交易的剩余金额用不完,扣除金额等于临时消费金额,并结束循环
|
||||||
map.put("unfreezeAmount", unfreezeAmount);
|
deductionAmount = payAmount.add(tempAmount); // 该笔交易的剩余金额加上一个负数临时消费金额,就是该笔交易扣除金额
|
||||||
resultList.add(map);
|
unfreezeAmount = payAmount.subtract(deductionAmount); // 支付金额 - 扣除金额 = 需要退回的金额
|
||||||
break;
|
Map<String, Object> map = Maps.newHashMap();
|
||||||
|
map.put("paymentId", paymentId);
|
||||||
|
map.put("unfreezeAmount", unfreezeAmount);
|
||||||
|
resultList.add(map);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析deductionRecord
|
||||||
|
* 【公共方法】
|
||||||
|
*/
|
||||||
|
protected List<JSONObject> parseDeductionRecord(String deductionRecord) {
|
||||||
|
List<JSONObject> resultList = Lists.newArrayList();
|
||||||
|
if (StringUtils.isBlank(deductionRecord)) {
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
Object object = JSON.parse(deductionRecord);
|
||||||
|
|
||||||
|
// 都放入list里
|
||||||
|
if (object instanceof JSONArray) {
|
||||||
|
resultList.addAll(((JSONArray) object).toList(JSONObject.class));
|
||||||
|
} else {
|
||||||
|
resultList.add((JSONObject) object);
|
||||||
}
|
}
|
||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280,16 +280,18 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic {
|
|||||||
|
|
||||||
// 把消费金额冻结
|
// 把消费金额冻结
|
||||||
for (OrderPayRecord record : payRecordList) {
|
for (OrderPayRecord record : payRecordList) {
|
||||||
String deductionRecord = record.getDeductionRecord();
|
// String deductionRecord = record.getDeductionRecord();
|
||||||
Object object = JSON.parse(deductionRecord);
|
// Object object = JSON.parse(deductionRecord);
|
||||||
|
//
|
||||||
|
// // 都放入list里
|
||||||
|
// List<JSONObject> arr = Lists.newArrayList();
|
||||||
|
// if (object instanceof JSONArray) {
|
||||||
|
// arr.addAll(((JSONArray) object).toList(JSONObject.class));
|
||||||
|
// } else {
|
||||||
|
// arr.add((JSONObject) object);
|
||||||
|
// }
|
||||||
|
|
||||||
// 都放入list里
|
List<JSONObject> arr = parseDeductionRecord(record.getDeductionRecord());
|
||||||
List<JSONObject> arr = Lists.newArrayList();
|
|
||||||
if (object instanceof JSONArray) {
|
|
||||||
arr.addAll(((JSONArray) object).toList(JSONObject.class));
|
|
||||||
} else {
|
|
||||||
arr.add((JSONObject) object);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 循环冻结金额
|
// 循环冻结金额
|
||||||
for (JSONObject jsonObject : arr) {
|
for (JSONObject jsonObject : arr) {
|
||||||
|
|||||||
Reference in New Issue
Block a user