|
|
@@ -216,6 +216,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
|
|
|
private final ClaudeUserMapper claudeUserMapper;
|
|
|
|
|
|
+ private final UserTicketClearedRecordMapper userTicketClearedRecordMapper;
|
|
|
+
|
|
|
private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
|
|
|
|
|
|
@Override
|
|
|
@@ -759,6 +761,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
//清除原先车票
|
|
|
relation.setNewRelationId(newRelation.getId());
|
|
|
relationClearService.clearTicket(relation, source);
|
|
|
+
|
|
|
+ //兜底处理 多余车票
|
|
|
+ clearOtherChangeTicket(userId, relationId, newRelation);
|
|
|
|
|
|
//奈飞车票
|
|
|
if (orderDon.getGoodsId() == 1) {
|
|
|
@@ -1544,4 +1549,35 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清除多余车票
|
|
|
+ */
|
|
|
+ private void clearOtherChangeTicket(Long userId, Long relationId, GroupsRelation newRelation) {
|
|
|
+ UserTicketClearedRecord userTicketClearedRecord = userTicketClearedRecordMapper.selectOne(Wrappers.lambdaQuery(UserTicketClearedRecord.class)
|
|
|
+ .eq(UserTicketClearedRecord::getUserId, userId)
|
|
|
+ .eq(UserTicketClearedRecord::getRelationId, relationId)
|
|
|
+ .eq(UserTicketClearedRecord::getSource, UserTicketClearedRecord.Source.change_ticket)
|
|
|
+ .orderByDesc(UserTicketClearedRecord::getId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (userTicketClearedRecord != null) {
|
|
|
+ Long newRelationId = userTicketClearedRecord.getNewRelationId();
|
|
|
+ List<GroupsRelation> others = relationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class)
|
|
|
+ .ne(GroupsRelation::getId, newRelationId)
|
|
|
+ .eq(GroupsRelation::getUserId, userId)
|
|
|
+ .eq(GroupsRelation::getStartTime, newRelation.getStartTime())
|
|
|
+ .eq(GroupsRelation::getExpiryTime, newRelation.getExpiryTime()));
|
|
|
+ others.forEach(r -> {
|
|
|
+ Long rid = r.getId();
|
|
|
+ Integer selectCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .eq(OrderDon::getUserId, userId)
|
|
|
+ .eq(OrderDon::getRelationId, rid)
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderAllStatus));
|
|
|
+ if (selectCount == 0) {
|
|
|
+ log.info("清除用户:{}多余车票", userId);
|
|
|
+ relationClearService.clearTicket(r, UserTicketClearedRecord.Source.manual);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|