From e3a41e81de985539d4f1559c714af0e16628f7fc Mon Sep 17 00:00:00 2001 From: zhouyl <583641232@qq.com> Date: Thu, 8 Aug 2024 21:28:19 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B5=8B=E8=AF=95=E5=8C=85?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/ToolManageController.java | 147 +++++++++++++++ .../src/main/resources/application-dev.yml | 8 +- tp-admin/src/main/resources/application.yml | 4 +- .../common/utils/DownLoadUtils.java | 3 - .../controller/FuncCarAppController.java | 150 --------------- .../functional/mapper/FuncCarAppMapper.java | 14 -- .../service/IFuncCarAppService.java | 37 ---- .../service/impl/FuncCarAppServiceImpl.java | 134 ------------- .../system/domain/ToolManage.java | 53 ++++++ .../system/domain/vo/DownloadToolRequest.java | 26 +++ .../system/domain/vo/SysOssVo.java | 5 +- .../system/domain/vo/ToolManageVo.java | 56 ++++++ .../system/mapper/ToolManageMapper.java | 17 ++ .../system/service/IToolManageService.java | 59 ++++++ .../service/impl/SysOssServiceImpl.java | 1 + .../service/impl/ToolManageServiceImpl.java | 177 ++++++++++++++++++ 16 files changed, 543 insertions(+), 348 deletions(-) create mode 100644 tp-admin/src/main/java/com/inscloudtech/web/controller/system/ToolManageController.java delete mode 100644 tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java delete mode 100644 tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java delete mode 100644 tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java delete mode 100644 tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/domain/ToolManage.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/domain/vo/DownloadToolRequest.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/domain/vo/ToolManageVo.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/mapper/ToolManageMapper.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/service/IToolManageService.java create mode 100644 tp-system/src/main/java/com/inscloudtech/system/service/impl/ToolManageServiceImpl.java diff --git a/tp-admin/src/main/java/com/inscloudtech/web/controller/system/ToolManageController.java b/tp-admin/src/main/java/com/inscloudtech/web/controller/system/ToolManageController.java new file mode 100644 index 0000000..94378c1 --- /dev/null +++ b/tp-admin/src/main/java/com/inscloudtech/web/controller/system/ToolManageController.java @@ -0,0 +1,147 @@ +package com.inscloudtech.web.controller.system; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.inscloudtech.common.annotation.Log; +import com.inscloudtech.common.annotation.RepeatSubmit; +import com.inscloudtech.common.core.controller.BaseController; +import com.inscloudtech.common.core.domain.PageQuery; +import com.inscloudtech.common.core.domain.R; +import com.inscloudtech.common.core.page.TableDataInfo; +import com.inscloudtech.common.core.validate.AddGroup; +import com.inscloudtech.common.core.validate.EditGroup; +import com.inscloudtech.common.enums.BusinessType; +import com.inscloudtech.common.utils.poi.ExcelUtil; +import com.inscloudtech.system.domain.ToolManage; +import com.inscloudtech.system.domain.vo.DownloadToolRequest; +import com.inscloudtech.system.domain.vo.ToolManageVo; +import com.inscloudtech.system.service.IToolManageService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 测试包管理 + * + * @author inscloudtech + * @date 2024-08-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/toolManage") +public class ToolManageController extends BaseController { + + private final IToolManageService iToolManageService; + + /** + * 查询测试包管理列表 + */ + @GetMapping("/list") + public TableDataInfo list(ToolManage bo, PageQuery pageQuery) { + return iToolManageService.queryPageList(bo, pageQuery); + } + + /** + * 导出测试包管理列表 + */ + @Log(title = "测试包管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ToolManage bo, HttpServletResponse response) { + List list = iToolManageService.queryList(bo); + ExcelUtil.exportExcel(list, "测试包管理", ToolManageVo.class, response); + } + + /** + * 获取测试包管理详细信息 + * + * @param id 主键 + */ + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iToolManageService.queryById(id)); + } + + /** + * 新增测试包 + */ + @Log(title = "测试包管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ToolManage bo) { + return toAjax(iToolManageService.insertByBo(bo)); + } + + + /** + * 新增/修改测试包 + * + */ + @Log(title = "测试包管理", businessType = BusinessType.INSERT) + @PostMapping(value = "/uploadToolAndTips", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R uploadToolAndTips(@RequestPart("file") MultipartFile file, + @RequestPart("tipsFile") MultipartFile tipsFile, + @RequestPart("moduleName") String moduleName, + @RequestPart("toolName") String toolName, + @RequestPart("toolManageId") Long toolManageId) { + if (ObjectUtil.isNull(file) && ObjectUtil.isNull(tipsFile) ) { + return R.fail("上传文件不能为空!"); + } + if (StrUtil.isEmpty(moduleName)) { + return R.fail("模块名不能为空!"); + } + if (StrUtil.isEmpty(toolName)) { + return R.fail("文件名不能为空!"); + } + iToolManageService.uploadToolOrTips(file,tipsFile,toolName,moduleName, toolManageId); + return R.ok("上传成功!"); + } + + + + /** + * 根据测试模块名称-工具名称下载测试工具/工具操作手册 + */ + @GetMapping("/downloadTool") + public void downloadTool(DownloadToolRequest downloadToolRequest , HttpServletResponse response) throws IOException { + iToolManageService.downloadByToolName(downloadToolRequest,response); + } + + +// /** +// * 修改测试包管理 +// */ +// @Log(title = "测试包管理", businessType = BusinessType.UPDATE) +// @RepeatSubmit() +// @PutMapping() +// public R edit(@Validated(EditGroup.class) @RequestBody ToolManage bo) { +// return toAjax(iToolManageService.updateByBo(bo)); +// } + + /** + * 删除测试包管理 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:manage:remove") + @Log(title = "测试包管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iToolManageService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} + diff --git a/tp-admin/src/main/resources/application-dev.yml b/tp-admin/src/main/resources/application-dev.yml index f9d88e0..775124f 100644 --- a/tp-admin/src/main/resources/application-dev.yml +++ b/tp-admin/src/main/resources/application-dev.yml @@ -21,12 +21,6 @@ spring: username: root password: 123456 # 从库数据源 - postgresql: - type: ${spring.datasource.type} - driverClassName: org.postgresql.Driver - url: jdbc:postgresql://192.168.3.20:5432/chng_wuzi_data - username: dev - password: 123456 hikari: # 最大连接池数量 maxPoolSize: 20 @@ -47,7 +41,7 @@ spring: spring: redis: # 地址 - host: 192.168.3.20 + host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 diff --git a/tp-admin/src/main/resources/application.yml b/tp-admin/src/main/resources/application.yml index 68a1678..b2472cf 100644 --- a/tp-admin/src/main/resources/application.yml +++ b/tp-admin/src/main/resources/application.yml @@ -73,9 +73,9 @@ spring: servlet: multipart: # 单个文件大小 - max-file-size: 10MB + max-file-size: 1024MB # 设置总上传的文件大小 - max-request-size: 20MB + max-request-size: 1024MB # 服务模块 devtools: restart: diff --git a/tp-common/src/main/java/com/inscloudtech/common/utils/DownLoadUtils.java b/tp-common/src/main/java/com/inscloudtech/common/utils/DownLoadUtils.java index 1a9a459..f0b7cfb 100644 --- a/tp-common/src/main/java/com/inscloudtech/common/utils/DownLoadUtils.java +++ b/tp-common/src/main/java/com/inscloudtech/common/utils/DownLoadUtils.java @@ -46,9 +46,6 @@ public class DownLoadUtils { response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); -// if (delete) { -// FileUtils.deleteFile(filePath); -// } } catch (Exception e) { e.printStackTrace(); } diff --git a/tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java b/tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java deleted file mode 100644 index 44deec2..0000000 --- a/tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.inscloudtech.functional.controller; - -import com.inscloudtech.common.annotation.RepeatSubmit; -import com.inscloudtech.common.config.ProjectConfig; -import com.inscloudtech.common.core.controller.BaseController; -import com.inscloudtech.common.core.domain.PageQuery; -import com.inscloudtech.common.core.domain.R; -import com.inscloudtech.common.core.page.TableDataInfo; -import com.inscloudtech.common.core.validate.AddGroup; -import com.inscloudtech.common.core.validate.EditGroup; -import com.inscloudtech.common.utils.StringUtils; -import com.inscloudtech.common.utils.file.FileUtils; -import com.inscloudtech.functional.domain.FuncCarApp; -import com.inscloudtech.functional.service.IFuncCarApiService; -import com.inscloudtech.functional.service.IFuncCarAppService; -import lombok.RequiredArgsConstructor; -import org.springframework.http.MediaType; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.NotEmpty; -import java.util.Arrays; -import java.util.Random; - -/** - * 兼容可靠性测试系统-应用程序兼容性测试工具 - * - * @author inscloudtech - * @date 2024-06-11 - */ -@RequiredArgsConstructor -@RestController -@RequestMapping("/functional/carApp") -public class FuncCarAppController extends BaseController { - - private String DEMO_APP_STATUS = "STOP"; - - private String DATA_SOURCE = "MYSQL"; - - private final IFuncCarAppService iFuncCarAppService; - - /** - * 数据库测试-示例应用状态 - */ - @GetMapping("/status") - public R status() { - return R.ok(DEMO_APP_STATUS); - } - - /** - * 数据库测试-启动示例应用程序 - */ - @GetMapping("/start") - public R start() { - // 模拟网络延迟 - Random random = new Random(); - int delayMillis = random.nextInt(2000); // 随机延迟0-500毫秒 - try { - Thread.sleep(delayMillis); - } catch (InterruptedException e) { - e.printStackTrace(); - } - DEMO_APP_STATUS = "START"; - return R.ok("示例应用已启动!"); - } - - /** - * 数据库测试-停止示例应用程序 - */ - @GetMapping("/stop") - public R stop() { - DEMO_APP_STATUS = "STOP"; - return R.ok("示例应用已停止!"); - } - - /** - * 数据库测试-1.当前数据源 - */ - @GetMapping("/getDS") - public R getDS() { - return R.ok("当前数据源为【" +DATA_SOURCE+ "】"); - } - - /** - * 数据库测试-2.切换数据源 - */ - @GetMapping("/changeDS/{ds}") - public R changeDS(@PathVariable int ds) { - if(ds == 0){ - DATA_SOURCE = "MYSQL"; - }else if (ds == 1){ - DATA_SOURCE = "POSTGRESQL"; - }else { - throw new RuntimeException("未提供该类数据源!"); - } - - return R.ok("数据源已切换为【" +DATA_SOURCE+ "】"); - } - - void checkDemoAppStatus(){ - if(DEMO_APP_STATUS.equals("STOP")){ - throw new RuntimeException("示例应用程序未启动!"); - } - } - - /** - * 数据库测试-3查询示例数据列表 - */ - @GetMapping("/demoDataList") - public TableDataInfo list(FuncCarApp bo, PageQuery pageQuery) { - checkDemoAppStatus(); - return iFuncCarAppService.queryPageList(bo, pageQuery,DATA_SOURCE); - } - - - /** - * 数据库测试-4新增示例数据 - */ - @RepeatSubmit() - @PostMapping("/demoData") - public R add(@Validated(AddGroup.class) @RequestBody FuncCarApp bo) { - checkDemoAppStatus(); - return toAjax(iFuncCarAppService.insertByBo(bo,DATA_SOURCE)); - } - - /** - * 数据库测试-5修改示例数据 - */ - @RepeatSubmit() - @PutMapping("/demoData") - public R edit(@Validated(EditGroup.class) @RequestBody FuncCarApp bo) { - checkDemoAppStatus(); - return toAjax(iFuncCarAppService.updateByBo(bo,DATA_SOURCE)); - } - - /** - * 数据库测试-6删除示例数据 - * - * @param operIds 主键串 - */ - @DeleteMapping("/demoData/{operIds}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] operIds) { - checkDemoAppStatus(); - return toAjax(iFuncCarAppService.deleteWithValidByIds(Arrays.asList(operIds), true,DATA_SOURCE)); - } - -} diff --git a/tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java b/tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java deleted file mode 100644 index 277e59b..0000000 --- a/tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.inscloudtech.functional.mapper; - -import com.inscloudtech.common.core.mapper.BaseMapperPlus; -import com.inscloudtech.functional.domain.FuncCarApp; - -/** - * 兼容可靠性测试系统-API接口兼容性测试工具Mapper接口 - * - * @author inscloudtech - * @date 2024-06-11 - */ -public interface FuncCarAppMapper extends BaseMapperPlus { - -} diff --git a/tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java b/tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java deleted file mode 100644 index 1c36667..0000000 --- a/tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.inscloudtech.functional.service; - -import com.inscloudtech.functional.domain.FuncCarApp; -import com.inscloudtech.common.core.page.TableDataInfo; -import com.inscloudtech.common.core.domain.PageQuery; - -import java.util.Collection; -import java.util.List; - -/** - * 兼容可靠性测试系统-应用程序兼容性测试工具Service接口 - * - * @author inscloudtech - * @date 2024-06-17 - */ -public interface IFuncCarAppService { - - /** - * 查询兼容可靠性测试系统-应用程序兼容性测试工具列表 - */ - TableDataInfo queryPageList(FuncCarApp bo, PageQuery pageQuery,String dataSource); - - /** - * 新增兼容可靠性测试系统-应用程序兼容性测试工具 - */ - Boolean insertByBo(FuncCarApp bo,String dataSource); - - /** - * 修改兼容可靠性测试系统-应用程序兼容性测试工具 - */ - Boolean updateByBo(FuncCarApp bo,String dataSource); - - /** - * 校验并批量删除兼容可靠性测试系统-应用程序兼容性测试工具信息 - */ - Boolean deleteWithValidByIds(Collection ids, Boolean isValid,String dataSource); -} diff --git a/tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java b/tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java deleted file mode 100644 index 57578cf..0000000 --- a/tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.inscloudtech.functional.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import com.inscloudtech.common.core.domain.model.LoginUser; -import com.inscloudtech.common.core.page.TableDataInfo; -import com.inscloudtech.common.core.domain.PageQuery; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.inscloudtech.common.helper.LoginHelper; -import com.inscloudtech.common.utils.StringUtils; -import com.inscloudtech.functional.domain.FuncCarAppPg; -import com.inscloudtech.functional.mapper.FuncCarAppPgMapper; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import com.inscloudtech.functional.domain.FuncCarApp; -import com.inscloudtech.functional.mapper.FuncCarAppMapper; -import com.inscloudtech.functional.service.IFuncCarAppService; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Collection; - -/** - * 兼容可靠性测试系统-应用程序兼容性测试工具Service业务层处理 - * - * @author inscloudtech - * @date 2024-06-17 - */ -@RequiredArgsConstructor -@Service -public class FuncCarAppServiceImpl implements IFuncCarAppService { - - private final FuncCarAppMapper baseMapper; - - private final FuncCarAppPgMapper pgBaseMapper; - - - /** - * 查询兼容可靠性测试系统-应用程序兼容性测试工具列表 - */ - @Override - public TableDataInfo queryPageList(FuncCarApp bo, PageQuery pageQuery,String dataSource) { - - if(dataSource.equals("MYSQL")){ - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - }else { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getName()), FuncCarAppPg::getName, bo.getName()); - lqw.eq(bo.getStatus() != null, FuncCarAppPg::getStatus, bo.getStatus()); - LoginUser loginUser = LoginHelper.getLoginUser(); - lqw.eq(FuncCarAppPg::getUserId, loginUser.getUserId()); - Page result = pgBaseMapper.selectPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - - } - - - - private LambdaQueryWrapper buildQueryWrapper(FuncCarApp bo) { - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.like(StringUtils.isNotBlank(bo.getName()), FuncCarApp::getName, bo.getName()); - lqw.eq(bo.getStatus() != null, FuncCarApp::getStatus, bo.getStatus()); - LoginUser loginUser = LoginHelper.getLoginUser(); - lqw.eq(FuncCarApp::getUserId, loginUser.getUserId()); - return lqw; - } - - /** - * 新增兼容可靠性测试系统-应用程序兼容性测试工具 - */ - @Override - public Boolean insertByBo(FuncCarApp add,String dataSource) { - validEntityBeforeSave(add); - LoginUser loginUser = LoginHelper.getLoginUser(); - add.setUserId(loginUser.getUserId()); - add.setCreateTime(new Date()); - boolean flag ; - if(dataSource.equals("MYSQL")){ - flag = baseMapper.insert(add) > 0; - }else { - FuncCarAppPg pgAdd = BeanUtil.toBean(add, FuncCarAppPg.class); - flag = pgBaseMapper.insert(pgAdd) > 0; - } - - return flag; - } - - /** - * 修改兼容可靠性测试系统-应用程序兼容性测试工具 - */ - @Override - public Boolean updateByBo(FuncCarApp bo,String dataSource) { - validEntityBeforeSave(bo); - bo.setUpdateTime(new Date()); - boolean flag ; - if(dataSource.equals("MYSQL")){ - flag = baseMapper.updateById(bo) > 0; - }else { - FuncCarAppPg pgAdd = BeanUtil.toBean(bo, FuncCarAppPg.class); - flag = pgBaseMapper.updateById(pgAdd) > 0; - } - return flag; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(FuncCarApp entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除兼容可靠性测试系统-应用程序兼容性测试工具 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid,String dataSource) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - boolean flag ; - if(dataSource.equals("MYSQL")){ - flag = baseMapper.deleteBatchIds(ids) > 0; - }else { - flag = pgBaseMapper.deleteBatchIds(ids) > 0; - } - return flag; - } -} diff --git a/tp-system/src/main/java/com/inscloudtech/system/domain/ToolManage.java b/tp-system/src/main/java/com/inscloudtech/system/domain/ToolManage.java new file mode 100644 index 0000000..7cf0dda --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/domain/ToolManage.java @@ -0,0 +1,53 @@ +package com.inscloudtech.system.domain; + + +import com.baomidou.mybatisplus.annotation.*; +import com.inscloudtech.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 测试包管理对象 tool_manage + * + * @author inscloudtech + * @date 2024-08-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("tool_manage") +public class ToolManage extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + /** + * 功能模块 + */ + private String moduleName; + /** + * 工具名称 + */ + private String toolName; + /** + * 测试包 + */ + private String toolPath; + /** + * 操作手册 + */ + private String tipsPath; + /** + * + */ + private Long toolOssId; + /** + * + */ + private Long tipsOssId; + +} diff --git a/tp-system/src/main/java/com/inscloudtech/system/domain/vo/DownloadToolRequest.java b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/DownloadToolRequest.java new file mode 100644 index 0000000..e067904 --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/DownloadToolRequest.java @@ -0,0 +1,26 @@ +package com.inscloudtech.system.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class DownloadToolRequest { + + /** + * 模块名称 + */ + @NotNull(message = "模块名称不能为空") + private String moduleName; + /** + * 工具名称 + */ + @NotNull(message = "工具名称不能为空") + private String toolName; + + /** + * 下载类型-0工具/1操作手册 + */ + @NotNull(message = "下载类型不能为空") + private String type; +} diff --git a/tp-system/src/main/java/com/inscloudtech/system/domain/vo/SysOssVo.java b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/SysOssVo.java index c852b23..9a04bf8 100644 --- a/tp-system/src/main/java/com/inscloudtech/system/domain/vo/SysOssVo.java +++ b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/SysOssVo.java @@ -54,5 +54,8 @@ public class SysOssVo { */ private String service; - + /** + * 工具/操作手册名称 + */ + private String toolName; } diff --git a/tp-system/src/main/java/com/inscloudtech/system/domain/vo/ToolManageVo.java b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/ToolManageVo.java new file mode 100644 index 0000000..8ee8234 --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/domain/vo/ToolManageVo.java @@ -0,0 +1,56 @@ +package com.inscloudtech.system.domain.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.inscloudtech.common.annotation.ExcelDictFormat; +import com.inscloudtech.common.convert.ExcelDictConvert; +import lombok.Data; + +import java.io.Serializable; + +/** + * 测试包管理视图对象 tool_manage + * + * @author inscloudtech + * @date 2024-08-08 + */ +@Data +@ExcelIgnoreUnannotated +public class ToolManageVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 功能模块 + */ + @ExcelProperty(value = "功能模块") + private String moduleName; + + /** + * 工具名称 + */ + @ExcelProperty(value = "工具名称") + private String toolName; + + /** + * 测试包 + */ + @ExcelProperty(value = "测试包") + private String toolPath; + + /** + * 操作手册 + */ + @ExcelProperty(value = "操作手册") + private String tipsPath; + + + +} diff --git a/tp-system/src/main/java/com/inscloudtech/system/mapper/ToolManageMapper.java b/tp-system/src/main/java/com/inscloudtech/system/mapper/ToolManageMapper.java new file mode 100644 index 0000000..ce95be7 --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/mapper/ToolManageMapper.java @@ -0,0 +1,17 @@ +package com.inscloudtech.system.mapper; + + +import com.inscloudtech.system.domain.ToolManage; +import com.inscloudtech.system.domain.vo.ToolManageVo; +import com.inscloudtech.common.core.mapper.BaseMapperPlus; + +/** + * 测试包管理Mapper接口 + * + * @author inscloudtech + * @date 2024-08-08 + */ +public interface ToolManageMapper extends BaseMapperPlus { + +} + diff --git a/tp-system/src/main/java/com/inscloudtech/system/service/IToolManageService.java b/tp-system/src/main/java/com/inscloudtech/system/service/IToolManageService.java new file mode 100644 index 0000000..fdcd44b --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/service/IToolManageService.java @@ -0,0 +1,59 @@ +package com.inscloudtech.system.service; + + + +import com.inscloudtech.system.domain.ToolManage; +import com.inscloudtech.system.domain.vo.DownloadToolRequest; +import com.inscloudtech.system.domain.vo.ToolManageVo; +import com.inscloudtech.common.core.page.TableDataInfo; +import com.inscloudtech.common.core.domain.PageQuery; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 测试包管理Service接口 + * + * @author inscloudtech + * @date 2024-08-08 + */ +public interface IToolManageService { + + /** + * 查询测试包管理 + */ + ToolManageVo queryById(Long id); + + /** + * 查询测试包管理列表 + */ + TableDataInfo queryPageList(ToolManage bo, PageQuery pageQuery); + + /** + * 查询测试包管理列表 + */ + List queryList(ToolManage bo); + + /** + * 新增测试包管理 + */ + Boolean insertByBo(ToolManage bo); + + /** + * 修改测试包管理 + */ + Boolean updateByBo(ToolManage bo); + + /** + * 校验并批量删除测试包管理信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + Boolean uploadToolOrTips(MultipartFile file, MultipartFile tipsFile, String toolName,String moduleName,Long toolManageId); + + void downloadByToolName(DownloadToolRequest downloadToolRequest,HttpServletResponse response); +} + diff --git a/tp-system/src/main/java/com/inscloudtech/system/service/impl/SysOssServiceImpl.java b/tp-system/src/main/java/com/inscloudtech/system/service/impl/SysOssServiceImpl.java index d45eb09..f70db02 100644 --- a/tp-system/src/main/java/com/inscloudtech/system/service/impl/SysOssServiceImpl.java +++ b/tp-system/src/main/java/com/inscloudtech/system/service/impl/SysOssServiceImpl.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.inscloudtech.common.config.ProjectConfig; import com.inscloudtech.common.constant.CacheNames; import com.inscloudtech.common.core.domain.PageQuery; +import com.inscloudtech.common.core.domain.entity.SysUser; import com.inscloudtech.common.core.page.TableDataInfo; import com.inscloudtech.common.core.service.OssService; import com.inscloudtech.common.exception.ServiceException; diff --git a/tp-system/src/main/java/com/inscloudtech/system/service/impl/ToolManageServiceImpl.java b/tp-system/src/main/java/com/inscloudtech/system/service/impl/ToolManageServiceImpl.java new file mode 100644 index 0000000..eb85265 --- /dev/null +++ b/tp-system/src/main/java/com/inscloudtech/system/service/impl/ToolManageServiceImpl.java @@ -0,0 +1,177 @@ +package com.inscloudtech.system.service.impl; + + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.inscloudtech.common.core.page.TableDataInfo; +import com.inscloudtech.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.inscloudtech.common.exception.ServiceException; +import com.inscloudtech.system.domain.SysOss; +import com.inscloudtech.system.domain.vo.DownloadToolRequest; +import com.inscloudtech.system.domain.vo.SysOssVo; +import com.inscloudtech.system.service.ISysOssService; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.springframework.stereotype.Service; +import com.inscloudtech.system.domain.vo.ToolManageVo; +import com.inscloudtech.system.domain.ToolManage; +import com.inscloudtech.system.mapper.ToolManageMapper; +import com.inscloudtech.system.service.IToolManageService; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 测试包管理Service业务层处理 + * + * @author inscloudtech + * @date 2024-08-08 + */ +@RequiredArgsConstructor +@Service +public class ToolManageServiceImpl implements IToolManageService { + + private final ToolManageMapper baseMapper; + + private final ISysOssService iSysOssService; + + /** + * 查询测试包管理 + */ + @Override + public ToolManageVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询测试包管理列表 + */ + @Override + public TableDataInfo queryPageList(ToolManage bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询测试包管理列表 + */ + @Override + public List queryList(ToolManage bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(ToolManage bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StrUtil.isNotBlank(bo.getModuleName()), ToolManage::getModuleName, bo.getModuleName()); + lqw.like(StrUtil.isNotBlank(bo.getToolName()), ToolManage::getToolName, bo.getToolName()); + lqw.eq(StrUtil.isNotBlank(bo.getToolPath()), ToolManage::getToolPath, bo.getToolPath()); + lqw.eq(StrUtil.isNotBlank(bo.getTipsPath()), ToolManage::getTipsPath, bo.getTipsPath()); + lqw.eq(bo.getToolOssId() != null, ToolManage::getToolOssId, bo.getToolOssId()); + lqw.eq(bo.getTipsOssId() != null, ToolManage::getTipsOssId, bo.getTipsOssId()); + return lqw; + } + + /** + * 新增测试包管理 + */ + @Override + public Boolean insertByBo(ToolManage bo) { + ToolManage add = BeanUtil.toBean(bo, ToolManage.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改测试包管理 + */ + @Override + public Boolean updateByBo(ToolManage bo) { + ToolManage update = BeanUtil.toBean(bo, ToolManage.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(ToolManage entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除测试包管理 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public Boolean uploadToolOrTips(MultipartFile file, MultipartFile tipsFile, String toolName,String moduleName,Long toolManageId) { + ToolManage toolManage; + if(null != toolManageId && toolManageId != 0L){ + toolManage = baseMapper.selectById(toolManageId); + if (ObjectUtil.isNotNull(toolManage)) { + throw new ServiceException("修改对象不存在!"); + } + }else { + ToolManage dbObj = baseMapper.selectOne(new LambdaQueryWrapper().eq(ToolManage::getToolName, toolName).eq(ToolManage::getModuleName, moduleName)); + if (ObjectUtil.isNotNull(dbObj)) { + throw new ServiceException("工具名称【"+toolName+"】已存在!"); + } + toolManage = new ToolManage(); + } + SysOssVo toolVo = iSysOssService.upload(file); + SysOssVo tipsVo = iSysOssService.upload(tipsFile); + toolManage.setToolName(toolName); + toolManage.setModuleName(moduleName); + toolManage.setToolOssId(toolVo.getOssId()); + toolManage.setToolPath(toolVo.getOriginalName()); + toolManage.setTipsOssId(tipsVo.getOssId()); + toolManage.setTipsPath(tipsVo.getOriginalName()); + if(null != toolManageId && toolManageId != 0L){ + baseMapper.updateById(toolManage); + }else { + baseMapper.insert(toolManage); + } + return true; + } + + @SneakyThrows + @Override + public void downloadByToolName(DownloadToolRequest request, HttpServletResponse response) { + + ToolManage dbObj = baseMapper.selectOne(new LambdaQueryWrapper().eq(ToolManage::getToolName, request.getToolName()) + .eq(ToolManage::getModuleName, request.getModuleName())); + if (ObjectUtil.isNull(dbObj)) { + throw new ServiceException("文件数据不存在!"); + } + + if(request.getType().equals("0")){ + iSysOssService.download(dbObj.getToolOssId(),response); + }else if(request.getType().equals("1")){ + iSysOssService.download(dbObj.getToolOssId(),response); + }else { + throw new ServiceException("非法下载类型!"); + } + + } +}