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

[砍价][修改]:砍价支付超时时间1小时

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
1ad64c0b40
3 измененных файлов: 41 добавлений и 14 удалений
  1. +23
    -14
      mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java
  2. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java
  3. +16
    -0
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 23
- 14
mallinkSchedule/src/main/java/com/iformall/schedule/OrderExpiringSchedule.java Просмотреть файл

@@ -2,10 +2,7 @@ package com.iformall.schedule;


import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxOrder;
import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumOrderStatus;
import com.iformall.enums.EnumOrderType;
import com.iformall.enums.EnumRefundStatus;
import com.iformall.enums.*;
import com.iformall.mapper.WxAppinfoMapper; import com.iformall.mapper.WxAppinfoMapper;
import com.iformall.mapper.WxOrderGroupMapper; import com.iformall.mapper.WxOrderGroupMapper;
import com.iformall.mapper.WxOrderMapper; import com.iformall.mapper.WxOrderMapper;
@@ -29,7 +26,8 @@ import java.util.Map;
public class OrderExpiringSchedule { public class OrderExpiringSchedule {
private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Logger logger = LoggerFactory.getLogger(this.getClass());


private final int TIME_OUT_VALUE = 15 * 60 * 1000; //15分钟
private final int NORMAL_TIME_OUT = 15 * 60 * 1000; //普通券 必须15分钟内支付
private final int PRESS_TIME_OUT = 15 * 60 * 1000; //砍价券 必须60分钟内支付


@Autowired @Autowired
WxOrderMapper wxOrderMapper; WxOrderMapper wxOrderMapper;
@@ -55,7 +53,7 @@ public class OrderExpiringSchedule {


Map dateMap = new HashMap(); Map dateMap = new HashMap();
Date curDate = new Date(); Date curDate = new Date();
Date expireDate = new Date(curDate.getTime() - TIME_OUT_VALUE );
Date expireDate = new Date(curDate.getTime() - NORMAL_TIME_OUT );


// 券相关订单, 15分钟未支付, 订单过期 // 券相关订单, 15分钟未支付, 订单过期
dateMap.put("type", EnumOrderType.COUPON.getCode()); dateMap.put("type", EnumOrderType.COUPON.getCode());
@@ -65,19 +63,32 @@ public class OrderExpiringSchedule {
try { try {
orderExpired(o); orderExpired(o);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage());
logger.error("券过期失败" + e.getMessage());
} }
}); });


// 砍价相关订单, 已超过砍价结束时间, 订单过期
// 砍价相关订单,
// 1. 如果已经砍价完成,必须60分钟内支付, 未支付,订单过期
Date pressExpireDate = new Date(curDate.getTime() - PRESS_TIME_OUT );
dateMap.put("type", EnumOrderType.COUPON.getCode());
dateMap.put("endDate", pressExpireDate);
List<WxOrder> orderPresss = wxOrderMapper.findListOfUnCompletePressOrderByDate(dateMap);
orderPresss.stream().forEach( o -> {
try {
orderPressExpired(o);
} catch (Exception e) {
logger.error("砍价券支付过期失败" + e.getMessage());
}
});
// 2. 当前已超过砍价结束时间, 订单过期
dateMap.put("type", EnumOrderType.COUPON.getCode()); dateMap.put("type", EnumOrderType.COUPON.getCode());
dateMap.put("endDate", curDate); dateMap.put("endDate", curDate);
List<WxOrder> orderPresss = wxOrderMapper.findListOfUnpaidPressOrderByDate(dateMap);
orderPresss = wxOrderMapper.findListOfUnpaidPressOrderByDate(dateMap);
orderPresss.stream().forEach( o -> { orderPresss.stream().forEach( o -> {
try { try {
orderPressExpired(o); orderPressExpired(o);
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage());
logger.error("砍价券过期失败" +e.getMessage());
} }
}); });


@@ -131,9 +142,7 @@ public class OrderExpiringSchedule {
// 微信 关单 // 微信 关单
wxOrderService.orderClose(updateOrder); wxOrderService.orderClose(updateOrder);


logger.info("\nFound " + order.getId() + "\n"
+ " create at " + order.getCreateDate() +"\n"
+ " expired at " + new Date());
logger.info("券订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + new Date());
} }


@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@@ -148,7 +157,7 @@ public class OrderExpiringSchedule {
// 库存退回 // 库存退回
wxOrderService.stockBack(order); wxOrderService.stockBack(order);


logger.info("\n砍价订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + curDate);
logger.info("砍价订单: " + order.getId() + " create at " + order.getCreateDate() + " expired at " + curDate);
} }


@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})


+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java Просмотреть файл

@@ -15,7 +15,9 @@ public interface WxOrderMapper extends CommonMapper<WxOrder, Long> {
Integer countList(WxOrder wxOrder); Integer countList(WxOrder wxOrder);


List<WxOrder> findListOfUnpaidOrderByDate(Map dateMap); List<WxOrder> findListOfUnpaidOrderByDate(Map dateMap);

List<WxOrder> findListOfUnpaidPressOrderByDate(Map dateMap); List<WxOrder> findListOfUnpaidPressOrderByDate(Map dateMap);
List<WxOrder> findListOfUnCompletePressOrderByDate(Map dateMap);


List<WxOrderCouponVo> findListOfCUser(WxOrder wxOrder); List<WxOrderCouponVo> findListOfCUser(WxOrder wxOrder);
WxOrderCouponVo selectDetailOfCUser(WxOrder wxOrder); WxOrderCouponVo selectDetailOfCUser(WxOrder wxOrder);


+ 16
- 0
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Просмотреть файл

@@ -164,6 +164,22 @@
</if> </if>
</select> </select>


<select id="findListOfUnCompletePressOrderByDate" parameterType="map" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_order
where press_end_date is not null and order_status = 6
<if test="type != null">
AND type = #{type,jdbcType=TINYINT}
</if>
<if test="startDate != null">
AND unix_timestamp(`create_date`) &gt; unix_timestamp(#{startDate,jdbcType=TIMESTAMP})
</if>
<if test="endDate != null">
AND unix_timestamp(`press_end_date`) &lt; unix_timestamp(#{endDate,jdbcType=TIMESTAMP})
</if>
</select>



<sql id="allCUserOrderListColumns"> <sql id="allCUserOrderListColumns">
o.id,o.order_number,o.tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date, o.id,o.order_number,o.tenant_id,o.c_user_id,o.coupon_channel_id,o.product_id,o.payment_type,o.payment,o.payment_time,o.order_status,o.create_date,o.update_date,


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