Commit d880edb34b9e7ddc8f0ab9c858e020d4a75dd866
1 parent
b45d55f7
11
Showing
1 changed file
with
24 additions
and
43 deletions
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>(); | ... | ... |