diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index 3926873ac..45cb95f98 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -265,4 +265,26 @@ public class WxCoupon extends BaseEntity { return false; } + public boolean checkIsCard() { + if(type == null) { + return false; + } + + if(type == EnumCouponType.CARD_MULTIMCH.getCode()) { + return true; + } + return false; + } + + public boolean checkIsFree() { + if(salePrice!= null) { + if (salePrice.equals(0)) { + return true; + } else { + return false; + } + } + return false; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index ffaa007b6..3f3ad5290 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -176,12 +176,16 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { updateCardInfo.setRemainingAmount(remaingAmount); updateCardInfo.setRemainingShareFeeAmount(remain_real_pament); updateCardInfo.setUpdateDate(curDate); + cardInfo.setRemainingAmount(remaingAmount); + cardInfo.setRemainingShareFeeAmount(remain_real_pament); + cardInfo.setUpdateDate(curDate); // 7.1、消费后修改卡转赠状态 if (cardInfo.getSupportTransfer().equals(EnumCouponTransfer.YES.getCode())) { updateCardInfo.setSupportTransfer(EnumCouponTransfer.NO.getCode()); + cardInfo.setSupportTransfer(EnumCouponTransfer.NO.getCode()); } try { - wxCardInfoMapper.updateByPrimaryKeySelective(cardInfo); + wxCardInfoMapper.updateByPrimaryKeySelective(updateCardInfo); } catch (Exception e) { logger.error("card info update error"); return new ResultData(ErrorCode.DB_FAIL.getCode(), "card info 更新出错!"); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 02e9de7e0..fbc54a8ff 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -643,7 +643,7 @@ public class WxOrderServiceImpl implements WxOrderService { if (coupon.getValidType().equals(EnumValidStatus.VALID_RANGE.getCode()) || coupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { valid_date = coupon.getValidEndDate(); - if (coupon.getSalePrice() > 0) { + if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { // 有价券核销有效期不能大于分账过期时间 Date limit_date = DateUtils.getTimeAfterDays(limit_days, curr); if (valid_date.after(limit_date)) { @@ -651,7 +651,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } } else { - if (coupon.getSalePrice() > 0) { + if (coupon.getSalePrice() > 0 && !coupon.checkIsCard()) { // 有价券核销有效期不能大于分账过期时间 if (coupon.getValidDays() < Constant.WX_LIMIT_DAYS) { limit_days = coupon.getValidDays(); @@ -692,30 +692,37 @@ public class WxOrderServiceImpl implements WxOrderService { /// 储值卡信息添加 if (isCard) { WxPayOrder payOrder = null; - try { - WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setTenantId(user.getTenantId()); - payOrderQ.setOrderId(order.getId()); - payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - payOrder = wxPayOrderMapper.selectOne(payOrderQ); - } catch (Exception e) { - logger.error("payOrder not found:" + e.getMessage()); - } - - Integer fee = payOrder.getPayAmount() - payOrder.getShareAmount(); - + Integer fee = 0; WxCardInfo cardInfo = new WxCardInfo(); cardInfo.setId(couponOrder.getId()); cardInfo.setTenantId(user.getTenantId()); cardInfo.setCouponId(order.getProductId()); - cardInfo.setTransactionId(payOrder.getTransactionId()); cardInfo.setAmount(coupon.getPrice()); cardInfo.setSaleAmount(coupon.getSalePrice()); cardInfo.setRemainingAmount(coupon.getPrice()); + + if (!coupon.checkIsFree()) { + try { + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setTenantId(user.getTenantId()); + payOrderQ.setOrderId(order.getId()); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + payOrder = wxPayOrderMapper.selectOne(payOrderQ); + } catch (Exception e) { + logger.error("payOrder not found:" + e.getMessage()); + } + fee = payOrder.getPayAmount() - payOrder.getShareAmount(); + cardInfo.setTransactionId(payOrder.getTransactionId()); + cardInfo.setShareFeeAmount(payOrder.getShareAmount()); + cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); + cardInfo.setRateAmount(payOrder.getRateAmount()); + } else { + cardInfo.setShareFeeAmount(0); + cardInfo.setRemainingShareFeeAmount(0); + cardInfo.setRateAmount(0); + } + cardInfo.setServiceFeeAmount(fee); - cardInfo.setShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRemainingShareFeeAmount(payOrder.getShareAmount()); - cardInfo.setRateAmount(payOrder.getRateAmount()); cardInfo.setCreateDate(curr); cardInfo.setUpdateDate(curr); cardInfo.setSupportTransfer(coupon.getSupportTransfer());