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 574 {
575 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 603 return eventUsers ?? new List<LqEventUserEventOutput>();
... ...