mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 19:15:35 +08:00
update
This commit is contained in:
@@ -331,7 +331,7 @@ public interface OrderBasicInfoService{
|
||||
|
||||
void analysisPileParameter(BasicPileDTO dto);
|
||||
|
||||
Map<String, Object> payOrder(PayOrderDTO dto) throws Exception;
|
||||
// Map<String, Object> payOrder(PayOrderDTO dto) throws Exception;
|
||||
|
||||
/**
|
||||
* 订单支付成功 支付回调
|
||||
|
||||
@@ -2993,37 +2993,37 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> payOrder(PayOrderDTO dto) {
|
||||
OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
if (orderInfo == null) {
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
}
|
||||
if (!StringUtils.equals(orderInfo.getPayStatus(), OrderPayStatusEnum.unpaid.getValue())) {
|
||||
// 订单已支付
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_ORDER_IS_NOT_TO_BE_PAID_ERROR);
|
||||
}
|
||||
Map<String, Object> resultMap = Maps.newHashMap();
|
||||
if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
|
||||
// 余额支付
|
||||
// balancePayOrder(dto);
|
||||
balancePayOrderV2(dto);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
|
||||
// 2023-07-11 全部改为汇付支付
|
||||
dto.setGoodsTitle("充电费用");
|
||||
dto.setGoodsDesc("充电桩预付款金额");
|
||||
dto.setType(ScenarioEnum.ORDER.getValue());
|
||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
|
||||
// 返回微信支付参数
|
||||
resultMap.put("weixinMap", weixinMap);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
||||
// 白名单支付可以直接调支付回调方法
|
||||
dto.setPayAmount(Constants.whitelistDefaultAmount);
|
||||
whiteListPayOrder(dto);
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
// @Override
|
||||
// public Map<String, Object> payOrder(PayOrderDTO dto) {
|
||||
// OrderBasicInfo orderInfo = this.getOrderInfoByOrderCode(dto.getOrderCode());
|
||||
// if (orderInfo == null) {
|
||||
// throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
|
||||
// }
|
||||
// if (!StringUtils.equals(orderInfo.getPayStatus(), OrderPayStatusEnum.unpaid.getValue())) {
|
||||
// // 订单已支付
|
||||
// throw new BusinessException(ReturnCodeEnum.CODE_ORDER_IS_NOT_TO_BE_PAID_ERROR);
|
||||
// }
|
||||
// Map<String, Object> resultMap = Maps.newHashMap();
|
||||
// if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) {
|
||||
// // 余额支付
|
||||
// // balancePayOrder(dto);
|
||||
// balancePayOrderV2(dto);
|
||||
// } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())) {
|
||||
// // 2023-07-11 全部改为汇付支付
|
||||
// dto.setGoodsTitle("充电费用");
|
||||
// dto.setGoodsDesc("充电桩预付款金额");
|
||||
// dto.setType(ScenarioEnum.ORDER.getValue());
|
||||
// Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
//
|
||||
// // 返回微信支付参数
|
||||
// resultMap.put("weixinMap", weixinMap);
|
||||
// } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
||||
// // 白名单支付可以直接调支付回调方法
|
||||
// dto.setPayAmount(Constants.whitelistDefaultAmount);
|
||||
// whiteListPayOrder(dto);
|
||||
// }
|
||||
// return resultMap;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 白名单支付订单逻辑
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||
import com.jsowell.adapay.vo.PaymentInfo;
|
||||
import com.jsowell.common.constant.CacheConstants;
|
||||
import com.jsowell.common.constant.Constants;
|
||||
import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||
@@ -119,98 +118,98 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
||||
* 余额支付订单
|
||||
* 使用的是通过汇付充值的余额
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void balancePayOrder(PayOrderDTO dto) {
|
||||
logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto));
|
||||
// 订单编号
|
||||
String orderCode = dto.getOrderCode();
|
||||
// 支付金额
|
||||
BigDecimal chargeAmount = dto.getPayAmount();
|
||||
// 查询该会员的余额
|
||||
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
|
||||
BigDecimal totalAccountAmount = memberVO.getPrincipalBalance();
|
||||
|
||||
if (totalAccountAmount.compareTo(chargeAmount) < 0) {
|
||||
// 总余额小于充电金额
|
||||
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||
}
|
||||
BigDecimal principalPay = chargeAmount;
|
||||
|
||||
// 更新会员钱包
|
||||
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
||||
.memberId(dto.getMemberId())
|
||||
.type(MemberWalletEnum.TYPE_OUT.getValue())
|
||||
.subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
|
||||
.updatePrincipalBalance(principalPay) // 使用本金支付的金额
|
||||
.relatedOrderCode(orderCode)
|
||||
.build();
|
||||
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
|
||||
|
||||
// 查询余额充值有剩余的记录
|
||||
List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount);
|
||||
|
||||
// 记录订单支付流水
|
||||
BigDecimal payAmt = BigDecimal.ZERO;
|
||||
List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
||||
for (BalanceDeductionAmountVO balanceDeductionAmountVO : list) {
|
||||
String paymentId = balanceDeductionAmountVO.getPaymentId();
|
||||
// 此交易单扣除金额
|
||||
BigDecimal deductionAmount = balanceDeductionAmountVO.getDeductionAmount();
|
||||
payAmt = payAmt.add(deductionAmount);
|
||||
|
||||
PaymentInfo paymentInfo = new PaymentInfo();
|
||||
paymentInfo.setPaymentId(paymentId);
|
||||
paymentInfo.setAmount(deductionAmount.toString());
|
||||
paymentInfos.add(paymentInfo);
|
||||
}
|
||||
OrderPayRecord build = OrderPayRecord.builder()
|
||||
.orderCode(orderCode)
|
||||
.payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|
||||
.payAmount(payAmt)
|
||||
.acquirer(AcquirerEnum.LOCAL.getValue())
|
||||
.deductionRecord(JSON.toJSONString(paymentInfos))
|
||||
.createBy(dto.getMemberId())
|
||||
.delFlag(DelFlagEnum.NORMAL.getValue())
|
||||
.build();
|
||||
|
||||
// 记录支订单付流水
|
||||
List<OrderPayRecord> payRecordList = Lists.newArrayList(build);
|
||||
orderPayRecordService.batchInsert(payRecordList);
|
||||
|
||||
// 把消费金额冻结
|
||||
for (OrderPayRecord record : payRecordList) {
|
||||
List<PaymentInfo> paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord());
|
||||
// 循环冻结金额
|
||||
for (PaymentInfo paymentInfo : paymentInfoList) {
|
||||
String paymentId = paymentInfo.getPaymentId();
|
||||
BigDecimal amount = new BigDecimal(paymentInfo.getAmount());
|
||||
// 余额支付 临时冻结金额
|
||||
memberAdapayRecordService.updateFreezeAmount(paymentId, amount);
|
||||
}
|
||||
}
|
||||
|
||||
// 余额支付可以直接调支付回调方法
|
||||
PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
|
||||
.orderCode(orderCode)
|
||||
.payAmount(chargeAmount)
|
||||
.payMode(dto.getPayMode())
|
||||
.startMode(dto.getStartMode())
|
||||
.acquirer(AcquirerEnum.LOCAL.getValue())
|
||||
.build();
|
||||
payOrderSuccessCallback(callbackDTO);
|
||||
|
||||
// 余额支付订单 记录会员交易流水
|
||||
MemberTransactionRecord record = MemberTransactionRecord.builder()
|
||||
.orderCode(orderCode)
|
||||
.scenarioType(ScenarioEnum.ORDER.getValue())
|
||||
.memberId(memberVO.getMemberId())
|
||||
.actionType(ActionTypeEnum.FORWARD.getValue())
|
||||
.payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue())
|
||||
.paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue())
|
||||
.amount(dto.getPayAmount()) // 单位元
|
||||
.build();
|
||||
memberTransactionRecordService.insertSelective(record);
|
||||
}
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void balancePayOrder(PayOrderDTO dto) {
|
||||
// logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto));
|
||||
// // 订单编号
|
||||
// String orderCode = dto.getOrderCode();
|
||||
// // 支付金额
|
||||
// BigDecimal chargeAmount = dto.getPayAmount();
|
||||
// // 查询该会员的余额
|
||||
// MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
|
||||
// BigDecimal totalAccountAmount = memberVO.getPrincipalBalance();
|
||||
//
|
||||
// if (totalAccountAmount.compareTo(chargeAmount) < 0) {
|
||||
// // 总余额小于充电金额
|
||||
// throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||
// }
|
||||
// BigDecimal principalPay = chargeAmount;
|
||||
//
|
||||
// // 更新会员钱包
|
||||
// UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
||||
// .memberId(dto.getMemberId())
|
||||
// .type(MemberWalletEnum.TYPE_OUT.getValue())
|
||||
// .subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
|
||||
// .updatePrincipalBalance(principalPay) // 使用本金支付的金额
|
||||
// .relatedOrderCode(orderCode)
|
||||
// .build();
|
||||
// memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
|
||||
//
|
||||
// // 查询余额充值有剩余的记录
|
||||
// List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), chargeAmount);
|
||||
//
|
||||
// // 记录订单支付流水
|
||||
// BigDecimal payAmt = BigDecimal.ZERO;
|
||||
// List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
||||
// for (BalanceDeductionAmountVO balanceDeductionAmountVO : list) {
|
||||
// String paymentId = balanceDeductionAmountVO.getPaymentId();
|
||||
// // 此交易单扣除金额
|
||||
// BigDecimal deductionAmount = balanceDeductionAmountVO.getDeductionAmount();
|
||||
// payAmt = payAmt.add(deductionAmount);
|
||||
//
|
||||
// PaymentInfo paymentInfo = new PaymentInfo();
|
||||
// paymentInfo.setPaymentId(paymentId);
|
||||
// paymentInfo.setAmount(deductionAmount.toString());
|
||||
// paymentInfos.add(paymentInfo);
|
||||
// }
|
||||
// OrderPayRecord build = OrderPayRecord.builder()
|
||||
// .orderCode(orderCode)
|
||||
// .payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|
||||
// .payAmount(payAmt)
|
||||
// .acquirer(AcquirerEnum.LOCAL.getValue())
|
||||
// .deductionRecord(JSON.toJSONString(paymentInfos))
|
||||
// .createBy(dto.getMemberId())
|
||||
// .delFlag(DelFlagEnum.NORMAL.getValue())
|
||||
// .build();
|
||||
//
|
||||
// // 记录支订单付流水
|
||||
// List<OrderPayRecord> payRecordList = Lists.newArrayList(build);
|
||||
// orderPayRecordService.batchInsert(payRecordList);
|
||||
//
|
||||
// // 把消费金额冻结
|
||||
// for (OrderPayRecord record : payRecordList) {
|
||||
// List<PaymentInfo> paymentInfoList = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord());
|
||||
// // 循环冻结金额
|
||||
// for (PaymentInfo paymentInfo : paymentInfoList) {
|
||||
// String paymentId = paymentInfo.getPaymentId();
|
||||
// BigDecimal amount = new BigDecimal(paymentInfo.getAmount());
|
||||
// // 余额支付 临时冻结金额
|
||||
// memberAdapayRecordService.updateFreezeAmount(paymentId, amount);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 余额支付可以直接调支付回调方法
|
||||
// PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
|
||||
// .orderCode(orderCode)
|
||||
// .payAmount(chargeAmount)
|
||||
// .payMode(dto.getPayMode())
|
||||
// .startMode(dto.getStartMode())
|
||||
// .acquirer(AcquirerEnum.LOCAL.getValue())
|
||||
// .build();
|
||||
// payOrderSuccessCallback(callbackDTO);
|
||||
//
|
||||
// // 余额支付订单 记录会员交易流水
|
||||
// MemberTransactionRecord record = MemberTransactionRecord.builder()
|
||||
// .orderCode(orderCode)
|
||||
// .scenarioType(ScenarioEnum.ORDER.getValue())
|
||||
// .memberId(memberVO.getMemberId())
|
||||
// .actionType(ActionTypeEnum.FORWARD.getValue())
|
||||
// .payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue())
|
||||
// .paymentInstitutions(PaymentInstitutionsEnum.LOCAL_ACCOUNTS.getValue())
|
||||
// .amount(dto.getPayAmount()) // 单位元
|
||||
// .build();
|
||||
// memberTransactionRecordService.insertSelective(record);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 万车充小程序-余额支付订单逻辑
|
||||
|
||||
Reference in New Issue
Block a user