feat(用户身份状态管理): 成员移出组织/项目,原指派给这个成员的工作项/其他该怎么显示

校验产品指派负责人时仅对新加入的用户进行判断,防止对已离职的用户判断权限导致报错

Signed-off-by: OTTO <731554297@qq.com>
This commit is contained in:
OTTO 2024-10-11 09:12:27 +08:00
parent 4861d5015d
commit 688deb74ee
4 changed files with 20 additions and 11 deletions

View File

@ -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组织下团队
*

View File

@ -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;
}

View File

@ -102,7 +102,7 @@ public interface IPmsEnterpriseService
* 根据gitlink组织id创建企业
*
* @param gitlinkOrgId gitlink组织id
* @param gitLinkUserToEnterpriseInputVo
* @param gitLinkUserToEnterpriseInputVoList 列表
* @return 企业标识
*/
String createByGitlinkOrgId(Long gitlinkOrgId, List<GitLinkUserToEnterpriseInputVo> gitLinkUserToEnterpriseInputVoList);

View File

@ -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<String> oldGitlinkUserIds = Arrays.asList(oldAssigneeGitlinkIds.split(","));
List<String> newGitlinkUserIds = Arrays.asList(newAssigneeGitlinkIds.split(","));
return String.join(",", ListUtils.subtract(newGitlinkUserIds, oldGitlinkUserIds));
}
@Override
public int updatePmsProductChange(String productIdentifier) {
PmsProduct pmsProduct = selectPmsProductByIdentifier(productIdentifier);