Browse Source

1.兼容可靠性测试系统-多媒体文件兼容性测试工具 2.兼容可靠性测试系统-应用程序兼容性测试工具

master
zhouyl 1 year ago
parent
commit
b16bb2db87
  1. 12
      pom.xml
  2. 14
      tp-admin/pom.xml
  3. 13
      tp-admin/src/main/resources/application-dev.yml
  4. 11
      tp-admin/src/main/resources/application-prod.yml
  5. 141
      tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java
  6. 56
      tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarMediaController.java
  7. 45
      tp-functional/src/main/java/com/inscloudtech/functional/domain/FuncCarApp.java
  8. 46
      tp-functional/src/main/java/com/inscloudtech/functional/domain/FuncCarAppPg.java
  9. 14
      tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java
  10. 16
      tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppPgMapper.java
  11. 37
      tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java
  12. 134
      tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java

12
pom.xml

@ -299,11 +299,11 @@
</dependency>
<!-- demo模块 -->
<dependency>
<groupId>com.inscloudtech</groupId>
<artifactId>tp-demo</artifactId>
<version>${test-platform-service.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.inscloudtech</groupId>-->
<!-- <artifactId>tp-demo</artifactId>-->
<!-- <version>${test-platform-service.version}</version>-->
<!-- </dependency>-->
<!-- -->
<dependency>
@ -321,7 +321,7 @@
<module>tp-system</module>
<module>tp-generator</module>
<module>tp-common</module>
<module>tp-demo</module>
<!-- <module>tp-demo</module>-->
<module>tp-oss</module>
<module>tp-sms</module>
<module>tp-functional</module>

14
tp-admin/pom.xml

@ -30,6 +30,12 @@
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- PostgreSql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.2</version>
</dependency>
<!-- 核心模块-->
<dependency>
@ -54,10 +60,10 @@
</dependency>
<!-- demo模块 -->
<dependency>
<groupId>com.inscloudtech</groupId>
<artifactId>tp-demo</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.inscloudtech</groupId>-->
<!-- <artifactId>tp-demo</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.inscloudtech</groupId>

13
tp-admin/src/main/resources/application-dev.yml

@ -17,17 +17,16 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://192.168.3.20:3306/test_platform?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
url: jdbc:mysql://localhost:3306/test_platform?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: root
password: 123456
# 从库数据源
slave:
lazy: true
postgresql:
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username:
password:
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://192.168.3.20:5432/chng_wuzi_data
username: dev
password: 123456
hikari:
# 最大连接池数量
maxPoolSize: 20

11
tp-admin/src/main/resources/application-prod.yml

@ -24,13 +24,12 @@ spring:
username: root
password: 123456
# 从库数据源
slave:
lazy: true
postgresql:
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username:
password:
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/chng_wuzi_data
username: dev
password: 123456
hikari:
# 最大连接池数量
maxPoolSize: 20

141
tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarAppController.java

@ -0,0 +1,141 @@
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+ "】");
}
/**
* 数据库测试-3查询示例数据列表
*/
@GetMapping("/demoDataList")
public TableDataInfo list(FuncCarApp bo, PageQuery pageQuery) {
return iFuncCarAppService.queryPageList(bo, pageQuery,DATA_SOURCE);
}
/**
* 数据库测试-4新增示例数据列表
*/
@RepeatSubmit()
@PostMapping("/demoData")
public R<Void> add(@Validated(AddGroup.class) @RequestBody FuncCarApp bo) {
return toAjax(iFuncCarAppService.insertByBo(bo,DATA_SOURCE));
}
/**
* 数据库测试-5修改示例数据列表
*/
@RepeatSubmit()
@PutMapping("/demoData")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody FuncCarApp bo) {
return toAjax(iFuncCarAppService.updateByBo(bo,DATA_SOURCE));
}
/**
* 数据库测试-6删除示例数据列表
*
* @param operIds 主键串
*/
@DeleteMapping("/demoData/{operIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] operIds) {
return toAjax(iFuncCarAppService.deleteWithValidByIds(Arrays.asList(operIds), true,DATA_SOURCE));
}
}

56
tp-functional/src/main/java/com/inscloudtech/functional/controller/FuncCarMediaController.java

