mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
update 处理未分账订单
This commit is contained in:
@@ -9,6 +9,7 @@ import com.huifu.adapay.model.Payment;
|
||||
import com.huifu.adapay.model.PaymentReverse;
|
||||
import com.huifu.adapay.model.Refund;
|
||||
import com.jsowell.JsowellApplication;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.common.PaymentConfirmInfo;
|
||||
import com.jsowell.adapay.dto.PaymentConfirmParam;
|
||||
import com.jsowell.adapay.dto.QueryPaymentConfirmDTO;
|
||||
@@ -21,9 +22,13 @@ import com.jsowell.adapay.vo.AdapayCorpMemberVO;
|
||||
import com.jsowell.adapay.vo.OrderSplitResult;
|
||||
import com.jsowell.api.uniapp.customer.TempController;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||
import com.jsowell.common.util.AdapayUtil;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.PageUtils;
|
||||
import com.jsowell.pile.domain.AdapayUnsplitRecord;
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import com.jsowell.pile.domain.OrderDetail;
|
||||
import com.jsowell.pile.domain.OrderUnsplitRecord;
|
||||
@@ -801,18 +806,135 @@ public class PaymentTestController {
|
||||
int pageSize = 3;
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<AdapayUnsplitRecordVO> adapayUnsplitRecordVOS = adapayUnsplitRecordService.queryList();
|
||||
|
||||
// 分账账户
|
||||
List<DivMember> divMemberList = Lists.newArrayList();
|
||||
for (AdapayUnsplitRecordVO adapayUnsplitRecordVO : adapayUnsplitRecordVOS) {
|
||||
System.out.println(adapayUnsplitRecordVO);
|
||||
String orderCode = adapayUnsplitRecordVO.getOrderCode();
|
||||
String paymentId = adapayUnsplitRecordVO.getPaymentId();
|
||||
// 获取待分账金额
|
||||
String waitSplitAmount = adapayUnsplitRecordVO.getWaitSplitAmount();
|
||||
BigDecimal waitSplitAmount = adapayUnsplitRecordVO.getWaitSplitAmount() != null ? new BigDecimal(adapayUnsplitRecordVO.getWaitSplitAmount()) : BigDecimal.ZERO;
|
||||
// 如果waitSplitAmount > 0, 调用分账接口
|
||||
if (waitSplitAmount != null && !"".equals(waitSplitAmount)) {
|
||||
if (waitSplitAmount.compareTo(BigDecimal.ZERO) > 0) {
|
||||
logger.info("订单{}, 待分账金额{}", orderCode, waitSplitAmount);
|
||||
DivMember divMember = new DivMember();
|
||||
divMember.setMemberId(Constants.ZERO); // 若是商户本身时,传入0
|
||||
divMember.setAmount(AdapayUtil.formatAmount(waitSplitAmount));
|
||||
divMember.setFeeFlag(Constants.Y);
|
||||
divMemberList.add(divMember);
|
||||
// 调用分账接口
|
||||
PaymentConfirmParam param = PaymentConfirmParam.builder()
|
||||
.paymentId(paymentId)
|
||||
.divMemberList(divMemberList)
|
||||
.confirmAmt(waitSplitAmount) // 订单结算金额 + 保险金额
|
||||
.orderCode(orderCode)
|
||||
.wechatAppId(wechatAppId1)
|
||||
.build();
|
||||
PaymentConfirmResponse paymentConfirmRequest = adapayService.createPaymentConfirmRequest(param);
|
||||
if (paymentConfirmRequest.isSuccess()) {
|
||||
logger.info("分账成功, 订单号:{}, 分账信息:{}", orderCode, JSON.toJSONString(paymentConfirmRequest));
|
||||
} else {
|
||||
logger.info("分账失败, 订单号:{}, 分账信息:{}", orderCode, JSON.toJSONString(paymentConfirmRequest));
|
||||
}
|
||||
divMemberList.clear();
|
||||
}
|
||||
|
||||
// 获取待退款金额
|
||||
String refundPayAmount = adapayUnsplitRecordVO.getRefundPayAmount();
|
||||
// 获取待退款金额 (sql已经计算过了,refundPayAmount = 订单表中应退款金额 - 汇付查询的已退款金额)
|
||||
// BigDecimal refundPayAmount = adapayUnsplitRecordVO.getRefundPayAmount() != null ? new BigDecimal(adapayUnsplitRecordVO.getRefundPayAmount()) : BigDecimal.ZERO;
|
||||
// if (refundPayAmount.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// // 调用退款接口
|
||||
// logger.info("订单号:{}, 退款金额:{}", orderCode, refundPayAmount);
|
||||
// PaymentReverseResponse response = adapayService.createPaymentReverseRequest(paymentId, refundPayAmount,
|
||||
// wechatAppId1, "", ScenarioEnum.ORDER.getValue(), orderCode);
|
||||
// }
|
||||
}
|
||||
PageHelper.clearPage();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryAdapayData() {
|
||||
String startTime = "2025-01-01 00:00:00";
|
||||
String endTime = "2025-12-31 23:59:59";
|
||||
|
||||
// 查询未分帐订单
|
||||
PageUtils.startPage(1, 99999);
|
||||
List<AdapayUnsplitRecord> list = adapayUnsplitRecordService.queryUnsplitOrders(startTime, endTime);
|
||||
|
||||
// 需要更新的数据
|
||||
List<AdapayUnsplitRecord> updateList = Lists.newArrayList();
|
||||
|
||||
List<JSONObject> listA = Lists.newArrayList();
|
||||
List<JSONObject> listB = Lists.newArrayList();
|
||||
|
||||
// 实用并行流处理list
|
||||
list.parallelStream().forEach(adapayUnsplitRecord -> {
|
||||
QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO();
|
||||
dto.setWechatAppId(Constants.DEFAULT_APP_ID);
|
||||
dto.setPaymentId(adapayUnsplitRecord.getPaymentId());
|
||||
QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto);
|
||||
List<PaymentConfirmInfo> paymentConfirms = response.getPaymentConfirms();
|
||||
if (CollectionUtils.isEmpty(paymentConfirms)) {
|
||||
return;
|
||||
}
|
||||
PaymentConfirmInfo paymentConfirmInfo = paymentConfirms.get(0);
|
||||
String orderCode = adapayUnsplitRecord.getOrderCode();
|
||||
BigDecimal confirmedAmt = new BigDecimal(paymentConfirmInfo.getConfirmedAmt()); // 汇付返回分账金额
|
||||
BigDecimal confirmedSplitAmount = adapayUnsplitRecord.getConfirmedSplitAmount(); // 表中记录分账金额
|
||||
BigDecimal reservedAmt = new BigDecimal(paymentConfirmInfo.getReservedAmt()); // 汇付返回退款金额
|
||||
BigDecimal refundAmount = adapayUnsplitRecord.getRefundAmount(); // 表中记录退款金额
|
||||
logger.info("订单号:{}, 汇付返回分账金额:{}, 表中记录分账金额:{}, 汇付返回退款金额:{}, 表中记录退款金额:{}",
|
||||
orderCode, confirmedAmt, confirmedSplitAmount, reservedAmt, refundAmount);
|
||||
|
||||
boolean updateFlag = false;
|
||||
|
||||
// 如果汇付返回分账金额与表中记录分账金额不一致,则更新表
|
||||
if (confirmedAmt.compareTo(confirmedSplitAmount) > 0) {
|
||||
adapayUnsplitRecord.setConfirmedSplitAmount(confirmedAmt);
|
||||
updateFlag = true;
|
||||
} else if (confirmedAmt.compareTo(confirmedSplitAmount) < 0) {
|
||||
listA.add(JSONObject.of("orderCode", orderCode, "confirmedAmt", confirmedAmt, "confirmedSplitAmount", confirmedSplitAmount));
|
||||
}
|
||||
|
||||
// 如果汇付返回退款金额与表中记录退款金额不一致,则更新表
|
||||
if (reservedAmt.compareTo(refundAmount) > 0) {
|
||||
adapayUnsplitRecord.setRefundAmount(reservedAmt);
|
||||
updateFlag = true;
|
||||
} else if (reservedAmt.compareTo(refundAmount) < 0) {
|
||||
listB.add(JSONObject.of("orderCode", orderCode, "reservedAmt", reservedAmt, "refundAmount", refundAmount));
|
||||
}
|
||||
|
||||
if (updateFlag) {
|
||||
updateList.add(adapayUnsplitRecord);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// if (CollectionUtils.isNotEmpty(updateList)) {
|
||||
// // 分批处理updateList, 每批处理1000条数据
|
||||
// List<List<AdapayUnsplitRecord>> partition = Lists.partition(updateList, 1000);
|
||||
// partition.parallelStream().forEach(list2 -> {
|
||||
// adapayUnsplitRecordService.updateBatchSelective(list2);
|
||||
// });
|
||||
// }
|
||||
logger.info("第{}批处理数据,更新表成功, 共更新{}条数据", 1, updateList.size());
|
||||
logger.info("listA共更新{}条数据, {}", listA.size(), listA);
|
||||
logger.info("listB共更新{}条数据, {}", listB.size(), listB);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void queryAdapayV2() {
|
||||
String paymentId = "002212025070321462910786843519524786176";
|
||||
|
||||
QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO();
|
||||
dto.setWechatAppId(Constants.DEFAULT_APP_ID);
|
||||
dto.setPaymentId(paymentId);
|
||||
QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto);
|
||||
List<PaymentConfirmInfo> paymentConfirms = response.getPaymentConfirms();
|
||||
if (CollectionUtils.isEmpty(paymentConfirms)) {
|
||||
return;
|
||||
}
|
||||
PaymentConfirmInfo paymentConfirmInfo = paymentConfirms.get(0);
|
||||
logger.info("{}", JSON.toJSONString(paymentConfirmInfo));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user