团队app配置增加绑定工作流
This commit is contained in:
parent
a0b189854d
commit
b6b23bfd34
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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()) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user