diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs index e3c1db6..4196825 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs @@ -574,49 +574,30 @@ namespace NCC.Extend.LqEvent { return null; } - // 使用内存合并的方式,避免复杂的SqlFunc问题 - // 1. 查询用户参与的活动信息 - var userEvents = await _db.Queryable().Where(eventUser => eventUser.UserId == userId).ToListAsync(); - - if (userEvents == null || userEvents.Count == 0) - { - return new List(); - } - - // 2. 查询当前正在进行的活动详情 - var eventIds = userEvents.Select(u => u.EventId).ToList(); - var currentEvents = await _db.Queryable().Where(e => eventIds.Contains(e.Id) && e.StartTime <= currentTime && e.EndTime >= currentTime).ToListAsync(); - - if (currentEvents == null || currentEvents.Count == 0) - { - return new List(); - } - - // 3. 在内存中合并数据 - var eventUsers = userEvents - .Where(userEvent => currentEvents.Any(e => e.Id == userEvent.EventId)) - .Select(userEvent => - { - var eventInfo = currentEvents.First(e => e.Id == userEvent.EventId); - return new LqEventUserEventOutput - { - EventId = userEvent.EventId, - EventName = eventInfo.EventName, - EventNumber = eventInfo.EventNumber, - EventCoordinator = eventInfo.EventCoordinator, - StartTime = eventInfo.StartTime, - EndTime = eventInfo.EndTime, - UserId = userEvent.UserId, - DepId = userEvent.DepId, - TeamName = userEvent.TeamName, - EventTarget = userEvent.EventTarget, - CreationTime = userEvent.CreationTime, - CreationUser = userEvent.CreationUser, - StoreId = userEvent.StoreId, - StoreName = null, // 不需要门店信息 - }; - }) - .ToList(); + // 使用多表查询方式,一次性获取所有数据 + var eventUsers = await _db.Queryable((eventUser, eventInfo) => eventUser.EventId == eventInfo.Id) + .Where((eventUser, eventInfo) => eventUser.UserId == userId && eventInfo.StartTime <= currentTime && eventInfo.EndTime >= currentTime) + .Select( + (eventUser, eventInfo) => + new LqEventUserEventOutput + { + EventId = eventUser.EventId, + EventName = eventInfo.EventName, + EventNumber = eventInfo.EventNumber, + EventCoordinator = eventInfo.EventCoordinator, + StartTime = eventInfo.StartTime, + EndTime = eventInfo.EndTime, + UserId = eventUser.UserId, + DepId = eventUser.DepId, + TeamName = eventUser.TeamName, + EventTarget = eventUser.EventTarget, + CreationTime = eventUser.CreationTime, + CreationUser = eventUser.CreationUser, + StoreId = eventUser.StoreId, + StoreName = null, // 不需要门店信息 + } + ) + .ToListAsync(); // 如果没有查询到当前活动,返回空列表 return eventUsers ?? new List();