Commit d880edb34b9e7ddc8f0ab9c858e020d4a75dd866

Authored by “wangming”
1 parent b45d55f7

11

netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
@@ -574,49 +574,30 @@ namespace NCC.Extend.LqEvent @@ -574,49 +574,30 @@ namespace NCC.Extend.LqEvent
574 { 574 {
575 return null; 575 return null;
576 } 576 }
577 - // 使用内存合并的方式,避免复杂的SqlFunc问题  
578 - // 1. 查询用户参与的活动信息  
579 - var userEvents = await _db.Queryable<LqEventUserEntity>().Where(eventUser => eventUser.UserId == userId).ToListAsync();  
580 -  
581 - if (userEvents == null || userEvents.Count == 0)  
582 - {  
583 - return new List<LqEventUserEventOutput>();  
584 - }  
585 -  
586 - // 2. 查询当前正在进行的活动详情  
587 - var eventIds = userEvents.Select(u => u.EventId).ToList();  
588 - var currentEvents = await _db.Queryable<LqEventEntity>().Where(e => eventIds.Contains(e.Id) && e.StartTime <= currentTime && e.EndTime >= currentTime).ToListAsync();  
589 -  
590 - if (currentEvents == null || currentEvents.Count == 0)  
591 - {  
592 - return new List<LqEventUserEventOutput>();  
593 - }  
594 -  
595 - // 3. 在内存中合并数据  
596 - var eventUsers = userEvents  
597 - .Where(userEvent => currentEvents.Any(e => e.Id == userEvent.EventId))  
598 - .Select(userEvent =>  
599 - {  
600 - var eventInfo = currentEvents.First(e => e.Id == userEvent.EventId);  
601 - return new LqEventUserEventOutput  
602 - {  
603 - EventId = userEvent.EventId,  
604 - EventName = eventInfo.EventName,  
605 - EventNumber = eventInfo.EventNumber,  
606 - EventCoordinator = eventInfo.EventCoordinator,  
607 - StartTime = eventInfo.StartTime,  
608 - EndTime = eventInfo.EndTime,  
609 - UserId = userEvent.UserId,  
610 - DepId = userEvent.DepId,  
611 - TeamName = userEvent.TeamName,  
612 - EventTarget = userEvent.EventTarget,  
613 - CreationTime = userEvent.CreationTime,  
614 - CreationUser = userEvent.CreationUser,  
615 - StoreId = userEvent.StoreId,  
616 - StoreName = null, // 不需要门店信息  
617 - };  
618 - })  
619 - .ToList(); 577 + // 使用多表查询方式,一次性获取所有数据
  578 + var eventUsers = await _db.Queryable<LqEventUserEntity, LqEventEntity>((eventUser, eventInfo) => eventUser.EventId == eventInfo.Id)
  579 + .Where((eventUser, eventInfo) => eventUser.UserId == userId && eventInfo.StartTime <= currentTime && eventInfo.EndTime >= currentTime)
  580 + .Select(
  581 + (eventUser, eventInfo) =>
  582 + new LqEventUserEventOutput
  583 + {
  584 + EventId = eventUser.EventId,
  585 + EventName = eventInfo.EventName,
  586 + EventNumber = eventInfo.EventNumber,
  587 + EventCoordinator = eventInfo.EventCoordinator,
  588 + StartTime = eventInfo.StartTime,
  589 + EndTime = eventInfo.EndTime,
  590 + UserId = eventUser.UserId,
  591 + DepId = eventUser.DepId,
  592 + TeamName = eventUser.TeamName,
  593 + EventTarget = eventUser.EventTarget,
  594 + CreationTime = eventUser.CreationTime,
  595 + CreationUser = eventUser.CreationUser,
  596 + StoreId = eventUser.StoreId,
  597 + StoreName = null, // 不需要门店信息
  598 + }
  599 + )
  600 + .ToListAsync();
620 601
621 // 如果没有查询到当前活动,返回空列表 602 // 如果没有查询到当前活动,返回空列表
622 return eventUsers ?? new List<LqEventUserEventOutput>(); 603 return eventUsers ?? new List<LqEventUserEventOutput>();