diff --git a/sport/src/main/java/com/srr/repository/TeamPlayerRepository.java b/sport/src/main/java/com/srr/repository/TeamPlayerRepository.java index f6414f88..881b4972 100644 --- a/sport/src/main/java/com/srr/repository/TeamPlayerRepository.java +++ b/sport/src/main/java/com/srr/repository/TeamPlayerRepository.java @@ -18,6 +18,10 @@ package com.srr.repository; import com.srr.domain.TeamPlayer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; /** * @website https://eladmin.vip @@ -28,4 +32,7 @@ public interface TeamPlayerRepository extends JpaRepository, J boolean existsByTeamIdAndPlayerId(Long teamId, Long playerId); TeamPlayer findByTeamIdAndPlayerId(Long teamId, Long playerId); + + @Query("SELECT tp FROM TeamPlayer tp JOIN tp.team t JOIN t.event e WHERE e.id = :eventId") + List findByEventId(@Param("eventId") Long eventId); } diff --git a/sport/src/main/java/com/srr/rest/EventController.java b/sport/src/main/java/com/srr/rest/EventController.java index 695509f4..7b7219ce 100644 --- a/sport/src/main/java/com/srr/rest/EventController.java +++ b/sport/src/main/java/com/srr/rest/EventController.java @@ -19,8 +19,10 @@ import com.srr.domain.Event; import com.srr.dto.EventDto; import com.srr.dto.EventQueryCriteria; import com.srr.dto.JoinEventDto; +import com.srr.dto.TeamPlayerDto; import com.srr.enumeration.EventStatus; import com.srr.service.EventService; +import com.srr.service.TeamPlayerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -36,6 +38,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.List; /** * @author Chanheng @@ -49,6 +52,7 @@ import java.io.IOException; public class EventController { private final EventService eventService; + private final TeamPlayerService teamPlayerService; @ApiOperation("Export Data") @GetMapping(value = "/download") @@ -104,6 +108,13 @@ public class EventController { return new ResponseEntity<>(result, HttpStatus.OK); } + @GetMapping("/{id}/players") + @ApiOperation("Find all team players in an event") + @PreAuthorize("@el.check('event:list')") + public ResponseEntity> findEventPlayers(@PathVariable("id") Long eventId) { + return new ResponseEntity<>(teamPlayerService.findByEventId(eventId), HttpStatus.OK); + } + @DeleteMapping @Log("Delete event") @ApiOperation("Delete event") diff --git a/sport/src/main/java/com/srr/rest/TeamPlayerController.java b/sport/src/main/java/com/srr/rest/TeamPlayerController.java index a92563e9..5560e7f6 100644 --- a/sport/src/main/java/com/srr/rest/TeamPlayerController.java +++ b/sport/src/main/java/com/srr/rest/TeamPlayerController.java @@ -53,17 +53,4 @@ public class TeamPlayerController { public ResponseEntity checkIn(@PathVariable Long id) { return new ResponseEntity<>(teamPlayerService.checkIn(id), HttpStatus.OK); } - - @GetMapping("/find") - @ApiOperation("Find team player by team and player IDs") - @PreAuthorize("@el.check('event:list')") - public ResponseEntity findByTeamAndPlayer( - @RequestParam Long teamId, - @RequestParam Long playerId) { - TeamPlayerDto teamPlayer = teamPlayerService.findByTeamIdAndPlayerId(teamId, playerId); - if (teamPlayer == null) { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - return new ResponseEntity<>(teamPlayer, HttpStatus.OK); - } } diff --git a/sport/src/main/java/com/srr/service/TeamPlayerService.java b/sport/src/main/java/com/srr/service/TeamPlayerService.java index 303f1872..51632fba 100644 --- a/sport/src/main/java/com/srr/service/TeamPlayerService.java +++ b/sport/src/main/java/com/srr/service/TeamPlayerService.java @@ -20,6 +20,8 @@ import com.srr.dto.TeamPlayerDto; import org.springframework.data.domain.Pageable; import me.zhengjie.utils.PageResult; +import java.util.List; + /** * @author Chanheng * @website https://eladmin.vip @@ -43,10 +45,9 @@ public interface TeamPlayerService { TeamPlayerDto checkIn(Long id); /** - * Find TeamPlayer by teamId and playerId - * @param teamId the team ID - * @param playerId the player ID - * @return TeamPlayerDto if found, null otherwise + * Find all TeamPlayers by event ID + * @param eventId the event ID + * @return List of TeamPlayerDto objects */ - TeamPlayerDto findByTeamIdAndPlayerId(Long teamId, Long playerId); + List findByEventId(Long eventId); } diff --git a/sport/src/main/java/com/srr/service/impl/TeamPlayerServiceImpl.java b/sport/src/main/java/com/srr/service/impl/TeamPlayerServiceImpl.java index a67c0d78..5e395946 100644 --- a/sport/src/main/java/com/srr/service/impl/TeamPlayerServiceImpl.java +++ b/sport/src/main/java/com/srr/service/impl/TeamPlayerServiceImpl.java @@ -26,6 +26,9 @@ import me.zhengjie.exception.EntityNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; +import java.util.stream.Collectors; + /** * @author Chanheng * @website https://eladmin.vip @@ -64,8 +67,10 @@ public class TeamPlayerServiceImpl implements TeamPlayerService { @Override @Transactional(readOnly = true) - public TeamPlayerDto findByTeamIdAndPlayerId(Long teamId, Long playerId) { - TeamPlayer teamPlayer = teamPlayerRepository.findByTeamIdAndPlayerId(teamId, playerId); - return teamPlayer != null ? teamPlayerMapper.toDto(teamPlayer) : null; + public List findByEventId(Long eventId) { + List teamPlayers = teamPlayerRepository.findByEventId(eventId); + return teamPlayers.stream() + .map(teamPlayerMapper::toDto) + .collect(Collectors.toList()); } }