|
|
@@ -13,6 +13,7 @@ import com.iformall.service.WxRefundOrderService; |
|
|
import com.iformall.utils.DateUtils; |
|
|
import com.iformall.utils.DateUtils; |
|
|
import org.slf4j.Logger; |
|
|
import org.slf4j.Logger; |
|
|
import org.slf4j.LoggerFactory; |
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
import org.springframework.aop.framework.AopContext; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.scheduling.annotation.Scheduled; |
|
|
import org.springframework.scheduling.annotation.Scheduled; |
|
|
import org.springframework.stereotype.Component; |
|
|
import org.springframework.stereotype.Component; |
|
|
@@ -51,11 +52,13 @@ public class CouponOrderExpiringSchedule { |
|
|
// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 |
|
|
// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 |
|
|
public void couponOrderExpiringSchedule() { |
|
|
public void couponOrderExpiringSchedule() { |
|
|
|
|
|
|
|
|
|
|
|
CouponOrderExpiringSchedule proxy = (CouponOrderExpiringSchedule) AopContext.currentProxy(); |
|
|
|
|
|
|
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredFreeCouponOrderByValidDate(); |
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredFreeCouponOrderByValidDate(); |
|
|
list.stream().forEach(co -> { |
|
|
list.stream().forEach(co -> { |
|
|
// 券过期,更改状态及库存退回 |
|
|
// 券过期,更改状态及库存退回 |
|
|
try { |
|
|
try { |
|
|
couponOrderExpire(co, true); |
|
|
|
|
|
|
|
|
proxy.couponOrderExpire(co, true); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
logger.error(e.getMessage()); |
|
|
logger.error(e.getMessage()); |
|
|
} |
|
|
} |
|
|
@@ -64,31 +67,25 @@ public class CouponOrderExpiringSchedule { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Scheduled(cron = "0 5 0 * * ?") // 每天凌晨00:05 |
|
|
|
|
|
|
|
|
@Scheduled(cron = "0 0/2 * * * ?") // 每天凌晨00:05 |
|
|
// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 |
|
|
// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 |
|
|
public void couponOrderRefundSchedule() { |
|
|
public void couponOrderRefundSchedule() { |
|
|
|
|
|
|
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); |
|
|
List<WxCouponOrder> list = wxCouponOrderMapper.findExpiredCouponOrderByValidDate(); |
|
|
|
|
|
|
|
|
|
|
|
CouponOrderExpiringSchedule proxy = (CouponOrderExpiringSchedule) AopContext.currentProxy(); |
|
|
list.stream().forEach(co -> { |
|
|
list.stream().forEach(co -> { |
|
|
// 券过期,更改状态及库存退回 |
|
|
|
|
|
try { |
|
|
|
|
|
couponOrderExpire(co, false); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
logger.error(e.getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 退款 |
|
|
|
|
|
try { |
|
|
|
|
|
couponOrderExpireRefund(co, true); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
logger.error(e.getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
refund(co,proxy); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
|
|
|
public void refund(WxCouponOrder order,CouponOrderExpiringSchedule proxy) { |
|
|
|
|
|
// 券过期,更改状态及库存退回 |
|
|
|
|
|
proxy.couponOrderExpire(order, false); |
|
|
|
|
|
// 退款 |
|
|
|
|
|
proxy.couponOrderExpireRefund(order, true); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) |
|
|
public void couponOrderExpire(WxCouponOrder co, boolean bStockBack) { |
|
|
public void couponOrderExpire(WxCouponOrder co, boolean bStockBack) { |
|
|
@@ -112,13 +109,14 @@ public class CouponOrderExpiringSchedule { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void couponOrderExpireRefund(WxCouponOrder co, boolean bStockBack) { |
|
|
|
|
|
|
|
|
public void couponOrderExpireRefund(WxCouponOrder co, boolean bStockBack) { |
|
|
// 非储值卡, 可以退款 |
|
|
// 非储值卡, 可以退款 |
|
|
if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode()) |
|
|
if(!co.getCouponType().equals(EnumCouponType.CARD_MULTIMCH.getCode()) |
|
|
&& !co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())) { |
|
|
&& !co.getAutoRefund().equals(EnumCouponAutoRefund.UNSUPPORTED.getCode())) { |
|
|
WxAppinfo appinfo = new WxAppinfo(); |
|
|
WxAppinfo appinfo = new WxAppinfo(); |
|
|
appinfo.updateTenantInfo(co); |
|
|
appinfo.updateTenantInfo(co); |
|
|
appinfo.setType(EnumAppType.B.getCode()); |
|
|
|
|
|
|
|
|
//appinfo.setType(EnumAppType.B.getCode()); |
|
|
|
|
|
appinfo.setType(EnumAppType.C.getCode()); |
|
|
appinfo = wxAppinfoMapper.findList(appinfo).get(0); |
|
|
appinfo = wxAppinfoMapper.findList(appinfo).get(0); |
|
|
|
|
|
|
|
|
Date limitDate = DateUtils.getTimeAfterDays(360, co.getCreateDate()); |
|
|
Date limitDate = DateUtils.getTimeAfterDays(360, co.getCreateDate()); |
|
|
|