|
|
@@ -11,6 +11,7 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import shop.alien.config.redis.BaseRedisService;
|
|
|
import shop.alien.entity.second.SecondGoods;
|
|
|
+import shop.alien.entity.second.SecondTradeOperation;
|
|
|
import shop.alien.entity.second.SecondTradeRecord;
|
|
|
import shop.alien.entity.store.LifeMessage;
|
|
|
import shop.alien.entity.store.LifeNotice;
|
|
|
@@ -21,6 +22,7 @@ import shop.alien.mapper.LifeMessageMapper;
|
|
|
import shop.alien.mapper.LifeNoticeMapper;
|
|
|
import shop.alien.mapper.LifeUserMapper;
|
|
|
import shop.alien.mapper.second.SecondGoodsMapper;
|
|
|
+import shop.alien.mapper.second.SecondTradeOperationMapper;
|
|
|
import shop.alien.mapper.second.SecondTradeRecordMapper;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -28,6 +30,7 @@ import java.time.ZoneId;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
@@ -48,6 +51,8 @@ public class SecondGoodsTradeXxlJob {
|
|
|
|
|
|
private final SecondGoodsMapper secondGoodsMapper;
|
|
|
|
|
|
+ private final SecondTradeOperationMapper secondTradeOperationMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 二手交易平台 - 交易时间前的十分钟之前 给买家和卖家发送通知提醒
|
|
|
*/
|
|
|
@@ -55,12 +60,12 @@ public class SecondGoodsTradeXxlJob {
|
|
|
public void secondTradeRemind() throws Exception {
|
|
|
log.info("开始执行定时任务: 二手交易平台 - 10分钟后交易提醒 - secondTradeRemind");
|
|
|
try {
|
|
|
- Date now = Date.from(LocalDateTime.now().plusMinutes(10).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ Date tenMinuteLater = Date.from(LocalDateTime.now().plusMinutes(10).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
|
// 查询所有待交易
|
|
|
LambdaQueryWrapper<SecondTradeRecord> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(SecondTradeRecord::getTradeStatus, 3);
|
|
|
- wrapper.eq(SecondTradeRecord::getTransactionTime, now);
|
|
|
+ wrapper.eq(SecondTradeRecord::getTransactionTime, tenMinuteLater);
|
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(wrapper);
|
|
|
|
|
|
for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
|
@@ -269,24 +274,27 @@ public class SecondGoodsTradeXxlJob {
|
|
|
private void secondTradeTimeoutCancel() {
|
|
|
log.info("开始执行定时任务: 二手交易平台 - 交易超时未确认则自动取消 - secondTradeTimeoutCancel");
|
|
|
try {
|
|
|
- LocalDateTime now = LocalDateTime.now().withSecond(0).withNano(0);
|
|
|
+ Date now = Date.from(LocalDateTime.now().withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
|
|
|
// 查询所有待确认
|
|
|
LambdaQueryWrapper<SecondTradeRecord> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(SecondTradeRecord::getTradeStatus, 1);
|
|
|
+ queryWrapper.eq(SecondTradeRecord::getTransactionTime, now);
|
|
|
List<SecondTradeRecord> tradeRecordList = secondTradeRecordMapper.selectList(queryWrapper);
|
|
|
- List<Integer> tradeIdList = new ArrayList<>();
|
|
|
- for (SecondTradeRecord tradeRecord : tradeRecordList) {
|
|
|
- LocalDateTime tenMinutesAgo = tradeRecord.getTransactionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().withSecond(0).withNano(0);
|
|
|
- if (now.isEqual(tenMinutesAgo)) {
|
|
|
- tradeIdList.add(tradeRecord.getId());
|
|
|
- }
|
|
|
- }
|
|
|
+ List<Integer> tradeIdList = tradeRecordList.stream().map(SecondTradeRecord::getId).collect(Collectors.toList());
|
|
|
if (CollectionUtil.isNotEmpty(tradeIdList)) {
|
|
|
LambdaUpdateWrapper<SecondTradeRecord> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
updateWrapper.in(SecondTradeRecord::getId, tradeIdList)
|
|
|
.set(SecondTradeRecord::getTradeStatus, 6);
|
|
|
secondTradeRecordMapper.update(null, updateWrapper);
|
|
|
+
|
|
|
+ for (Integer id : tradeIdList) {
|
|
|
+ SecondTradeOperation operation = new SecondTradeOperation();
|
|
|
+ operation.setTradeId(id);
|
|
|
+ operation.setUserId(0);
|
|
|
+ operation.setType(7);
|
|
|
+ secondTradeOperationMapper.insert(operation);
|
|
|
+ }
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("SecondGoodsTradeXxlJob.secondTradeTimeoutCancel Error Mgs={}", e.getMessage());
|