| @@ -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 { | |||