pull/882/head^2
chanhengseang 2025-05-26 18:01:08 -07:00
parent 707cd002f8
commit d181fb2e63
5 changed files with 32 additions and 21 deletions

View File

@ -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<TeamPlayer, Long>, 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<TeamPlayer> findByEventId(@Param("eventId") Long eventId);
}

View File

@ -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<List<TeamPlayerDto>> findEventPlayers(@PathVariable("id") Long eventId) {
return new ResponseEntity<>(teamPlayerService.findByEventId(eventId), HttpStatus.OK);
}
@DeleteMapping
@Log("Delete event")
@ApiOperation("Delete event")

View File

@ -53,17 +53,4 @@ public class TeamPlayerController {
public ResponseEntity<TeamPlayerDto> 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<TeamPlayerDto> 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);
}
}

View File

@ -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<TeamPlayerDto> findByEventId(Long eventId);
}

View File

@ -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<TeamPlayerDto> findByEventId(Long eventId) {
List<TeamPlayer> teamPlayers = teamPlayerRepository.findByEventId(eventId);
return teamPlayers.stream()
.map(teamPlayerMapper::toDto)
.collect(Collectors.toList());
}
}