diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6bfac6a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM eclipse-temurin:17-jre-alpine + +RUN apk add --no-cache curl + +WORKDIR /app + +COPY target/blade-api.jar /app/blade-api.jar + +HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 CMD curl -f http://localhost:8123/actuator/health || exit 1 + +ENV JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC" +ENV SPRING_PROFILE=dev + +CMD ["sh", "-c", "java ${JAVA_OPTS} -jar /app/blade-api.jar --spring.profiles.active=${SPRING_PROFILE}"] diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java index 0451030..a6206af 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java @@ -8,8 +8,12 @@ import org.springblade.modules.martial.mapper.MartialScheduleDetailMapper; import org.springblade.modules.martial.mapper.MartialScheduleGroupMapper; import org.springblade.modules.martial.mapper.MartialScheduleParticipantMapper; import org.springblade.modules.martial.mapper.MartialAthleteMapper; +import org.springblade.modules.martial.mapper.MartialTeamMemberMapper; import org.springblade.modules.martial.pojo.entity.MartialAthlete; +import org.springblade.modules.martial.mapper.MartialTeamMapper; +import org.springblade.modules.martial.pojo.entity.MartialTeamMember; import org.springblade.modules.martial.pojo.dto.CompetitionGroupDTO; +import org.springblade.modules.martial.pojo.entity.MartialTeam; import org.springblade.modules.martial.pojo.dto.ParticipantDTO; import org.springblade.modules.martial.pojo.dto.SaveScheduleDraftDTO; import org.springblade.modules.martial.pojo.dto.ScheduleResultDTO; @@ -58,6 +62,10 @@ public class MartialScheduleServiceImpl extends ServiceImpl participantDTOs = groupDetails.stream() - .filter(d -> d.getParticipantId() != null) - .map(d -> { - ParticipantDTO dto = new ParticipantDTO(); - dto.setId(d.getParticipantId()); - dto.setSchoolUnit(d.getOrganization()); - dto.setStatus(d.getCheckInStatus() != null ? d.getCheckInStatus() : "未签到"); - dto.setSortOrder(d.getPerformanceOrder()); - dto.setPlayerName(d.getPlayerName()); - return dto; - }) - .collect(Collectors.toList()); - + boolean isCollective = firstDetail.getProjectType() != null && firstDetail.getProjectType() == 2; + List participantDTOs = new ArrayList<>(); + for (ScheduleGroupDetailVO d : groupDetails) { + if (d.getParticipantId() == null) continue; + + ParticipantDTO dto = new ParticipantDTO(); + dto.setId(d.getParticipantId()); + dto.setSchoolUnit(d.getOrganization()); + dto.setStatus(d.getCheckInStatus() != null ? d.getCheckInStatus() : "未签到"); + dto.setSortOrder(d.getPerformanceOrder()); + dto.setPlayerName(d.getPlayerName()); + + // For collective projects, query team members + if (isCollective) { + List> memberList = new ArrayList<>(); + // Step 1: Get athlete record to find team_name + MartialAthlete participantAthlete = athleteMapper.selectById(d.getParticipantId()); + if (participantAthlete != null && participantAthlete.getTeamName() != null) { + // Step 2: Find team by team_name + QueryWrapper teamWrapper = new QueryWrapper<>(); + teamWrapper.eq("team_name", participantAthlete.getTeamName()); + teamWrapper.eq("is_deleted", 0); + MartialTeam team = teamMapper.selectOne(teamWrapper); + if (team != null) { + // Step 3: Query team members + QueryWrapper memberWrapper = new QueryWrapper<>(); + memberWrapper.eq("team_id", team.getId()); + memberWrapper.eq("is_deleted", 0); + List members = teamMemberMapper.selectList(memberWrapper); + // Step 4: Get member athlete info + for (MartialTeamMember member : members) { + Map memberData = new HashMap<>(); + memberData.put("id", member.getId()); + MartialAthlete athlete = athleteMapper.selectById(member.getAthleteId()); + memberData.put("name", athlete != null ? athlete.getPlayerName() : ""); + memberData.put("gender", athlete != null ? athlete.getGender() : ""); + memberList.add(memberData); + } + } + } + dto.setMembers(memberList); + } + + participantDTOs.add(dto); + } groupDTO.setParticipants(participantDTOs); groupDTO.setStatus(calculateGroupStatus(participantDTOs)); groupDTOs.add(groupDTO);