|
|
|
@@ -1,9 +1,14 @@ |
|
|
|
package com.iformall.schedule; |
|
|
|
|
|
|
|
import com.iformall.common.ErrorCode; |
|
|
|
import com.iformall.common.ResultData; |
|
|
|
import com.iformall.config.PayProperty; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.enums.EnumAppType; |
|
|
|
import com.iformall.enums.EnumCouponOrderStatus; |
|
|
|
import com.iformall.enums.EnumCouponType; |
|
|
|
import com.iformall.enums.EnumPayType; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
import com.iformall.mapper.*; |
|
|
|
import com.iformall.service.WxPayOrderService; |
|
|
|
import com.iformall.service.WxRefundOrderService; |
|
|
|
@@ -15,6 +20,7 @@ import org.springframework.stereotype.Component; |
|
|
|
import org.springframework.transaction.annotation.Propagation; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
@Component |
|
|
|
@@ -50,20 +56,41 @@ public class CouponOrderExpiringSchedule { |
|
|
|
|
|
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); |
|
|
|
|
|
|
|
list.parallelStream().forEach(co -> { |
|
|
|
// 券过期与退款分离 |
|
|
|
couponOrderExpire(co); |
|
|
|
|
|
|
|
if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { |
|
|
|
// 非储值卡, 可以退款 |
|
|
|
WxAppinfo appinfo = new WxAppinfo(); |
|
|
|
appinfo.setTenantId(co.getTenantId()); |
|
|
|
appinfo.setType(EnumAppType.B.getCode()); |
|
|
|
appinfo = wxAppinfoMapper.findList(appinfo).get(0); |
|
|
|
|
|
|
|
try { |
|
|
|
wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for(WxCouponOrder co:list) { |
|
|
|
|
|
|
|
WxAppinfo appinfo = new WxAppinfo(); |
|
|
|
appinfo.setTenantId(co.getTenantId()); |
|
|
|
appinfo.setType(EnumAppType.B.getCode()); |
|
|
|
appinfo = wxAppinfoMapper.findList(appinfo).get(0); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
try { |
|
|
|
wxRefundOrderService.createRefundOrder(payProperty.isReal(), appinfo, co.getId(), EnumPayType.PAY_AUTO_REFUND, null); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("退款失败:"+e.getMessage()+"couponOrderId="+co.getId()); |
|
|
|
continue; |
|
|
|
} |
|
|
|
private void couponOrderExpire(WxCouponOrder co) { |
|
|
|
// 标记 couponOrder过期 |
|
|
|
WxCouponOrder wxCouponOrder = new WxCouponOrder(); |
|
|
|
wxCouponOrder.setId(co.getId()); |
|
|
|
if(co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { |
|
|
|
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.CARD_OVER_TIME.getCode()); // 卡线下退款 |
|
|
|
} else { |
|
|
|
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()); //券已过期 |
|
|
|
} |
|
|
|
wxCouponOrder.setUpdateDate(new Date()); |
|
|
|
try { |
|
|
|
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |