| 342 | } |
| 343 | |
| 344 | func (m *imlTeamModule) SimpleMembers(ctx context.Context, id string, keyword string) ([]*team_dto.SimpleMember, error) { |
| 345 | if id == "" { |
| 346 | return nil, fmt.Errorf("team id is empty") |
| 347 | } |
| 348 | teamInfo, err := m.teamService.Get(ctx, id) |
| 349 | if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { |
| 350 | return nil, err |
| 351 | } |
| 352 | if teamInfo == nil { |
| 353 | return nil, fmt.Errorf("team %s not extist", id) |
| 354 | } |
| 355 | users, err := m.userService.Search(ctx, keyword, -1) |
| 356 | if err != nil { |
| 357 | return nil, err |
| 358 | } |
| 359 | userMap := make(map[string]*user.User) |
| 360 | userIds := make([]string, 0, len(users)) |
| 361 | for _, u := range users { |
| 362 | userIds = append(userIds, u.UID) |
| 363 | userMap[u.UID] = u |
| 364 | } |
| 365 | teamMembers, err := m.teamMemberService.Members(ctx, []string{id}, userIds) |
| 366 | if err != nil { |
| 367 | return nil, err |
| 368 | } |
| 369 | departmentMembers, err := m.departmentMemberService.Members(ctx, nil, userIds) |
| 370 | if err != nil { |
| 371 | return nil, err |
| 372 | } |
| 373 | departmentMemberMap := make(map[string][]string) |
| 374 | for _, member := range departmentMembers { |
| 375 | if _, ok := departmentMemberMap[member.UID]; !ok { |
| 376 | departmentMemberMap[member.UID] = make([]string, 0) |
| 377 | } |
| 378 | departmentMemberMap[member.UID] = append(departmentMemberMap[member.UID], member.Come) |
| 379 | } |
| 380 | |
| 381 | out := make([]*team_dto.SimpleMember, 0, len(teamMembers)) |
| 382 | for _, member := range teamMembers { |
| 383 | u, ok := userMap[member.UID] |
| 384 | if !ok { |
| 385 | continue |
| 386 | } |
| 387 | |
| 388 | out = append(out, &team_dto.SimpleMember{ |
| 389 | User: auto.UUID(u.UID), |
| 390 | Mail: u.Email, |
| 391 | Department: auto.List(departmentMemberMap[member.UID]), |
| 392 | }) |
| 393 | } |
| 394 | |
| 395 | return out, nil |
| 396 | } |