|
|
@@ -1,4 +1,107 @@
|
|
|
package seecoder.devcloud.web.service.impl.APITest;
|
|
|
|
|
|
-public class APITestServiceImpl {
|
|
|
+import net.sf.json.JSONArray;
|
|
|
+import net.sf.json.JSONObject;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import seecoder.devcloud.web.dao.APITest.APITestMapper;
|
|
|
+import seecoder.devcloud.web.model.po.APITest.APITestInfo;
|
|
|
+import seecoder.devcloud.web.model.po.APITest.APITest;
|
|
|
+import seecoder.devcloud.web.model.vo.APITest.APITestBodyVO;
|
|
|
+import seecoder.devcloud.web.model.vo.APITest.APITestInfoVO;
|
|
|
+import seecoder.devcloud.web.service.APITest.APITestService;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class APITestServiceImpl implements APITestService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private APITestMapper apiTestMapper;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createAPITest(APITestBodyVO apiTestBodyVO) {
|
|
|
+ APITest apiTest = APITest.builder()
|
|
|
+ .testName(apiTestBodyVO.getTestName())
|
|
|
+ .projectId(apiTestBodyVO.getProjectId())
|
|
|
+ .createTime(apiTestBodyVO.getCreateTime())
|
|
|
+ .username(apiTestBodyVO.getUsername())
|
|
|
+ .url(apiTestBodyVO.getUrl())
|
|
|
+ .params("{}")
|
|
|
+ .qps(apiTestBodyVO.getQps())
|
|
|
+ .state("进行中")
|
|
|
+ .success(0)
|
|
|
+ .failure(0)
|
|
|
+ .timeList("")
|
|
|
+ .build();
|
|
|
+ apiTestMapper.insert(apiTest);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteAPITest(Integer projectId) {
|
|
|
+ apiTestMapper.delete(projectId);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public List<APITestInfoVO> getAPITestsByProjectId(Integer projectId) {
|
|
|
+ List<APITest> apiTestInfoVOs = apiTestMapper.selectByProjectId(projectId);
|
|
|
+ List<APITestInfoVO> apiTestInfoVOList = new ArrayList<>();
|
|
|
+ for (APITest apiTest : apiTestInfoVOs) {
|
|
|
+ apiTestInfoVOList.add(new APITestInfoVO(transform(apiTest)));
|
|
|
+ }
|
|
|
+ return apiTestInfoVOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将数据库中读取的 APITestInfoMysql 转为 APITestInfo
|
|
|
+ public APITestInfo transform(APITest apiTest) {
|
|
|
+ APITestInfo apiTestInfo = new APITestInfo();
|
|
|
+ apiTestInfo.setTestId(apiTest.getTestId());
|
|
|
+ apiTestInfo.setTestName(apiTest.getTestName());
|
|
|
+ apiTestInfo.setProjectId(apiTest.getProjectId());
|
|
|
+ apiTestInfo.setCreateTime(apiTest.getCreateTime());
|
|
|
+ apiTestInfo.setUsername(apiTest.getUsername());
|
|
|
+ apiTestInfo.setUrl(apiTest.getUrl());
|
|
|
+ apiTestInfo.setParams(parseJson2Map(apiTest.getParams()));
|
|
|
+ apiTestInfo.setQps(apiTest.getQps());
|
|
|
+ apiTestInfo.setState(apiTest.getState());
|
|
|
+ apiTestInfo.setExecuteTime(apiTest.getExecuteTime());
|
|
|
+ apiTestInfo.setSuccess(apiTest.getSuccess());
|
|
|
+ apiTestInfo.setFailure(apiTest.getFailure());
|
|
|
+ apiTestInfo.setTimeList(splitTimeList(apiTest.getTimeList()));
|
|
|
+ return apiTestInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将JSON格式的字符串转为 Map类型
|
|
|
+ public Map<String, Object> parseJson2Map(String str) {
|
|
|
+ Map<String, Object> map = new HashMap<String, Object>();
|
|
|
+ JSONObject json = JSONObject.fromObject(str);
|
|
|
+ for (Object k:json.keySet()) {
|
|
|
+ Object v = json.get(k);
|
|
|
+ if (v instanceof JSONArray) {
|
|
|
+ List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
|
|
|
+ Iterator<JSONObject> it = ((JSONArray)v).iterator();
|
|
|
+ while (it.hasNext()) {
|
|
|
+ JSONObject json2 = it.next();
|
|
|
+ list.add(parseJson2Map(json2.toString()));
|
|
|
+ }
|
|
|
+ map.put(k.toString(), list);
|
|
|
+ } else {
|
|
|
+ map.put(k.toString(), v);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分隔字符串
|
|
|
+ public List<Integer> splitTimeList(String time) {
|
|
|
+ List<Integer> timeList = new ArrayList<Integer>();
|
|
|
+ if (time.length() == 0) {
|
|
|
+ return timeList;
|
|
|
+ }
|
|
|
+ String[] tl = time.split(",");
|
|
|
+ for (String t:tl) {
|
|
|
+ timeList.add(Integer.parseInt(t));
|
|
|
+ }
|
|
|
+ return timeList;
|
|
|
+ }
|
|
|
}
|