Skip to content

Commit 4f907c0

Browse files
committed
fix[litemall-admin-api]: 系统订单的时间参数起作用。
1 parent 31f926c commit 4f907c0

File tree

4 files changed

+40
-46
lines changed

4 files changed

+40
-46
lines changed

litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class CouponJob {
2727

2828
/**
2929
* 每隔一个小时检查
30+
* TODO
31+
* 注意,因为是相隔一个小时检查,因此导致优惠券真正超时时间可能比设定时间延迟1个小时
3032
*/
3133
@Scheduled(fixedDelay = 60 * 60 * 1000)
3234
public void checkCouponExpired() {

litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.apache.commons.logging.Log;
44
import org.apache.commons.logging.LogFactory;
5+
import org.linlinjava.litemall.core.system.SystemConfig;
56
import org.linlinjava.litemall.db.domain.LitemallGoodsProduct;
67
import org.linlinjava.litemall.db.domain.LitemallOrder;
78
import org.linlinjava.litemall.db.domain.LitemallOrderGoods;
@@ -34,27 +35,19 @@ public class OrderJob {
3435
/**
3536
* 自动取消订单
3637
* <p>
37-
* 定时检查订单未付款情况,如果超时半个小时则自动取消订单
38+
* 定时检查订单未付款情况,如果超时 LITEMALL_ORDER_UNPAID 分钟则自动取消订单
3839
* 定时时间是每次相隔半个小时。
3940
* <p>
40-
* 注意,因为是相隔半小时检查,因此导致有订单是超时一个小时以后才设置取消状态。
4141
* TODO
42-
* 这里可以进一步地配合用户订单查询时订单未付款检查,如果订单超时半小时则取消。
42+
* 注意,因为是相隔半小时检查,因此导致订单真正超时时间是 [LITEMALL_ORDER_UNPAID, 30 + LITEMALL_ORDER_UNPAID]
4343
*/
4444
@Scheduled(fixedDelay = 30 * 60 * 1000)
4545
@Transactional
4646
public void checkOrderUnpaid() {
4747
logger.info("系统开启任务检查订单是否已经超期自动取消订单");
4848

49-
List<LitemallOrder> orderList = orderService.queryUnpaid();
49+
List<LitemallOrder> orderList = orderService.queryUnpaid(SystemConfig.getOrderUnpaid());
5050
for (LitemallOrder order : orderList) {
51-
LocalDateTime add = order.getAddTime();
52-
LocalDateTime now = LocalDateTime.now();
53-
LocalDateTime expired = add.plusMinutes(30);
54-
if (expired.isAfter(now)) {
55-
continue;
56-
}
57-
5851
// 设置订单已取消状态
5952
order.setOrderStatus(OrderUtil.STATUS_AUTO_CANCEL);
6053
order.setEndTime(LocalDateTime.now());
@@ -67,7 +60,6 @@ public void checkOrderUnpaid() {
6760
List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);
6861
for (LitemallOrderGoods orderGoods : orderGoodsList) {
6962
Integer productId = orderGoods.getProductId();
70-
LitemallGoodsProduct product = productService.findById(productId);
7163
Short number = orderGoods.getNumber();
7264
if (productService.addStock(productId, number) == 0) {
7365
throw new RuntimeException("商品货品库存增加失败");
@@ -80,30 +72,22 @@ public void checkOrderUnpaid() {
8072
/**
8173
* 自动确认订单
8274
* <p>
83-
* 定时检查订单未确认情况,如果超时七天则自动确认订单
75+
* 定时检查订单未确认情况,如果超时 LITEMALL_ORDER_UNCONFIRM 天则自动确认订单
8476
* 定时时间是每天凌晨3点。
8577
* <p>
86-
* 注意,因为是相隔一天检查,因此导致有订单是超时八天以后才设置自动确认。
87-
* 这里可以进一步地配合用户订单查询时订单未确认检查,如果订单超时7天则自动确认。
88-
* 但是,这里可能不是非常必要。相比订单未付款检查中存在商品资源有限所以应该
89-
* 早点清理未付款情况,这里八天再确认是可以的。。
78+
* TODO
79+
* 注意,因为是相隔一天检查,因此导致订单真正超时时间是 [LITEMALL_ORDER_UNCONFIRM, 1 + LITEMALL_ORDER_UNCONFIRM]
9080
*/
9181
@Scheduled(cron = "0 0 3 * * ?")
9282
public void checkOrderUnconfirm() {
9383
logger.info("系统开启任务检查订单是否已经超期自动确认收货");
9484

95-
List<LitemallOrder> orderList = orderService.queryUnconfirm();
85+
List<LitemallOrder> orderList = orderService.queryUnconfirm(SystemConfig.getOrderUnconfirm());
9686
for (LitemallOrder order : orderList) {
97-
LocalDateTime ship = order.getShipTime();
98-
LocalDateTime now = LocalDateTime.now();
99-
LocalDateTime expired = ship.plusDays(7);
100-
if (expired.isAfter(now)) {
101-
continue;
102-
}
10387

10488
// 设置订单已取消状态
10589
order.setOrderStatus(OrderUtil.STATUS_AUTO_CONFIRM);
106-
order.setConfirmTime(now);
90+
order.setConfirmTime(LocalDateTime.now());
10791
if (orderService.updateWithOptimisticLocker(order) == 0) {
10892
logger.info("订单 ID=" + order.getId() + " 数据已经更新,放弃自动确认收货");
10993
} else {
@@ -115,22 +99,19 @@ public void checkOrderUnconfirm() {
11599
/**
116100
* 可评价订单商品超期
117101
* <p>
118-
* 定时检查订单商品评价情况,如果确认商品超时七天则取消可评价状态
102+
* 定时检查订单商品评价情况,如果确认商品超时 LITEMALL_ORDER_COMMENT 天则取消可评价状态
119103
* 定时时间是每天凌晨4点。
104+
* <p>
105+
* TODO
106+
* 注意,因为是相隔一天检查,因此导致订单真正超时时间是 [LITEMALL_ORDER_COMMENT, 1 + LITEMALL_ORDER_COMMENT]
120107
*/
121108
@Scheduled(cron = "0 0 4 * * ?")
122109
public void checkOrderComment() {
123110
logger.info("系统开启任务检查订单是否已经超期未评价");
124111

125112
LocalDateTime now = LocalDateTime.now();
126-
List<LitemallOrder> orderList = orderService.queryComment();
113+
List<LitemallOrder> orderList = orderService.queryComment(SystemConfig.getOrderComment());
127114
for (LitemallOrder order : orderList) {
128-
LocalDateTime confirm = order.getConfirmTime();
129-
LocalDateTime expired = confirm.plusDays(7);
130-
if (expired.isAfter(now)) {
131-
continue;
132-
}
133-
134115
order.setComments((short) 0);
135116
orderService.updateWithOptimisticLocker(order);
136117

litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
package org.linlinjava.litemall.core.system;
22

3-
import org.linlinjava.litemall.db.domain.LitemallSystem;
4-
import org.linlinjava.litemall.db.service.LitemallSystemConfigService;
5-
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.stereotype.Component;
7-
8-
import javax.annotation.PostConstruct;
93
import java.math.BigDecimal;
104
import java.util.HashMap;
11-
import java.util.List;
125
import java.util.Map;
136

147
/**
@@ -91,6 +84,18 @@ public static BigDecimal getFreightLimit() {
9184
return getConfigBigDec(LITEMALL_EXPRESS_FREIGHT_MIN);
9285
}
9386

87+
public static Integer getOrderUnpaid() {
88+
return getConfigInt(LITEMALL_ORDER_UNPAID);
89+
}
90+
91+
public static Integer getOrderUnconfirm() {
92+
return getConfigInt(LITEMALL_ORDER_UNCONFIRM);
93+
}
94+
95+
public static Integer getOrderComment() {
96+
return getConfigInt(LITEMALL_ORDER_COMMENT);
97+
}
98+
9499
public static String getMallName() {
95100
return getConfig(LITEMALL_MALL_NAME);
96101
}

litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,19 @@ public int count() {
121121
return (int) litemallOrderMapper.countByExample(example);
122122
}
123123

124-
public List<LitemallOrder> queryUnpaid() {
124+
public List<LitemallOrder> queryUnpaid(int minutes) {
125+
LocalDateTime now = LocalDateTime.now();
126+
LocalDateTime expired = now.minusMinutes(minutes);
125127
LitemallOrderExample example = new LitemallOrderExample();
126-
example.or().andOrderStatusEqualTo(OrderUtil.STATUS_CREATE).andDeletedEqualTo(false);
128+
example.or().andOrderStatusEqualTo(OrderUtil.STATUS_CREATE).andAddTimeLessThan(expired).andDeletedEqualTo(false);
127129
return litemallOrderMapper.selectByExample(example);
128130
}
129131

130-
public List<LitemallOrder> queryUnconfirm() {
132+
public List<LitemallOrder> queryUnconfirm(int days) {
133+
LocalDateTime now = LocalDateTime.now();
134+
LocalDateTime expired = now.minusDays(days);
131135
LitemallOrderExample example = new LitemallOrderExample();
132-
example.or().andOrderStatusEqualTo(OrderUtil.STATUS_SHIP).andShipTimeIsNotNull().andDeletedEqualTo(false);
136+
example.or().andOrderStatusEqualTo(OrderUtil.STATUS_SHIP).andShipTimeLessThan(expired).andDeletedEqualTo(false);
133137
return litemallOrderMapper.selectByExample(example);
134138
}
135139

@@ -171,9 +175,11 @@ public Map<Object, Object> orderInfo(Integer userId) {
171175

172176
}
173177

174-
public List<LitemallOrder> queryComment() {
178+
public List<LitemallOrder> queryComment(int days) {
179+
LocalDateTime now = LocalDateTime.now();
180+
LocalDateTime expired = now.minusDays(days);
175181
LitemallOrderExample example = new LitemallOrderExample();
176-
example.or().andCommentsGreaterThan((short) 0).andDeletedEqualTo(false);
182+
example.or().andCommentsGreaterThan((short) 0).andConfirmTimeLessThan(expired).andDeletedEqualTo(false);
177183
return litemallOrderMapper.selectByExample(example);
178184
}
179185
}

0 commit comments

Comments
 (0)