Просмотр исходного кода

[券过期时间][修改]:未开启分账时有价券过期时间bug修复

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
835db27b51
1 измененных файлов: 41 добавлений и 34 удалений
  1. +41
    -34
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java

+ 41
- 34
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

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


Загрузка…
Отмена
Сохранить