mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-12 18:18:03 +08:00
余额支付订单
This commit is contained in:
@@ -111,8 +111,18 @@ public interface IPileMerchantInfoService {
|
|||||||
*/
|
*/
|
||||||
List<String> getDeptIdsByAppId(String appId);
|
List<String> getDeptIdsByAppId(String appId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过wechatAppId查询一级运营商的延时支付模式配置
|
||||||
|
* @param wechatAppId 微信小程序id
|
||||||
|
* @return 延时分账模式(0-不延时;1-延时分账)
|
||||||
|
*/
|
||||||
String getDelayModeByWechatAppId(String wechatAppId);
|
String getDelayModeByWechatAppId(String wechatAppId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过运营商id查询一级运营商配置的delayMode
|
||||||
|
* @param merchantId 运营商id
|
||||||
|
* @return 延时分账模式(0-不延时;1-延时分账)
|
||||||
|
*/
|
||||||
String getDelayModeByMerchantId(String merchantId);
|
String getDelayModeByMerchantId(String merchantId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2364,6 +2364,9 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
|
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
|
||||||
PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId());
|
PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId());
|
||||||
|
|
||||||
|
// 运营商id
|
||||||
|
String merchantId = pileBasicInfo.getMerchantId() + "";
|
||||||
|
|
||||||
if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
|
if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
|
||||||
// 是平台测试员
|
// 是平台测试员
|
||||||
accountBalance = new BigDecimal("500");
|
accountBalance = new BigDecimal("500");
|
||||||
@@ -2375,7 +2378,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
||||||
} else {
|
} else {
|
||||||
// 通过memberId获取账户余额
|
// 通过memberId获取账户余额
|
||||||
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), pileBasicInfo.getMerchantId() + "");
|
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
||||||
if (memberVO == null) {
|
if (memberVO == null) {
|
||||||
throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR);
|
throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR);
|
||||||
}
|
}
|
||||||
@@ -2433,7 +2436,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
|||||||
// payOrderDTO.setLockValue();
|
// payOrderDTO.setLockValue();
|
||||||
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||||
|
|
||||||
payOrder(payOrderDTO);
|
// payOrder(payOrderDTO);
|
||||||
|
|
||||||
|
String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
||||||
|
// 获取处理逻辑
|
||||||
|
AbstractOrderLogic orderLogic = OrderLogicFactory.getOrderLogic(mode);
|
||||||
|
orderLogic.payOrder(payOrderDTO);
|
||||||
|
|
||||||
// 推送小程序启动充电消息
|
// 推送小程序启动充电消息
|
||||||
// 通过memberId查询openId
|
// 通过memberId查询openId
|
||||||
|
|||||||
@@ -330,69 +330,51 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic {
|
|||||||
String memberId = dto.getMemberId();
|
String memberId = dto.getMemberId();
|
||||||
// 查询该会员的余额 在所属运营商的余额
|
// 查询该会员的余额 在所属运营商的余额
|
||||||
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
||||||
// MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByMemberId(memberId, merchantId);
|
// 总余额
|
||||||
BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); // 总余额
|
BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount();
|
||||||
|
|
||||||
if (totalAccountAmount.compareTo(chargeAmount) < 0) {
|
if (totalAccountAmount.compareTo(chargeAmount) < 0) {
|
||||||
// 总余额小于充电金额
|
// 总余额小于充电金额
|
||||||
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||||
}
|
}
|
||||||
BigDecimal principalPay = chargeAmount;
|
BigDecimal principalPay = chargeAmount;
|
||||||
|
|
||||||
// 更新会员钱包
|
// 更新会员钱包 全部金额都用于支付订单
|
||||||
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder()
|
||||||
.memberId(memberId)
|
.memberId(memberId)
|
||||||
.targetMerchantId(merchantId)
|
.targetMerchantId(merchantId)
|
||||||
.type(MemberWalletEnum.TYPE_OUT.getValue())
|
.type(MemberWalletEnum.TYPE_OUT.getValue())
|
||||||
.subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
|
.subType(MemberWalletEnum.SUBTYPE_PAYMENT_FOR_ORDER.getValue())
|
||||||
.updatePrincipalBalance(principalPay) // 使用本金支付的金额
|
.updatePrincipalBalance(memberVO.getPrincipalBalance()) // 使用本金支付的金额
|
||||||
|
.updateGiftBalance(memberVO.getGiftBalance()) // 赠送金额支付
|
||||||
.relatedOrderCode(orderCode)
|
.relatedOrderCode(orderCode)
|
||||||
.build();
|
.build();
|
||||||
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
|
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
|
||||||
|
|
||||||
// 查询余额充值有剩余的记录
|
|
||||||
// List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(memberId, chargeAmount);
|
|
||||||
|
|
||||||
// 记录订单支付流水
|
OrderPayRecord principalPayRecord = OrderPayRecord.builder()
|
||||||
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)
|
.orderCode(orderCode)
|
||||||
.payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|
.payMode(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|
||||||
.payAmount(principalPay)
|
.payAmount(memberVO.getPrincipalBalance())
|
||||||
.acquirer(AcquirerEnum.LOCAL.getValue())
|
.acquirer(AcquirerEnum.LOCAL.getValue())
|
||||||
.deductionRecord(JSON.toJSONString(paymentInfos))
|
|
||||||
.createBy(memberId)
|
.createBy(memberId)
|
||||||
|
.createTime(DateUtils.getNowDate())
|
||||||
|
.delFlag(DelFlagEnum.NORMAL.getValue())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
OrderPayRecord giftPayRecord = OrderPayRecord.builder()
|
||||||
|
.orderCode(orderCode)
|
||||||
|
.payMode(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())
|
||||||
|
.payAmount(memberVO.getGiftBalance())
|
||||||
|
.acquirer(AcquirerEnum.LOCAL.getValue())
|
||||||
|
.createBy(memberId)
|
||||||
|
.createTime(DateUtils.getNowDate())
|
||||||
.delFlag(DelFlagEnum.NORMAL.getValue())
|
.delFlag(DelFlagEnum.NORMAL.getValue())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// 记录支订单付流水
|
// 记录支订单付流水
|
||||||
List<OrderPayRecord> payRecordList = Lists.newArrayList(build);
|
List<OrderPayRecord> payRecordList = Lists.newArrayList(principalPayRecord, giftPayRecord);
|
||||||
orderPayRecordService.batchInsert(payRecordList);
|
orderPayRecordService.batchInsert(payRecordList);
|
||||||
|
|
||||||
// 把消费金额冻结
|
|
||||||
// for (OrderPayRecord record : payRecordList) {
|
|
||||||
// List<PaymentInfo> paymentInfoList = 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()
|
PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder()
|
||||||
.orderCode(orderCode)
|
.orderCode(orderCode)
|
||||||
|
|||||||
Reference in New Issue
Block a user