| @@ -724,21 +724,47 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| Date curr = new Date(); | Date curr = new Date(); | ||||
| Date valid_date = null; | Date valid_date = null; | ||||
| int limit_days = Constant.WX_LIMIT_DAYS; | 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()) || | if (coupon.getValidType().equals(EnumValidStatus.VALID_RANGE.getCode()) || | ||||
| coupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { | coupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { | ||||
| valid_date = coupon.getValidEndDate(); | valid_date = coupon.getValidEndDate(); | ||||
| if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { | 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 { | } else { | ||||
| if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { | 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 { | } else { | ||||
| limit_days = coupon.getValidDays(); | limit_days = coupon.getValidDays(); | ||||
| @@ -775,7 +801,6 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| /// 储值卡信息添加 | /// 储值卡信息添加 | ||||
| if (isCard) { | if (isCard) { | ||||
| WxPayOrder payOrder = null; | |||||
| Integer fee = 0; | Integer fee = 0; | ||||
| WxCardInfo cardInfo = new WxCardInfo(); | WxCardInfo cardInfo = new WxCardInfo(); | ||||
| cardInfo.setId(couponOrder.getId()); | cardInfo.setId(couponOrder.getId()); | ||||
| @@ -784,18 +809,8 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| cardInfo.setAmount(coupon.getPrice()); | cardInfo.setAmount(coupon.getPrice()); | ||||
| cardInfo.setSaleAmount(coupon.getSalePrice()); | cardInfo.setSaleAmount(coupon.getSalePrice()); | ||||
| cardInfo.setRemainingAmount(coupon.getPrice()); | cardInfo.setRemainingAmount(coupon.getPrice()); | ||||
| if (!coupon.checkIsFree()) { | 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()); | cardInfo.setTransactionId(payOrder.getTransactionId()); | ||||
| if (payOrder.getShareAmount() != null) { | if (payOrder.getShareAmount() != null) { | ||||
| // 开启分账 | // 开启分账 | ||||
| @@ -805,23 +820,15 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| cardInfo.setRateAmount(payOrder.getRateAmount()); | cardInfo.setRateAmount(payOrder.getRateAmount()); | ||||
| } else { | } 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 { | } else { | ||||