团队app配置增加绑定工作流

This commit is contained in:
dengqichen 2025-11-02 16:30:16 +08:00
parent a0b189854d
commit b6b23bfd34
2 changed files with 31 additions and 8 deletions

View File

@ -4,6 +4,7 @@ import com.qqchen.deploy.backend.deploy.entity.Team;
import com.qqchen.deploy.backend.framework.repository.IBaseRepository; import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
@ -18,5 +19,10 @@ public interface ITeamRepository extends IBaseRepository<Team, Long> {
* 检查团队编码是否存在 * 检查团队编码是否存在
*/ */
boolean existsByTeamCodeAndDeletedFalse(String teamCode); boolean existsByTeamCodeAndDeletedFalse(String teamCode);
/**
* 查询用户作为负责人的团队忽略已删除
*/
List<Team> findByOwnerIdAndDeletedFalse(Long ownerId);
} }

View File

@ -77,16 +77,23 @@ public class DeployServiceImpl implements IDeployService {
User user = userRepository.findById(currentUserId) User user = userRepository.findById(currentUserId)
.orElseThrow(() -> new RuntimeException("用户不存在")); .orElseThrow(() -> new RuntimeException("用户不存在"));
// 2. 查询用户所属的团队 // 2. 查询用户作为成员的团队
List<TeamMember> teamMembers = teamMemberRepository.findByUserIdAndDeletedFalse(currentUserId); List<TeamMember> teamMembers = teamMemberRepository.findByUserIdAndDeletedFalse(currentUserId);
if (teamMembers.isEmpty()) {
log.info("用户 {} 未加入任何团队", user.getUsername()); // 3. 查询用户作为负责人的团队
List<Team> ownedTeams = teamRepository.findByOwnerIdAndDeletedFalse(currentUserId);
// 4. 合并团队ID去重
Set<Long> 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); return buildEmptyResult(user);
} }
List<Long> teamIds = teamMembers.stream() List<Long> teamIds = new ArrayList<>(teamIdSet);
.map(TeamMember::getTeamId)
.collect(toList());
// 3. 批量查询团队信息 // 3. 批量查询团队信息
Map<Long, Team> teamMap = teamRepository.findAllById(teamIds) Map<Long, Team> teamMap = teamRepository.findAllById(teamIds)
@ -178,6 +185,7 @@ public class DeployServiceImpl implements IDeployService {
List<TeamDeployableDTO> teamDTOs = teamIds.stream() List<TeamDeployableDTO> teamDTOs = teamIds.stream()
.map(teamId -> buildTeamDTO( .map(teamId -> buildTeamDTO(
teamId, teamId,
currentUserId,
teamMap, teamMap,
teamMemberMap, teamMemberMap,
configMap, configMap,
@ -219,6 +227,7 @@ public class DeployServiceImpl implements IDeployService {
*/ */
private TeamDeployableDTO buildTeamDTO( private TeamDeployableDTO buildTeamDTO(
Long teamId, Long teamId,
Long currentUserId,
Map<Long, Team> teamMap, Map<Long, Team> teamMap,
Map<Long, TeamMember> teamMemberMap, Map<Long, TeamMember> teamMemberMap,
Map<Long, TeamConfig> configMap, Map<Long, TeamConfig> configMap,
@ -242,7 +251,15 @@ public class DeployServiceImpl implements IDeployService {
teamDTO.setTeamCode(team.getTeamCode()); teamDTO.setTeamCode(team.getTeamCode());
teamDTO.setTeamName(team.getTeamName()); teamDTO.setTeamName(team.getTeamName());
teamDTO.setDescription(team.getDescription()); 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()) { if (config != null && config.getAllowedEnvironmentIds() != null && !config.getAllowedEnvironmentIds().isEmpty()) {