@ -0,0 +1,56 @@
package com.inscloudtech.functional.controller;
import com.inscloudtech.common.config.ProjectConfig;
import com.inscloudtech.common.core.controller.BaseController;
import com.inscloudtech.common.utils.StringUtils;
import com.inscloudtech.common.utils.file.FileUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 兼容可靠性测试系统-多媒体文件兼容性测试工具
*
* @author inscloudtech
* @date 2024-06-11
*/
@RequiredArgsConstructor
@RestController
@RequestMapping("/functional/carMedia")
public class FuncCarMediaController extends BaseController {
private final ProjectConfig projectConfig;
private final static String FFMPEG_FILE_NAME = "ffmpeg.zip";
/**
* 文件格式验证-编码格式支持-分辨率与比特率-帧率-音频声道数和采样率-工具下载
*/
@GetMapping("/ffDownload")
public void jmDownload(HttpServletResponse response, HttpServletRequest request) {
doDownLoad(FFMPEG_FILE_NAME,response);
}
void doDownLoad(String filename,HttpServletResponse response){
try {
if (!FileUtils.checkAllowDownload(filename)) {
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", filename));
}
String realFileName = System.currentTimeMillis() + filename.substring(filename.indexOf("_") + 1);
String filePath = projectConfig.getDownloadPath() + filename;
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}

45
tp-functional/src/main/java/com/inscloudtech/functional/domain/FuncCarApp.java

@ -0,0 +1,45 @@
package com.inscloudtech.functional.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.inscloudtech.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 兼容可靠性测试系统-应用程序兼容性测试工具对象 func_car_app
*
* @author inscloudtech
* @date 2024-06-17
*/
@Data
@TableName("func_car_app")
public class FuncCarApp {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "oper_id")
private Long operId;
/**
* 商品名称
*/
private String name;
/**
* 状态
*/
private Long status;
/**
*
*/
private Long userId;
private Date createTime;
private Date updateTime;
}

46
tp-functional/src/main/java/com/inscloudtech/functional/domain/FuncCarAppPg.java

@ -0,0 +1,46 @@
package com.inscloudtech.functional.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.inscloudtech.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 兼容可靠性测试系统-应用程序兼容性测试工具对象 func_car_app
*
* @author inscloudtech
* @date 2024-06-17
*/
@Data
@TableName("public.func_car_app")
public class FuncCarAppPg {
private static final long serialVersionUID=1L;
/**
* 主键
*/
@TableId(value = "oper_id")
private Long operId;
/**
* 商品名称
*/
private String name;
/**
* 状态
*/
private Long status;
/**
*
*/
private Long userId;
private Date createTime;
private Date updateTime;
}

14
tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppMapper.java

@ -0,0 +1,14 @@
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<FuncCarAppMapper, FuncCarApp, FuncCarApp> {
}

16
tp-functional/src/main/java/com/inscloudtech/functional/mapper/FuncCarAppPgMapper.java

@ -0,0 +1,16 @@
package com.inscloudtech.functional.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.inscloudtech.common.core.mapper.BaseMapperPlus;
import com.inscloudtech.functional.domain.FuncCarAppPg;
/**
* 兼容可靠性测试系统-API接口兼容性测试工具Mapper接口
*
* @author inscloudtech
* @date 2024-06-11
*/
@DS("postgresql")
public interface FuncCarAppPgMapper extends BaseMapperPlus<FuncCarAppPgMapper, FuncCarAppPg, FuncCarAppPg> {
}

37
tp-functional/src/main/java/com/inscloudtech/functional/service/IFuncCarAppService.java

@ -0,0 +1,37 @@
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<Long> ids, Boolean isValid,String dataSource);
}

134
tp-functional/src/main/java/com/inscloudtech/functional/service/impl/FuncCarAppServiceImpl.java

@ -0,0 +1,134 @@
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<FuncCarApp> lqw = buildQueryWrapper(bo);
Page<FuncCarApp> result = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}else {
LambdaQueryWrapper<FuncCarAppPg> 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<FuncCarAppPg> result = pgBaseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
}
private LambdaQueryWrapper<FuncCarApp> buildQueryWrapper(FuncCarApp bo) {
LambdaQueryWrapper<FuncCarApp> 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<Long> 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;
}
}
Loading…
Cancel
Save