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

设置Gitlink返回Issue中用户的状态(使用HashMap作为缓存,减少重复请求)
This commit is contained in:
OTTO 2024-09-30 09:06:57 +08:00
parent f3a28c8aae
commit b869c1fa43
1 changed files with 41 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import com.microservices.common.core.exception.ServiceException;
import com.microservices.common.core.utils.DateUtils;
import com.microservices.common.httpClient.util.GitLinkRequestHelper;
import com.microservices.common.security.utils.SecurityUtils;
import com.microservices.pms.common.service.IPmsCommonService;
import com.microservices.pms.enterprise.domain.PmsEnterprise;
import com.microservices.pms.enterprise.service.IPmsEnterpriseService;
import com.microservices.pms.project.domain.PmsProject;
@ -14,6 +15,7 @@ import com.microservices.pms.project.domain.vo.*;
import com.microservices.pms.utils.PmsConstants;
import com.microservices.pms.utils.PmsGitLinkRequestUrl;
import com.microservices.pms.utils.PmsUtils;
import com.microservices.system.api.domain.SimpleSysUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@ -57,18 +59,54 @@ public class PmsProjectIssuesService {
@Autowired
private IPmsEnterpriseService pmsEnterpriseService;
@Autowired
private IPmsCommonService pmsCommonService;
public JSONObject selectPmsProjectIssuesList(PmsProjectIssuesSearchVo pmsProjectIssuesSearchVo) {
pmsProjectService.selectAndCheckPmsProjectById(pmsProjectIssuesSearchVo.getPmProjectId());
JSONObject issueSearch = new JSONObject();
convertObjectToJSONObject(pmsProjectIssuesSearchVo, issueSearch, null);
try {
return gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_ISSUE_LIST(issueSearch));
return setProjectIssueUserState(gitLinkRequestHelper.doGet(PmsGitLinkRequestUrl.GET_ISSUE_LIST(issueSearch)));
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
private JSONObject setProjectIssueUserState(JSONObject issueListResult) {
HashMap<Long, String> gitlinkUserNickNameMap = new HashMap<>();
if (issueListResult.containsKey("issues")) {
JSONArray issues = issueListResult.getJSONArray("issues");
for (int i = 0; i < issues.size(); i++) {
JSONObject issue = issues.getJSONObject(i);
if (issue.containsKey("assigners")) {
JSONArray assigners = issue.getJSONArray("assigners");
for (int j = 0; j < assigners.size(); j++) {
JSONObject assigner = assigners.getJSONObject(j);
if (assigner.containsKey("id")) {
Long gitlinkUserId = assigner.getLong("id");
String nickName;
if (gitlinkUserNickNameMap.containsKey(gitlinkUserId)) {
nickName = gitlinkUserNickNameMap.get(gitlinkUserId);
} else {
SimpleSysUser simpleSysUser = pmsCommonService.getSimpleSysUserByGitlinkUserId(gitlinkUserId);
nickName = simpleSysUser.getNickName();
gitlinkUserNickNameMap.put(gitlinkUserId, nickName);
}
assigner.put("name", nickName);
}
assigners.set(j, assigner);
}
issue.put("assigners", assigners);
}
issues.set(i, issue);
}
issueListResult.put("issues", issues);
}
return issueListResult;
}
public JSONObject insertPmsProjectIssues(PmsProjectIssuesInputVo pmsProjectIssuesInputVo) {
pmsProjectService.selectAndCheckPmsProjectById(pmsProjectIssuesInputVo.getPmProjectId());
JSONObject issueInput = convertPmsProjectIssuesInputVoToIssueInputJSON(pmsProjectIssuesInputVo);
@ -235,8 +273,8 @@ public class PmsProjectIssuesService {
convertObjectToJSONObject(pmsProjectIssueJournalAddVo, journalsJson, null);
return gitLinkRequestHelper.doPost(
PmsGitLinkRequestUrl.ADD_ISSUE_JOURNAL(issueId,
pmsProjectIssueJournalInputVo.getPmProjectId(),
pmsProjectIssueJournalInputVo.getPmProjectRepositoryId()),
pmsProjectIssueJournalInputVo.getPmProjectId(),
pmsProjectIssueJournalInputVo.getPmProjectRepositoryId()),
journalsJson
);
}