From 4b8430851567a6edd41d4e2df488fc0fbae0ee8a Mon Sep 17 00:00:00 2001 From: chenzaixing Date: Thu, 26 May 2022 10:01:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:WEB=20UI=E6=94=AF=E6=8C=81PO=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/api/OpenGetApiController.java | 809 +++++----- .../com/luckyframe/project/common/POUtil.java | 79 + .../ProjectCaseStepsController.java | 323 ++-- .../ProjectPageDetailController.java | 184 +++ .../domain/ProjectPageDetail.java | 152 ++ .../mapper/ProjectPageDetailMapper.java | 63 + .../service/IProjectPageDetailService.java | 55 + .../service/ProjectPageDetailServiceImpl.java | 83 ++ .../ProjectPageObjectController.java | 185 +++ .../domain/IbasePageObject.java | 18 + .../domain/ProjectPageObject.java | 214 +++ .../mapper/ProjectPageObjectMapper.java | 63 + .../service/IProjectPageObjectService.java | 65 + .../service/ProjectPageObjectServiceImpl.java | 101 ++ src/main/resources/application-druid.yml | 4 +- .../testmanagmt/ProjectPageDetailMapper.xml | 98 ++ .../testmanagmt/ProjectPageObjectMapper.xml | 105 ++ .../projectCase/projectCaseSteps.html | 1295 +++++++++-------- .../testmanagmt/projectPageDetail/add.html | 65 + .../testmanagmt/projectPageDetail/edit.html | 59 + .../projectPageDetail/projectPageDetail.html | 150 ++ .../testmanagmt/projectPageObject/add.html | 65 + .../testmanagmt/projectPageObject/edit.html | 64 + .../projectPageObject/projectPageObject.html | 148 ++ 24 files changed, 3344 insertions(+), 1103 deletions(-) create mode 100644 src/main/java/com/luckyframe/project/common/POUtil.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/controller/ProjectPageDetailController.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/domain/ProjectPageDetail.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/mapper/ProjectPageDetailMapper.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/IProjectPageDetailService.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/ProjectPageDetailServiceImpl.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/controller/ProjectPageObjectController.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/IbasePageObject.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/ProjectPageObject.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/mapper/ProjectPageObjectMapper.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/IProjectPageObjectService.java create mode 100644 src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/ProjectPageObjectServiceImpl.java create mode 100644 src/main/resources/mybatis/testmanagmt/ProjectPageDetailMapper.xml create mode 100644 src/main/resources/mybatis/testmanagmt/ProjectPageObjectMapper.xml create mode 100644 src/main/resources/templates/testmanagmt/projectPageDetail/add.html create mode 100644 src/main/resources/templates/testmanagmt/projectPageDetail/edit.html create mode 100644 src/main/resources/templates/testmanagmt/projectPageDetail/projectPageDetail.html create mode 100644 src/main/resources/templates/testmanagmt/projectPageObject/add.html create mode 100644 src/main/resources/templates/testmanagmt/projectPageObject/edit.html create mode 100644 src/main/resources/templates/testmanagmt/projectPageObject/projectPageObject.html diff --git a/src/main/java/com/luckyframe/project/api/OpenGetApiController.java b/src/main/java/com/luckyframe/project/api/OpenGetApiController.java index a88c44a..94c2ba0 100644 --- a/src/main/java/com/luckyframe/project/api/OpenGetApiController.java +++ b/src/main/java/com/luckyframe/project/api/OpenGetApiController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.luckyframe.framework.config.LuckyFrameConfig; +import com.luckyframe.project.common.POUtil; import com.luckyframe.project.testexecution.taskCaseExecute.domain.TaskCaseExecute; import com.luckyframe.project.testexecution.taskCaseExecute.service.ITaskCaseExecuteService; import com.luckyframe.project.testexecution.taskExecute.domain.TaskExecute; @@ -16,6 +17,8 @@ import com.luckyframe.project.testmanagmt.projectCase.service.IProjectCaseServic import com.luckyframe.project.testmanagmt.projectCase.service.IProjectCaseStepsService; import com.luckyframe.project.testmanagmt.projectCaseParams.domain.ProjectCaseParams; import com.luckyframe.project.testmanagmt.projectCaseParams.service.IProjectCaseParamsService; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; import com.luckyframe.project.testmanagmt.projectPlan.domain.ProjectPlan; import com.luckyframe.project.testmanagmt.projectPlan.service.IProjectPlanService; import com.luckyframe.project.testmanagmt.projectProtocolTemplate.domain.ProjectProtocolTemplate; @@ -39,408 +42,426 @@ import java.util.List; * 这是一个受限制的自由软件!您不能在任何未经允许的前提下对程序代码进行修改和用于商业用途;也不允许对程序代码修改后以任何形式任何目的的再发布。 * 为了尊重作者的劳动成果,LuckyFrame关键版权信息严禁篡改 有任何疑问欢迎联系作者讨论。 QQ:1573584944 Seagull * ================================================================= + * * @author Seagull * @date 2019年10月28日 */ @Controller @RequestMapping("/openGetApi") -public class OpenGetApiController -{ +public class OpenGetApiController { private static final Logger log = LoggerFactory.getLogger(OpenGetApiController.class); - @Resource - private IProjectPlanService projectPlanService; - - @Resource - private IProjectCaseService projectCaseService; - - @Resource - private IProjectCaseStepsService projectCaseStepsService; - - @Resource - private ITaskExecuteService taskExecuteService; - - @Resource - private IProjectCaseParamsService projectCaseParamsService; - - @Resource - private ITaskSchedulingService taskSchedulingService; - - @Resource - private ITaskCaseExecuteService taskCaseExecuteService; - - @Resource - private IProjectProtocolTemplateService projectProtocolTemplateService; - - @Resource - private IProjectTemplateParamsService projectTemplateParamsService; - + @Resource + private IProjectPlanService projectPlanService; + + @Resource + private IProjectCaseService projectCaseService; + + @Resource + private IProjectCaseStepsService projectCaseStepsService; + + @Resource + private ITaskExecuteService taskExecuteService; + + @Resource + private IProjectCaseParamsService projectCaseParamsService; + + @Resource + private ITaskSchedulingService taskSchedulingService; + + @Resource + private ITaskCaseExecuteService taskCaseExecuteService; + + @Resource + private IProjectProtocolTemplateService projectProtocolTemplateService; + + @Resource + private IProjectTemplateParamsService projectTemplateParamsService; + @Resource private LuckyFrameConfig lfConfig; - /** - * 通过计划ID获取用例列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetCaseListByPlanId.do") - public void clientGetCaseListByPlanId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer planId = Integer.valueOf(req.getParameter("planId")); - - ProjectCase projectCase=new ProjectCase(); - projectCase.setPlanId(planId); - projectCase.setFlag(true); - List projectcases=projectCaseService.selectProjectCaseListForPlan(projectCase); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectcases)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("通过计划ID获取用例列表出现异常", e); - } - } - - /** - * 通过聚合计划ID获取计划列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author jerelli - * @date 2021年3月21日 - */ - @RequestMapping(value = "/clientGetPlanListBySuiteId.do") - public void clientGetPlanListBySuiteId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer suiteId = Integer.valueOf(req.getParameter("suiteId")); - - - ProjectPlan projectPlan=new ProjectPlan(); - projectPlan.setSuiteId(suiteId); - projectPlan.setFlag(true); - List projectplans=projectPlanService.selectProjectPlanListForSuite(projectPlan); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectplans)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("通过聚合计划ID获取计划列表出现异常", e); - } - } - - /** - * 获取服务器版本号 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月24日 - */ - @RequestMapping(value = "/clientGetServerVersion.do") - public void clientGetServerVersion(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - pw.print("Version "+lfConfig.getVersion()); - } catch (Exception e) { - log.error("获取服务器版本号出现异常", e); - } - } - - /** - * 通过计划名称获取用例列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetCaseListByPlanName.do") - public void clientGetCaseListByPlanName(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - String planName = req.getParameter("planName"); - ProjectPlan projectPlan= projectPlanService.selectProjectPlanByPlanName(planName); - - ProjectCase projectCase=new ProjectCase(); - projectCase.setPlanId(projectPlan.getPlanId()); - projectCase.setFlag(true); - List projectcases=projectCaseService.selectProjectCaseListForPlan(projectCase); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectcases)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("通过计划名称获取用例列表出现异常", e); - } - } - - - /** - * 通过用例ID获取步骤列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetStepListByCaseId.do") - public void clientGetStepListByCaseId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer caseId = Integer.valueOf(req.getParameter("caseId")); - - ProjectCaseSteps projectCaseSteps=new ProjectCaseSteps(); - projectCaseSteps.setCaseId(caseId); - List projectCaseStepsList=projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectCaseStepsList)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("通过用例ID获取步骤列表出现异常", e); - } - } - - /** - * 通过taskId获取实体 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetTaskByTaskId.do") - public void clientGetTaskByTaskId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer taskId = Integer.valueOf(req.getParameter("taskId")); - TaskExecute taskExecute = taskExecuteService.selectTaskExecuteById(taskId); - - pw.print(JSONObject.toJSONString(taskExecute)); - } catch (Exception e) { - log.error("通过taskId获取实体出现异常", e); - } - } - - /** - * 通过用例ID获取实体 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetCaseByCaseId.do") - public void clientGetCaseByCaseId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer caseId = Integer.valueOf(req.getParameter("caseId")); - ProjectCase projectCase = projectCaseService.selectProjectCaseById(caseId); - - pw.print(JSONObject.toJSONString(projectCase)); - } catch (Exception e) { - log.error("通过用例编号获取实体出现异常", e); - } - } - - /** - * 通过用例编号获取实体 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetCaseByCaseSign.do") - public void clientGetCaseByCaseSign(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - String caseSign = req.getParameter("caseSign"); - ProjectCase projectCase = projectCaseService.selectProjectCaseByCaseSign(caseSign); - - pw.print(JSONObject.toJSONString(projectCase)); - } catch (Exception e) { - log.error("通过用例编号获取实体出现异常", e); - } - } - - /** - * 根据项目ID获取公共参数列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetParamsByProjectId.do") - public void clientGetParamsByProjectId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer projectId = Integer.valueOf(req.getParameter("projectId")); - List projectCaseParamsList = projectCaseParamsService.selectProjectCaseParamsListByProjectId(projectId); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectCaseParamsList)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("根据项目ID获取公共参数列表出现异常", e); - } - } - - - /** - * 根据项目ID和环境获取公共参数列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author jerelli - * @date 2020年11月16日 - */ - @RequestMapping(value = "/clientGetParamsByProjectIdAndEnvName.do") - public void clientGetParamsByProjectIdAndEnvName(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer projectId = Integer.valueOf(req.getParameter("projectId")); - String envName=req.getParameter("envName"); - List projectCaseParamsList = projectCaseParamsService.selectProjectCaseParamsListByProjectIdAndEnvName(projectId,envName); - System.out.println("88888888888888"); - System.out.println(projectCaseParamsList.toString()); - System.out.println("88888888888888"); - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectCaseParamsList)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("根据项目ID和环境获取公共参数列表出现异常", e); - } - } - - /** - * 通过执行任务ID获取调度实体 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetTaskSchedulingByTaskId.do") - public void clientGetTaskSchedulingByTaskId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer taskId = Integer.valueOf(req.getParameter("taskId")); - TaskExecute taskExecute = taskExecuteService.selectTaskExecuteById(taskId); - TaskScheduling taskScheduling = taskSchedulingService.selectTaskSchedulingById(taskExecute.getSchedulingId()); - - pw.print(JSONObject.toJSONString(taskScheduling)); - } catch (Exception e) { - log.error("通过执行任务ID获取调度实体出现异常", e); - } - } - - /** - * 通过计划名称获取用例列表 - * @param req HTTP请求 - * @param rsp HTTP响应 - * @author Seagull - * @date 2019年4月16日 - */ - @RequestMapping(value = "/clientGetCaseListForUnSucByTaskId.do") - public void clientGetCaseListForUnSucByTaskId(HttpServletRequest req, HttpServletResponse rsp) { - // 更新实体 - try { - rsp.setContentType("text/html;charset=GBK"); - req.setCharacterEncoding("GBK"); - PrintWriter pw = rsp.getWriter(); - Integer taskId = Integer.valueOf(req.getParameter("taskId")); - List taskCaseExecuteList= taskCaseExecuteService.selectTaskCaseExecuteListForUnSucByTaskId(taskId); - - Integer[] caseIdArr = new Integer[taskCaseExecuteList.size()]; - - for(int i=0;i projectTemplateParamsList = projectTemplateParamsService.selectProjectTemplateParamsList(projectTemplateParams); - - // 转换成json字符串 - JSONArray array= JSONArray.parseArray(JSON.toJSONString(projectTemplateParamsList)); - pw.print(array.toString()); - } catch (Exception e) { - log.error("根据模板ID获取参数出现异常", e); - } - } + /** + * 通过计划ID获取用例列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetCaseListByPlanId.do") + public void clientGetCaseListByPlanId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer planId = Integer.valueOf(req.getParameter("planId")); + + ProjectCase projectCase = new ProjectCase(); + projectCase.setPlanId(planId); + projectCase.setFlag(true); + List projectcases = projectCaseService.selectProjectCaseListForPlan(projectCase); + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectcases)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("通过计划ID获取用例列表出现异常", e); + } + } + + /** + * 通过聚合计划ID获取计划列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author jerelli + * @date 2021年3月21日 + */ + @RequestMapping(value = "/clientGetPlanListBySuiteId.do") + public void clientGetPlanListBySuiteId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer suiteId = Integer.valueOf(req.getParameter("suiteId")); + + + ProjectPlan projectPlan = new ProjectPlan(); + projectPlan.setSuiteId(suiteId); + projectPlan.setFlag(true); + List projectplans = projectPlanService.selectProjectPlanListForSuite(projectPlan); + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectplans)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("通过聚合计划ID获取计划列表出现异常", e); + } + } + + /** + * 获取服务器版本号 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月24日 + */ + @RequestMapping(value = "/clientGetServerVersion.do") + public void clientGetServerVersion(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + pw.print("Version " + lfConfig.getVersion()); + } catch (Exception e) { + log.error("获取服务器版本号出现异常", e); + } + } + + /** + * 通过计划名称获取用例列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetCaseListByPlanName.do") + public void clientGetCaseListByPlanName(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + String planName = req.getParameter("planName"); + ProjectPlan projectPlan = projectPlanService.selectProjectPlanByPlanName(planName); + + ProjectCase projectCase = new ProjectCase(); + projectCase.setPlanId(projectPlan.getPlanId()); + projectCase.setFlag(true); + List projectcases = projectCaseService.selectProjectCaseListForPlan(projectCase); + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectcases)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("通过计划名称获取用例列表出现异常", e); + } + } + + + /** + * 通过用例ID获取步骤列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetStepListByCaseId.do") + public void clientGetStepListByCaseId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer caseId = Integer.valueOf(req.getParameter("caseId")); + ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); + projectCaseSteps.setCaseId(caseId); + List projectCaseStepsList = projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); + //在客戶端获取测试用例步骤时,把PO转换为具体的包|路径 + for (ProjectCaseSteps step : projectCaseStepsList) { + if (POUtil.isPO(step)) { + POUtil.transPOToStepPath(step); + } + } + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectCaseStepsList)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("通过用例ID获取步骤列表出现异常", e); + } + } + + /** + * 通过taskId获取实体 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetTaskByTaskId.do") + public void clientGetTaskByTaskId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer taskId = Integer.valueOf(req.getParameter("taskId")); + TaskExecute taskExecute = taskExecuteService.selectTaskExecuteById(taskId); + + pw.print(JSONObject.toJSONString(taskExecute)); + } catch (Exception e) { + log.error("通过taskId获取实体出现异常", e); + } + } + + /** + * 通过用例ID获取实体 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetCaseByCaseId.do") + public void clientGetCaseByCaseId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer caseId = Integer.valueOf(req.getParameter("caseId")); + ProjectCase projectCase = projectCaseService.selectProjectCaseById(caseId); + + pw.print(JSONObject.toJSONString(projectCase)); + } catch (Exception e) { + log.error("通过用例编号获取实体出现异常", e); + } + } + + /** + * 通过用例编号获取实体 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetCaseByCaseSign.do") + public void clientGetCaseByCaseSign(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + String caseSign = req.getParameter("caseSign"); + ProjectCase projectCase = projectCaseService.selectProjectCaseByCaseSign(caseSign); + + pw.print(JSONObject.toJSONString(projectCase)); + } catch (Exception e) { + log.error("通过用例编号获取实体出现异常", e); + } + } + + /** + * 根据项目ID获取公共参数列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetParamsByProjectId.do") + public void clientGetParamsByProjectId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer projectId = Integer.valueOf(req.getParameter("projectId")); + List projectCaseParamsList = projectCaseParamsService.selectProjectCaseParamsListByProjectId(projectId); + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectCaseParamsList)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("根据项目ID获取公共参数列表出现异常", e); + } + } + + + /** + * 根据项目ID和环境获取公共参数列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author jerelli + * @date 2020年11月16日 + */ + @RequestMapping(value = "/clientGetParamsByProjectIdAndEnvName.do") + public void clientGetParamsByProjectIdAndEnvName(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer projectId = Integer.valueOf(req.getParameter("projectId")); + String envName = req.getParameter("envName"); + List projectCaseParamsList = projectCaseParamsService.selectProjectCaseParamsListByProjectIdAndEnvName(projectId, envName); + System.out.println("88888888888888"); + System.out.println(projectCaseParamsList.toString()); + System.out.println("88888888888888"); + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectCaseParamsList)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("根据项目ID和环境获取公共参数列表出现异常", e); + } + } + + /** + * 通过执行任务ID获取调度实体 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetTaskSchedulingByTaskId.do") + public void clientGetTaskSchedulingByTaskId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer taskId = Integer.valueOf(req.getParameter("taskId")); + TaskExecute taskExecute = taskExecuteService.selectTaskExecuteById(taskId); + TaskScheduling taskScheduling = taskSchedulingService.selectTaskSchedulingById(taskExecute.getSchedulingId()); + + pw.print(JSONObject.toJSONString(taskScheduling)); + } catch (Exception e) { + log.error("通过执行任务ID获取调度实体出现异常", e); + } + } + + /** + * 通过计划名称获取用例列表 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月16日 + */ + @RequestMapping(value = "/clientGetCaseListForUnSucByTaskId.do") + public void clientGetCaseListForUnSucByTaskId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer taskId = Integer.valueOf(req.getParameter("taskId")); + List taskCaseExecuteList = taskCaseExecuteService.selectTaskCaseExecuteListForUnSucByTaskId(taskId); + + Integer[] caseIdArr = new Integer[taskCaseExecuteList.size()]; + + for (int i = 0; i < taskCaseExecuteList.size(); i++) { + caseIdArr[i] = taskCaseExecuteList.get(i).getCaseId(); + } + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(caseIdArr)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("通过计划名称获取用例列表出现异常", e); + } + } + + /** + * 通过模板ID获取实体 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月24日 + */ + @RequestMapping(value = "/clientGetProjectProtocolTemplateByTemplateId.do") + public void clientGetProjectProtocolTemplateByTemplateId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer templateId = Integer.valueOf(req.getParameter("templateId")); + ProjectProtocolTemplate projectProtocolTemplate = projectProtocolTemplateService.selectProjectProtocolTemplateById(templateId); + + pw.print(JSONObject.toJSONString(projectProtocolTemplate)); + } catch (Exception e) { + log.error("通过模板ID获取实体出现异常", e); + } + } + + /** + * 根据模板ID获取参数 + * + * @param req HTTP请求 + * @param rsp HTTP响应 + * @author Seagull + * @date 2019年4月24日 + */ + @RequestMapping(value = "/clientGetProjectTemplateParamsListByTemplateId.do") + public void clientGetProjectTemplateParamsListByTemplateId(HttpServletRequest req, HttpServletResponse rsp) { + // 更新实体 + try { + rsp.setContentType("text/html;charset=GBK"); + req.setCharacterEncoding("GBK"); + PrintWriter pw = rsp.getWriter(); + Integer templateId = Integer.valueOf(req.getParameter("templateId")); + ProjectTemplateParams projectTemplateParams = new ProjectTemplateParams(); + projectTemplateParams.setTemplateId(templateId); + List projectTemplateParamsList = projectTemplateParamsService.selectProjectTemplateParamsList(projectTemplateParams); + + // 转换成json字符串 + JSONArray array = JSONArray.parseArray(JSON.toJSONString(projectTemplateParamsList)); + pw.print(array.toString()); + } catch (Exception e) { + log.error("根据模板ID获取参数出现异常", e); + } + } } diff --git a/src/main/java/com/luckyframe/project/common/POUtil.java b/src/main/java/com/luckyframe/project/common/POUtil.java new file mode 100644 index 0000000..8b4166e --- /dev/null +++ b/src/main/java/com/luckyframe/project/common/POUtil.java @@ -0,0 +1,79 @@ +package com.luckyframe.project.common; + +import com.luckyframe.common.constant.Constants; +import com.luckyframe.framework.web.controller.BaseController; +import com.luckyframe.project.testmanagmt.projectCase.domain.ProjectCaseSteps; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.service.IProjectPageDetailService; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; +import com.luckyframe.project.testmanagmt.projectPageObject.service.IProjectPageObjectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Controller; + +import javax.annotation.PostConstruct; +import java.util.List; + +@Controller +@Component +public class POUtil extends BaseController { + private static IProjectPageObjectService projectPageObjectService; + + private static IProjectPageDetailService projectPageDetailService; + + @Autowired + private IProjectPageObjectService projectPageObjectService1; + + @Autowired + private IProjectPageDetailService projectPageDetailService1; + + @PostConstruct + public void init() { + this.projectPageObjectService = this.projectPageObjectService1; + this.projectPageDetailService = this.projectPageDetailService1; + + } + + public static String transStepPathToPo(ProjectCaseSteps projectCaseSteps) { + String stepPath = projectCaseSteps.getStepPath(); + String[] k = stepPath.split("\\."); + //页面名称 + String pagename = k[0]; + //元素名称 + String element = k[1]; + ProjectPageObject projectPageObject = new ProjectPageObject(); + projectPageObject.setPageName(pagename); + projectPageObject.setProjectId(projectCaseSteps.getProjectId()); + List ProjectPageObjectList = projectPageObjectService.selectProjectPageObjectList(projectPageObject); + ProjectPageDetail projectPageDetail = new ProjectPageDetail(); + projectPageDetail.setElement(element); + projectPageDetail.setPageId(ProjectPageObjectList.get(0).getPageId()); + List projectPageDetailList = projectPageDetailService.selectProjectPageDetailList(projectPageDetail); + String pageId = String.valueOf(ProjectPageObjectList.get(0).getPageId()); + String elementId = String.valueOf(projectPageDetailList.get(0).getId()); + stepPath = pageId + "." + elementId; + return stepPath; + } + + public static boolean isPO(ProjectCaseSteps projectCaseSteps) { + if (projectCaseSteps.getStepPath() != null) { + String stepPath = projectCaseSteps.getStepPath(); + if (stepPath.contains(".")) { + String[] pas = stepPath.split("\\."); + if (pas.length == 2) { + return true; + } + } + } + return false; + } + + public static void transPOToStepPath(ProjectCaseSteps step) { + try { + int elementId = Integer.parseInt(step.getStepPath().split("\\.")[1]); + ProjectPageDetail projectPageDetail = projectPageDetailService.selectProjectPageDetailById(elementId); + step.setStepPath(projectPageDetail.getType() + "=" + projectPageDetail.getValue()); + } catch (Exception e) { + } + } +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectCase/controller/ProjectCaseStepsController.java b/src/main/java/com/luckyframe/project/testmanagmt/projectCase/controller/ProjectCaseStepsController.java index 7f871ab..13059a7 100644 --- a/src/main/java/com/luckyframe/project/testmanagmt/projectCase/controller/ProjectCaseStepsController.java +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectCase/controller/ProjectCaseStepsController.java @@ -3,12 +3,18 @@ package com.luckyframe.project.testmanagmt.projectCase.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.List; +import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.luckyframe.common.utils.poi.ExcelUtil; +import com.luckyframe.project.common.POUtil; import com.luckyframe.project.testmanagmt.projectCaseModule.domain.ProjectCaseModule; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.service.IProjectPageDetailService; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; +import com.luckyframe.project.testmanagmt.projectPageObject.service.IProjectPageObjectService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -33,147 +39,35 @@ import cn.hutool.core.util.StrUtil; /** * 测试用例步骤管理 信息操作处理 - * + * * @author luckyframe * @date 2019-02-26 */ @Controller @RequestMapping("/testmanagmt/projectCaseSteps") -public class ProjectCaseStepsController extends BaseController -{ - @Autowired - private IProjectCaseStepsService projectCaseStepsService; - - @Autowired - private IProjectCaseService projectCaseService; - - /** - * 修改测试用例步骤管理 - */ - @GetMapping("/edit/{caseId}") - public String edit(@PathVariable("caseId") Integer caseId, ModelMap mmap) - { - ProjectCase projectCase=projectCaseService.selectProjectCaseById(caseId); - ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); - projectCaseSteps.setCaseId(caseId); - List stepsList=projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); - - if(stepsList.size()==0){ - projectCaseSteps.setAction(""); - projectCaseSteps.setExpectedResult(""); - projectCaseSteps.setExtend(""); - projectCaseSteps.setProjectId(projectCase.getProjectId()); - projectCaseSteps.setStepId(0); - projectCaseSteps.setStepOperation(""); - projectCaseSteps.setStepParameters(""); - projectCaseSteps.setStepPath(""); - projectCaseSteps.setStepSerialNumber(1); - projectCaseSteps.setStepType(projectCase.getCaseType()); - stepsList.add(projectCaseSteps); - } - - for(ProjectCaseSteps steps:stepsList){ - if(StrUtil.isBlank(steps.getStepRemark())){ - steps.setStepRemark("备注"); - } - if(StrUtil.isBlank(steps.getExtend())){ - steps.setExtend(""); - } - if(StrUtil.isBlank(steps.getAction())){ - steps.setAction(""); - } - if(StrUtil.isBlank(steps.getStepParameters())){ - steps.setStepParameters(""); - } - } - - mmap.put("stepsList", stepsList); - mmap.put("projectCase", projectCase); - return "testmanagmt/projectCase/projectCaseSteps"; - } - - /** - * 修改保存测试用例步骤管理 - */ - @RequiresPermissions("testmanagmt:projectCase:edit") - @Log(title = "测试用例步骤管理", businessType = BusinessType.UPDATE) - @RequestMapping(value = "/editSave",method=RequestMethod.POST,consumes="application/json") - @ResponseBody - public AjaxResult editSave(@RequestBody List listSteps) - { - if(!PermissionUtils.isProjectPermsPassByProjectId(listSteps.get(0).getProjectId())){ - return error("没有此项目编辑用例步骤权限"); - } - - int result=0; - projectCaseStepsService.deleteProjectCaseStepsByIds(listSteps); - int stepSerialNumber=1; - for(ProjectCaseSteps projectCaseSteps:listSteps){ - projectCaseSteps.setStepSerialNumber(stepSerialNumber); - result=result+projectCaseStepsService.insertProjectCaseSteps(projectCaseSteps); - stepSerialNumber++; - } - return toAjax(result); - } - - /** - * 行内子查询步骤 - * @author Seagull - * @date 2019年5月9日 - */ - @RequiresPermissions("testmanagmt:projectCase:list") - @RequestMapping(value = "/list") - public void list(HttpServletRequest request,HttpServletResponse response) throws IOException - { - response.setCharacterEncoding("utf-8"); - PrintWriter pw = response.getWriter(); - String caseIdStr = request.getParameter("caseId"); - int caseId = 0; - // 得到客户端传递的查询参数 - if (StringUtils.isNotEmpty(caseIdStr)) { - caseId = Integer.parseInt(caseIdStr); - } - - ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); - projectCaseSteps.setCaseId(caseId); - List stepsList=projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); - - // 转换成json字符串 - JSONArray recordJson= JSONArray.parseArray(JSON.toJSONString(stepsList,SerializerFeature.WriteNullStringAsEmpty)); - pw.print(recordJson); - } - - /** - * 修改保存项目测试用例管理 - */ - @RequiresPermissions("testmanagmt:projectCase:edit") - @Log(title = "测试用例步骤管理", businessType = BusinessType.UPDATE) - @PostMapping("/stepEditSave") - @ResponseBody - public AjaxResult stepEditSave(ProjectCaseSteps projectCaseSteps) - { - if(!PermissionUtils.isProjectPermsPassByProjectId(projectCaseSteps.getProjectId())){ - return error("没有此项目修改用例步骤权限"); - } - - return toAjax(projectCaseStepsService.updateProjectCaseSteps(projectCaseSteps)); - } +public class ProjectCaseStepsController extends BaseController { + @Autowired + private IProjectCaseStepsService projectCaseStepsService; + + @Autowired + private IProjectCaseService projectCaseService; + @Autowired + private IProjectPageObjectService projectPageObjectService; + + @Autowired + private IProjectPageDetailService projectPageDetailService; /** - * @author lifengyang - * 用例步骤导出 + * 修改测试用例步骤管理 */ - @RequiresPermissions("testmanagmt:projectCase:exportcasestep") - @PostMapping("/export") - @ResponseBody - public AjaxResult export(@RequestParam("caseId") Integer caseId) - { - ProjectCase projectCase=projectCaseService.selectProjectCaseById(caseId); + @GetMapping("/edit/{caseId}") + public String edit(@PathVariable("caseId") Integer caseId, ModelMap mmap) { + ProjectCase projectCase = projectCaseService.selectProjectCaseById(caseId); ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); projectCaseSteps.setCaseId(caseId); - List stepsList=projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); + List stepsList = projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); - if(stepsList.size()==0){ + if (stepsList.size() == 0) { projectCaseSteps.setAction(""); projectCaseSteps.setExpectedResult(""); projectCaseSteps.setExtend(""); @@ -187,7 +81,170 @@ public class ProjectCaseStepsController extends BaseController stepsList.add(projectCaseSteps); } - ExcelUtil util = new ExcelUtil<>(ProjectCaseSteps.class); - return util.exportExcel(stepsList, "测试用例步骤"); + for (ProjectCaseSteps steps : stepsList) { + if (POUtil.isPO(steps)) { + { + try { + //页面名称 + int pageId = Integer.parseInt(steps.getStepPath().split("\\.")[0]); + //元素名称 + int elementId = Integer.parseInt(steps.getStepPath().split("\\.")[1]); + ProjectPageObject tmp = new ProjectPageObject(); + tmp.setProjectId(steps.getProjectId()); + tmp.setPageId(pageId); + ProjectPageObject projectPageObject = projectPageObjectService.selectProjectPageObjectList(tmp).get(0); + String pageName = projectPageObject.getPageName(); + projectPageObject.setProjectId(steps.getProjectId()); + ProjectPageDetail projectPageDetail = projectPageDetailService.selectProjectPageDetailById(elementId); + String element = projectPageDetail.getElement(); + steps.setStepPath(pageName + "." + element); + } catch (Exception e) { + + } + } + } + if (StrUtil.isBlank(steps.getStepRemark())) { + steps.setStepRemark("备注"); + } + if (StrUtil.isBlank(steps.getExtend())) { + steps.setExtend(""); + } + if (StrUtil.isBlank(steps.getAction())) { + steps.setAction(""); + } + if (StrUtil.isBlank(steps.getStepParameters())) { + steps.setStepParameters(""); + } + } + + mmap.put("stepsList", stepsList); + mmap.put("projectCase", projectCase); + return "testmanagmt/projectCase/projectCaseSteps"; + } + + /** + * 修改保存测试用例步骤管理 + */ + @RequiresPermissions("testmanagmt:projectCase:edit") + @Log(title = "测试用例步骤管理", businessType = BusinessType.UPDATE) + @RequestMapping(value = "/editSave", method = RequestMethod.POST, consumes = "application/json") + @ResponseBody + public AjaxResult editSave (@RequestBody List < ProjectCaseSteps > listSteps) { + if (!PermissionUtils.isProjectPermsPassByProjectId(listSteps.get(0).getProjectId())) { + return error("没有此项目编辑用例步骤权限"); + } + + int result = 0; + projectCaseStepsService.deleteProjectCaseStepsByIds(listSteps); + int stepSerialNumber = 1; + for (ProjectCaseSteps projectCaseSteps : listSteps) { + if (POUtil.isPO(projectCaseSteps)) { + try { + projectCaseSteps.setStepPath(POUtil.transStepPathToPo(projectCaseSteps)); + } catch (Exception e) { + } + } + projectCaseSteps.setStepSerialNumber(stepSerialNumber); + result = result + projectCaseStepsService.insertProjectCaseSteps(projectCaseSteps); + stepSerialNumber++; + } + return toAjax(result); + } + + /** + * 行内子查询步骤 + * + * @author Seagull + * @date 2019年5月9日 + */ + @RequiresPermissions("testmanagmt:projectCase:list") + @RequestMapping(value = "/list") + public void list (HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setCharacterEncoding("utf-8"); + PrintWriter pw = response.getWriter(); + String caseIdStr = request.getParameter("caseId"); + int caseId = 0; + // 得到客户端传递的查询参数 + if (StringUtils.isNotEmpty(caseIdStr)) { + caseId = Integer.parseInt(caseIdStr); + } + + ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); + projectCaseSteps.setCaseId(caseId); + List stepsList = projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); + for (ProjectCaseSteps pjcs : stepsList) { + if (POUtil.isPO(pjcs)) { + { + //页面名称 + int pageId = Integer.parseInt(pjcs.getStepPath().split("\\.")[0]); + //元素名称 + int elementId = Integer.parseInt(pjcs.getStepPath().split("\\.")[1]); + ProjectPageObject tmp = new ProjectPageObject(); + tmp.setProjectId(pjcs.getProjectId()); + tmp.setPageId(pageId); + ProjectPageObject projectPageObject = projectPageObjectService.selectProjectPageObjectList(tmp).get(0); + String pageName = projectPageObject.getPageName(); + projectPageObject.setProjectId(pjcs.getProjectId()); + ProjectPageDetail projectPageDetail = projectPageDetailService.selectProjectPageDetailById(elementId); + String element = projectPageDetail.getElement(); + pjcs.setStepPath(pageName + "." + element); + } + } + } + + // 转换成json字符串 + JSONArray recordJson = JSONArray.parseArray(JSON.toJSONString(stepsList, SerializerFeature.WriteNullStringAsEmpty)); + pw.print(recordJson); + } + + /** + * 修改保存项目测试用例管理 + */ + @RequiresPermissions("testmanagmt:projectCase:edit") + @Log(title = "测试用例步骤管理", businessType = BusinessType.UPDATE) + @PostMapping("/stepEditSave") + @ResponseBody + public AjaxResult stepEditSave (ProjectCaseSteps projectCaseSteps){ + if (!PermissionUtils.isProjectPermsPassByProjectId(projectCaseSteps.getProjectId())) { + return error("没有此项目修改用例步骤权限"); + } + if (POUtil.isPO(projectCaseSteps)) { + try { + projectCaseSteps.setStepPath(POUtil.transStepPathToPo(projectCaseSteps)); + } catch (Exception e) { + } + } + return toAjax(projectCaseStepsService.updateProjectCaseSteps(projectCaseSteps)); + } + + /** + * @author lifengyang + * 用例步骤导出 + */ + @RequiresPermissions("testmanagmt:projectCase:exportcasestep") + @PostMapping("/export") + @ResponseBody + public AjaxResult export (@RequestParam("caseId") Integer caseId){ + ProjectCase projectCase = projectCaseService.selectProjectCaseById(caseId); + ProjectCaseSteps projectCaseSteps = new ProjectCaseSteps(); + projectCaseSteps.setCaseId(caseId); + List stepsList = projectCaseStepsService.selectProjectCaseStepsList(projectCaseSteps); + + if (stepsList.size() == 0) { + projectCaseSteps.setAction(""); + projectCaseSteps.setExpectedResult(""); + projectCaseSteps.setExtend(""); + projectCaseSteps.setProjectId(projectCase.getProjectId()); + projectCaseSteps.setStepId(0); + projectCaseSteps.setStepOperation(""); + projectCaseSteps.setStepParameters(""); + projectCaseSteps.setStepPath(""); + projectCaseSteps.setStepSerialNumber(1); + projectCaseSteps.setStepType(projectCase.getCaseType()); + stepsList.add(projectCaseSteps); + } + + ExcelUtil util = new ExcelUtil<>(ProjectCaseSteps.class); + return util.exportExcel(stepsList, "测试用例步骤"); + } } -} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/controller/ProjectPageDetailController.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/controller/ProjectPageDetailController.java new file mode 100644 index 0000000..3139ade --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/controller/ProjectPageDetailController.java @@ -0,0 +1,184 @@ +package com.luckyframe.project.testmanagmt.projectPageDetail.controller; + +import com.luckyframe.common.utils.poi.ExcelUtil; +import com.luckyframe.common.utils.security.ShiroUtils; +import com.luckyframe.framework.aspectj.lang.annotation.Log; +import com.luckyframe.framework.aspectj.lang.enums.BusinessType; +import com.luckyframe.framework.web.controller.BaseController; +import com.luckyframe.framework.web.domain.AjaxResult; +import com.luckyframe.framework.web.page.TableDataInfo; +import com.luckyframe.project.system.user.domain.User; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.service.IProjectPageDetailService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + * 页面详情 信息操作处理 + * @author YSS陈再兴 + * @date 2022-03-10 + */ +@Controller +@RequestMapping("/testmanagmt/projectPageDetail") +public class ProjectPageDetailController extends BaseController { + private String prefix = "testmanagmt/projectPageDetail"; + + @Autowired + private IProjectPageDetailService projectPageDetailService; + + @RequiresPermissions("testmanagmt:projectPageDetail:view") + @GetMapping() + public String projectPageDetail() { + return prefix + "/projectPageDetail"; + } + + /** + * 查询页面详情列表 + */ + @RequiresPermissions("testmanagmt:projectPageDetail:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ProjectPageDetail projectPageDetail) { + startPage(); + List list = projectPageDetailService.selectProjectPageDetailList(projectPageDetail); + return getDataTable(list); + } + + + /** + * 导出页面详情列表 + */ + @RequiresPermissions("testmanagmt:projectPageDetail:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ProjectPageDetail projectPageDetail) { + List list = projectPageDetailService.selectProjectPageDetailList(projectPageDetail); + ExcelUtil util = new ExcelUtil(ProjectPageDetail.class); + return util.exportExcel(list, "projectPageDetail"); + } + + /** + * 新增页面详情 + */ + @GetMapping("/add/{id}") + public String add(@PathVariable("id") Integer id, ModelMap mmap) { + ProjectPageDetail projectPageDetail = new ProjectPageDetail(); + projectPageDetail.setPageId(id); + mmap.put("projectPageDetail", projectPageDetail); + return prefix + "/add"; + } + + /** + * 新增保存页面详情 + */ + @RequiresPermissions("testmanagmt:projectPageDetail:add") + @Log(title = "页面详情", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ProjectPageDetail projectPageDetail) { + + if (checkExist(projectPageDetail)) { + return toAjax(false); + } + User currentUser = ShiroUtils.getSysUser(); + projectPageDetail.setUpdateTime(new Date()); + projectPageDetail.setCreateTime(new Date()); + projectPageDetail.setCreateBy(currentUser.getUserName()); + projectPageDetail.setUpdateBy(currentUser.getUserName()); + return toAjax(projectPageDetailService.insertProjectPageDetail(projectPageDetail) > 0); + } + + /** + * 修改页面详情 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Integer id, ModelMap mmap) { + ProjectPageDetail projectPageDetail = new ProjectPageDetail(); + projectPageDetail.setPageId(id); + List list = projectPageDetailService.selectProjectPageDetailList(projectPageDetail); + mmap.put("projectPageDetail", projectPageDetail); + return prefix + "/projectPageDetail"; + } + + /** + * 修改页面详情 + */ + @GetMapping("/editdetail/{id}") + public String editDetail(@PathVariable("id") Integer id, ModelMap mmap) { + ProjectPageDetail projectPageDetail = projectPageDetailService.selectProjectPageDetailById(id); + mmap.put("projectPageDetail", projectPageDetail); + return prefix + "/edit"; + } + + @GetMapping("/list/{id}") + public String getListByPageId(@PathVariable("id") Integer id, ModelMap mmap) { + startPage(); + ProjectPageDetail projectPageDetail = projectPageDetailService.selectProjectPageDetailById(id); + List list = projectPageDetailService.selectProjectPageDetailList(projectPageDetail); + mmap.put("projectPageDetail", list); + return prefix + "/edit"; + } + + /** + * 修改保存页面详情 + */ + @RequiresPermissions("testmanagmt:projectPageDetail:edit") + @Log(title = "页面详情", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ProjectPageDetail projectPageDetail) { + if (checkExist(projectPageDetail)) { + return toAjax(false); + } + User currentUser = ShiroUtils.getSysUser(); + projectPageDetail.setUpdateTime(new Date()); + projectPageDetail.setUpdateBy(currentUser.getUserName()); + return toAjax(projectPageDetailService.updateProjectPageDetail(projectPageDetail) > 0); + } + + /** + * 删除页面详情 + */ + @RequiresPermissions("testmanagmt:projectPageDetail:remove") + @Log(title = "页面详情", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + return toAjax(projectPageDetailService.deleteProjectPageDetailByIds(ids) > 0); + } + + + public boolean checkExist(ProjectPageDetail projectPageDetail) { + //新增或者修改的目标值不能存在一样 + ProjectPageDetail check = new ProjectPageDetail(); + check.setPageId(projectPageDetail.getPageId()); + check.setElement(projectPageDetail.getElement().trim()); + List list = projectPageDetailService.selectProjectPageDetailList(check); + //新增 + if (projectPageDetail.getId() == null) { + if (list.size() > 0) { + return true; + } else { + return false; + } + } else + //修改 + { + List temp = projectPageDetailService.selectProjectPageDetailList(check); + check.setPageId(null); + for (ProjectPageDetail ppd : temp) { + if(ppd.getId()==projectPageDetail.getId())continue; + if (ppd.getElement().equals(projectPageDetail.getElement())) { + return true; + } + } + return false; + } + } +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/domain/ProjectPageDetail.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/domain/ProjectPageDetail.java new file mode 100644 index 0000000..c56ad2e --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/domain/ProjectPageDetail.java @@ -0,0 +1,152 @@ +package com.luckyframe.project.testmanagmt.projectPageDetail.domain; + +import com.luckyframe.framework.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; + +/** + * 页面详情表 project_page_detail + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public class ProjectPageDetail extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 系统主键 */ + private Integer id; + /** 创建者 */ + private String createBy; + /** 创建时间 */ + private Date createTime; + /** 更新者 */ + private String updateBy; + /** 更新时间 */ + private Date updateTime; + /** 备注 */ + private String remark; + /** 页面唯一编号 */ + private Integer pageId; + /** 定位类型,支持Byxpath等等 */ + private String type; + /** 元素名称 */ + private String element; + /** 具体的参数值 */ + private String value; + + public ProjectPageDetail(){ + + } + + public ProjectPageDetail(int pageId,String element){ + this.pageId=pageId; + this.element=element; + } + + public void setId(Integer id) + { + this.id = id; + } + + public Integer getId() + { + return id; + } + public void setCreateBy(String createBy) + { + this.createBy = createBy; + } + + public String getCreateBy() + { + return createBy; + } + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + public Date getCreateTime() + { + return createTime; + } + public void setUpdateBy(String updateBy) + { + this.updateBy = updateBy; + } + + public String getUpdateBy() + { + return updateBy; + } + public void setUpdateTime(Date updateTime) + { + this.updateTime = updateTime; + } + + public Date getUpdateTime() + { + return updateTime; + } + public void setRemark(String remark) + { + this.remark = remark; + } + + public String getRemark() + { + return remark; + } + public void setPageId(Integer pageId) + { + this.pageId = pageId; + } + + public Integer getPageId() + { + return pageId; + } + public void setType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } + public void setElement(String element) + { + this.element = element; + } + + public String getElement() + { + return element; + } + public void setValue(String value) + { + this.value = value; + } + + public String getValue() + { + return value; + } + + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("pageId", getPageId()) + .append("type", getType()) + .append("element", getElement()) + .append("value", getValue()) + .toString(); + } +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/mapper/ProjectPageDetailMapper.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/mapper/ProjectPageDetailMapper.java new file mode 100644 index 0000000..a13ef1e --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/mapper/ProjectPageDetailMapper.java @@ -0,0 +1,63 @@ +package com.luckyframe.project.testmanagmt.projectPageDetail.mapper; + +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; + +import java.util.List; + +/** + * 页面详情 数据层 + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public interface ProjectPageDetailMapper +{ + /** + * 查询页面详情信息 + * + * @param id 页面详情ID 主键ID + * @return 页面详情信息 + */ + public ProjectPageDetail selectProjectPageDetailById(Integer id); + + /** + * 查询页面详情列表 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 页面详情集合 + */ + public List selectProjectPageDetailList(ProjectPageDetail projectPageDetail); + + /** + * 新增页面详情 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 结果 + */ + public int insertProjectPageDetail(ProjectPageDetail projectPageDetail); + + /** + * 修改页面详情 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 结果 + */ + public int updateProjectPageDetail(ProjectPageDetail projectPageDetail); + + /** + * 删除页面详情 + * + * @param id 页面详情ID 主键ID + * @return 结果 + */ + public int deleteProjectPageDetailById(Integer id); + + /** + * 批量删除页面详情 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteProjectPageDetailByIds(String[] ids); + +} \ No newline at end of file diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/IProjectPageDetailService.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/IProjectPageDetailService.java new file mode 100644 index 0000000..43addc5 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/IProjectPageDetailService.java @@ -0,0 +1,55 @@ +package com.luckyframe.project.testmanagmt.projectPageDetail.service; + +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; + +import java.util.List; + +/** + * 页面详情 服务层 + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public interface IProjectPageDetailService +{ + /** + * 查询页面详情信息 + * + * @param id 页面详情ID 主键ID + * @return 页面详情信息 + */ + public ProjectPageDetail selectProjectPageDetailById(Integer id); + + /** + * 查询页面详情列表 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 页面详情集合 + */ + public List selectProjectPageDetailList(ProjectPageDetail projectPageDetail); + + /** + * 新增页面详情 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 结果 + */ + public int insertProjectPageDetail(ProjectPageDetail projectPageDetail); + + /** + * 修改页面详情 + * + * @param projectPageDetail 页面详情信息 基本信息 + * @return 结果 + */ + public int updateProjectPageDetail(ProjectPageDetail projectPageDetail); + + /** + * 删除页面详情信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteProjectPageDetailByIds(String ids); + +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/ProjectPageDetailServiceImpl.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/ProjectPageDetailServiceImpl.java new file mode 100644 index 0000000..3205f36 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageDetail/service/ProjectPageDetailServiceImpl.java @@ -0,0 +1,83 @@ +package com.luckyframe.project.testmanagmt.projectPageDetail.service; + +import com.luckyframe.common.support.Convert; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.mapper.ProjectPageDetailMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 页面详情 服务层实现 + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +@Service +public class ProjectPageDetailServiceImpl implements IProjectPageDetailService +{ + @Autowired + private ProjectPageDetailMapper projectPageDetailMapper; + + /** + * 查询页面详情信息 + * + * @param id 页面详情ID 主键ID + * @return 页面详情信息 基础信息 + */ + @Override + public ProjectPageDetail selectProjectPageDetailById(Integer id) + { + return projectPageDetailMapper.selectProjectPageDetailById(id); + } + + /** + * 查询页面详情列表 + * + * @param projectPageDetail 页面详情信息 基础信息 + * @return 页面详情集合 + */ + @Override + public List selectProjectPageDetailList(ProjectPageDetail projectPageDetail) + { + return projectPageDetailMapper.selectProjectPageDetailList(projectPageDetail); + } + + /** + * 新增页面详情 + * + * @param projectPageDetail 页面详情信息 基础信息 + * @return 结果 + */ + @Override + public int insertProjectPageDetail(ProjectPageDetail projectPageDetail) + { + return projectPageDetailMapper.insertProjectPageDetail(projectPageDetail); + } + + /** + * 修改页面详情 + * + * @param projectPageDetail 页面详情信息 基础信息 + * @return 结果 + */ + @Override + public int updateProjectPageDetail(ProjectPageDetail projectPageDetail) + { + return projectPageDetailMapper.updateProjectPageDetail(projectPageDetail); + } + + /** + * 删除页面详情对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteProjectPageDetailByIds(String ids) + { + return projectPageDetailMapper.deleteProjectPageDetailByIds(Convert.toStrArray(ids)); + } + +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/controller/ProjectPageObjectController.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/controller/ProjectPageObjectController.java new file mode 100644 index 0000000..2cf6fef --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/controller/ProjectPageObjectController.java @@ -0,0 +1,185 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.controller; + +import com.luckyframe.common.utils.poi.ExcelUtil; +import com.luckyframe.common.utils.security.ShiroUtils; +import com.luckyframe.framework.aspectj.lang.annotation.Log; +import com.luckyframe.framework.aspectj.lang.enums.BusinessType; +import com.luckyframe.framework.web.controller.BaseController; +import com.luckyframe.framework.web.domain.AjaxResult; +import com.luckyframe.framework.web.page.TableDataInfo; +import com.luckyframe.project.system.project.domain.Project; +import com.luckyframe.project.system.project.service.IProjectService; +import com.luckyframe.project.system.user.domain.User; +import com.luckyframe.project.testmanagmt.projectCase.domain.ProjectCaseSteps; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; +import com.luckyframe.project.testmanagmt.projectPageObject.service.IProjectPageObjectService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 页面配置管理 + * @author YSS陈再兴 + * @date 2022-03-10 + */ +@Controller +@RequestMapping("/testmanagmt/projectPageObject") +public class ProjectPageObjectController extends BaseController { + private String prefix = "testmanagmt/projectPageObject"; + @Autowired + private IProjectService projectService; + @Autowired + private IProjectPageObjectService projectPageObjectService; + @RequiresPermissions("testmanagmt:projectPageObject:view") + @GetMapping() + public String projectPageObject() { + return prefix + "/projectPageObject"; + } + + /** + * 查询页面配置管理列表 + */ + @RequiresPermissions("testmanagmt:projectPageObject:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ProjectPageObject projectPageObject) { + startPage(); + List list = projectPageObjectService.selectProjectPageObjectList(projectPageObject); + List projects = projectService.selectProjectAll(0); + Map map=new HashMap(); + for(Project p:projects){ + map.put(p.getProjectId(),p.getProjectName()); + } + for(ProjectPageObject p:list){ + if(p.getProjectId()==null)continue; + p.setProjectName(map.get(p.getProjectId())); + } + return getDataTable(list); + } + + + /** + * 导出页面配置管理列表 + */ + @RequiresPermissions("testmanagmt:projectPageObject:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ProjectPageObject projectPageObject) { + List list = projectPageObjectService.selectProjectPageObjectList(projectPageObject); + ExcelUtil util = new ExcelUtil(ProjectPageObject.class); + return util.exportExcel(list, "projectPageObject"); + } + + /** + * 新增页面配置管理 + */ + @GetMapping("/add") + public String add(ModelMap mmap) { + List projects = projectService.selectProjectAll(0); + mmap.put("projects", projects); + return prefix + "/add"; + } + + /** + * 新增保存页面配置管理 + */ + @RequiresPermissions("testmanagmt:projectPageObject:add") + @Log(title = "页面配置管理", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ProjectPageObject projectPageObject) { + if (checkExist(projectPageObject)) { + return AjaxResult.error(200,"页面已经存在!"); + } + User currentUser = ShiroUtils.getSysUser(); + projectPageObject.setCreateBy(currentUser.getUserName()); + projectPageObject.setUpdateBy(currentUser.getUserName()); + projectPageObject.setCreateTime(new Date()); + projectPageObject.setUpdateTime(new Date()); + return toAjax(projectPageObjectService.insertProjectPageObject(projectPageObject) > 0); + } + + /** + * 修改页面配置管理 + */ + @GetMapping("/edit/{projectId}") + public String edit(@PathVariable("projectId") Integer projectId, ModelMap mmap) { + List projects = projectService.selectProjectAll(0); + Map map=new HashMap(); + for(Project p:projects){ + map.put(p.getProjectId(),p.getProjectName()); + } + ProjectPageObject projectPageObject = projectPageObjectService.selectProjectPageObjectById(projectId); + projectPageObject.setProjectName(map.get(projectPageObject.getProjectId())); + mmap.put("projectPageObject", projectPageObject); + mmap.put("projects", projects); + return prefix + "/edit"; + } + + /** + * 修改保存页面配置管理 + */ + @RequiresPermissions("testmanagmt:projectPageObject:edit") + @Log(title = "页面配置管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ProjectPageObject projectPageObject) { + if (checkExist(projectPageObject)) { + return AjaxResult.error(200,"页面已经存在!"); + } + User currentUser = ShiroUtils.getSysUser(); + projectPageObject.setUpdateTime(new Date()); + projectPageObject.setUpdateBy(currentUser.getUserName()); + return toAjax(projectPageObjectService.updateProjectPageObject(projectPageObject) > 0); + } + + /** + * 删除页面配置管理 + */ + @RequiresPermissions("testmanagmt:projectPageObject:remove") + @Log(title = "页面配置管理", businessType = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + return toAjax(projectPageObjectService.deleteProjectPageObjectByIds(ids) > 0); + } + + public boolean checkExist(ProjectPageObject projectPageObject) { + ProjectPageObject check = new ProjectPageObject(); + check.setPageName(projectPageObject.getPageName()); + List list = projectPageObjectService.selectProjectPageObjectList(check); + //新增 + if (projectPageObject.getPageId() == null) { + if (list.size() > 0) { + return true; + } else { + return false; + } + } else + //修改 + { + check.setPageId(null); + List temp = projectPageObjectService.selectProjectPageObjectList(check); + for(ProjectPageObject ppo:temp){ + if(ppo.getPageId()==projectPageObject.getPageId())continue; + if(ppo.getPageName().equals(projectPageObject.getPageName())){ + return true; + } + } + return false; + } + } + + @PostMapping("/getAllPageObject") + @ResponseBody + public List getAllPageObject(@RequestBody ProjectCaseSteps projectCaseSteps) { + return projectPageObjectService.getAllPageObject2(projectCaseSteps.getProjectId()); + } +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/IbasePageObject.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/IbasePageObject.java new file mode 100644 index 0000000..ea306a5 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/IbasePageObject.java @@ -0,0 +1,18 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.domain; + +public interface IbasePageObject { + //系统index主页面名称 + String indexPage = "index"; + //快速查询输入框 + String input_quicksearch="input_quicksearch"; + //快速查询子输入框,点击后出现 + String input_inputforquicksearch="input_inputforquicksearch"; + //span_parentmenu + String span_parentmenu="span_parentmenu"; + //具体的菜单栏 + String span_menu="span_menu"; + String iframe="iframe"; + /** + 获取进入当前页面方法的步骤 + */ +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/ProjectPageObject.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/ProjectPageObject.java new file mode 100644 index 0000000..f26c603 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/domain/ProjectPageObject.java @@ -0,0 +1,214 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.domain; + +import com.luckyframe.framework.web.domain.BaseEntity; +import com.luckyframe.project.testmanagmt.projectCaseParams.mapper.ProjectCaseParamsMapper; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.mapper.ProjectPageDetailMapper; +import com.luckyframe.project.testmanagmt.projectPageObject.mapper.ProjectPageObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; +import java.util.List; + +/** + * 页面配置管理表 project_page_object + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public class ProjectPageObject extends BaseEntity { + + @Autowired + private ProjectPageObjectMapper projectPageObjectMapper; + @Autowired + private ProjectPageDetailMapper projectPageDetailMapper; + private static final long serialVersionUID = 1L; + @Autowired + private ProjectCaseParamsMapper projectCaseParamsMapper; + + /** + * 关联项目ID + */ + private Integer projectId; + /** + * 创建者 + */ + private String createBy; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新者 + */ + private String updateBy; + /** + * 更新时间 + */ + private Date updateTime; + /** + * 备注 + */ + private String remark; + /** + * 页面唯一编号 + */ + private Integer pageId; + /** + * 页面名称 + */ + private String pageName; + /** + * 页面父菜单 + */ + private String pageParentMenu; + /** + * 页面模块菜单 + */ + private String pageMenu; + /** + * pageiframe的定位路径 + */ + private String pageIframe; + + public List getProjectPageDetailList() { + return projectPageDetailList; + } + + public void setProjectPageDetailList(List projectPageDetailList) { + this.projectPageDetailList = projectPageDetailList; + } + + private ListprojectPageDetailList; + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + private String projectName; + + public ProjectPageObject() { + + } + + + public ProjectPageObject(int pageId, String pageName) { + this.pageId = pageId; + + } + + public ProjectPageObject(String pageName) { + this.pageName = pageName; + } + + @Override + public String toString() { + return "ProjectPageObject{" + + "projectId=" + projectId + + ", createBy='" + createBy + '\'' + + ", createTime=" + createTime + + ", updateBy='" + updateBy + '\'' + + ", updateTime=" + updateTime + + ", remark='" + remark + '\'' + + ", pageId=" + pageId + + ", pageName='" + pageName + '\'' + + ", pageMainMenu='" + pageParentMenu + '\'' + + ", pageModule='" + pageMenu + '\'' + + ", pageIframe='" + pageIframe + '\'' + + '}'; + } + + + public String getPageParentMenu() { + return pageParentMenu; + } + + public void setPageParentMenu(String pageParentMenu) { + this.pageParentMenu = pageParentMenu; + } + + public String getPageMenu() { + return pageMenu; + } + + public void setPageMenu(String pageMenu) { + this.pageMenu = pageMenu; + } + + public String getPageIframe() { + return pageIframe; + } + + public void setPageIframe(String pageIframe) { + this.pageIframe = pageIframe; + } + + public void setProjectId(Integer projectId) { + this.projectId = projectId; + } + + public Integer getProjectId() { + return projectId; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getCreateTime() { + return createTime; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRemark() { + return remark; + } + + public void setPageId(Integer pageId) { + this.pageId = pageId; + } + + public Integer getPageId() { + return pageId; + } + + public void setPageName(String pageName) { + this.pageName = pageName; + } + + public String getPageName() { + return pageName; + } + +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/mapper/ProjectPageObjectMapper.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/mapper/ProjectPageObjectMapper.java new file mode 100644 index 0000000..7de3528 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/mapper/ProjectPageObjectMapper.java @@ -0,0 +1,63 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.mapper; + +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; + +import java.util.List; + +/** + * 页面配置管理 数据层 + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public interface ProjectPageObjectMapper +{ + /** + * 查询页面配置管理信息 + * + * @param pageId 页面配置管理ID 主键ID + * @return 页面配置管理信息 + */ + public ProjectPageObject selectProjectPageObjectById(Integer pageId); + + /** + * 查询页面配置管理列表 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 页面配置管理集合 + */ + public List selectProjectPageObjectList(ProjectPageObject projectPageObject); + + /** + * 新增页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 结果 + */ + public int insertProjectPageObject(ProjectPageObject projectPageObject); + + /** + * 修改页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 结果 + */ + public int updateProjectPageObject(ProjectPageObject projectPageObject); + + /** + * 删除页面配置管理 + * + * @param projectId 页面配置管理ID 主键ID + * @return 结果 + */ + public int deleteProjectPageObjectById(Integer projectId); + + /** + * 批量删除页面配置管理 + * + * @param projectIds 需要删除的数据ID + * @return 结果 + */ + public int deleteProjectPageObjectByIds(String[] projectIds); + +} \ No newline at end of file diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/IProjectPageObjectService.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/IProjectPageObjectService.java new file mode 100644 index 0000000..0cd75d1 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/IProjectPageObjectService.java @@ -0,0 +1,65 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.service; + +import com.luckyframe.project.testmanagmt.projectCase.domain.ProjectCaseSteps; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; + +import java.util.List; +import java.util.Map; + +/** + * 页面配置管理 服务层 + * + * @author YSS陈再兴 + * @date 2022-03-10 + */ +public interface IProjectPageObjectService { + /** + * 查询页面配置管理信息 + * + * @param projectId 页面配置管理ID 主键ID + * @return 页面配置管理信息 + */ + public ProjectPageObject selectProjectPageObjectById(Integer projectId); + + /** + * 查询页面配置管理列表 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 页面配置管理集合 + */ + public List selectProjectPageObjectList(ProjectPageObject projectPageObject); + + /** + * 新增页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 结果 + */ + public int insertProjectPageObject(ProjectPageObject projectPageObject); + + /** + * 修改页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基本信息 + * @return 结果 + */ + public int updateProjectPageObject(ProjectPageObject projectPageObject); + + /** + * 删除页面配置管理信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteProjectPageObjectByIds(String ids); + + + /** + * 获取PO的缓存 + * @param projectId 项目ID + * @return + */ + public List getAllPageObject2(int projectId); + + +} diff --git a/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/ProjectPageObjectServiceImpl.java b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/ProjectPageObjectServiceImpl.java new file mode 100644 index 0000000..554d143 --- /dev/null +++ b/src/main/java/com/luckyframe/project/testmanagmt/projectPageObject/service/ProjectPageObjectServiceImpl.java @@ -0,0 +1,101 @@ +package com.luckyframe.project.testmanagmt.projectPageObject.service; + +import com.luckyframe.common.constant.Constants; +import com.luckyframe.common.support.Convert; +import com.luckyframe.project.testmanagmt.projectCase.domain.ProjectCaseSteps; +import com.luckyframe.project.testmanagmt.projectPageDetail.domain.ProjectPageDetail; +import com.luckyframe.project.testmanagmt.projectPageDetail.mapper.ProjectPageDetailMapper; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.IbasePageObject; +import com.luckyframe.project.testmanagmt.projectPageObject.domain.ProjectPageObject; +import com.luckyframe.project.testmanagmt.projectPageObject.mapper.ProjectPageObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 页面配置管理 服务层实现 + * @author YSS陈再兴 + * @date 2022-03-10 + */ +@Service +public class ProjectPageObjectServiceImpl implements IProjectPageObjectService, IbasePageObject { + @Autowired(required = false) + private ProjectPageObjectMapper projectPageObjectMapper; + + @Autowired(required = false) + private ProjectPageDetailMapper projectPageDetailMapper; + + /** + * 查询页面配置管理信息 + * + * @param pageId 页面配置管理ID 主键ID + * @return 页面配置管理信息 基础信息 + */ + @Override + public ProjectPageObject selectProjectPageObjectById(Integer pageId) { + return projectPageObjectMapper.selectProjectPageObjectById(pageId); + } + + /** + * 查询页面配置管理列表 + * + * @param projectPageObject 页面配置管理信息 基础信息 + * @return 页面配置管理集合 + */ + @Override + public List selectProjectPageObjectList(ProjectPageObject projectPageObject) { + return projectPageObjectMapper.selectProjectPageObjectList(projectPageObject); + } + + /** + * 新增页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基础信息 + * @return 结果 + */ + @Override + public int insertProjectPageObject(ProjectPageObject projectPageObject) { + return projectPageObjectMapper.insertProjectPageObject(projectPageObject); + } + + /** + * 修改页面配置管理 + * + * @param projectPageObject 页面配置管理信息 基础信息 + * @return 结果 + */ + @Override + public int updateProjectPageObject(ProjectPageObject projectPageObject) { + return projectPageObjectMapper.updateProjectPageObject(projectPageObject); + } + + /** + * 删除页面配置管理对象 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteProjectPageObjectByIds(String ids) { + return projectPageObjectMapper.deleteProjectPageObjectByIds(Convert.toStrArray(ids)); + } + + + @Override + public List getAllPageObject2(int projectId) { + ProjectPageObject temp = new ProjectPageObject(); + temp.setProjectId(projectId); + List projectPageObjectsList = projectPageObjectMapper.selectProjectPageObjectList(temp); + for (ProjectPageObject projectPageObject : projectPageObjectsList) { + ProjectPageDetail projectPageDetail = new ProjectPageDetail(); + projectPageDetail.setPageId(projectPageObject.getPageId()); + List projectPageDetailList = projectPageDetailMapper.selectProjectPageDetailList(projectPageDetail); + projectPageObject.setProjectPageDetailList(projectPageDetailList); + } + return projectPageObjectsList; + } +} diff --git a/src/main/resources/application-druid.yml b/src/main/resources/application-druid.yml index de9c461..e536288 100644 --- a/src/main/resources/application-druid.yml +++ b/src/main/resources/application-druid.yml @@ -6,9 +6,9 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://localhost:3306/luckyframe?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.73.12:3306/luckyframe2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root - password: luckyframe + password: 123456 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/src/main/resources/mybatis/testmanagmt/ProjectPageDetailMapper.xml b/src/main/resources/mybatis/testmanagmt/ProjectPageDetailMapper.xml new file mode 100644 index 0000000..89dbc90 --- /dev/null +++ b/src/main/resources/mybatis/testmanagmt/ProjectPageDetailMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, page_id, type, element, value from project_page_detail + + + + + + + + insert into project_page_detail + + create_by, + create_time, + update_by, + update_time, + remark, + page_id, + type, + element, + value, + + + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{pageId}, + #{type}, + #{element}, + #{value}, + + + + + update project_page_detail + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + page_id = #{pageId}, + type = #{type}, + element = #{element}, + value = #{value}, + + where id = #{id} + + + + delete from project_page_detail where id = #{id} + + + + delete from project_page_detail where id in + + #{id} + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/testmanagmt/ProjectPageObjectMapper.xml b/src/main/resources/mybatis/testmanagmt/ProjectPageObjectMapper.xml new file mode 100644 index 0000000..089ce23 --- /dev/null +++ b/src/main/resources/mybatis/testmanagmt/ProjectPageObjectMapper.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + select project_id, create_by, create_time, update_by, update_time, remark, page_id, page_name,page_parentmenu,page_menu from project_page_object + + + + + + + + insert into project_page_object + + project_id, + create_by, + create_time, + update_by, + update_time, + remark, + page_id, + page_name, + page_parentmenu, + page_menu, + + + + #{projectId}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{pageId}, + #{pageName}, + #{pageParentMenu}, + #{pageMenu}, + + + + + update project_page_object + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + page_id = #{pageId}, + page_name = #{pageName}, + page_parentmenu = #{pageParentMenu}, + page_menu = #{pageMenu}, + project_id = #{projectId} + + where page_id = #{pageId} + + + + delete from project_page_object where page_id = #{page_id} + + + + delete from project_page_object where page_id in + + #{pageId} + + + + \ No newline at end of file diff --git a/src/main/resources/templates/testmanagmt/projectCase/projectCaseSteps.html b/src/main/resources/templates/testmanagmt/projectCase/projectCaseSteps.html index e3c4b96..20b5132 100644 --- a/src/main/resources/templates/testmanagmt/projectCase/projectCaseSteps.html +++ b/src/main/resources/templates/testmanagmt/projectCase/projectCaseSteps.html @@ -1,600 +1,747 @@ - +
-

-

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
步骤包 | 定位路径方法 | 操作参数步骤动作预期结果类型扩展字段操作
-
- - - - -
-
-
-
- -
- -
-
-
-
-
-
-
-
-
-
- -
-
-
- -
- -
-
-
- - - - - - -
-
-
- -
-
- -
-
- -
-
+

+

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
步骤包 | 定位路径方法 | 操作参数步骤动作预期结果类型扩展字段操作
+
+ + + + +
+
+
+ + +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+ + + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ + diff --git a/src/main/resources/templates/testmanagmt/projectPageDetail/add.html b/src/main/resources/templates/testmanagmt/projectPageDetail/add.html new file mode 100644 index 0000000..d587223 --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageDetail/add.html @@ -0,0 +1,65 @@ + + + + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + + diff --git a/src/main/resources/templates/testmanagmt/projectPageDetail/edit.html b/src/main/resources/templates/testmanagmt/projectPageDetail/edit.html new file mode 100644 index 0000000..884f3f7 --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageDetail/edit.html @@ -0,0 +1,59 @@ + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + + diff --git a/src/main/resources/templates/testmanagmt/projectPageDetail/projectPageDetail.html b/src/main/resources/templates/testmanagmt/projectPageDetail/projectPageDetail.html new file mode 100644 index 0000000..98d9a87 --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageDetail/projectPageDetail.html @@ -0,0 +1,150 @@ + + + + + + +
+
+
+
+
+
    +
  • + 页面唯一编号: +
  • +
  • + 元素名称: +
  • +
  • + 具体的参数值: +
  • +
  • + 定位类型 +
  • +
  • + 备注: +
  • +
  • + 创建者: +
  • +
  • +  搜索 +  重置 +
  • +
+
+
+
+ + +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/testmanagmt/projectPageObject/add.html b/src/main/resources/templates/testmanagmt/projectPageObject/add.html new file mode 100644 index 0000000..3eff554 --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageObject/add.html @@ -0,0 +1,65 @@ + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+ + + diff --git a/src/main/resources/templates/testmanagmt/projectPageObject/edit.html b/src/main/resources/templates/testmanagmt/projectPageObject/edit.html new file mode 100644 index 0000000..0eb534e --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageObject/edit.html @@ -0,0 +1,64 @@ + + + + + +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ + + diff --git a/src/main/resources/templates/testmanagmt/projectPageObject/projectPageObject.html b/src/main/resources/templates/testmanagmt/projectPageObject/projectPageObject.html new file mode 100644 index 0000000..802e779 --- /dev/null +++ b/src/main/resources/templates/testmanagmt/projectPageObject/projectPageObject.html @@ -0,0 +1,148 @@ + + + + + + +
+
+
+
+
+
    +
  • + 页面编号: +
  • +
  • + 页面名称: +
  • +
  • + 创建者: +
  • + + +
  • +  搜索 +  重置 +
  • +
+
+
+
+ + +
+
+
+
+
+
+ + + \ No newline at end of file -- Gitee From ea01f56caa2b8d8e834a752e4ccc92a687802329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=86=8D=E5=85=B4?= Date: Thu, 26 May 2022 10:56:03 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:WEB=20UI=E6=94=AF=E6=8C=81PO=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F,=E6=8F=90=E4=BA=A4sql=E6=9B=B4=E6=96=B0=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V3.5__upgradeData.sql | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/V3.5__upgradeData.sql b/src/main/resources/db/migration/V3.5__upgradeData.sql index ed3cba7..9e8abb3 100644 --- a/src/main/resources/db/migration/V3.5__upgradeData.sql +++ b/src/main/resources/db/migration/V3.5__upgradeData.sql @@ -104,4 +104,45 @@ INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1110); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1111); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1112); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1113); -INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1114); \ No newline at end of file +INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1114); + +--12、PO模式功能 +CREATE TABLE if not exists `project_page_object` ( + `project_id` int NULL DEFAULT NULL COMMENT '关联项目ID', + `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `page_id` int NOT NULL AUTO_INCREMENT COMMENT '页面唯一编号', + `page_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面名称', + `page_parentmenu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面父菜单', + `page_menu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面菜单', + `project_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`page_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面配置管理' ROW_FORMAT = DYNAMIC; + +CREATE TABLE if not exists `project_page_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '系统主键', + `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `page_id` int NOT NULL COMMENT '页面唯一编号', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定位类型,支持Byxpath等等', + `element` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '元素名称', + `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '具体的参数值', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面详情' ROW_FORMAT = DYNAMIC; + +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2001, '页面管理', 4, 3, '/testmanagmt/projectPageObject', 'C', '0', 'testmanagmt:projectPageObject:view', '#', 'admin', '2018-03-01 00:00:00', 'dyl', '2022-03-31 17:48:28', '页面配置管理菜单'); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2002, '页面配置管理查询', 2001, 1, '#', 'F', '0', 'testmanagmt:projectPageObject:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:36', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2003, '页面配置管理新增', 2001, 2, '#', 'F', '0', 'testmanagmt:projectPageObject:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:52', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2004, '页面配置管理修改', 2001, 3, '#', 'F', '0', 'testmanagmt:projectPageObject:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:00', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2005, '页面配置管理删除', 2001, 4, '#', 'F', '0', 'testmanagmt:projectPageObject:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:08', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2006, '页面详情', 4, 1, '/testmanagmt/projectPageDetail', 'C', '1', 'testmanagmt:projectPageDetail:view', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-03-10 17:32:07', '页面详情菜单'); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2007, '页面详情查询', 2006, 1, '#', 'F', '0', 'testmanagmt:projectPageDetail:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:24', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2008, '页面详情新增', 2006, 2, '#', 'F', '0', 'testmanagmt:projectPageDetail:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:47', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2009, '页面详情修改', 2006, 3, '#', 'F', '0', 'testmanagmt:projectPageDetail:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:53', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2010, '页面详情删除', 2006, 4, '#', 'F', '0', 'testmanagmt:projectPageDetail:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:30:00', ''); \ No newline at end of file -- Gitee From 992f16af02dba673beaa2c87d6ead7b34c5d65fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=86=8D=E5=85=B4?= Date: Thu, 26 May 2022 11:10:57 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=E8=B0=83=E6=95=B4sql=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E5=AD=98=E6=94=BE=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V3.5.1__upgradeData.sql | 49 +++++++++++++++++++ .../db/migration/V3.5__upgradeData.sql | 43 +--------------- 2 files changed, 50 insertions(+), 42 deletions(-) create mode 100644 src/main/resources/db/migration/V3.5.1__upgradeData.sql diff --git a/src/main/resources/db/migration/V3.5.1__upgradeData.sql b/src/main/resources/db/migration/V3.5.1__upgradeData.sql new file mode 100644 index 0000000..4570581 --- /dev/null +++ b/src/main/resources/db/migration/V3.5.1__upgradeData.sql @@ -0,0 +1,49 @@ +/* + * LuckyFrame 自动化测试平台 SQL脚本初始化 + * Version 3.5.1 + * Author YSS陈再兴 + * Date 2022-05-26 + + ************ WARNING ************ + 此脚本属于应用自动升级数据库表结构以及数据脚本,无需手动执行,请慎重!!!! +*/ +--1、PO模式功能 +CREATE TABLE if not exists `project_page_object` ( + `project_id` int NULL DEFAULT NULL COMMENT '关联项目ID', + `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `page_id` int NOT NULL AUTO_INCREMENT COMMENT '页面唯一编号', + `page_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面名称', + `page_parentmenu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面父菜单', + `page_menu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面菜单', + `project_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`page_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面配置管理' ROW_FORMAT = DYNAMIC; + +CREATE TABLE if not exists `project_page_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '系统主键', + `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `page_id` int NOT NULL COMMENT '页面唯一编号', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定位类型,支持Byxpath等等', + `element` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '元素名称', + `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '具体的参数值', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面详情' ROW_FORMAT = DYNAMIC; + +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2001, '页面管理', 4, 3, '/testmanagmt/projectPageObject', 'C', '0', 'testmanagmt:projectPageObject:view', '#', 'admin', '2018-03-01 00:00:00', 'dyl', '2022-03-31 17:48:28', '页面配置管理菜单'); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2002, '页面配置管理查询', 2001, 1, '#', 'F', '0', 'testmanagmt:projectPageObject:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:36', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2003, '页面配置管理新增', 2001, 2, '#', 'F', '0', 'testmanagmt:projectPageObject:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:52', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2004, '页面配置管理修改', 2001, 3, '#', 'F', '0', 'testmanagmt:projectPageObject:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:00', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2005, '页面配置管理删除', 2001, 4, '#', 'F', '0', 'testmanagmt:projectPageObject:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:08', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2006, '页面详情', 4, 1, '/testmanagmt/projectPageDetail', 'C', '1', 'testmanagmt:projectPageDetail:view', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-03-10 17:32:07', '页面详情菜单'); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2007, '页面详情查询', 2006, 1, '#', 'F', '0', 'testmanagmt:projectPageDetail:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:24', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2008, '页面详情新增', 2006, 2, '#', 'F', '0', 'testmanagmt:projectPageDetail:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:47', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2009, '页面详情修改', 2006, 3, '#', 'F', '0', 'testmanagmt:projectPageDetail:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:53', ''); +INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2010, '页面详情删除', 2006, 4, '#', 'F', '0', 'testmanagmt:projectPageDetail:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:30:00', ''); \ No newline at end of file diff --git a/src/main/resources/db/migration/V3.5__upgradeData.sql b/src/main/resources/db/migration/V3.5__upgradeData.sql index 9e8abb3..ed3cba7 100644 --- a/src/main/resources/db/migration/V3.5__upgradeData.sql +++ b/src/main/resources/db/migration/V3.5__upgradeData.sql @@ -104,45 +104,4 @@ INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1110); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1111); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1112); INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1113); -INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1114); - ---12、PO模式功能 -CREATE TABLE if not exists `project_page_object` ( - `project_id` int NULL DEFAULT NULL COMMENT '关联项目ID', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - `page_id` int NOT NULL AUTO_INCREMENT COMMENT '页面唯一编号', - `page_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面名称', - `page_parentmenu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面父菜单', - `page_menu` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页面菜单', - `project_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - PRIMARY KEY (`page_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面配置管理' ROW_FORMAT = DYNAMIC; - -CREATE TABLE if not exists `project_page_detail` ( - `id` int NOT NULL AUTO_INCREMENT COMMENT '系统主键', - `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', - `page_id` int NOT NULL COMMENT '页面唯一编号', - `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定位类型,支持Byxpath等等', - `element` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '元素名称', - `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '具体的参数值', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 76 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '页面详情' ROW_FORMAT = DYNAMIC; - -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2001, '页面管理', 4, 3, '/testmanagmt/projectPageObject', 'C', '0', 'testmanagmt:projectPageObject:view', '#', 'admin', '2018-03-01 00:00:00', 'dyl', '2022-03-31 17:48:28', '页面配置管理菜单'); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2002, '页面配置管理查询', 2001, 1, '#', 'F', '0', 'testmanagmt:projectPageObject:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:36', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2003, '页面配置管理新增', 2001, 2, '#', 'F', '0', 'testmanagmt:projectPageObject:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:52', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2004, '页面配置管理修改', 2001, 3, '#', 'F', '0', 'testmanagmt:projectPageObject:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:00', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2005, '页面配置管理删除', 2001, 4, '#', 'F', '0', 'testmanagmt:projectPageObject:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:08', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2006, '页面详情', 4, 1, '/testmanagmt/projectPageDetail', 'C', '1', 'testmanagmt:projectPageDetail:view', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-03-10 17:32:07', '页面详情菜单'); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2007, '页面详情查询', 2006, 1, '#', 'F', '0', 'testmanagmt:projectPageDetail:list', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:28:24', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2008, '页面详情新增', 2006, 2, '#', 'F', '0', 'testmanagmt:projectPageDetail:add', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:47', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2009, '页面详情修改', 2006, 3, '#', 'F', '0', 'testmanagmt:projectPageDetail:edit', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:29:53', ''); -INSERT INTO sys_menu (`menu_id`, menu_name`, parent_id`, order_num`, url`, menu_type`, visible`, perms`, icon`, create_by`, create_time`, update_by`, update_time`, remark`) VALUES (2010, '页面详情删除', 2006, 4, '#', 'F', '0', 'testmanagmt:projectPageDetail:remove', '#', 'admin', '2018-03-01 00:00:00', 'admin', '2022-04-01 11:30:00', ''); \ No newline at end of file +INSERT INTO sys_role_menu(role_id,menu_id) VALUES(2,1114); \ No newline at end of file -- Gitee