From b6b23bfd345e229296c521e644077a3864a12cee Mon Sep 17 00:00:00 2001 From: dengqichen Date: Sun, 2 Nov 2025 16:30:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=A2=E9=98=9Fapp=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=91=E5=AE=9A=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deploy/repository/ITeamRepository.java | 6 ++++ .../service/impl/DeployServiceImpl.java | 33 ++++++++++++++----- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamRepository.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamRepository.java index bb0a7ae0..b8b20d70 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamRepository.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/repository/ITeamRepository.java @@ -4,6 +4,7 @@ import com.qqchen.deploy.backend.deploy.entity.Team; import com.qqchen.deploy.backend.framework.repository.IBaseRepository; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository @@ -18,5 +19,10 @@ public interface ITeamRepository extends IBaseRepository { * 检查团队编码是否存在 */ boolean existsByTeamCodeAndDeletedFalse(String teamCode); + + /** + * 查询用户作为负责人的团队(忽略已删除) + */ + List findByOwnerIdAndDeletedFalse(Long ownerId); } diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java index 635ed809..0f9182b2 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/service/impl/DeployServiceImpl.java @@ -77,16 +77,23 @@ public class DeployServiceImpl implements IDeployService { User user = userRepository.findById(currentUserId) .orElseThrow(() -> new RuntimeException("用户不存在")); - // 2. 查询用户所属的团队 + // 2. 查询用户作为成员的团队 List teamMembers = teamMemberRepository.findByUserIdAndDeletedFalse(currentUserId); - if (teamMembers.isEmpty()) { - log.info("用户 {} 未加入任何团队", user.getUsername()); + + // 3. 查询用户作为负责人的团队 + List ownedTeams = teamRepository.findByOwnerIdAndDeletedFalse(currentUserId); + + // 4. 合并团队ID(去重) + Set teamIdSet = new HashSet<>(); + teamIdSet.addAll(teamMembers.stream().map(TeamMember::getTeamId).collect(toList())); + teamIdSet.addAll(ownedTeams.stream().map(Team::getId).collect(toList())); + + if (teamIdSet.isEmpty()) { + log.info("用户 {} 未加入任何团队且不是任何团队的负责人", user.getUsername()); return buildEmptyResult(user); } - - List teamIds = teamMembers.stream() - .map(TeamMember::getTeamId) - .collect(toList()); + + List teamIds = new ArrayList<>(teamIdSet); // 3. 批量查询团队信息 Map teamMap = teamRepository.findAllById(teamIds) @@ -178,6 +185,7 @@ public class DeployServiceImpl implements IDeployService { List teamDTOs = teamIds.stream() .map(teamId -> buildTeamDTO( teamId, + currentUserId, teamMap, teamMemberMap, configMap, @@ -219,6 +227,7 @@ public class DeployServiceImpl implements IDeployService { */ private TeamDeployableDTO buildTeamDTO( Long teamId, + Long currentUserId, Map teamMap, Map teamMemberMap, Map configMap, @@ -242,7 +251,15 @@ public class DeployServiceImpl implements IDeployService { teamDTO.setTeamCode(team.getTeamCode()); teamDTO.setTeamName(team.getTeamName()); teamDTO.setDescription(team.getDescription()); - teamDTO.setTeamRole(member != null ? member.getRoleInTeam() : null); + + // 设置团队角色:如果是成员则使用成员角色,如果是负责人但不在成员表中则设置为 "OWNER" + if (member != null) { + teamDTO.setTeamRole(member.getRoleInTeam()); + } else if (team.getOwnerId() != null && team.getOwnerId().equals(currentUserId)) { + teamDTO.setTeamRole("OWNER"); + } else { + teamDTO.setTeamRole(null); + } // 组装环境数据 if (config != null && config.getAllowedEnvironmentIds() != null && !config.getAllowedEnvironmentIds().isEmpty()) {