|
|
|
@@ -724,21 +724,47 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
Date curr = new Date(); |
|
|
|
Date valid_date = null; |
|
|
|
int limit_days = Constant.WX_LIMIT_DAYS; |
|
|
|
WxPayAccount payAccount = null; |
|
|
|
WxPayAccount payAccountQ = new WxPayAccount(); |
|
|
|
payAccountQ.updateTenantInfo(order); |
|
|
|
try { |
|
|
|
payAccount = wxPayAccountMapper.selectOne(new QueryWrapper<>(payAccountQ)); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("获取payAccount error: " + order.getTenantId()); |
|
|
|
} |
|
|
|
WxPayOrder payOrder = null; |
|
|
|
if (coupon.getSalePrice() > 0) { |
|
|
|
// 有价券获取payOrder,以备后续使用 |
|
|
|
try { |
|
|
|
WxPayOrder payOrderQ = new WxPayOrder(); |
|
|
|
payOrderQ.updateTenantInfo(order); |
|
|
|
payOrderQ.setOrderId(order.getId()); |
|
|
|
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); |
|
|
|
payOrder = wxPayOrderMapper.selectOne(new QueryWrapper(payOrderQ)); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("payOrder not found:" + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (coupon.getValidType().equals(EnumValidStatus.VALID_RANGE.getCode()) || |
|
|
|
coupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { |
|
|
|
valid_date = coupon.getValidEndDate(); |
|
|
|
if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { |
|
|
|
// 有价券核销有效期不能大于分账过期时间 |
|
|
|
Date limit_date = DateUtils.getTimeAfterDays(limit_days, curr); |
|
|
|
if (valid_date.after(limit_date)) { |
|
|
|
valid_date = limit_date; |
|
|
|
if (payOrder != null && payOrder.getShareAmount() != null) { |
|
|
|
// 分账有价券核销有效期不能大于分账过期时间 |
|
|
|
Date limit_date = DateUtils.getTimeAfterDays(limit_days, curr); |
|
|
|
if (valid_date.after(limit_date)) { |
|
|
|
valid_date = limit_date; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { |
|
|
|
// 有价券核销有效期不能大于分账过期时间 |
|
|
|
if (coupon.getValidDays() < Constant.WX_LIMIT_DAYS) { |
|
|
|
limit_days = coupon.getValidDays(); |
|
|
|
if (payOrder != null && payOrder.getShareAmount() != null) { |
|
|
|
// 分账有价券核销有效期不能大于分账过期时间 |
|
|
|
if (coupon.getValidDays() < Constant.WX_LIMIT_DAYS) { |
|
|
|
limit_days = coupon.getValidDays(); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
limit_days = coupon.getValidDays(); |
|
|
|
@@ -775,7 +801,6 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
|
|
|
|
/// 储值卡信息添加 |
|
|
|
if (isCard) { |
|
|
|
WxPayOrder payOrder = null; |
|
|
|
Integer fee = 0; |
|
|
|
WxCardInfo cardInfo = new WxCardInfo(); |
|
|
|
cardInfo.setId(couponOrder.getId()); |
|
|
|
@@ -784,18 +809,8 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
cardInfo.setAmount(coupon.getPrice()); |
|
|
|
cardInfo.setSaleAmount(coupon.getSalePrice()); |
|
|
|
cardInfo.setRemainingAmount(coupon.getPrice()); |
|
|
|
|
|
|
|
if (!coupon.checkIsFree()) { |
|
|
|
// 有价卡 |
|
|
|
try { |
|
|
|
WxPayOrder payOrderQ = new WxPayOrder(); |
|
|
|
payOrderQ.updateTenantInfo(order); |
|
|
|
payOrderQ.setOrderId(order.getId()); |
|
|
|
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); |
|
|
|
payOrder = wxPayOrderMapper.selectOne(new QueryWrapper(payOrderQ)); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("payOrder not found:" + e.getMessage()); |
|
|
|
} |
|
|
|
cardInfo.setTransactionId(payOrder.getTransactionId()); |
|
|
|
if (payOrder.getShareAmount() != null) { |
|
|
|
// 开启分账 |
|
|
|
@@ -805,23 +820,15 @@ public class WxOrderServiceImpl implements WxOrderService { |
|
|
|
cardInfo.setRateAmount(payOrder.getRateAmount()); |
|
|
|
} else { |
|
|
|
// 未开启分账 |
|
|
|
WxPayAccount payAccount = null; |
|
|
|
WxPayAccount payAccountQ = new WxPayAccount(); |
|
|
|
payAccountQ.updateTenantInfo(order); |
|
|
|
try { |
|
|
|
payAccount = wxPayAccountMapper.selectOne(new QueryWrapper<>(payAccountQ)); |
|
|
|
fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); |
|
|
|
Integer shareAmount = payOrder.getPayAmount() - fee; |
|
|
|
cardInfo.setShareFeeAmount(shareAmount); |
|
|
|
cardInfo.setRemainingShareFeeAmount(shareAmount); |
|
|
|
if (payAccount.getRealRate() != null) { |
|
|
|
int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); |
|
|
|
if (fee > iRealChargeFee) { |
|
|
|
cardInfo.setRateAmount(fee - iRealChargeFee); |
|
|
|
} |
|
|
|
fee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRate(), false); |
|
|
|
Integer shareAmount = payOrder.getPayAmount() - fee; |
|
|
|
cardInfo.setShareFeeAmount(shareAmount); |
|
|
|
cardInfo.setRemainingShareFeeAmount(shareAmount); |
|
|
|
if (payAccount.getRealRate() != null) { |
|
|
|
int iRealChargeFee = PayUtils.getPayRate(payOrder.getPayAmount(), payAccount.getRealRate(), true); |
|
|
|
if (fee > iRealChargeFee) { |
|
|
|
cardInfo.setRateAmount(fee - iRealChargeFee); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("获取payAccount error: " + cardInfo.getTenantId()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
|