diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/IPmsCommonService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/IPmsCommonService.java index 71759fe23..d9f7b3e90 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/IPmsCommonService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/IPmsCommonService.java @@ -2,10 +2,7 @@ package com.microservices.pms.common.service; import com.microservices.pms.enterprise.domain.vo.GitLinkUserSimpleInfoVo; import com.microservices.pms.enterprise.domain.vo.GitlinkOrganizationTeamVo; -import com.microservices.system.api.domain.SimpleGitlinkFileInfo; -import com.microservices.system.api.domain.SimpleGitlinkUser; -import com.microservices.system.api.domain.SimpleSysUser; -import com.microservices.system.api.domain.SysFileInfo; +import com.microservices.system.api.domain.*; import java.util.HashMap; import java.util.List; @@ -40,6 +37,8 @@ public interface IPmsCommonService public SimpleGitlinkUser getSimpleGitlinkUserByGitlinkUserId(Long gitlinkUserId); public SimpleGitlinkUser getSimpleGitlinkUserByUsername(String username); + SysUser getSysUserByGitlinkId(Long gitlinkUserId); + /** * 根据authorize查询gitlink组织下团队 * diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/impl/PmsCommonServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/impl/PmsCommonServiceImpl.java index 227909307..b34ab2e60 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/impl/PmsCommonServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/common/service/impl/PmsCommonServiceImpl.java @@ -174,7 +174,8 @@ public class PmsCommonServiceImpl implements IPmsCommonService { return userList; } - private SysUser getSysUserByGitlinkId(Long gitlinkUserId) { + @Override + public SysUser getSysUserByGitlinkId(Long gitlinkUserId) { if (gitlinkUserId == null) { return null; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/enterprise/service/IPmsEnterpriseService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/enterprise/service/IPmsEnterpriseService.java index 091c3769f..a1efb31d2 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/enterprise/service/IPmsEnterpriseService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/enterprise/service/IPmsEnterpriseService.java @@ -102,7 +102,7 @@ public interface IPmsEnterpriseService * 根据gitlink组织id创建企业 * * @param gitlinkOrgId gitlink组织id - * @param gitLinkUserToEnterpriseInputVo + * @param gitLinkUserToEnterpriseInputVoList 列表 * @return 企业标识 */ String createByGitlinkOrgId(Long gitlinkOrgId, List gitLinkUserToEnterpriseInputVoList); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java index e5e1b63cb..d081b2766 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/product/service/impl/PmsProductServiceImpl.java @@ -28,11 +28,13 @@ import com.microservices.system.api.domain.SimpleSysUser; import com.microservices.system.api.domain.SysUser; import com.microservices.system.api.domain.SysUserDeptRole; import com.microservices.system.api.utils.FeignUtils; +import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -51,7 +53,7 @@ public class PmsProductServiceImpl implements IPmsProductService @Autowired private IPmsEnterpriseService pmsEnterpriseService; @Autowired - private IPmsCommonService commonService; + private IPmsCommonService pmsCommonService; @Autowired @Lazy private IPmsProductRequirementService pmsProductRequirementService; @@ -101,7 +103,7 @@ public class PmsProductServiceImpl implements IPmsProductService PmsProductDataVo pmsProductDataVo = pmsProduct.toPmsProductDataVo(); // 设置需求负责人 pmsProductDataVo.setProductAssigneeList( - commonService.getSimpleSysUserListByGitlinkUserIdsAndCache(pmsProduct.getProductAssigneeGitlinkIds(), hashMap)); + pmsCommonService.getSimpleSysUserListByGitlinkUserIdsAndCache(pmsProduct.getProductAssigneeGitlinkIds(), hashMap)); return pmsProductDataVo; } @@ -149,7 +151,7 @@ public class PmsProductServiceImpl implements IPmsProductService String[] gitlinkUserIds = gitlinkUserIdsStr.split(","); for (String gitlinkUserIdStr : gitlinkUserIds) { Long gitlinkUserId = Long.valueOf(gitlinkUserIdStr); - SysUser productAssigneeUser = pmsEnterpriseService.getSysUserByGitLinkUserId(gitlinkUserId); + SysUser productAssigneeUser = pmsCommonService.getSysUserByGitlinkId(gitlinkUserId); Boolean hasPerms = FeignUtils.getReturnData( remoteDeptService.checkUserInDeptHasPerms(pmsEnterprise.getDeptId(), productAssigneeUser.getUserId(), UserConstants.PMS_PERMS_PRODUCT_EDIT, SecurityConstants.INNER) ); @@ -192,14 +194,21 @@ public class PmsProductServiceImpl implements IPmsProductService &&!pmsProduct.getProductName().equals(oldPmsProduct.getProductName())){ checkNameDuplicates(pmsProduct.getProductName(), pmsEnterprise.getEnterpriseIdentifier()); } - //处理指派负责人逻辑(默认传递过来的是GitLink用户ID,需同步创建系统用户同时使用GitLink用户ID) - checkProductAssigneeGitlinkId(pmsProduct.getProductAssigneeGitlinkIds(), pmsEnterprise); + // 考虑到用户有可能已离职,所以仅对新增的用户进行权限校验 + checkProductAssigneeGitlinkId( + getNewAssigneeGitlinkIds(oldPmsProduct.getProductAssigneeGitlinkIds(), pmsProduct.getProductAssigneeGitlinkIds()), pmsEnterprise); pmsProduct.setUpdateBy(SecurityUtils.getUsername()); pmsProduct.setUpdateTime(DateUtils.getNowDate()); pmsProduct.setId(oldPmsProduct.getId()); return pmsProductMapper.updatePmsProduct(pmsProduct); } + private String getNewAssigneeGitlinkIds(String oldAssigneeGitlinkIds, String newAssigneeGitlinkIds) { + List oldGitlinkUserIds = Arrays.asList(oldAssigneeGitlinkIds.split(",")); + List newGitlinkUserIds = Arrays.asList(newAssigneeGitlinkIds.split(",")); + return String.join(",", ListUtils.subtract(newGitlinkUserIds, oldGitlinkUserIds)); + } + @Override public int updatePmsProductChange(String productIdentifier) { PmsProduct pmsProduct = selectPmsProductByIdentifier(productIdentifier);