mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-19 18:45:03 +08:00
update 添加临时方法,更新adapayUnsplitRecord数据
This commit is contained in:
@@ -1,24 +1,18 @@
|
||||
package com.jsowell.quartz.task;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.dto.PaymentConfirmParam;
|
||||
import com.jsowell.adapay.dto.WithdrawDTO;
|
||||
import com.jsowell.adapay.response.PaymentConfirmResponse;
|
||||
import com.jsowell.adapay.service.AdapayService;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||
import com.jsowell.common.util.AdapayUtil;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.PageUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.spring.SpringUtils;
|
||||
import com.jsowell.pile.domain.AdapayUnsplitRecord;
|
||||
import com.jsowell.pile.domain.OrderBasicInfo;
|
||||
import com.jsowell.pile.domain.OrderUnsplitRecord;
|
||||
import com.jsowell.pile.domain.PileMerchantInfo;
|
||||
import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.domain.ykcCommond.PublishPileBillingTemplateCommand;
|
||||
@@ -38,9 +32,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component("jsowellTask")
|
||||
@@ -81,8 +73,11 @@ public class JsowellTask {
|
||||
@Autowired
|
||||
private ThirdPartyStationRelationService thirdPartyStationRelationService;
|
||||
|
||||
// @Autowired
|
||||
// private OrderUnsplitRecordService orderUnsplitRecordService;
|
||||
|
||||
@Autowired
|
||||
private OrderUnsplitRecordService orderUnsplitRecordService;
|
||||
private AdapayUnsplitRecordService adapayUnsplitRecordService;
|
||||
|
||||
/**
|
||||
* 设置挡板, PRE环境不执行
|
||||
@@ -422,84 +417,108 @@ public class JsowellTask {
|
||||
|
||||
// 查询未分帐订单
|
||||
PageUtils.startPage(1, 1000);
|
||||
List<OrderUnsplitRecord> list = orderUnsplitRecordService.queryUnsplitOrders(startTime, endTime);
|
||||
}
|
||||
|
||||
private void processUnSettledOrderOld() {
|
||||
String startTime = "2023-01-01 00:00:00";
|
||||
String endTime = "2024-12-31 23:59:59";
|
||||
|
||||
// 使用redis控制请求api
|
||||
Boolean setnx = redisCache.setnx(CacheConstants.PROCESS_UNSPLIT_ORDERS, Constants.ONE, 65);
|
||||
if (!setnx) {
|
||||
List<AdapayUnsplitRecord> list = adapayUnsplitRecordService.queryUnsplitOrders(startTime, endTime);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
// 转为map, key:orderCode, value:AdapayUnsplitRecord
|
||||
Map<String, AdapayUnsplitRecord> map = list.stream().collect(Collectors.toMap(AdapayUnsplitRecord::getOrderCode, v -> v));
|
||||
|
||||
// 查询未分帐订单
|
||||
PageUtils.startPage(1, 10);
|
||||
List<OrderUnsplitRecord> list = orderUnsplitRecordService.queryUnsplitOrders(startTime, endTime);
|
||||
// 取keySet
|
||||
Set<String> orderCodes = map.keySet();
|
||||
|
||||
log.info("处理未分帐订单start, 当前时间:{}, 查询出[{}]条未分账订单, 下面进行处理", DateUtils.getDateTime(), list.size());
|
||||
int count = 0;
|
||||
for (OrderUnsplitRecord orderUnsplitRecord : list) {
|
||||
String paymentId = orderUnsplitRecord.getPaymentId();
|
||||
String orderCode = orderUnsplitRecord.getOrderCode();
|
||||
BigDecimal confirmAmt = orderUnsplitRecord.getSettleAmount();
|
||||
// 查询订单的退款金额与结算金额
|
||||
List<OrderBasicInfo> orderList = orderBasicInfoService.selectOrderTemp(orderCodes);
|
||||
// 转为map, key:orderCode, value:OrderBasicInfo
|
||||
Map<String, OrderBasicInfo> orderMap = orderList.stream().collect(Collectors.toMap(OrderBasicInfo::getOrderCode, v -> v));
|
||||
|
||||
DivMember divMember = new DivMember();
|
||||
divMember.setMemberId(Constants.ZERO); // 若是商户本身时,传入0
|
||||
divMember.setAmount(AdapayUtil.formatAmount(confirmAmt));
|
||||
divMember.setFeeFlag(Constants.Y);
|
||||
|
||||
PaymentConfirmParam param = PaymentConfirmParam.builder()
|
||||
.paymentId(paymentId)
|
||||
.divMemberList(Lists.newArrayList(divMember))
|
||||
.confirmAmt(confirmAmt)
|
||||
.orderCode(orderCode)
|
||||
.wechatAppId(Constants.DEFAULT_APP_ID) // 默认使用万车充的appId
|
||||
.build();
|
||||
// 延时分账,使用确认交易API
|
||||
PaymentConfirmResponse paymentConfirmResponse = adapayService.createPaymentConfirmRequest(param);
|
||||
|
||||
// 如果确认交易成功,则更新订单状态为已分账
|
||||
if (paymentConfirmResponse.isSuccess()) {
|
||||
count++;
|
||||
orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
|
||||
orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
|
||||
log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
|
||||
} else {
|
||||
// error_type:api_error, error_code:confirm_amt_over_limit, error_msg当前确认金额 > 支付金额 - 已支付确认金额 - 已支付撤销金额
|
||||
if (paymentConfirmResponse.getError_code().equals("confirm_amt_over_limit")) {
|
||||
// 查询paymentId的总分账金额
|
||||
BigDecimal totalSplitAmount;
|
||||
try {
|
||||
totalSplitAmount = adapayService.getTotalSplitAmountByPaymentId(paymentId);
|
||||
} catch (BaseAdaPayException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (totalSplitAmount.compareTo(confirmAmt) == 0) {
|
||||
// 如果总分账金额等于当前分账金额,则更新订单状态为已分账
|
||||
orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
|
||||
orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
|
||||
log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
|
||||
} else {
|
||||
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
}
|
||||
}
|
||||
|
||||
// error_type:invalid_request_error, error_code:payment_over_time_doing, error_msg:数据正在处理中,请稍后再试
|
||||
if (paymentConfirmResponse.getError_code().equals("payment_over_time_doing")) {
|
||||
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
break;
|
||||
}
|
||||
// error_type:invalid_request_error, error_code:refund_repeate_request, error_msg:请求过于频繁
|
||||
if (paymentConfirmResponse.getError_code().equals("refund_repeate_request")) {
|
||||
log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
break;
|
||||
}
|
||||
}
|
||||
List<AdapayUnsplitRecord> updateList = new ArrayList<>();
|
||||
//更新map
|
||||
for (String orderCode : orderCodes) {
|
||||
OrderBasicInfo orderBasicInfo = orderMap.get(orderCode);
|
||||
AdapayUnsplitRecord adapayUnsplitRecord = map.get(orderCode);
|
||||
adapayUnsplitRecord.setDueRefundAmount(orderBasicInfo.getRefundAmount());
|
||||
adapayUnsplitRecord.setSettleAmount(orderBasicInfo.getSettleAmount());
|
||||
updateList.add(adapayUnsplitRecord);
|
||||
}
|
||||
log.info("处理未分帐订单end, 当前时间:[{}], 成功分账[{}]条订单", DateUtils.getDateTime(), count);
|
||||
adapayUnsplitRecordService.updateBatchSelective(updateList);
|
||||
}
|
||||
|
||||
// private void processUnSettledOrderOld() {
|
||||
// String startTime = "2023-01-01 00:00:00";
|
||||
// String endTime = "2024-12-31 23:59:59";
|
||||
//
|
||||
// // 使用redis控制请求api
|
||||
// Boolean setnx = redisCache.setnx(CacheConstants.PROCESS_UNSPLIT_ORDERS, Constants.ONE, 65);
|
||||
// if (!setnx) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 查询未分帐订单
|
||||
// PageUtils.startPage(1, 10);
|
||||
// List<OrderUnsplitRecord> list = orderUnsplitRecordService.queryUnsplitOrders(startTime, endTime);
|
||||
//
|
||||
// log.info("处理未分帐订单start, 当前时间:{}, 查询出[{}]条未分账订单, 下面进行处理", DateUtils.getDateTime(), list.size());
|
||||
// int count = 0;
|
||||
// for (OrderUnsplitRecord orderUnsplitRecord : list) {
|
||||
// String paymentId = orderUnsplitRecord.getPaymentId();
|
||||
// String orderCode = orderUnsplitRecord.getOrderCode();
|
||||
// BigDecimal confirmAmt = orderUnsplitRecord.getSettleAmount();
|
||||
//
|
||||
// DivMember divMember = new DivMember();
|
||||
// divMember.setMemberId(Constants.ZERO); // 若是商户本身时,传入0
|
||||
// divMember.setAmount(AdapayUtil.formatAmount(confirmAmt));
|
||||
// divMember.setFeeFlag(Constants.Y);
|
||||
//
|
||||
// PaymentConfirmParam param = PaymentConfirmParam.builder()
|
||||
// .paymentId(paymentId)
|
||||
// .divMemberList(Lists.newArrayList(divMember))
|
||||
// .confirmAmt(confirmAmt)
|
||||
// .orderCode(orderCode)
|
||||
// .wechatAppId(Constants.DEFAULT_APP_ID) // 默认使用万车充的appId
|
||||
// .build();
|
||||
// // 延时分账,使用确认交易API
|
||||
// PaymentConfirmResponse paymentConfirmResponse = adapayService.createPaymentConfirmRequest(param);
|
||||
//
|
||||
// // 如果确认交易成功,则更新订单状态为已分账
|
||||
// if (paymentConfirmResponse.isSuccess()) {
|
||||
// count++;
|
||||
// orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
|
||||
// orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
|
||||
// log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
|
||||
// } else {
|
||||
// // error_type:api_error, error_code:confirm_amt_over_limit, error_msg当前确认金额 > 支付金额 - 已支付确认金额 - 已支付撤销金额
|
||||
// if (paymentConfirmResponse.getError_code().equals("confirm_amt_over_limit")) {
|
||||
// // 查询paymentId的总分账金额
|
||||
// BigDecimal totalSplitAmount;
|
||||
// try {
|
||||
// totalSplitAmount = adapayService.getTotalSplitAmountByPaymentId(paymentId);
|
||||
// } catch (BaseAdaPayException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// if (totalSplitAmount.compareTo(confirmAmt) == 0) {
|
||||
// // 如果总分账金额等于当前分账金额,则更新订单状态为已分账
|
||||
// orderUnsplitRecord.setStatus(AdapayStatusEnum.SUCCEEDED.getValue());
|
||||
// orderUnsplitRecordService.updateOrderUnsplitRecord(orderUnsplitRecord);
|
||||
// log.info("processUnsplitOrders, 分账成功, paymentId:{}", paymentId);
|
||||
// } else {
|
||||
// log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // error_type:invalid_request_error, error_code:payment_over_time_doing, error_msg:数据正在处理中,请稍后再试
|
||||
// if (paymentConfirmResponse.getError_code().equals("payment_over_time_doing")) {
|
||||
// log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
// break;
|
||||
// }
|
||||
// // error_type:invalid_request_error, error_code:refund_repeate_request, error_msg:请求过于频繁
|
||||
// if (paymentConfirmResponse.getError_code().equals("refund_repeate_request")) {
|
||||
// log.info("processUnsplitOrders, 分账失败, paymentId:{}, 错误信息:{}", paymentId, paymentConfirmResponse.getError_msg());
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// log.info("处理未分帐订单end, 当前时间:[{}], 成功分账[{}]条订单", DateUtils.getDateTime(), count);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user