fix: 禅道影响版本没有同步

--bug=1009624 --user=陈建星 【测试跟踪】禅道平台的版本没有同步过来 https://www.tapd.cn/55049933/s/10944277
This commit is contained in:
chenjianxing 2022-01-19 16:26:10 +08:00 committed by jianxing
parent 8f4a81e494
commit 7b87c27260
11 changed files with 73 additions and 40 deletions

View File

@ -338,32 +338,14 @@ public class ZentaoPlatform extends AbstractIssuePlatform {
} }
public List<ZentaoBuild> getBuilds() { public List<ZentaoBuild> getBuilds() {
String session = zentaoClient.login();; Map<String, String> builds = zentaoClient.getBuilds(getProjectId(projectId));
HttpHeaders httpHeaders = new HttpHeaders(); List<ZentaoBuild> res = new ArrayList<>();
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(httpHeaders); builds.forEach((k, v) -> {
RestTemplate restTemplate = new RestTemplate(); if (StringUtils.isNotBlank(k)) {
String buildGet = zentaoClient.requestUrl.getBuildsGet(); res.add(new ZentaoBuild(k, v));
ResponseEntity<String> responseEntity = restTemplate.exchange(buildGet + session,
HttpMethod.GET, requestEntity, String.class, getProjectId(projectId));
String body = responseEntity.getBody();
JSONObject obj = JSONObject.parseObject(body);
LogUtil.info("zentao builds" + obj);
JSONObject data = obj.getJSONObject("data");
Map<String,Object> maps = data.getInnerMap();
List<ZentaoBuild> list = new ArrayList<>();
for (Map.Entry<String, Object> map : maps.entrySet()) {
ZentaoBuild build = new ZentaoBuild();
String id = map.getKey();
if (StringUtils.isNotBlank(id)) {
build.setId(map.getKey());
build.setName((String) map.getValue());
list.add(build);
} }
} });
return list; return res;
} }
private String uploadFile(FileSystemResource resource) { private String uploadFile(FileSystemResource resource) {

View File

@ -16,6 +16,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import java.util.Map;
public abstract class ZentaoClient extends BaseClient { public abstract class ZentaoClient extends BaseClient {
protected String ENDPOINT; protected String ENDPOINT;
@ -128,6 +130,22 @@ public abstract class ZentaoClient extends BaseClient {
return JSONObject.parseObject(getIssueResponse.getData()); return JSONObject.parseObject(getIssueResponse.getData());
} }
public GetCreateMetaDataResponse.MetaData getCreateMetaData(String productID) {
String sessionId = login();
ResponseEntity<String> response = restTemplate.exchange(requestUrl.getCreateMetaData(),
HttpMethod.GET, null, String.class, productID, sessionId);
GetCreateMetaDataResponse getCreateMetaDataResponse = (GetCreateMetaDataResponse) getResultForObject(GetCreateMetaDataResponse.class, response);
return JSONObject.parseObject(getCreateMetaDataResponse.getData(), GetCreateMetaDataResponse.MetaData.class);
}
public JSONObject getCustomFields(String productID) {
return getCreateMetaData(productID).getCustomFields();
}
public Map<String, String> getBuilds(String productID) {
return getCreateMetaData(productID).getBuilds();
}
public JSONArray getBugsByProjectId(String projectId, int pageNum, int pageSize) { public JSONArray getBugsByProjectId(String projectId, int pageNum, int pageSize) {
String sessionId = login(); String sessionId = login();
ResponseEntity<String> response = restTemplate.exchange(requestUrl.getBugList(), ResponseEntity<String> response = restTemplate.exchange(requestUrl.getBugList(),

View File

@ -16,6 +16,7 @@ public class ZentaoGetClient extends ZentaoClient {
private static final String USER_GET="&module=user&methodName=getList&t=json&zentaosid="; private static final String USER_GET="&module=user&methodName=getList&t=json&zentaosid=";
private static final String BUILDS_GET="&module=build&methodName=getProductBuildPairs&productID={0}&zentaosid="; private static final String BUILDS_GET="&module=build&methodName=getProductBuildPairs&productID={0}&zentaosid=";
private static final String FILE_UPLOAD="&module=file&methodName=saveUpload&t=json&zentaosid="; private static final String FILE_UPLOAD="&module=file&methodName=saveUpload&t=json&zentaosid=";
private static final String CREATE_META_DATA="?m=bug&f=create&productID={0}&t=json&zentaosid={1}";
private static final String REPLACE_IMG_URL="<img src=\"%s/index.php?m=file&f=read&fileID=$1\"/>"; private static final String REPLACE_IMG_URL="<img src=\"%s/index.php?m=file&f=read&fileID=$1\"/>";
private static final Pattern IMG_PATTERN = Pattern.compile("m=file&f=read&fileID=(.*?)\"/>"); private static final Pattern IMG_PATTERN = Pattern.compile("m=file&f=read&fileID=(.*?)\"/>");
// 注意 recTotal={1}&recPerPage={2}&pageID={3} 顺序不能调换有点恶心 // 注意 recTotal={1}&recPerPage={2}&pageID={3} 顺序不能调换有点恶心
@ -41,6 +42,7 @@ public class ZentaoGetClient extends ZentaoClient {
request.setBugUpdate(getUrl(BUG_UPDATE)); request.setBugUpdate(getUrl(BUG_UPDATE));
request.setBugDelete(getNotSuperModelUrl(BUG_DELETE)); request.setBugDelete(getNotSuperModelUrl(BUG_DELETE));
request.setBugList(getNotSuperModelUrl(BUG_LIST_URL)); request.setBugList(getNotSuperModelUrl(BUG_LIST_URL));
request.setCreateMetaData(getNotSuperModelUrl(CREATE_META_DATA));
requestUrl = request; requestUrl = request;
} }

View File

@ -16,6 +16,7 @@ public class ZentaoPathInfoClient extends ZentaoClient {
private static final String STORY_GET = "/api-getModel-story-getProductStories-productID={key}?zentaosid="; private static final String STORY_GET = "/api-getModel-story-getProductStories-productID={key}?zentaosid=";
private static final String USER_GET = "/api-getModel-user-getList?zentaosid="; private static final String USER_GET = "/api-getModel-user-getList?zentaosid=";
private static final String BUILDS_GET = "/api-getModel-build-getProductBuildPairs-productID={projectId}?zentaosid="; private static final String BUILDS_GET = "/api-getModel-build-getProductBuildPairs-productID={projectId}?zentaosid=";
private static final String CREATE_META_DATA="/bug-create-{0}.json";
private static final String FILE_UPLOAD = "/api-getModel-file-saveUpload.json?zentaosid="; private static final String FILE_UPLOAD = "/api-getModel-file-saveUpload.json?zentaosid=";
private static final String REPLACE_IMG_URL = "<img src=\"%s/file-read-$1\"/>"; private static final String REPLACE_IMG_URL = "<img src=\"%s/file-read-$1\"/>";
private static final Pattern IMG_PATTERN = Pattern.compile("file-read-(.*?)\"/>"); private static final Pattern IMG_PATTERN = Pattern.compile("file-read-(.*?)\"/>");
@ -42,6 +43,7 @@ public class ZentaoPathInfoClient extends ZentaoClient {
request.setBugUpdate(getUrl(BUG_UPDATE)); request.setBugUpdate(getUrl(BUG_UPDATE));
request.setBugDelete(getUrl(BUG_DELETE)); request.setBugDelete(getUrl(BUG_DELETE));
request.setBugList(getUrl(BUG_LIST_URL)); request.setBugList(getUrl(BUG_LIST_URL));
request.setCreateMetaData(getUrl(CREATE_META_DATA));
requestUrl = request; requestUrl = request;
} }

View File

@ -5,11 +5,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class AddIssueResponse { public class AddIssueResponse extends ZentaoResponse {
private String status;
private String md5;
private String data;
@Getter @Getter
@Setter @Setter
public static class Issue { public static class Issue {

View File

@ -0,0 +1,21 @@
package io.metersphere.track.issue.domain.zentao;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
@Getter
@Setter
public class GetCreateMetaDataResponse extends ZentaoResponse {
@Getter
@Setter
public static class MetaData {
private String title;
private JSONObject users;
private JSONObject customFields;
private Map<String, String> builds;
}
}

View File

@ -5,11 +5,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class GetIssueResponse { public class GetIssueResponse extends ZentaoResponse {
private String status;
private String md5;
private String data;
@Getter @Getter
@Setter @Setter
public static class Issue { public static class Issue {

View File

@ -5,11 +5,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class GetSessionResponse { public class GetSessionResponse extends ZentaoResponse {
private String status;
private String data;
// private String md5;
@Getter @Getter
@Setter @Setter
public static class Session { public static class Session {

View File

@ -11,6 +11,7 @@ public class RequestUrl {
private String login; private String login;
private String sessionGet; private String sessionGet;
private String bugCreate; private String bugCreate;
private String createMetaData;
private String bugUpdate; private String bugUpdate;
private String bugList; private String bugList;
private String bugDelete; private String bugDelete;

View File

@ -6,4 +6,11 @@ import lombok.Data;
public class ZentaoBuild { public class ZentaoBuild {
private String id; private String id;
private String name; private String name;
public ZentaoBuild(String id, String name) {
this.id = id;
this.name = name;
}
public ZentaoBuild() {}
} }

View File

@ -0,0 +1,12 @@
package io.metersphere.track.issue.domain.zentao;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ZentaoResponse {
private String status;
private String md5;
private String data;
}