|
@@ -71,6 +71,7 @@ public class TaMatchServiceImpl extends ServiceImpl<TaMatchMapper, TaMatch> impl
|
71
|
71
|
taMatch.setOpeningStatus(SportOpeningStatusEnum.FINISHED.getCode());
|
72
|
72
|
updateById(taMatch);
|
73
|
73
|
} catch (Exception e) {
|
|
74
|
+ e.printStackTrace();
|
74
|
75
|
// TODO 比如错误日志记录
|
75
|
76
|
taMatch.setOpeningStatus(SportOpeningStatusEnum.READY.getCode());
|
76
|
77
|
updateById(taMatch);
|
|
@@ -78,6 +79,53 @@ public class TaMatchServiceImpl extends ServiceImpl<TaMatchMapper, TaMatch> impl
|
78
|
79
|
}
|
79
|
80
|
}
|
80
|
81
|
|
|
82
|
+ /**
|
|
83
|
+ * 如果有比赛取消或者异常。那么等待 36 小时。
|
|
84
|
+ * 如果 36 小时之后还是异常。那么本场比赛赔率按 1 算
|
|
85
|
+ * @throws Exception
|
|
86
|
+ */
|
|
87
|
+ @Override
|
|
88
|
+ public void checkExcMatches() throws Exception {
|
|
89
|
+ List<TaMatch> matchList = taMatchMapper.getLastExcAndUndoMatch(36);
|
|
90
|
+ if (null == matchList || matchList.size() == 0) {
|
|
91
|
+ log.info("未检测到有待处理的异常比赛");
|
|
92
|
+ return;
|
|
93
|
+ }
|
|
94
|
+
|
|
95
|
+ for (TaMatch taMatch : matchList) {
|
|
96
|
+ try {
|
|
97
|
+ taMatch.setOpeningStatus(SportOpeningStatusEnum.DOING.getCode());
|
|
98
|
+ updateById(taMatch);
|
|
99
|
+ validateExcMatch(taMatch);
|
|
100
|
+ taMatch.setOpeningStatus(SportOpeningStatusEnum.FINISHED.getCode());
|
|
101
|
+ updateById(taMatch);
|
|
102
|
+ } catch (Exception e) {
|
|
103
|
+ e.printStackTrace();
|
|
104
|
+ // TODO 比如错误日志记录
|
|
105
|
+ taMatch.setOpeningStatus(SportOpeningStatusEnum.READY.getCode());
|
|
106
|
+ updateById(taMatch);
|
|
107
|
+ }
|
|
108
|
+ }
|
|
109
|
+ }
|
|
110
|
+
|
|
111
|
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
|
112
|
+ private void validateExcMatch(TaMatch taMatch) throws Exception {
|
|
113
|
+ // 获取当前比赛的投注列表
|
|
114
|
+ List<TaCustomerBettingItem> bettingItemList = iTaCustomerBettingItemService.getByMatch(taMatch);
|
|
115
|
+ if (null == bettingItemList || bettingItemList.size() == 0) {
|
|
116
|
+ return;
|
|
117
|
+ }
|
|
118
|
+
|
|
119
|
+ for (TaCustomerBettingItem item: bettingItemList) {
|
|
120
|
+ item.setIsWinning(true);
|
|
121
|
+ item.setOpeningStatus(SportOpeningStatusEnum.FINISHED.getCode());
|
|
122
|
+ iTaCustomerBettingItemService.updateById(item);
|
|
123
|
+
|
|
124
|
+ // 更新赔率为 1
|
|
125
|
+ iTaCustomerBettingSportService.updateExcDrawnOdds(item.getBettingId(), item.getItemNo());
|
|
126
|
+ }
|
|
127
|
+ }
|
|
128
|
+
|
81
|
129
|
/**
|
82
|
130
|
* 校验比赛
|
83
|
131
|
* @param taMatch
|