|
@@ -26,6 +26,11 @@ export async function GET(request) {
|
|
|
const currentDate = now.toDate();
|
|
|
const currentTimeString = now.format("HH:mm");
|
|
|
|
|
|
+ // 创建2小时前的时间点
|
|
|
+ const twoHoursAgo = moment(now).subtract(2, "hours");
|
|
|
+ const twoHoursAgoDate = twoHoursAgo.format("YYYY-MM-DD"); // 使用日期字符串
|
|
|
+ const twoHoursAgoTime = twoHoursAgo.format("HH:mm");
|
|
|
+
|
|
|
switch (action) {
|
|
|
case "getMatches":
|
|
|
const searchQuery = {};
|
|
@@ -81,16 +86,44 @@ export async function GET(request) {
|
|
|
|
|
|
console.log("Search Query:", searchQuery);
|
|
|
|
|
|
- // 更新比赛状态(考虑比赛类型)
|
|
|
- await Match.updateMany(
|
|
|
- {
|
|
|
- date: { $lte: currentDate },
|
|
|
- time: { $lte: currentTimeString },
|
|
|
- status: "未开始",
|
|
|
- ...(type ? { type } : {}),
|
|
|
- },
|
|
|
- { $set: { status: "进行中" } }
|
|
|
- );
|
|
|
+ await Promise.all([
|
|
|
+ // 更新所有开始超过2小时的比赛为已结束
|
|
|
+ Match.updateMany(
|
|
|
+ {
|
|
|
+ $or: [
|
|
|
+ // 早于今天的比赛
|
|
|
+ { date: { $lt: twoHoursAgoDate } },
|
|
|
+ // 今天的比赛且开始时间在2小时前
|
|
|
+ {
|
|
|
+ date: twoHoursAgoDate,
|
|
|
+ time: { $lte: twoHoursAgoTime },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ status: { $in: ["未开始", "进行中"] },
|
|
|
+ ...(type ? { type } : {}),
|
|
|
+ },
|
|
|
+ { $set: { status: "已结束" } }
|
|
|
+ ),
|
|
|
+
|
|
|
+ // 更新其他应该进行中的比赛
|
|
|
+ Match.updateMany(
|
|
|
+ {
|
|
|
+ date: { $lte: currentDate },
|
|
|
+ time: { $lte: currentTimeString },
|
|
|
+ status: "未开始",
|
|
|
+ // 排除已经过去2小时的比赛(因为上面的查询会处理)
|
|
|
+ $or: [
|
|
|
+ { date: { $gt: twoHoursAgoDate } },
|
|
|
+ {
|
|
|
+ date: twoHoursAgoDate,
|
|
|
+ time: { $gt: twoHoursAgoTime },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ ...(type ? { type } : {}),
|
|
|
+ },
|
|
|
+ { $set: { status: "进行中" } }
|
|
|
+ ),
|
|
|
+ ]);
|
|
|
|
|
|
const skip = (current - 1) * pageSize;
|
|
|
const totalMatches = await Match.countDocuments(searchQuery);
|
|
@@ -108,12 +141,10 @@ export async function GET(request) {
|
|
|
|
|
|
case "getMatchDays":
|
|
|
const typeFilter = type ? { type } : {};
|
|
|
- const currentDate = moment().tz(timezone).startOf("day");
|
|
|
-
|
|
|
- console.log(111, typeFilter);
|
|
|
+ const currentDay = moment().tz(timezone).startOf("day");
|
|
|
|
|
|
const futureMatches = await Match.find({
|
|
|
- date: { $gte: currentDate.toDate() },
|
|
|
+ date: { $gte: currentDay.toDate() },
|
|
|
status: { $in: ["未开始", "进行中"] },
|
|
|
...typeFilter,
|
|
|
}).sort("date");
|