From 69b3c02b6084c0fc68266f780e48f3d7e71428a5 Mon Sep 17 00:00:00 2001 From: zpc Date: Wed, 4 Feb 2026 00:43:50 +0800 Subject: [PATCH] 21 --- .../HoneyBox.Core/Services/WelfareService.cs | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs b/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs index 92583396..32dbbdcb 100644 --- a/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs +++ b/server/HoneyBox/src/HoneyBox.Core/Services/WelfareService.cs @@ -63,26 +63,28 @@ public class WelfareService : IWelfareService // 构建查询 var now = DateTime.Now; - var query = _dbContext.Goods - .Where(g => g.Status == type - && g.Type == WelfareType - && g.IsOpen == (type == 1 ? (byte)0 : (byte)1) - && g.UnlockAmount <= userTotalConsumption); + IQueryable query; - // type=1 进行中:只显示开奖时间未到的福利屋 if (type == 1) { - query = query.Where(g => g.OpenTime == null || g.OpenTime > now); - } - - // 排序 - if (type == 1) - { - query = query.OrderByDescending(g => g.Sort).ThenByDescending(g => g.Id); + // type=1 进行中:Status=1, IsOpen=0, 且开奖时间未到 + query = _dbContext.Goods + .Where(g => g.Status == 1 + && g.Type == WelfareType + && g.IsOpen == 0 + && g.UnlockAmount <= userTotalConsumption + && (g.OpenTime == null || g.OpenTime > now)) + .OrderByDescending(g => g.Sort) + .ThenByDescending(g => g.Id); } else { - query = query.OrderByDescending(g => g.OpenTime); + // type=3 已结束:已开奖的 或 开奖时间已过但未开奖的 + query = _dbContext.Goods + .Where(g => g.Type == WelfareType + && g.UnlockAmount <= userTotalConsumption + && (g.IsOpen == 1 || (g.OpenTime != null && g.OpenTime <= now))) + .OrderByDescending(g => g.OpenTime); } // 获取总数 @@ -593,26 +595,28 @@ public class WelfareService : IWelfareService // 构建查询 var now = DateTime.Now; - var query = _dbContext.Goods - .Where(g => g.Status == type - && g.Type == WelfareType - && g.IsOpen == (type == 1 ? (byte)0 : (byte)1) - && g.UnlockAmount <= userTotalConsumption); + IQueryable query; - // type=1 进行中:只显示开奖时间未到的福利屋 if (type == 1) { - query = query.Where(g => g.OpenTime == null || g.OpenTime > now); - } - - // 排序 - if (type == 1) - { - query = query.OrderByDescending(g => g.Sort).ThenByDescending(g => g.Id); + // type=1 进行中:Status=1, IsOpen=0, 且开奖时间未到 + query = _dbContext.Goods + .Where(g => g.Status == 1 + && g.Type == WelfareType + && g.IsOpen == 0 + && g.UnlockAmount <= userTotalConsumption + && (g.OpenTime == null || g.OpenTime > now)) + .OrderByDescending(g => g.Sort) + .ThenByDescending(g => g.Id); } else { - query = query.OrderByDescending(g => g.OpenTime); + // type=3 已结束:已开奖的 或 开奖时间已过但未开奖的 + query = _dbContext.Goods + .Where(g => g.Type == WelfareType + && g.UnlockAmount <= userTotalConsumption + && (g.IsOpen == 1 || (g.OpenTime != null && g.OpenTime <= now))) + .OrderByDescending(g => g.OpenTime); } // 获取总数计算最后一页