Commit 83703031 authored by 黎博's avatar 黎博

新增场景及场景用例相关接口

parent 28ee190e
package cn.qg.holmes.controller.auto;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.auto.Scene;
import cn.qg.holmes.service.auto.ProjectService;
import cn.qg.holmes.service.auto.SceneService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* 场景相关接口
* @author libo
*/
@CrossOrigin
@RestController
@RequestMapping("/auto/scene")
public class SceneController {
@Autowired
SceneService sceneService;
@Autowired
ProjectService projectService;
/**
* 获取场景列表
* @param pageNum 第几页
* @param pageSize 每页多少个
* @return
*/
@GetMapping("/list")
public JsonResult getSceneList(Integer projectId,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
IPage<Scene> page = new Page<>(pageNum, pageSize);
IPage<Scene> sceneIPage;
if (projectId == null) {
sceneIPage = sceneService.page(page);
} else {
QueryWrapper<Scene> sceneQueryWrapper = new QueryWrapper<>();
sceneQueryWrapper.eq("project_id", projectId);
sceneIPage = sceneService.page(page, sceneQueryWrapper);
}
Map<String, Object> map = new HashMap<>();
map.put("list", sceneIPage.getRecords());
map.put("total", sceneIPage.getTotal());
return JsonResult.buildSuccessResult(map);
}
/**
* 新增场景
* @param scene 场景实体
* @return
*/
@PostMapping("/add")
public JsonResult addScene(@RequestBody Scene scene) {
if (scene.getProjectId() == null) {
return JsonResult.buildErrorStateResult("项目不允许为空!", false);
}
if (scene.getName() == null) {
JsonResult.buildErrorStateResult("场景名不允许为空!", false);
}
if (projectService.getById(scene.getProjectId()) == null) {
return JsonResult.buildErrorStateResult("项目不存在!", false);
}
return JsonResult.buildSuccessResult(sceneService.save(scene));
}
/**
* 修改场景
* @param scene 场景实体
* @return
*/
@PostMapping("/modify")
public JsonResult modifyScene(@RequestBody Scene scene) {
if (scene.getId() == null) {
return JsonResult.buildErrorStateResult("场景id不能为空!", false);
}
if (projectService.getById(scene.getProjectId()) == null) {
return JsonResult.buildErrorStateResult("项目不存在!", false);
}
return JsonResult.buildSuccessResult(sceneService.updateById(scene));
}
/**
* 删除场景
* @param sceneId 场景id
* @return
*/
@GetMapping("/delete")
public JsonResult deleteScene(Integer sceneId) {
if (sceneService.getById(sceneId) == null) {
return JsonResult.buildErrorStateResult("场景不存在!", false);
}
return JsonResult.buildSuccessResult(sceneService.removeById(sceneId));
}
}
package cn.qg.holmes.controller.auto;
import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.auto.SceneTestcase;
import cn.qg.holmes.service.auto.SceneTestcaseService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@CrossOrigin
@RestController
@RequestMapping("/auto/sceneTestcase")
public class SceneTestcaseController {
@Autowired
SceneTestcaseService sceneTestcaseService;
/**
* 获取场景用例列表
* @param projectId 项目id,不传表示获取所有项目场景用例
* @param pageNum 第几页
* @param pageSize 每页展示多少个
* @return
*/
@GetMapping("/list")
public JsonResult getSceneTestcaseList(Integer projectId,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
IPage<SceneTestcase> sceneTestcaseIPage = sceneTestcaseService.getSceneTestcaseList(projectId, pageNum, pageSize);
Map<String, Object> map = new HashMap<>();
map.put("total", sceneTestcaseIPage.getTotal());
map.put("list", sceneTestcaseIPage.getRecords());
return JsonResult.buildSuccessResult(map);
}
/**
* 新增场景用例
* @param sceneTestcaseList 场景用例列表
* @return
*/
@PostMapping("/add")
public JsonResult addSceneTestcase(@RequestBody List<SceneTestcase> sceneTestcaseList) {
// 首先查询表里是否已有相应的数据
for (SceneTestcase sceneTestcase: sceneTestcaseList) {
if (sceneTestcase.getSceneId() == null) {
return JsonResult.buildErrorStateResult("场景id不能为空!", false);
}
if (sceneTestcase.getSequence() == null) {
return JsonResult.buildErrorStateResult("用例顺序不能为空!", false);
}
if (sceneTestcase.getInterfaceId() == null) {
return JsonResult.buildErrorStateResult("接口id不能为空!", false);
}
QueryWrapper<SceneTestcase> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("scene_id", sceneTestcase.getSceneId());
queryWrapper.eq("sequence", sceneTestcase.getSequence());
if (sceneTestcaseService.getOne(queryWrapper) != null) {
return JsonResult.buildErrorStateResult("场景用例已存在!", false);
}
}
for (SceneTestcase sceneTestcase: sceneTestcaseList) {
sceneTestcaseService.save(sceneTestcase);
}
return JsonResult.buildSuccessResult(true);
}
/**
* 批量修改场景用例列表
* @param sceneTestcaseList 场景用例列表
* @return
*/
@PostMapping("/modify")
public JsonResult modifySceneTestcase(@RequestBody List<SceneTestcase> sceneTestcaseList) {
return JsonResult.buildSuccessResult(sceneTestcaseService.updateBatchById(sceneTestcaseList));
}
/**
* 删除单个场景用例
* @param sceneTestcaseId 单个场景用例id
* @return
*/
@GetMapping("/delete")
public JsonResult deleteSceneTestcase(@RequestParam Integer sceneTestcaseId) {
if (sceneTestcaseService.getById(sceneTestcaseId) == null) {
return JsonResult.buildErrorStateResult("场景用例不存在!", false);
}
return JsonResult.buildSuccessResult(sceneTestcaseService.removeById(sceneTestcaseId));
}
}
......@@ -2,6 +2,8 @@ package cn.qg.holmes.mapper.auto;
import cn.qg.holmes.entity.auto.SceneTestcase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
public interface SceneTestcaseMapper extends BaseMapper<SceneTestcase> {
IPage<SceneTestcase> getSceneTestcaseList(Integer projectId, IPage<SceneTestcase> page);
}
package cn.qg.holmes.service.auto;
import cn.qg.holmes.entity.auto.SceneTestcase;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
public interface SceneTestcaseService extends IService<SceneTestcase> {
String executeSceneTestcase(String namespace, Integer sceneId, String batch);
IPage<SceneTestcase> getSceneTestcaseList(Integer projectId, Integer pageNum, Integer pageSize);
}
......@@ -9,6 +9,8 @@ import cn.qg.holmes.service.auto.*;
import cn.qg.holmes.utils.HttpClientUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -59,6 +61,19 @@ public class SceneTestcaseServiceImpl extends ServiceImpl<SceneTestcaseMapper, S
return JSON.toJSONString(resultList);
}
/**
* 获取场景用例列表
* @param projectId 项目id
* @param pageNum 第几页
* @param pageSize 每页多少条
* @return
*/
@Override
public IPage<SceneTestcase> getSceneTestcaseList(Integer projectId, Integer pageNum, Integer pageSize) {
IPage<SceneTestcase> page = new Page<>(pageNum, pageSize);
return sceneTestcaseMapper.getSceneTestcaseList(projectId, page);
}
public String sceneTestcaseExecution(String namespace, Integer sceneId, Integer interfaceId, UUID uuid, String batch) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("scene_id", sceneId);
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.qg.holmes.mapper.auto.SceneTestcaseMapper">
<select id="getSceneTestcaseList" resultType="cn.qg.holmes.entity.auto.SceneTestcase">
select stc.* from scene_testcase as stc
left join scene as sc ON stc.`scene_id`=sc.`id`
<if test="projectId != null">
WHERE sc.`id`=#{projectId}
</if>
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment