From ce0cecbc191d0a73a5da117ce165e15fc3b8d610 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 30 Aug 2022 14:07:30 +0800 Subject: [PATCH 001/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppDataSourceService.java | 17 ++++ .../impl/AppDataSourceServiceImpl.java | 46 ++++++++++ .../takin/web/common/constant/AgentUrls.java | 5 ++ .../pressureresource/AppDataSourceDAO.java | 14 +++ .../impl/AppDataSourceDAOImpl.java | 29 +++++++ .../mapper/mysql/AppDataSourceMapper.java | 27 ++++++ .../PressureResourceAppDataSourceEntity.java | 85 +++++++++++++++++++ .../application/AppDatabaseInputParam.java | 56 ++++++++++++ .../controller/agent/AgentPushController.java | 15 ++++ 9 files changed, 294 insertions(+) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/AppDatabaseInputParam.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java new file mode 100644 index 0000000000..0aaa9421fe --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java @@ -0,0 +1,17 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:17 AM + */ +public interface AppDataSourceService { + /** + * 保存数据源信息 + * + * @param param + */ + void save(AppDatabaseInputParam param); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java new file mode 100644 index 0000000000..5d7002c338 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java @@ -0,0 +1,46 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import com.pamirs.takin.common.util.MD5Util; +import io.shulie.takin.web.biz.service.pressureresource.AppDataSourceService; +import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; +import io.shulie.takin.web.data.param.application.ConfigReportInputParam; +import io.shulie.takin.web.data.dao.pressureresource.AppDataSourceDAO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:17 AM + */ +@Service +public class AppDataSourceServiceImpl implements AppDataSourceService { + private static Logger logger = LoggerFactory.getLogger(AppDataSourceServiceImpl.class); + + @Resource + private AppDataSourceDAO appDataSourceDAO; + + /** + * 保存应用数据源信息 + * + * @param param + */ + @Override + public void save(AppDatabaseInputParam param) { + PressureResourceAppDataSourceEntity entity = new PressureResourceAppDataSourceEntity(); + BeanUtils.copyProperties(param, entity); + + // 生成唯一值 + String uniqueKey = MD5Util.getMD5(String.format("%s-%s-%s", param.getAppName(), param.getDataSource(), param.getTableUser())); + entity.setUniqueKey(uniqueKey); + entity.setGmtCreate(new Date()); + appDataSourceDAO.saveOrUpdate(Arrays.asList(entity)); + } +} diff --git a/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java b/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java index f31a9218d1..5bf3e79a20 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java +++ b/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java @@ -155,4 +155,9 @@ public class AgentUrls { * agent 上报应用配置 */ public static final String AGENT_PUSH_APPLICATION_CONFIG = "/agent/push/application/config"; + + /** + * agent 上报数据源信息 + */ + public static final String AGENT_PUSH_APPLICATION_DATA_BASE = "/agent/push/application/database"; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java new file mode 100644 index 0000000000..c16958dd55 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java @@ -0,0 +1,14 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:22 AM + */ +public interface AppDataSourceDAO { + void saveOrUpdate(List entitys); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java new file mode 100644 index 0000000000..d6785da73c --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java @@ -0,0 +1,29 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import io.shulie.takin.web.data.dao.pressureresource.AppDataSourceDAO; +import io.shulie.takin.web.data.mapper.mysql.AppDataSourceMapper; +import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:23 AM + */ +@Service +public class AppDataSourceDAOImpl implements AppDataSourceDAO { + private static Logger logger = LoggerFactory.getLogger(AppDataSourceDAOImpl.class); + + @Resource + private AppDataSourceMapper appDataSourceMapper; + + @Override + public void saveOrUpdate(List entitys) { + appDataSourceMapper.saveOrUpdate(entitys); + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java new file mode 100644 index 0000000000..f7777ab9ce --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java @@ -0,0 +1,27 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface AppDataSourceMapper + extends BaseMapper { + @Insert("") + void saveOrUpdate(@Param("sourcesList") List sources); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java new file mode 100644 index 0000000000..d0a6332c69 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java @@ -0,0 +1,85 @@ +package io.shulie.takin.web.data.model.mysql; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_app_database") +@ToString(callSuper = true) +public class PressureResourceAppDataSourceEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("应用名称") + @Column(name = "`app_name`") + private String appName; + + @ApiModelProperty("业务数据源") + @Column(name = "`data_source`") + private String dataSource; + + @ApiModelProperty("影子数据源") + @Column(name = "`shadow_data_source`") + private String shadowDataSource; + + @ApiModelProperty("数据库类型名称") + @Column(name = "`db_name`") + private String dbName; + + @ApiModelProperty("用户名") + @Column(name = "`table_user`") + private String tableUser; + + @ApiModelProperty("用户密码") + @Column(name = "`password`") + private String password; + + @ApiModelProperty("中间件类型") + @Column(name = "`middleware_type`") + private String middlewareType; + + @ApiModelProperty("连接池名称") + @Column(name = "`connection_pool`") + private String connectionPool; + + @ApiModelProperty("附加信息") + @Column(name = "`ext_info`") + private String extInfo; + + @ApiModelProperty("类型") + @Column(name = "`type`") + private String type; + + @ApiModelProperty("动态配置") + @Column(name = "`attachment`") + private String attachment; + + @ApiModelProperty("唯一健(md5(app_name,data_source,table_user))") + @Column(name = "`uniqueKey`") + private String uniqueKey; + + @Column(name = "user_app_key") + private String userAppKey; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_update`") + @ApiModelProperty("更新时间") + private Date gmtUpdate; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/AppDatabaseInputParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/AppDatabaseInputParam.java new file mode 100644 index 0000000000..e153840038 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/AppDatabaseInputParam.java @@ -0,0 +1,56 @@ +package io.shulie.takin.web.data.param.application; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 9:41 AM + */ +@ApiModel(value = "AppDatabaseInputParam", description = "agent上报应用数据源信息") +@Data +public class AppDatabaseInputParam { + @ApiModelProperty(name = "appName", value = "应用名称", required = true) + private String appName; + + @ApiModelProperty(name = "dataSource", value = "业务数据源", required = false) + private String dataSource; + + @ApiModelProperty(name = "shadow_data_source", value = "影子数据源", required = false) + private String shadowDataSource; + + @ApiModelProperty(name = "dbName", value = "数据库类型", required = true) + private String dbName; + + @ApiModelProperty(name = "tableUser", value = "用户名称", required = true) + private String tableUser; + + @ApiModelProperty(name = "password", value = "密码", required = true) + private String password; + + @ApiModelProperty(name = "middlewareType", value = "中间件类型", required = true) + private String middlewareType; + + @ApiModelProperty(name = "connectionPool", value = "连接池类型(durid等)", required = true) + private String connectionPool; + + @ApiModelProperty(name = "type", value = "type,来源", required = false) + private String type; + + @ApiModelProperty(name = "extInfo", value = "附加信息", required = false) + private String extInfo; + + @ApiModelProperty(name = "attachment", value = "附件", required = false) + private String attachment; + + @ApiModelProperty(name = "userAppKey", value = "userAppKey", required = true) + private String userAppKey; + + @ApiModelProperty(name = "envCode", value = "envCode", required = true) + private String envCode; + + @ApiModelProperty(name = "tenantId", value = "tenantId", required = false) + private String tenantId; +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java index a527745b7a..803c239b10 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java @@ -17,6 +17,7 @@ import com.pamirs.takin.entity.domain.dto.NodeUploadDataDTO; import com.pamirs.takin.entity.domain.query.ShadowJobConfigQuery; import io.shulie.takin.channel.bean.CommandPacket; +import io.shulie.takin.web.biz.service.pressureresource.AppDataSourceService; import io.shulie.takin.web.biz.utils.XmlUtil; import io.shulie.takin.web.common.common.Response; import io.shulie.takin.web.common.constant.AgentUrls; @@ -30,6 +31,7 @@ import io.shulie.takin.web.common.context.OperationLogContextHolder; import io.shulie.takin.web.biz.service.simplify.ShadowJobConfigService; import io.shulie.takin.web.biz.service.linkmanage.ApplicationApiService; +import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; import io.shulie.takin.web.data.param.application.ConfigReportInputParam; import io.shulie.takin.web.biz.service.perfomanceanaly.TraceManageService; import io.shulie.takin.web.biz.service.perfomanceanaly.ReportDetailService; @@ -71,6 +73,8 @@ public class AgentPushController { private TraceManageService traceManageService; @Resource private ReportDetailService reportDetailService; + @Resource + private AppDataSourceService appDataSourceService; @ApiOperation("|_ agent注册api") @PostMapping(value = AgentUrls.REGISTER_URL) @@ -226,4 +230,15 @@ public void uploadTraceInfo(@RequestBody CommandPacket commandPacket) { public void uploadConfigInfo(@Validated @RequestBody ConfigReportInputParam inputParam) { reportDetailService.uploadConfigInfo(inputParam); } + + /** + * 配置数据上报 + * + * @param inputParam 入参 + */ + @PostMapping(value = AgentUrls.AGENT_PUSH_APPLICATION_DATA_BASE) + @ApiOperation(value = "agent上传应用数据源信息") + public void uploadAppDataBase(@Validated @RequestBody AppDatabaseInputParam inputParam) { + appDataSourceService.save(inputParam); + } } From 09a69e4863b55aa519a42865035aaffeda7b3e1e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 2 Sep 2022 11:38:21 +0800 Subject: [PATCH 002/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/pressureresource/ExtInfo.java | 19 ++ .../PressureResourceAppInput.java | 24 ++ .../PressureResourceAppRequest.java | 28 ++ .../PressureResourceDetailInput.java | 35 +++ .../PressureResourceDsRequest.java | 19 ++ .../PressureResourceInput.java | 44 ++++ .../PressureResourceIsolateInput.java | 34 +++ .../PressureResourceQueryRequest.java | 19 ++ .../PressureResourceRelationDsInput.java | 62 +++++ .../PressureResourceRelationDsRequest.java | 43 ++++ .../PressureResourceRelationTableInput.java | 49 ++++ .../PressureResourceRelationTableRequest.java | 27 ++ .../PressureResourceAppService.java | 32 +++ .../PressureResourceDsService.java | 30 +++ .../PressureResourceService.java | 54 ++++ .../PressureResourceTableService.java | 40 +++ .../common/ResourceTypeEnum.java | 25 ++ .../impl/AppDataSourceServiceImpl.java | 3 +- .../impl/PressureResourceAppServiceImpl.java | 89 +++++++ .../impl/PressureResourceDsServiceImpl.java | 163 ++++++++++++ .../impl/PressureResourceServiceImpl.java | 240 ++++++++++++++++++ .../PressureResourceTableServiceImpl.java | 129 ++++++++++ .../vo/PressureResourceDsVO.java | 20 ++ .../vo/PressureResourceInfoVO.java | 38 +++ .../vo/PressureResourceRelationAppVO.java | 51 ++++ .../vo/PressureResourceRelationDsVO.java | 73 ++++++ .../vo/PressureResourceRelationTableVO.java | 52 ++++ .../vo/PressureResourceVO.java | 34 +++ .../exception/TakinWebExceptionEnum.java | 9 +- .../pressureresource/AppDataSourceDAO.java | 2 +- .../pressureresource/PressureResourceDAO.java | 36 +++ .../PressureResourceDetailDAO.java | 23 ++ .../PressureResourceRelationAppDAO.java | 32 +++ .../PressureResourceRelationDsDAO.java | 22 ++ .../PressureResourceRelationTableDAO.java | 36 +++ .../impl/AppDataSourceDAOImpl.java | 6 +- .../impl/PressureResourceDAOImpl.java | 76 ++++++ .../impl/PressureResourceDetailDAOImpl.java | 60 +++++ .../PressureResourceRelationAppDAOImpl.java | 81 ++++++ .../PressureResourceRelationDsDAOImpl.java | 81 ++++++ .../PressureResourceRelationTableDAOImpl.java | 102 ++++++++ .../mapper/mysql/AppDataSourceMapper.java | 10 +- .../mysql/PressureResourceDetailMapper.java | 9 + .../mapper/mysql/PressureResourceMapper.java | 13 + .../PressureResourceRelationAppMapper.java | 9 + .../PressureResourceRelationDsMapper.java | 9 + .../PressureResourceRelationTableMapper.java | 9 + .../PressureResourceAppDataSourceEntity.java | 6 +- .../PressureResourceDetailEntity.java | 54 ++++ .../PressureResourceEntity.java | 46 ++++ .../PressureResourceRelationAppEntity.java | 62 +++++ .../PressureResourceRelationDsEntity.java | 74 ++++++ .../PressureResourceRelationTableEntity.java | 66 +++++ .../PressureResourceAppQueryParam.java | 37 +++ .../PressureResourceDetailQueryParam.java | 13 + .../PressureResourceDsQueryParam.java | 24 ++ .../PressureResourceQueryParam.java | 18 ++ .../PressureResourceTableQueryParam.java | 25 ++ .../controller/PressureEnvController.java | 4 +- .../PressureResoureAppController.java | 53 ++++ .../PressureResoureController.java | 68 +++++ .../PressureResoureDsController.java | 56 ++++ .../PressureResoureTableController.java | 66 +++++ 63 files changed, 2755 insertions(+), 18 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDsRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceIsolateInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceQueryRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationAppDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationAppDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java rename takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/{ => pressureresource}/PressureResourceAppDataSourceEntity.java (94%) create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureAppController.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java new file mode 100644 index 0000000000..e0da57451c --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java @@ -0,0 +1,19 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/1 10:10 AM + */ +public class ExtInfo { + /** + * 驱动名称 + */ + private String driver; + + private int maxActive; + + private int initalSize; + + private String schema; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java new file mode 100644 index 0000000000..a3ee87a8ee --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java @@ -0,0 +1,24 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author XINGCHEN + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceAppInput { + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + private int isolateType; + + @ApiModelProperty("节点数") + private int nodeNum; + + @ApiModelProperty("是否加入压测范围(0-否 1-是)") + private Integer joinPressure; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java new file mode 100644 index 0000000000..2067e41134 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java @@ -0,0 +1,28 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author XINGCHEN + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceAppRequest extends PageBaseDTO { + @ApiModelProperty("配置资源ID") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("入口") + private String entranceUrl; + + @ApiModelProperty("状态(0 不正常-1正常)") + private Integer status; + + @ApiModelProperty("是否加入压测范围(0-否 1-是)") + private Integer joinPressure; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java new file mode 100644 index 0000000000..c8aea3affe --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java @@ -0,0 +1,35 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +@Data +@ToString(callSuper = true) +public class PressureResourceDetailInput { + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("入口URL") + private String entranceUrl; + + @ApiModelProperty("入口名称") + private String entranceName; + + @ApiModelProperty("类型-是否虚拟") + private int type; + + @ApiModelProperty("请求方式") + private String method; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; +} \ No newline at end of file diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDsRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDsRequest.java new file mode 100644 index 0000000000..64d6ab1e94 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDsRequest.java @@ -0,0 +1,19 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author XINGCHEN + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceDsRequest extends PageBaseDTO { + @ApiModelProperty("配置资源ID") + private Long resourceId; + + @ApiModelProperty("业务数据源") + private String bussinessDataBase; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java new file mode 100644 index 0000000000..35ddd4cbb0 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java @@ -0,0 +1,44 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.influxdb.annotation.Column; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceInput extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置名称") + @Column(name = "`name`") + private String name; + + @ApiModelProperty("来源类型-手工/业务流程") + @Column(name = "`type`") + private int type; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_update`") + @ApiModelProperty("更新时间") + private Date gmtUpdate; + + /** + * 详情明细 + */ + private List detailInputs; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceIsolateInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceIsolateInput.java new file mode 100644 index 0000000000..b7668e08b8 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceIsolateInput.java @@ -0,0 +1,34 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.influxdb.annotation.Column; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceIsolateInput { + @Id + @Column(name = "`id`") + private Long id; + + @ApiModelProperty("资源配置名称") + private String name; + + @ApiModelProperty("来源类型-手工/业务流程") + private int type; + + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + private int isolateType; + + @ApiModelProperty("更新时间") + private Date gmtUpdate; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceQueryRequest.java new file mode 100644 index 0000000000..f8e50865e6 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceQueryRequest.java @@ -0,0 +1,19 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author XINGCHEN + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceQueryRequest extends PageBaseDTO { + @ApiModelProperty("资源配置名称") + private String name; + + @ApiModelProperty("id") + private Long id; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java new file mode 100644 index 0000000000..af9012c11c --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java @@ -0,0 +1,62 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationDsInput extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("中间件类型") + private String middlewareType; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务数据源") + private String businessDataBase; + + @ApiModelProperty("业务数据源用户名") + private String businessUserName; + + @ApiModelProperty("影子数据源") + private String shadowDatabase; + + @ApiModelProperty("影子数据源用户名") + private String shadowUserName; + + @ApiModelProperty("影子数据源密码") + private String shadowPassword; + + @ApiModelProperty("扩展信息") + private ExtInfo extInfo; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; + + private List relationApps; +} + diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java new file mode 100644 index 0000000000..bbfe3fcb79 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java @@ -0,0 +1,43 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationDsRequest extends PageBaseDTO { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("应用名称,模糊查询") + private String queryAppName; + + @ApiModelProperty("业务数据源,模糊查询") + private String queryBusinessDataBase; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务数据源") + private String businessDataBase; + + @ApiModelProperty("业务数据源用户名") + private String businessUserName; +} + diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java new file mode 100644 index 0000000000..34d24337dc --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java @@ -0,0 +1,49 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationTableInput extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("数据源配置Id") + private Long dsId; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务表") + private String businessTable; + + @ApiModelProperty("影子表") + private String shadowTable; + + @ApiModelProperty("是否加入") + private Integer join; + + @ApiModelProperty("扩展信息") + private String extInfo; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java new file mode 100644 index 0000000000..be4d5bc203 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java @@ -0,0 +1,27 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationTableRequest extends PageBaseDTO { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("数据源ID") + private Long dsId; +} + diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java new file mode 100644 index 0000000000..e039efb7d1 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java @@ -0,0 +1,32 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; + +/** + * 压测资源配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +public interface PressureResourceAppService { + /** + * 应用检查列表查询 + * + * @param request + * @return + */ + PagingList appCheckList(PressureResourceAppRequest request); + + /** + * 修改 + */ + void update(PressureResourceAppInput input); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java new file mode 100644 index 0000000000..e9db49ba92 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -0,0 +1,30 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; + +/** + * 压测资源配置-数据源 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +public interface PressureResourceDsService { + /** + * 数据源新增 + */ + void add(PressureResourceRelationDsInput input); + + /** + * 数据源视图页面 + */ + PagingList listByDs(PressureResourceRelationDsRequest request); + + /** + * 应用视图页面 + */ + PagingList listByApp(PressureResourceRelationDsRequest request); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java new file mode 100644 index 0000000000..6eefded28c --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -0,0 +1,54 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; + +/** + * 压测资源配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +public interface PressureResourceService { + /** + * 新增 + * + * @param input + */ + void add(PressureResourceInput input); + + /** + * 修改 + * + * @param input + */ + void update(PressureResourceInput input); + + /** + * 分页 + * + * @param request + * @return + */ + PagingList list(PressureResourceQueryRequest request); + + /** + * 详情查询 + * + * @param request + * @return + */ + PressureResourceInfoVO detail(PressureResourceQueryRequest request); + + /** + * 修改数据隔离方式 + * + * @param isolateInput + */ + void updateIsolate(PressureResourceIsolateInput isolateInput); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java new file mode 100644 index 0000000000..d86a370386 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java @@ -0,0 +1,40 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationTableVO; + +/** + * 压测资源配置-数据源 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +public interface PressureResourceTableService { + /** + * 数据源新增 + */ + void save(PressureResourceRelationTableInput input); + + /** + * 更新 + * @param updateInput + */ + void update(PressureResourceRelationTableInput updateInput); + + /** + * 删除 + * @param id + */ + void delete(Long id); + + /** + * 分页 + * + * @param request + * @return + */ + PagingList pageList(PressureResourceRelationTableRequest request); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java new file mode 100644 index 0000000000..e1f71022fe --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java @@ -0,0 +1,25 @@ +package io.shulie.takin.web.biz.service.pressureresource.common; + +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 3:43 PM + */ +public enum ResourceTypeEnum { + MANUAL(1, "手工新增"), + AUTO(2, "业务流程自动新增"); + + private int code; + private String desc; + + ResourceTypeEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java index 5d7002c338..6a2ae8bbf4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java @@ -2,9 +2,8 @@ import com.pamirs.takin.common.util.MD5Util; import io.shulie.takin.web.biz.service.pressureresource.AppDataSourceService; -import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; -import io.shulie.takin.web.data.param.application.ConfigReportInputParam; import io.shulie.takin.web.data.dao.pressureresource.AppDataSourceDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java new file mode 100644 index 0000000000..6ba28c8e23 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -0,0 +1,89 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationAppMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +@Service +public class PressureResourceAppServiceImpl implements PressureResourceAppService { + private static Logger logger = LoggerFactory.getLogger(PressureResourceAppServiceImpl.class); + + @Resource + private PressureResourceRelationAppDAO pressureResourceRelationAppDAO; + + @Resource + private PressureResourceRelationAppMapper pressureResourceRelationAppMapper; + + /** + * 应用检查列表 + * + * @param request + * @return + */ + @Override + public PagingList appCheckList(PressureResourceAppRequest request) { + PressureResourceAppQueryParam param = new PressureResourceAppQueryParam(); + BeanUtils.copyProperties(request, param); + + PagingList pageList = pressureResourceRelationAppDAO.pageList(param); + if (pageList.isEmpty()) { + return PagingList.of(Collections.emptyList(), pageList.getTotal()); + } + //转换下 + List source = pageList.getList(); + List returnList = source.stream().map(configDto -> { + PressureResourceRelationAppVO vo = new PressureResourceRelationAppVO(); + BeanUtils.copyProperties(configDto, vo); + return vo; + }).collect(Collectors.toList()); + return PagingList.of(returnList, pageList.getTotal()); + } + + /** + * 修改检查应用信息 + * + * @param input + */ + @Override + public void update(PressureResourceAppInput input) { + // 校验数据是否存在 + Long relationAppId = input.getId(); + if (relationAppId == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + PressureResourceRelationAppEntity entity = pressureResourceRelationAppMapper.selectById(relationAppId); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); + } + + PressureResourceRelationAppEntity updateEntity = new PressureResourceRelationAppEntity(); + updateEntity.setId(input.getId()); + updateEntity.setIsolateType(input.getIsolateType()); + updateEntity.setJoinPressure(input.getJoinPressure()); + updateEntity.setGmtModified(new Date()); + pressureResourceRelationAppMapper.updateById(updateEntity); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java new file mode 100644 index 0000000000..6f818283c9 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -0,0 +1,163 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import cn.hutool.core.collection.ListUtil; +import com.google.common.collect.Lists; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.ExtInfo; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDsVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.mortbay.util.ajax.JSON; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/31 7:37 PM + */ +@Service +public class PressureResourceDsServiceImpl implements PressureResourceDsService { + private static Logger logger = LoggerFactory.getLogger(PressureResourceDsServiceImpl.class); + + @Resource + private PressureResourceRelationDsDAO pressureResourceRelationDsDAO; + + @Resource + private PressureResourceRelationDsMapper pressureResourceRelationDsMapper; + + @Resource + private PressureResourceRelationAppDAO pressureResourceRelationAppDAO; + + /** + * 新增 + * + * @param input + */ + @Override + public void add(PressureResourceRelationDsInput input) { + // 批量给拆分到不同应用里面去,应用视角需要分页查询 + List appNames = input.getRelationApps(); + if (CollectionUtils.isEmpty(appNames)) { + return; + } + // 判断数据源是否已存在 + PressureResourceDsQueryParam param = new PressureResourceDsQueryParam(); + param.setBussinessDatabase(input.getBusinessDataBase()); + param.setResourceId(input.getResourceId()); + List list = pressureResourceRelationDsDAO.queryByParam(param); + if (CollectionUtils.isNotEmpty(list)) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "数据源已存在"); + } + List dsEntitys = appNames.stream().map(appName -> { + PressureResourceRelationDsEntity tmpEntity = new PressureResourceRelationDsEntity(); + + BeanUtils.copyProperties(input, tmpEntity); + tmpEntity.setAppName(appName); + tmpEntity.setGmtCreate(new Date()); + + ExtInfo extInfo = input.getExtInfo(); + tmpEntity.setExtInfo(JSON.toString(extInfo)); + return tmpEntity; + }).collect(Collectors.toList()); + pressureResourceRelationDsDAO.add(dsEntitys); + } + + /** + * 数据源视图页面,内存分页 + * + * @param request + * @return + */ + @Override + public PagingList listByDs(PressureResourceRelationDsRequest request) { + // 查询所有的数据源信息 + PressureResourceDsQueryParam param = new PressureResourceDsQueryParam(); + param.setResourceId(request.getResourceId()); + param.setQueryBussinessDatabase(request.getQueryBusinessDataBase()); + + List dsList = pressureResourceRelationDsDAO.queryByParam(param); + // 相同数据源合并 + List listVO = Lists.newArrayList(); + Map> dsMap = dsList.stream().collect(Collectors.groupingBy(ds -> ds.getBusinessDatabase())); + for (Map.Entry> entry : dsMap.entrySet()) { + List tmpList = entry.getValue(); + List appNames = tmpList.stream().map(ds -> ds.getAppName()).collect(Collectors.toList()); + PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); + BeanUtils.copyProperties(tmpList.get(0), tmpVO); + // 通过应用获取是否加入压测范围 + PressureResourceAppQueryParam appQueryParam = new PressureResourceAppQueryParam(); + appQueryParam.setAppNames(appNames); + appQueryParam.setResourceId(request.getResourceId()); + List appEntitys = pressureResourceRelationAppDAO.queryList(appQueryParam); + Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); + List appVOList = appNames.stream().map(app -> { + PressureResourceRelationAppVO appVO = new PressureResourceRelationAppVO(); + appVO.setAppName(app); + appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); + return appVO; + }).collect(Collectors.toList()); + tmpVO.setAppList(appVOList); + tmpVO.setSize(tmpList.size()); + listVO.add(tmpVO); + } + List pageList = ListUtil.page(request.getCurrentPage() + 1, request.getPageSize(), listVO); + return PagingList.of(pageList, listVO.size()); + } + + /** + * 应用视图 + * + * @param request + * @return + */ + @Override + public PagingList listByApp(PressureResourceRelationDsRequest request) { + // 查询所有的数据源信息 + PressureResourceDsQueryParam param = new PressureResourceDsQueryParam(); + param.setResourceId(request.getResourceId()); + param.setQueryAppName(request.getQueryAppName()); + List dsList = pressureResourceRelationDsDAO.queryByParam(param); + // 相同数据源合并 + List listVO = Lists.newArrayList(); + Map> appMap = dsList.stream().collect(Collectors.groupingBy(ds -> ds.getAppName())); + for (Map.Entry> entry : appMap.entrySet()) { + List tmpList = entry.getValue(); + PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); + BeanUtils.copyProperties(tmpList.get(0), tmpVO); + List dsVOList = tmpList.stream().map(ds -> { + PressureResourceDsVO tmpDs = new PressureResourceDsVO(); + tmpDs.setBusinessDataBase(ds.getBusinessDatabase()); + tmpDs.setStatus(ds.getStatus()); + return tmpDs; + }).collect(Collectors.toList()); + + tmpVO.setDsList(dsVOList); + tmpVO.setSize(tmpList.size()); + listVO.add(tmpVO); + } + List pageList = ListUtil.page(request.getCurrentPage() + 1, request.getPageSize(), listVO); + return PagingList.of(pageList, listVO.size()); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java new file mode 100644 index 0000000000..bd9ae2861e --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -0,0 +1,240 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.*; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceDetailMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +@Service +public class PressureResourceServiceImpl implements PressureResourceService { + private static Logger logger = LoggerFactory.getLogger(PressureResourceServiceImpl.class); + + @Resource + private PressureResourceDAO pressureResourceDAO; + + @Resource + private PressureResourceRelationAppDAO pressureResourceRelationAppDAO; + + @Resource + private PressureResourceMapper pressureResourceMapper; + + @Resource + private PressureResourceDetailDAO pressureResourceDetailDAO; + + @Resource + private PressureResourceDetailMapper pressureResourceDetailMapper; + + /** + * 新增 + * + * @param input + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void add(PressureResourceInput input) { + if (StringUtils.isBlank(input.getName())) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "参数未传递"); + } + PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); + if (entity != null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "名称已存在"); + } + // 压测资源配置 + PressureResourceEntity insertEntity = new PressureResourceEntity(); + insertEntity.setName(input.getName()); + insertEntity.setType(input.getType()); + insertEntity.setGmtCreate(new Date()); + insertEntity.setGmtModified(new Date()); + Long resourceId = pressureResourceDAO.add(insertEntity); + + // 获取详情 + List detailInputs = input.getDetailInputs(); + if (CollectionUtils.isNotEmpty(detailInputs)) { + List insertEntityList = convertEntitys(resourceId, detailInputs); + pressureResourceDetailDAO.batchInsert(insertEntityList); + } + } + + private List convertEntitys(Long resourceId, List detailInputs) { + List insertEntityList = detailInputs.stream().map(detail -> { + PressureResourceDetailEntity detailEntity = new PressureResourceDetailEntity(); + BeanUtils.copyProperties(detail, detailEntity); + + detailEntity.setId(null); + detailEntity.setResourceId(resourceId); + detailEntity.setGmtCreate(new Date()); + detailEntity.setGmtModified(new Date()); + return detailEntity; + }).collect(Collectors.toList()); + return insertEntityList; + } + + /** + * 修改 + * + * @param input + */ + @Override + public void update(PressureResourceInput input) { + if (input.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + // 判断是否存在 + PressureResourceEntity entity = pressureResourceMapper.selectById(input.getId()); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); + } + PressureResourceQueryParam param = new PressureResourceQueryParam(); + param.setName(input.getName()); + PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); + if (nameEntity != null && nameEntity.getId() != input.getId()) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName()); + } + + // 修改 + PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); + detailParam.setResourceId(input.getId()); + List oldList = pressureResourceDetailDAO.getList(detailParam); + List newList = convertEntitys(input.getId(), input.getDetailInputs()); + + Map> newMap = newList.stream().collect(Collectors.groupingBy(ele -> fetchKey(ele))); + Map> oldMap = oldList.stream().collect(Collectors.groupingBy(ele -> fetchKey(ele))); + //判断需要新增的,不在oldMap里面的 + List insertEntitys = Lists.newArrayList(); + for (Map.Entry> entry : newMap.entrySet()) { + String tmpKey = entry.getKey(); + if (oldMap.containsKey(tmpKey)) { + // 相同URL和请求方式只有一个 + insertEntitys.add(entry.getValue().get(0)); + } + } + if (CollectionUtils.isNotEmpty(insertEntitys)) { + pressureResourceDetailDAO.batchInsert(insertEntitys); + } + // 删除的,不在newMap里面的 + List deleteIds = Lists.newArrayList(); + for (Map.Entry> entry : oldMap.entrySet()) { + String tmpKey = entry.getKey(); + if (!newMap.containsKey(tmpKey)) { + Long id = entry.getValue().get(0).getId(); + if (id != null) { + deleteIds.add(id); + } + } + } + if (CollectionUtils.isNotEmpty(deleteIds)) { + pressureResourceDetailMapper.deleteBatchIds(deleteIds); + } + } + + private String fetchKey(PressureResourceDetailEntity ele) { + return String.format("%s-%s", ele.getEntranceUrl(), ele.getMethod()); + } + + /** + * 列表查询 + * + * @param request + * @return + */ + @Override + public PagingList list(PressureResourceQueryRequest request) { + PressureResourceQueryParam param = new PressureResourceQueryParam(); + BeanUtils.copyProperties(request, param); + + PagingList pageList = pressureResourceDAO.pageList(param); + if (pageList.isEmpty()) { + return PagingList.of(Collections.emptyList(), pageList.getTotal()); + } + //转换下 + List source = pageList.getList(); + List returnList = source.stream().map(configDto -> { + PressureResourceVO vo = new PressureResourceVO(); + BeanUtils.copyProperties(configDto, vo); + return vo; + }).collect(Collectors.toList()); + return PagingList.of(returnList, pageList.getTotal()); + } + + /** + * 详情 + * + * @param request + * @return + */ + @Override + public PressureResourceInfoVO detail(PressureResourceQueryRequest request) { + PressureResourceInfoVO vo = new PressureResourceInfoVO(); + PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(request.getId()); + vo.setId(resourceEntity.getId()); + vo.setType(resourceEntity.getType()); + vo.setName(resourceEntity.getName()); + + // 判断是否有链路信息 + PressureResourceDetailQueryParam param = new PressureResourceDetailQueryParam(); + param.setResourceId(request.getId()); + List detailList = pressureResourceDetailDAO.getList(param); + if (CollectionUtils.isEmpty(detailList)) { + return vo; + } + // 查询应用检查信息 + return null; + } + + /** + * 修改隔离方式 + * + * @param isolateInput + */ + @Override + public void updateIsolate(PressureResourceIsolateInput isolateInput) { + if (isolateInput.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + // 判断是否存在 + PressureResourceEntity entity = pressureResourceMapper.selectById(isolateInput.getId()); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.INTERFACE_PERFORMANCE_QUERY_ERROR, "未查询到指定数据"); + } + // 修改主表隔离方式 + PressureResourceEntity updateEntity = new PressureResourceEntity(); + updateEntity.setId(entity.getId()); + updateEntity.setIsolateType(isolateInput.getIsolateType()); + updateEntity.setGmtModified(new Date()); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java new file mode 100644 index 0000000000..815ef9bad1 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -0,0 +1,129 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationTableVO; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationTableDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationTableMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/1 8:36 PM + */ +@Service +public class PressureResourceTableServiceImpl implements PressureResourceTableService { + private static Logger logger = LoggerFactory.getLogger(PressureResourceTableServiceImpl.class); + + @Resource + private PressureResourceRelationTableDAO pressureResourceRelationTableDAO; + + @Resource + private PressureResourceRelationTableMapper pressureResourceRelationTableMapper; + + /** + * 新增 + * + * @param input + */ + @Override + public void save(PressureResourceRelationTableInput input) { + // 判断业务表是否存在 + PressureResourceTableQueryParam queryParam = new PressureResourceTableQueryParam(); + queryParam.setBusinessTableName(input.getBusinessTable()); + queryParam.setDsId(input.getDsId()); + List tableList = pressureResourceRelationTableDAO.queryList(queryParam); + if (CollectionUtils.isNotEmpty(tableList)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表已存在"); + } + // 新增 + PressureResourceRelationTableEntity tableEntity = new PressureResourceRelationTableEntity(); + tableEntity.setResourceId(input.getResourceId()); + tableEntity.setDsId(input.getDsId()); + tableEntity.setBusinessTable(input.getBusinessTable()); + tableEntity.setShadowTable(input.getShadowTable()); + tableEntity.setJoin(input.getJoin()); + tableEntity.setGmtCreate(new Date()); + + pressureResourceRelationTableDAO.add(Arrays.asList(tableEntity)); + } + + /** + * update + * + * @param updateInput + */ + @Override + public void update(PressureResourceRelationTableInput updateInput) { + if (updateInput.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + // 判断是否存在 + PressureResourceRelationTableEntity entity = pressureResourceRelationTableMapper.selectById(updateInput.getId()); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); + } + + PressureResourceRelationTableEntity updateEntity = new PressureResourceRelationTableEntity(); + updateEntity.setId(updateInput.getId()); + updateEntity.setJoin(updateInput.getJoin()); + updateEntity.setShadowTable(updateInput.getShadowTable()); + updateEntity.setRemark(updateEntity.getRemark()); + updateEntity.setStatus(updateEntity.getStatus()); + updateEntity.setExtInfo(updateEntity.getExtInfo()); + pressureResourceRelationTableMapper.updateById(updateEntity); + } + + @Override + public void delete(Long id) { + if (id == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + pressureResourceRelationTableMapper.deleteById(id); + } + + /** + * 分页 + * + * @param request + * @return + */ + @Override + public PagingList pageList(PressureResourceRelationTableRequest request) { + PressureResourceTableQueryParam param = new PressureResourceTableQueryParam(); + BeanUtils.copyProperties(request, param); + PagingList pageList = pressureResourceRelationTableDAO.pageList(param); + + if (pageList.isEmpty()) { + return PagingList.of(Collections.emptyList(), pageList.getTotal()); + } + //转换下 + List source = pageList.getList(); + List returnList = source.stream().map(configDto -> { + PressureResourceRelationTableVO vo = new PressureResourceRelationTableVO(); + BeanUtils.copyProperties(configDto, vo); + return vo; + }).collect(Collectors.toList()); + return PagingList.of(returnList, pageList.getTotal()); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java new file mode 100644 index 0000000000..2c5c89c40a --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java @@ -0,0 +1,20 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceDsVO { + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务数据源") + private String businessDataBase; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java new file mode 100644 index 0000000000..a7881ca9aa --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java @@ -0,0 +1,38 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceInfoVO { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置名称") + private String name; + + @ApiModelProperty("来源类型-手工/业务流程") + private int type; + + @ApiModelProperty("状态 0-未开始 1-已开始") + private int status; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtUpdate; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java new file mode 100644 index 0000000000..f46ef87365 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java @@ -0,0 +1,51 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationAppVO extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("详情Id") + private Long detailId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("状态") + @Column(name = "`status`") + private int status; + + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + private int isolateType; + + @ApiModelProperty("节点数") + private int nodeNum; + + @ApiModelProperty("是否加入压测范围(0-否 1-是)") + private int joinPressure; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java new file mode 100644 index 0000000000..67971cf817 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java @@ -0,0 +1,73 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.biz.pojo.request.pressureresource.ExtInfo; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationDsVO extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("中间件类型") + private String middlewareType; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务数据源") + private String businessDataBase; + + @ApiModelProperty("业务数据源用户名") + private String businessUserName; + + @ApiModelProperty("影子数据源") + private String shadowDatabase; + + @ApiModelProperty("影子数据源用户名") + private String shadowUserName; + + @ApiModelProperty("影子数据源密码") + private String shadowPassword; + + @ApiModelProperty("扩展信息") + private ExtInfo extInfo; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; + + private List relationApps; + + @ApiModelProperty("关联应用信息") + private List appList; + + @ApiModelProperty("关联数据信息") + private List dsList; + + private int size; +} + + + diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java new file mode 100644 index 0000000000..9a6feecca1 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java @@ -0,0 +1,52 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceRelationTableVO extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("数据源Id") + @Column(name = "`dsId`") + private Long ds_id; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("业务表") + private String businessTable; + + @ApiModelProperty("影子表") + private String shadowTable; + + @ApiModelProperty("是否加入") + @Column(name = "`join`") + private int join; + + @ApiModelProperty("扩展信息") + private int extInfo; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java new file mode 100644 index 0000000000..c8eb8acc4f --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java @@ -0,0 +1,34 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceVO { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置名称") + private String name; + + @ApiModelProperty("来源类型-手工/业务流程") + private int type; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtUpdate; +} diff --git a/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java b/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java index 812a216134..ed437666d7 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java +++ b/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java @@ -181,9 +181,9 @@ public enum TakinWebExceptionEnum implements ExceptionReadable { */ DATA_SIGN_ERROR("19800-" + ErrorConstant.DATA_SIGN_ERROR, "数据签名异常"), - DATA_SIGN_CLEAR_ERROR("19800-" + ErrorConstant.DATA_SIGN_ERROR, "数据正在清理中,暂时无法开启"), + DATA_SIGN_CLEAR_ERROR("19800-" + ErrorConstant.DATA_SIGN_ERROR, "数据正在清理中,暂时无法开启"), - /** + /** * 接口压测 */ INTERFACE_PERFORMANCE_PARAM_ERROR("1900-" + ErrorConstant.DELETE_ERROR, "接口压测删除异常"), @@ -196,6 +196,11 @@ public enum TakinWebExceptionEnum implements ExceptionReadable { INTERFACE_PERFORMANCE_SCRIPT_CREATE_ERROR("1907-" + ErrorConstant.ADD_ERROR, "生成脚本异常"), INTERFACE_PERFORMANCE_SCENE_OP_ERROR("1908-" + ErrorConstant.ADD_ERROR, "场景操作异常"), + /** + * 压测资源 + */ + PRESSURE_RESOURCE_OP_ERROR("1909-" + ErrorConstant.UPDATE_ERROR, "操作异常"), + PRESSURE_RESOURCE_QUERY_ERROR("1910-" + ErrorConstant.QUERY_ERROR, "查询异常"), ; private final String errorCode; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java index c16958dd55..8fd2d6792b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/AppDataSourceDAO.java @@ -1,6 +1,6 @@ package io.shulie.takin.web.data.dao.pressureresource; -import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; import java.util.List; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java new file mode 100644 index 0000000000..25d95e3afa --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java @@ -0,0 +1,36 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceDAO { + /** + * 新增 + * + * @param insertEntity + * @return + */ + Long add(PressureResourceEntity insertEntity); + + /** + * 列表分页查询 + * + * @param param + * @return + */ + PagingList pageList(PressureResourceQueryParam param); + + /** + * 按名称查询 + * + * @param name + * @return + */ + PressureResourceEntity queryByName(String name); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java new file mode 100644 index 0000000000..0b2662c074 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java @@ -0,0 +1,23 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 6:54 PM + */ +public interface PressureResourceDetailDAO { + /** + * 按条件查询 + * + * @param params + * @return + */ + List getList(PressureResourceDetailQueryParam params); + + void batchInsert(List insertList); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationAppDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationAppDAO.java new file mode 100644 index 0000000000..436886984d --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationAppDAO.java @@ -0,0 +1,32 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceRelationAppDAO { + /** + * 分页 + * + * @param param + * @return + */ + PagingList pageList(PressureResourceAppQueryParam param); + + /** + * 内部查询 + * + * @param param + * @return + */ + List queryList(PressureResourceAppQueryParam param); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java new file mode 100644 index 0000000000..09bcf24e31 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java @@ -0,0 +1,22 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceRelationDsDAO { + /** + * 新增 + * + * @param dsEntitys + */ + void add(List dsEntitys); + + List queryByParam(PressureResourceDsQueryParam param); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java new file mode 100644 index 0000000000..39abcc432a --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java @@ -0,0 +1,36 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceRelationTableDAO { + /** + * 新增 + * + * @param dsEntitys + */ + void add(List dsEntitys); + + /** + * 分页 + * + * @param param + * @return + */ + PagingList pageList(PressureResourceTableQueryParam param); + + /** + * + * @param param + * @return + */ + List queryList(PressureResourceTableQueryParam param); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java index d6785da73c..3f0142d54b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/AppDataSourceDAOImpl.java @@ -2,7 +2,7 @@ import io.shulie.takin.web.data.dao.pressureresource.AppDataSourceDAO; import io.shulie.takin.web.data.mapper.mysql.AppDataSourceMapper; -import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -23,7 +23,7 @@ public class AppDataSourceDAOImpl implements AppDataSourceDAO { private AppDataSourceMapper appDataSourceMapper; @Override - public void saveOrUpdate(List entitys) { - appDataSourceMapper.saveOrUpdate(entitys); + public void saveOrUpdate(List list) { + appDataSourceMapper.saveOrUpdate(list); } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java new file mode 100644 index 0000000000..37c5d2e8cc --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java @@ -0,0 +1,76 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +@Service +public class PressureResourceDAOImpl implements PressureResourceDAO { + private static Logger logger = LoggerFactory.getLogger(PressureResourceDAOImpl.class); + + @Resource + private PressureResourceMapper pressureResourceMapper; + + /** + * 新增 + * + * @param insertEntity + */ + @Override + public Long add(PressureResourceEntity insertEntity) { + pressureResourceMapper.insert(insertEntity); + return insertEntity.getId(); + } + + /** + * 分页查询 + * + * @param param + * @return + */ + @Override + public PagingList pageList(PressureResourceQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); + queryWrapper.orderByDesc("gmt_modified"); + IPage pageList = pressureResourceMapper.selectPage(page, queryWrapper); + if (pageList.getRecords().isEmpty()) { + return PagingList.empty(); + } + return PagingList.of(pageList.getRecords(), pageList.getTotal()); + } + + @Override + public PressureResourceEntity queryByName(String name) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name", name); + queryWrapper.last(" limit 1"); + return pressureResourceMapper.selectOne(queryWrapper); + } + + private QueryWrapper getWrapper(PressureResourceQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + if (param.getName() != null) { + queryWrapper.like("name", param.getName()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java new file mode 100644 index 0000000000..35befea9c7 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -0,0 +1,60 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceDetailMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 6:59 PM + */ +@Service +public class PressureResourceDetailDAOImpl implements PressureResourceDetailDAO { + private static Logger logger = LoggerFactory.getLogger(PressureResourceDAOImpl.class); + + @Resource + private PressureResourceDetailMapper pressureResourceDetailMapper; + + @Override + public List getList(PressureResourceDetailQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + return pressureResourceDetailMapper.selectList(queryWrapper); + } + + /** + * 批量新增 + * + * @param insertList + */ + @Override + public void batchInsert(List insertList) { + if (CollectionUtils.isEmpty(insertList)) { + return; + } + insertList.stream().forEach(insert -> { + pressureResourceDetailMapper.insert(insert); + }); + } + + private QueryWrapper getWrapper(PressureResourceDetailQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + if (param.getResourceId() != null) { + queryWrapper.eq("resourceId", param.getResourceId()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationAppDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationAppDAOImpl.java new file mode 100644 index 0000000000..be27d506b2 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationAppDAOImpl.java @@ -0,0 +1,81 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationAppMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/31 2:37 PM + */ +@Service +public class PressureResourceRelationAppDAOImpl implements PressureResourceRelationAppDAO { + private static Logger logger = LoggerFactory.getLogger(PressureResourceRelationAppDAOImpl.class); + + @Resource + private PressureResourceRelationAppMapper pressureResourceRelationAppMapper; + + /** + * 分页 + * + * @param param + * @return + */ + @Override + public PagingList pageList(PressureResourceAppQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); + queryWrapper.orderByDesc("gmt_modified"); + IPage pageList = pressureResourceRelationAppMapper.selectPage(page, queryWrapper); + if (pageList.getRecords().isEmpty()) { + return PagingList.empty(); + } + return PagingList.of(pageList.getRecords(), pageList.getTotal()); + } + + @Override + public List queryList(PressureResourceAppQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + return pressureResourceRelationAppMapper.selectList(queryWrapper); + } + + private QueryWrapper getWrapper(PressureResourceAppQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + if (StringUtils.isNotBlank(param.getAppName())) { + queryWrapper.like("app_name", param.getAppName()); + } + if (CollectionUtils.isNotEmpty(param.getAppNames())) { + queryWrapper.in("app_name", param.getAppNames()); + } + if (param.getStatus() != null) { + queryWrapper.eq("status", param.getStatus()); + } + if (param.getJoinPressure() != null) { + queryWrapper.eq("join_pressure", param.getJoinPressure()); + } + if (param.getDetailId() != null) { + queryWrapper.eq("detail_id", param.getDetailId()); + } + if (param.getResourceId() != null) { + queryWrapper.eq("resource_id", param.getResourceId()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java new file mode 100644 index 0000000000..e77b4d4c12 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java @@ -0,0 +1,81 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/31 7:41 PM + */ +@Service +public class PressureResourceRelationDsDAOImpl implements PressureResourceRelationDsDAO { + private static Logger logger = LoggerFactory.getLogger(PressureResourceRelationDsDAOImpl.class); + + @Resource + private PressureResourceRelationDsMapper pressureResourceRelationDsMapper; + + /** + * 批量新增 + * + * @param dsEntitys + */ + @Override + public void add(List dsEntitys) { + if (CollectionUtils.isNotEmpty(dsEntitys)) { + dsEntitys.stream().forEach(entity -> { + pressureResourceRelationDsMapper.insert(entity); + }); + } + } + + /** + * 按参数查询 + * + * @return + */ + @Override + public List queryByParam(PressureResourceDsQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + List resultLists = pressureResourceRelationDsMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(resultLists)) { + return Collections.emptyList(); + } + return resultLists; + } + + private QueryWrapper getWrapper(PressureResourceDsQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + // 模糊查询 + if (StringUtils.isNotBlank(param.getQueryBussinessDatabase())) { + queryWrapper.like("business_data_base", param.getQueryBussinessDatabase()); + } + // 模糊查询 + if (StringUtils.isNotBlank(param.getQueryAppName())) { + queryWrapper.like("app_name", param.getQueryAppName()); + } + if (StringUtils.isNotBlank(param.getBussinessDatabase())) { + queryWrapper.eq("business_data_base", param.getBussinessDatabase()); + } + if (param.getResourceId() != null) { + queryWrapper.eq("resource_id", param.getResourceId()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java new file mode 100644 index 0000000000..eb05e54ba0 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java @@ -0,0 +1,102 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationTableDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationTableMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/1 8:38 PM + */ +@Service +public class PressureResourceRelationTableDAOImpl implements PressureResourceRelationTableDAO { + private static Logger logger = LoggerFactory.getLogger(PressureResourceRelationTableDAOImpl.class); + + @Resource + private PressureResourceRelationTableMapper pressureResourceRelationTableMapper; + + /** + * 新增 + * + * @param dsEntitys + */ + @Override + public void add(List dsEntitys) { + if (CollectionUtils.isNotEmpty(dsEntitys)) { + return; + } + dsEntitys.stream().forEach(dsEntity -> { + pressureResourceRelationTableMapper.insert(dsEntity); + }); + } + + /** + * 分页查询 + * + * @param param + * @return + */ + @Override + public PagingList pageList(PressureResourceTableQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); + queryWrapper.orderByDesc("gmt_modified"); + IPage pageList = pressureResourceRelationTableMapper.selectPage(page, queryWrapper); + if (pageList.getRecords().isEmpty()) { + return PagingList.empty(); + } + return PagingList.of(pageList.getRecords(), pageList.getTotal()); + } + + /** + * 查询 + * + * @param param + * @return + */ + @Override + public List queryList(PressureResourceTableQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + List list = pressureResourceRelationTableMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.EMPTY_LIST; + } + return list; + } + + private QueryWrapper getWrapper(PressureResourceTableQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + // 模糊查询 + if (StringUtils.isNotBlank(param.getQueryTableName())) { + queryWrapper.like("business_table", param.getQueryTableName()); + } + if (StringUtils.isNotBlank(param.getBusinessTableName())) { + queryWrapper.like("business_table", param.getBusinessTableName()); + } + if (param.getStatus() != null) { + queryWrapper.eq("status", param.getStatus()); + } + if (param.getDsId() != null) { + queryWrapper.eq("ds_id", param.getDsId()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java index f7777ab9ce..b7bd786228 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/AppDataSourceMapper.java @@ -1,7 +1,7 @@ package io.shulie.takin.web.data.mapper.mysql; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.shulie.takin.web.data.model.mysql.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; @@ -14,14 +14,14 @@ public interface AppDataSourceMapper "app_name,data_source,shadow_data_source,db_name,table_user,password,middleware_type," + "connection_pool,type,ext_info,attachment,unique_key,user_app_key,tenant_id,env_code,gmt_create)" + "values " + - "" + + "" + "(#{item.appName},#{item.dataSource},#{item.shadowDataSource},#{item.dbName},#{item.tableUser}," + "#{item.password},#{item.middlewareType},#{item.connectionPool},#{item.type},#{item.extInfo}," + - "#{item.attachment},#{item.uniqueKey},#{item.userAppKey},#{item.tenantId},#{item.envCode},#{item.gmtCreate}" + + "#{item.attachment},#{item.uniqueKey},#{item.userAppKey},#{item.tenantId},#{item.envCode},#{item.gmtCreate})" + "" + " ON DUPLICATE KEY UPDATE " + " data_source =values(data_source),db_name=values(db_name),password = values(password)," + - "middleware_type=values(middleware_type),connection_pool=values(connection_pool),ext_info=values(ext_info),attachment=values(attachment)," + + "middleware_type=values(middleware_type),connection_pool=values(connection_pool),ext_info=values(ext_info),attachment=values(attachment),gmt_modified=now()" + "") - void saveOrUpdate(@Param("sourcesList") List sources); + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java new file mode 100644 index 0000000000..18ad4b182f --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java @@ -0,0 +1,9 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; + +public interface PressureResourceDetailMapper + extends BaseMapper { +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java new file mode 100644 index 0000000000..52c9d51694 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java @@ -0,0 +1,13 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface PressureResourceMapper + extends BaseMapper { +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java new file mode 100644 index 0000000000..a6f5958499 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java @@ -0,0 +1,9 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; + +public interface PressureResourceRelationAppMapper + extends BaseMapper { +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java new file mode 100644 index 0000000000..bb2d35ddc4 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java @@ -0,0 +1,9 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; + +public interface PressureResourceRelationDsMapper + extends BaseMapper { +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java new file mode 100644 index 0000000000..9ab6b28689 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java @@ -0,0 +1,9 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; + +public interface PressureResourceRelationTableMapper + extends BaseMapper { +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java similarity index 94% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java index d0a6332c69..73fb466eaf 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/PressureResourceAppDataSourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java @@ -1,4 +1,4 @@ -package io.shulie.takin.web.data.model.mysql; +package io.shulie.takin.web.data.model.mysql.pressureresource; import com.baomidou.mybatisplus.annotation.TableName; import io.shulie.surge.data.common.doc.annotation.Id; @@ -79,7 +79,7 @@ public class PressureResourceAppDataSourceEntity extends TenantBaseEntity { @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_update`") + @Column(name = "`gmt_modified`") @ApiModelProperty("更新时间") - private Date gmtUpdate; + private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java new file mode 100644 index 0000000000..c73089f7f3 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java @@ -0,0 +1,54 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_detail") +@ToString(callSuper = true) +public class PressureResourceDetailEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @Column(name = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("应用名称") + @Column(name = "`app_name`") + private String appName; + + @ApiModelProperty("入口URL") + @Column(name = "`entrance_url`") + private String entranceUrl; + + @ApiModelProperty("入口名称") + @Column(name = "`entrance_name`") + private String entranceName; + + @ApiModelProperty("请求方式") + @Column(name = "`method`") + private String method; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java new file mode 100644 index 0000000000..f510a9d030 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -0,0 +1,46 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource") +@ToString(callSuper = true) +public class PressureResourceEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置名称") + @Column(name = "`name`") + private String name; + + @ApiModelProperty("来源类型-手工/业务流程") + @Column(name = "`type`") + private int type; + + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @Column(name = "`isolate_type`") + private int isolateType; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java new file mode 100644 index 0000000000..79a9ec70f3 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java @@ -0,0 +1,62 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_relation_app") +@ToString(callSuper = true) +public class PressureResourceRelationAppEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @Column(name = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("配置详情Id") + @Column(name = "`detail_id`") + private Long detailId; + + @ApiModelProperty("应用名称") + @Column(name = "`app_name`") + private String appName; + + @ApiModelProperty("状态") + @Column(name = "`status`") + private int status; + + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @Column(name = "`isolate_type`") + private int isolateType; + + @ApiModelProperty("节点数") + @Column(name = "`node_num`") + private int nodeNum; + + @ApiModelProperty("是否加入压测范围(0-否 1-是)") + @Column(name = "`join_pressure`") + private int joinPressure; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java new file mode 100644 index 0000000000..557f19e19e --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java @@ -0,0 +1,74 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_relation_ds") +@ToString(callSuper = true) +public class PressureResourceRelationDsEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @Column(name = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("应用名称") + @Column(name = "`app_name`") + private String appName; + + @ApiModelProperty("中间件类型") + @Column(name = "`middleware_type`") + private String middlewareType; + + @ApiModelProperty("状态") + @Column(name = "`status`") + private String status; + + @ApiModelProperty("业务数据源") + @Column(name = "`business_data_base`") + private String businessDatabase; + + @ApiModelProperty("业务数据源用户名") + @Column(name = "`business_user_name`") + private String businessUserName; + + @ApiModelProperty("影子数据源") + @Column(name = "`shadow_data_base`") + private String shadowDatabase; + + @ApiModelProperty("影子数据源用户名") + @Column(name = "`shadow_user_name`") + private String shadowUserName; + + @ApiModelProperty("影子数据源密码") + @Column(name = "`shadow_password`") + private String shadowPassword; + + @ApiModelProperty("扩展信息") + @Column(name = "`ext_info`") + private String extInfo; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java new file mode 100644 index 0000000000..6311f48c0e --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java @@ -0,0 +1,66 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_relation_table") +@ToString(callSuper = true) +public class PressureResourceRelationTableEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @Column(name = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("数据源Id") + @Column(name = "`ds_id`") + private Long dsId; + + @ApiModelProperty("状态(0-正常 1-不正常)") + @Column(name = "`status`") + private String status; + + @ApiModelProperty("业务表") + @Column(name = "`business_table`") + private String businessTable; + + @ApiModelProperty("影子表") + @Column(name = "`shadow_table`") + private String shadowTable; + + @ApiModelProperty("是否加入(0-加入 1-未加入)") + @Column(name = "`join`") + private int join; + + @ApiModelProperty("扩展信息") + @Column(name = "`ext_info`") + private String extInfo; + + @ApiModelProperty("备注") + @Column(name = "`remark`") + private String remark; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java new file mode 100644 index 0000000000..d55a63c606 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java @@ -0,0 +1,37 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceAppQueryParam extends PageBaseDTO { + @ApiModelProperty("配置资源ID") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("入口") + private String entranceUrl; + + @ApiModelProperty("状态(0 不正常-1正常)") + private Integer status; + + @ApiModelProperty("是否加入压测范围(0-否 1-是)") + private Integer joinPressure; + + @ApiModelProperty("配置详情Id") + private Long detailId; + + private List appNames; +} + + diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java new file mode 100644 index 0000000000..8d90d2473b --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java @@ -0,0 +1,13 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceDetailQueryParam { + private Long resourceId; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java new file mode 100644 index 0000000000..55b7a9d076 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java @@ -0,0 +1,24 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceDsQueryParam { + @ApiModelProperty("业务数据源,模糊查询") + private String queryBussinessDatabase; + + @ApiModelProperty("业务数据源,等值查询") + private String bussinessDatabase; + + @ApiModelProperty("资源配置ID") + private Long resourceId; + + @ApiModelProperty("应用名称,模糊查询") + private String queryAppName; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java new file mode 100644 index 0000000000..7a68355867 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java @@ -0,0 +1,18 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import lombok.Data; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceQueryParam extends PageBaseDTO { + private String name; + + private List userIdList; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java new file mode 100644 index 0000000000..aa124af729 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -0,0 +1,25 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceTableQueryParam extends PageBaseDTO { + @ApiModelProperty("业务数据源,模糊查询") + private String queryTableName; + + @ApiModelProperty("业务数据源,等值匹配") + private String businessTableName; + + @ApiModelProperty("业务数据源,等值查询") + private Integer status; + + @ApiModelProperty("数据源Id") + private Long dsId; +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java index dde28a1ce9..0d50de138a 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java @@ -13,12 +13,12 @@ @RequestMapping(ApiUrls.TAKIN_API_URL + "sys") public class PressureEnvController { - @Resource + /*@Resource private PressureEnvInspectionJob envInspectionJob; @GetMapping("pressure/state") public ResponseResult pressureState() { return ResponseResult.success(envInspectionJob.reduceSumming()); - } + }*/ } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureAppController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureAppController.java new file mode 100644 index 0000000000..66b0f8c941 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureAppController.java @@ -0,0 +1,53 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.common.ResourceTypeEnum; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 链路资源-应用检查 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:51 PM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/app") +@Api(tags = "接口: 链路资源-应用检查") +@Slf4j +public class PressureResoureAppController { + private static Logger logger = LoggerFactory.getLogger(PressureResoureAppController.class); + + @Resource + private PressureResourceAppService pressureResourceAppService; + + @ApiOperation("链路压测资源-修改") + @RequestMapping(value = "/update", method = RequestMethod.GET) + public ResponseResult update(PressureResourceAppInput input) { + pressureResourceAppService.update(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-应用检查列表") + @RequestMapping(value = "/checkList", method = RequestMethod.GET) + public ResponseResult detail(PressureResourceAppRequest request) { + return ResponseResult.success(pressureResourceAppService.appCheckList(request)); + } +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java new file mode 100644 index 0000000000..de7cf56091 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -0,0 +1,68 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.common.ResourceTypeEnum; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 链路资源配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:51 PM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource") +@Api(tags = "接口: 链路资源配置") +@Slf4j +public class PressureResoureController { + private static Logger logger = LoggerFactory.getLogger(PressureResoureController.class); + + @Resource + private PressureResourceService pressureResourceService; + + @ApiOperation("链路压测资源新增") + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ResponseResult create(@RequestBody PressureResourceInput input) { + // 这里只是页面手工新增入口 + input.setType(ResourceTypeEnum.MANUAL.getCode()); + pressureResourceService.add(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源修改") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ResponseResult update(@RequestBody PressureResourceInput input) { + pressureResourceService.update(input); + return ResponseResult.success(); + } + + @ApiOperation("设置数据隔离方式") + @RequestMapping(value = "/updateIsolate", method = RequestMethod.POST) + public ResponseResult updateIsolate(@RequestBody PressureResourceIsolateInput input) { + pressureResourceService.updateIsolate(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源查询") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public ResponseResult list(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.list(request)); + } +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java new file mode 100644 index 0000000000..8518824dda --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java @@ -0,0 +1,56 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.*; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.common.ResourceTypeEnum; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 链路资源配置-数据源隔离 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:51 PM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/ds") +@Api(tags = "接口: 数据源隔离") +@Slf4j +public class PressureResoureDsController { + private static Logger logger = LoggerFactory.getLogger(PressureResoureDsController.class); + + @Resource + private PressureResourceDsService pressureResourceDsService; + + @ApiOperation("链路压测资源新增") + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ResponseResult create(@RequestBody PressureResourceRelationDsInput input) { + pressureResourceDsService.add(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-数据源视图") + @RequestMapping(value = "/listByDs", method = RequestMethod.GET) + public ResponseResult listByDs(PressureResourceRelationDsRequest request) { + return ResponseResult.success(pressureResourceDsService.listByDs(request)); + } + + @ApiOperation("链路压测资源-应用视图") + @RequestMapping(value = "/listByApp", method = RequestMethod.GET) + public ResponseResult listByApp(PressureResourceRelationDsRequest request) { + return ResponseResult.success(pressureResourceDsService.listByApp(request)); + } +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java new file mode 100644 index 0000000000..097f024b48 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java @@ -0,0 +1,66 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 链路资源配置-影子表配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:51 PM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/table") +@Api(tags = "接口: 数据源隔离") +@Slf4j +public class PressureResoureTableController { + private static Logger logger = LoggerFactory.getLogger(PressureResoureTableController.class); + + @Resource + private PressureResourceTableService pressureResourceTableService; + + @ApiOperation("链路压测资源-影子表新增") + @RequestMapping(value = "/save", method = RequestMethod.POST) + public ResponseResult save(@RequestBody PressureResourceRelationTableInput input) { + pressureResourceTableService.save(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-影子表列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public ResponseResult list(PressureResourceRelationTableRequest request) { + return ResponseResult.success(pressureResourceTableService.pageList(request)); + } + + @ApiOperation("链路压测资源-影子表-修改") + @RequestMapping(value = "/update", method = RequestMethod.GET) + public ResponseResult update(PressureResourceRelationTableInput input) { + pressureResourceTableService.update(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-影子表-删除") + @RequestMapping(value = "/del", method = RequestMethod.GET) + public ResponseResult del(PressureResourceRelationTableInput input) { + pressureResourceTableService.delete(input.getId()); + return ResponseResult.success(); + } +} From 8adc015e2ef4fc8f7061932e32d6606290f6aedc Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 2 Sep 2022 17:19:10 +0800 Subject: [PATCH 003/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ApplicationEntranceClientImpl.java | 4 +- .../ApplicationEntrancesAllQueryRequest.java | 20 ++++ .../PressureResourceDetailInput.java | 10 ++ .../ApplicationEntrancesResponse.java | 1 + .../PressureResourceService.java | 5 +- .../impl/PressureResourceServiceImpl.java | 21 ++-- .../vo/PressureResourceDetailVO.java | 46 ++++++++ .../vo/PressureResourceInfoVO.java | 3 + .../impl/PressureResourceDetailDAOImpl.java | 2 +- .../PressureResourceDetailEntity.java | 8 ++ .../ApplicationEntranceController.java | 100 ++++++++++++------ .../PressureResoureController.java | 6 ++ 12 files changed, 180 insertions(+), 46 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationEntrancesAllQueryRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java index 9f95bc51b3..a2405accd4 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java @@ -78,7 +78,9 @@ public List getApplicationEntrances(String applicationName, Stri //查询所有的type entranceQueryParam.setRpcType(""); } - entranceQueryParam.setAppName(applicationName); + if (StringUtils.isNotBlank(applicationName)) { + entranceQueryParam.setAppName(applicationName); + } entranceQueryParam.setTenantAppKey(WebPluginUtils.traceTenantAppKey()); entranceQueryParam.setEnvCode(WebPluginUtils.traceEnvCode()); entranceQueryParam.setCurrentPage(currentPage); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationEntrancesAllQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationEntrancesAllQueryRequest.java new file mode 100644 index 0000000000..c1c79ed777 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationEntrancesAllQueryRequest.java @@ -0,0 +1,20 @@ +package io.shulie.takin.web.biz.pojo.request.application; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author shiyajian + * create: 2020-12-29 + */ +@Data +@ApiModel("应用入口服务查询对象") +public class ApplicationEntrancesAllQueryRequest { + @ApiModelProperty("应用名称") + private String applicationName; + + @ApiModelProperty("服务名称") + private String serviceName; + +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java index c8aea3affe..8a36e994a2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java @@ -3,12 +3,16 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; +import org.springframework.beans.factory.annotation.Value; import java.util.Date; @Data @ToString(callSuper = true) public class PressureResourceDetailInput { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("资源配置Id") private Long resourceId; @@ -21,6 +25,12 @@ public class PressureResourceDetailInput { @ApiModelProperty("入口名称") private String entranceName; + @ApiModelProperty("rpcType") + private String rpcType; + + @ApiModelProperty("extend") + private String extend; + @ApiModelProperty("类型-是否虚拟") private int type; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationEntrancesResponse.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationEntrancesResponse.java index 0d05af98ce..93be0fee52 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationEntrancesResponse.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationEntrancesResponse.java @@ -14,6 +14,7 @@ @Data @ApiModel("应用入口返回值信息") public class ApplicationEntrancesResponse extends WebOptionEntity { + private String appName; private String method; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index 6eefded28c..bdf4d10463 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -4,9 +4,12 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDetailVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; +import java.util.List; + /** * 压测资源配置 * @@ -43,7 +46,7 @@ public interface PressureResourceService { * @param request * @return */ - PressureResourceInfoVO detail(PressureResourceQueryRequest request); + List detail(PressureResourceQueryRequest request); /** * 修改数据隔离方式 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index bd9ae2861e..c8814d45c0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -3,6 +3,7 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDetailVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; @@ -198,22 +199,26 @@ public PagingList list(PressureResourceQueryRequest request) * @return */ @Override - public PressureResourceInfoVO detail(PressureResourceQueryRequest request) { - PressureResourceInfoVO vo = new PressureResourceInfoVO(); + public List detail(PressureResourceQueryRequest request) { PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(request.getId()); - vo.setId(resourceEntity.getId()); - vo.setType(resourceEntity.getType()); - vo.setName(resourceEntity.getName()); + if (resourceEntity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "数据不存在"); + } // 判断是否有链路信息 PressureResourceDetailQueryParam param = new PressureResourceDetailQueryParam(); param.setResourceId(request.getId()); List detailList = pressureResourceDetailDAO.getList(param); if (CollectionUtils.isEmpty(detailList)) { - return vo; + return Collections.emptyList(); } - // 查询应用检查信息 - return null; + List detailVOList = detailList.stream().map(detail -> { + PressureResourceDetailVO tmpDetailVo = new PressureResourceDetailVO(); + BeanUtils.copyProperties(detail, tmpDetailVo); + tmpDetailVo.setValue(String.valueOf(detail.getId())); + return tmpDetailVo; + }).collect(Collectors.toList()); + return detailVOList; } /** diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java new file mode 100644 index 0000000000..e54d3c14c2 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java @@ -0,0 +1,46 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceDetailVO extends TenantBaseEntity { + @Id + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("给前端搞个ID的字符串") + private String value; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + @ApiModelProperty("应用名称") + private String appName; + + @ApiModelProperty("入口URL") + private String entranceUrl; + + @ApiModelProperty("入口名称") + private String entranceName; + + @ApiModelProperty("请求方式") + private String method; + + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @ApiModelProperty("更新时间") + private Date gmtModified; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java index a7881ca9aa..9898eee40a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java @@ -35,4 +35,7 @@ public class PressureResourceInfoVO { @ApiModelProperty("更新时间") private Date gmtUpdate; + + @ApiModelProperty("明细") + List detailVOList; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 35befea9c7..96624d1d78 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -53,7 +53,7 @@ private QueryWrapper getWrapper(PressureResourceDe return queryWrapper; } if (param.getResourceId() != null) { - queryWrapper.eq("resourceId", param.getResourceId()); + queryWrapper.eq("resource_id", param.getResourceId()); } return queryWrapper; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java index c73089f7f3..96d66da53b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java @@ -44,6 +44,14 @@ public class PressureResourceDetailEntity extends TenantBaseEntity { @Column(name = "`method`") private String method; + @ApiModelProperty("rpcType") + @Column(name = "`rpc_type`") + private String rpcType; + + @ApiModelProperty("extend") + @Column(name = "`extend`") + private String extend; + @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java index 12809afdd5..a88b411d1d 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java @@ -8,6 +8,7 @@ import io.shulie.amdb.common.dto.link.entrance.ServiceInfoDTO; import io.shulie.takin.web.amdb.api.ApplicationEntranceClient; import io.shulie.takin.web.amdb.bean.common.EntranceTypeEnum; +import io.shulie.takin.web.biz.pojo.request.application.ApplicationEntrancesAllQueryRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationEntrancesSampleTypeQueryRequest; import io.shulie.takin.web.biz.service.LinkTopologyService; import io.shulie.takin.web.common.exception.TakinWebException; @@ -63,39 +64,68 @@ public class ApplicationEntranceController { public List getEntranceTypes() { EntranceTypeEnum[] values = EntranceTypeEnum.values(); return Stream.of(values) - .map(item -> { - WebOptionEntity webOptionEntity = new WebOptionEntity(); - webOptionEntity.setLabel(item.name()); - webOptionEntity.setValue(item.name()); - return webOptionEntity; - }).collect(Collectors.toList()); + .map(item -> { + WebOptionEntity webOptionEntity = new WebOptionEntity(); + webOptionEntity.setLabel(item.name()); + webOptionEntity.setValue(item.name()); + return webOptionEntity; + }).collect(Collectors.toList()); } @GetMapping() @ApiOperation("获得入口服务列表") public List getApplicationEntrances(@Validated - ApplicationEntrancesQueryRequest request) { + ApplicationEntrancesQueryRequest request) { + List applicationEntrances = applicationEntranceClient.getApplicationEntrances( + request.getApplicationName(), request.getType().getType(), request.getServiceName(), 1, 500); + if (CollectionUtils.isEmpty(applicationEntrances)) { + return Lists.newArrayList(); + } + return applicationEntrances.stream() + .filter(item -> !item.getServiceName().startsWith("PT_")) + .map(item -> { + ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); + applicationEntrancesResponse.setMethod(item.getMethodName()); + applicationEntrancesResponse.setRpcType(item.getRpcType()); + applicationEntrancesResponse.setExtend(item.getExtend()); + applicationEntrancesResponse.setServiceName(item.getServiceName()); + applicationEntrancesResponse.setLabel( + ActivityUtil.serviceNameLabel(item.getServiceName(), item.getMethodName())); + applicationEntrancesResponse.setValue( + ActivityUtil.createLinkId(item.getServiceName(), item.getMethodName(), + item.getAppName(), item.getRpcType(), item.getExtend())); + return applicationEntrancesResponse; + // 增加去重 + }).distinct().collect(Collectors.toList()); + } + + + @GetMapping(value = "/list") + @ApiOperation("获得入口服务列表all") + public List getApplicationEntrances_all( + ApplicationEntrancesAllQueryRequest request) { List applicationEntrances = applicationEntranceClient.getApplicationEntrances( - request.getApplicationName(), request.getType().getType(),request.getServiceName(), 1, 500); + request.getApplicationName(), null, request.getServiceName(), 1, 5000); if (CollectionUtils.isEmpty(applicationEntrances)) { return Lists.newArrayList(); } return applicationEntrances.stream() - .filter(item -> !item.getServiceName().startsWith("PT_")) - .map(item -> { - ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); - applicationEntrancesResponse.setMethod(item.getMethodName()); - applicationEntrancesResponse.setRpcType(item.getRpcType()); - applicationEntrancesResponse.setExtend(item.getExtend()); - applicationEntrancesResponse.setServiceName(item.getServiceName()); - applicationEntrancesResponse.setLabel( - ActivityUtil.serviceNameLabel(item.getServiceName(), item.getMethodName())); - applicationEntrancesResponse.setValue( - ActivityUtil.createLinkId(item.getServiceName(), item.getMethodName(), - item.getAppName(), item.getRpcType(), item.getExtend())); - return applicationEntrancesResponse; - // 增加去重 - }).distinct().collect(Collectors.toList()); + .filter(item -> !item.getServiceName().startsWith("PT_")) + .map(item -> { + ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); + applicationEntrancesResponse.setMethod(item.getMethodName()); + applicationEntrancesResponse.setRpcType(item.getRpcType()); + applicationEntrancesResponse.setExtend(item.getExtend()); + applicationEntrancesResponse.setServiceName(item.getServiceName()); + applicationEntrancesResponse.setAppName(item.getAppName()); + applicationEntrancesResponse.setLabel( + ActivityUtil.serviceNameLabel(item.getServiceName(), item.getMethodName())); + applicationEntrancesResponse.setValue( + ActivityUtil.createLinkId(item.getServiceName(), item.getMethodName(), + item.getAppName(), item.getRpcType(), item.getExtend())); + return applicationEntrancesResponse; + // 增加去重 + }).distinct().collect(Collectors.toList()); } @GetMapping("/bySamplerType") @@ -118,7 +148,7 @@ public List getApplicationEntrances(@Validated App applicationEntrancesResponse.setLabel(item.getMethodName() + "|" + item.getServiceName()); // 只有这个地方用到 applicationEntrancesResponse.setValue( - ActivityUtil.buildEntrance(item.getMethodName(),item.getServiceName(),item.getRpcType())); + ActivityUtil.buildEntrance(item.getMethodName(), item.getServiceName(), item.getRpcType())); return applicationEntrancesResponse; // 增加去重 }).distinct().collect(Collectors.toList()); @@ -134,7 +164,7 @@ public List getApplicationEntrances(@Validated App @ApiOperation("获得入口服务拓扑图") @GetMapping("topology") public ApplicationEntranceTopologyResponse getApplicationEntrancesTopology(@Validated - ApplicationEntranceTopologyQueryRequest request) { + ApplicationEntranceTopologyQueryRequest request) { if (StringUtils.isEmpty(request.getApplicationName())) { throw new TakinWebException(ExceptionCode.APP_LINK_TOPOLOGY_ERROR, "没有应用名"); } @@ -145,19 +175,19 @@ public ApplicationEntranceTopologyResponse getApplicationEntrancesTopology(@Vali @ApiOperation("标记未知节点") public Boolean updateUnknownNodeToOuter(@Validated @RequestBody ApplicationEntranceTopologyQueryRequest request) { return applicationEntranceClient.updateUnknownNodeToOuter(request.getApplicationName(), request.getLinkId(), - request.getServiceName(), request.getMethod(), - request.getRpcType(), request.getExtend(), request.getNodeId()); + request.getServiceName(), request.getMethod(), + request.getRpcType(), request.getExtend(), request.getNodeId()); } @GetMapping("/all") @ApiOperation("获取应用下所有入口服务列表") public List getApplicationAllEntrances(String appName) { - if(StringUtils.isBlank(appName)){ + if (StringUtils.isBlank(appName)) { log.error("应用名称不能为空"); return Collections.emptyList(); } List applicationEntrances = applicationEntranceClient.getApplicationEntrances( - appName, "",null, 0, 500); + appName, "", null, 0, 500); if (CollectionUtils.isEmpty(applicationEntrances)) { return Lists.newArrayList(); } @@ -186,7 +216,7 @@ public List getApplicationAllEntrances(String appN @GetMapping("/allByActivity") @ApiOperation("获取应用下创建业务活动所有入口服务列表") public List getApplicationAllEntrancesByActivity(String appName) { - if(StringUtils.isBlank(appName)){ + if (StringUtils.isBlank(appName)) { log.error("应用名称不能为空"); return Collections.emptyList(); } @@ -196,16 +226,16 @@ public List getApplicationAllEntrancesByActivity(S } return activities.stream() .filter(item -> { - String entrace = item.getEntrace(); - String[] entraceArray = entrace.split("\\|"); - return 4 == entraceArray.length; + String entrace = item.getEntrace(); + String[] entraceArray = entrace.split("\\|"); + return 4 == entraceArray.length; }).map(item -> { String entrace = item.getEntrace(); String[] entraceArray = entrace.split("\\|"); ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); HashMap nameAndId = new HashMap(); - nameAndId.put("linkId",item.getLinkId()); - nameAndId.put("linkName",item.getLinkName()); + nameAndId.put("linkId", item.getLinkId()); + nameAndId.put("linkName", item.getLinkName()); applicationEntrancesResponse.setActivityNameAndId(nameAndId); applicationEntrancesResponse.setLabel( ActivityUtil.serviceNameLabel(entraceArray[2], entraceArray[1])); diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index de7cf56091..b1a24775b9 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -65,4 +65,10 @@ public ResponseResult updateIsolate(@RequestBody PressureResourceIsolateInput in public ResponseResult list(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.list(request)); } + + @ApiOperation("链路压测资源查询-详情") + @RequestMapping(value = "/detailList", method = RequestMethod.GET) + public ResponseResult detailList(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.detail(request)); + } } From ddc03aab00702ff3d1538847665502a3ca84e8ae Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 2 Sep 2022 17:22:49 +0800 Subject: [PATCH 004/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/vo/PressureResourceDetailVO.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java index e54d3c14c2..07953cdc00 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java @@ -35,6 +35,12 @@ public class PressureResourceDetailVO extends TenantBaseEntity { @ApiModelProperty("入口名称") private String entranceName; + @ApiModelProperty("rpcType") + private String rpcType; + + @ApiModelProperty("extend") + private String extend; + @ApiModelProperty("请求方式") private String method; From 07408a7668aa5bf4c858a32266465445cdfecf4c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 2 Sep 2022 17:59:47 +0800 Subject: [PATCH 005/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceService.java | 2 +- .../impl/PressureResourceServiceImpl.java | 19 +++++++++++-------- .../vo/PressureResourceInfoVO.java | 2 +- .../vo/PressureResourceVO.java | 6 ++++++ .../PressureResourceEntity.java | 4 ++++ 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index bdf4d10463..349d9a2866 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -46,7 +46,7 @@ public interface PressureResourceService { * @param request * @return */ - List detail(PressureResourceQueryRequest request); + PressureResourceInfoVO detail(PressureResourceQueryRequest request); /** * 修改数据隔离方式 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index c8814d45c0..7013c8a67f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -124,9 +124,8 @@ public void update(PressureResourceInput input) { param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); if (nameEntity != null && nameEntity.getId() != input.getId()) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName()); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "名字已存在"); } - // 修改 PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); detailParam.setResourceId(input.getId()); @@ -139,7 +138,7 @@ public void update(PressureResourceInput input) { List insertEntitys = Lists.newArrayList(); for (Map.Entry> entry : newMap.entrySet()) { String tmpKey = entry.getKey(); - if (oldMap.containsKey(tmpKey)) { + if (!oldMap.containsKey(tmpKey)) { // 相同URL和请求方式只有一个 insertEntitys.add(entry.getValue().get(0)); } @@ -164,7 +163,7 @@ public void update(PressureResourceInput input) { } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s-%s", ele.getEntranceUrl(), ele.getMethod()); + return String.format("%s-%s-%s-%s-%s", ele.getEntranceUrl(), ele.getMethod(), ele.getRpcType(), ele.getExtend(), ele.getAppName()); } /** @@ -199,18 +198,21 @@ public PagingList list(PressureResourceQueryRequest request) * @return */ @Override - public List detail(PressureResourceQueryRequest request) { + public PressureResourceInfoVO detail(PressureResourceQueryRequest request) { + PressureResourceInfoVO infoVO = new PressureResourceInfoVO(); + PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(request.getId()); if (resourceEntity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "数据不存在"); } - + infoVO.setId(resourceEntity.getId()); + infoVO.setName(resourceEntity.getName()); // 判断是否有链路信息 PressureResourceDetailQueryParam param = new PressureResourceDetailQueryParam(); param.setResourceId(request.getId()); List detailList = pressureResourceDetailDAO.getList(param); if (CollectionUtils.isEmpty(detailList)) { - return Collections.emptyList(); + return infoVO; } List detailVOList = detailList.stream().map(detail -> { PressureResourceDetailVO tmpDetailVo = new PressureResourceDetailVO(); @@ -218,7 +220,8 @@ public List detail(PressureResourceQueryRequest reques tmpDetailVo.setValue(String.valueOf(detail.getId())); return tmpDetailVo; }).collect(Collectors.toList()); - return detailVOList; + infoVO.setDetailInputs(detailVOList); + return infoVO; } /** diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java index 9898eee40a..28b55f65ef 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java @@ -37,5 +37,5 @@ public class PressureResourceInfoVO { private Date gmtUpdate; @ApiModelProperty("明细") - List detailVOList; + List detailInputs; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java index c8eb8acc4f..455d0bb073 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java @@ -26,6 +26,12 @@ public class PressureResourceVO { @ApiModelProperty("来源类型-手工/业务流程") private int type; + @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + private int isolateType; + + @ApiModelProperty("状态(0-未开始 1-已开始)") + private int status; + @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java index f510a9d030..1390523a6c 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -36,6 +36,10 @@ public class PressureResourceEntity extends TenantBaseEntity { @Column(name = "`isolate_type`") private int isolateType; + @ApiModelProperty("状态(0-未开始 1-已开始)") + @Column(name = "`status`") + private int status; + @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; From fdf868bf2ee489f9fefa7372943bffa11e92f19e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 10:36:39 +0800 Subject: [PATCH 006/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 21 ++++++++++++++----- .../vo/PressureResourceInfoVO.java | 2 +- .../vo/PressureResourceVO.java | 8 ++++++- .../impl/PressureResourceDetailDAOImpl.java | 3 +++ .../PressureResourceDetailQueryParam.java | 4 ++++ 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 7013c8a67f..e6d1ee7e9e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -1,5 +1,6 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; +import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; @@ -30,10 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -183,11 +181,24 @@ public PagingList list(PressureResourceQueryRequest request) } //转换下 List source = pageList.getList(); + List configIds = source.stream().map(configDto -> configDto.getId()).collect(Collectors.toList()); + PressureResourceDetailQueryParam queryParam = new PressureResourceDetailQueryParam(); + queryParam.setResourceIds(configIds); + List detailEntities = pressureResourceDetailDAO.getList(queryParam); + Map> detailMap = Maps.newHashMap(); + if (CollectionUtils.isNotEmpty(detailEntities)) { + detailMap = detailEntities.stream().collect(Collectors.groupingBy(entity -> String.valueOf(entity.getResourceId()))); + } + Map> finalDetailMap = detailMap; List returnList = source.stream().map(configDto -> { PressureResourceVO vo = new PressureResourceVO(); BeanUtils.copyProperties(configDto, vo); + vo.setId(String.valueOf(configDto.getId())); + // 设置详情条数 + vo.setDetailCount(finalDetailMap.getOrDefault(String.valueOf(configDto.getId()), Collections.EMPTY_LIST).size()); return vo; }).collect(Collectors.toList()); + return PagingList.of(returnList, pageList.getTotal()); } @@ -205,7 +216,7 @@ public PressureResourceInfoVO detail(PressureResourceQueryRequest request) { if (resourceEntity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "数据不存在"); } - infoVO.setId(resourceEntity.getId()); + infoVO.setId(String.valueOf(resourceEntity.getId())); infoVO.setName(resourceEntity.getName()); // 判断是否有链路信息 PressureResourceDetailQueryParam param = new PressureResourceDetailQueryParam(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java index 28b55f65ef..d3a8ed1233 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceInfoVO.java @@ -19,7 +19,7 @@ public class PressureResourceInfoVO { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("资源配置名称") private String name; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java index 455d0bb073..1311a52e6c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java @@ -18,7 +18,7 @@ public class PressureResourceVO { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("资源配置名称") private String name; @@ -32,6 +32,12 @@ public class PressureResourceVO { @ApiModelProperty("状态(0-未开始 1-已开始)") private int status; + @ApiModelProperty("链路类型") + private Integer configType; + + @ApiModelProperty("明细条数") + private Integer detailCount; + @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 96624d1d78..03169915ff 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -55,6 +55,9 @@ private QueryWrapper getWrapper(PressureResourceDe if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); } + if (CollectionUtils.isNotEmpty(param.getResourceIds())) { + queryWrapper.in("resource_id", param.getResourceIds()); + } return queryWrapper; } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java index 8d90d2473b..1eb4588f21 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.List; + /** * @author xingchen * @description: TODO @@ -10,4 +12,6 @@ @Data public class PressureResourceDetailQueryParam { private Long resourceId; + + private List resourceIds; } From fa18c0ccdb1a4c71cd1188b6da267cf35699bda4 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 10:41:28 +0800 Subject: [PATCH 007/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/entrypoint/controller/PressureEnvController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java index 0d50de138a..dde28a1ce9 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/PressureEnvController.java @@ -13,12 +13,12 @@ @RequestMapping(ApiUrls.TAKIN_API_URL + "sys") public class PressureEnvController { - /*@Resource + @Resource private PressureEnvInspectionJob envInspectionJob; @GetMapping("pressure/state") public ResponseResult pressureState() { return ResponseResult.success(envInspectionJob.reduceSumming()); - }*/ + } } From 4ed0ceab136efb2f1f4aff07baed07c876f787f7 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 11:03:53 +0800 Subject: [PATCH 008/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- .../web/biz/service/pressureresource/vo/PressureResourceVO.java | 2 +- .../pressureresource/PressureResourceRelationAppEntity.java | 2 +- .../controller/pressureresource/PressureResoureController.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index e6d1ee7e9e..e8bbb37d24 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -121,7 +121,7 @@ public void update(PressureResourceInput input) { PressureResourceQueryParam param = new PressureResourceQueryParam(); param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); - if (nameEntity != null && nameEntity.getId() != input.getId()) { + if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "名字已存在"); } // 修改 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java index 1311a52e6c..80d595a2fb 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceVO.java @@ -26,7 +26,7 @@ public class PressureResourceVO { @ApiModelProperty("来源类型-手工/业务流程") private int type; - @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @ApiModelProperty("隔离方式(0-无 1-影子库 2-影子库/影子表 3-影子表)") private int isolateType; @ApiModelProperty("状态(0-未开始 1-已开始)") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java index 79a9ec70f3..74a2c11ca1 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java @@ -40,7 +40,7 @@ public class PressureResourceRelationAppEntity extends TenantBaseEntity { @Column(name = "`status`") private int status; - @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @ApiModelProperty("隔离方式(0-无 1-影子库 2-影子库/影子表 3-影子表)") @Column(name = "`isolate_type`") private int isolateType; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index b1a24775b9..6ec6afb31d 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -66,7 +66,7 @@ public ResponseResult list(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.list(request)); } - @ApiOperation("链路压测资源查询-详情") + @ApiOperation("链路压测资源查询-详情-编辑链路") @RequestMapping(value = "/detailList", method = RequestMethod.GET) public ResponseResult detailList(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.detail(request)); From 343db31dc5c208e744e357bcec057b26541ebf95 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 11:12:13 +0800 Subject: [PATCH 009/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index e8bbb37d24..ca4b903369 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -124,7 +124,13 @@ public void update(PressureResourceInput input) { if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "名字已存在"); } - // 修改 + PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); + updateResourceEntity.setId(input.getId()); + updateResourceEntity.setName(input.getName()); + updateResourceEntity.setGmtModified(new Date()); + pressureResourceMapper.updateById(updateResourceEntity); + + // 修改详情 PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); detailParam.setResourceId(input.getId()); List oldList = pressureResourceDetailDAO.getList(detailParam); From 46be394407516c3583e54d26d7825ee5f76c19e8 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 14:29:03 +0800 Subject: [PATCH 010/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ApplicationServiceImpl.java | 1 + .../common/ResourceTypeEnum.java | 6 ++--- .../impl/PressureResourceAppServiceImpl.java | 22 +++++++++++++++++++ .../vo/PressureResourceRelationAppVO.java | 9 +++++--- .../takin/entity/domain/vo/ApplicationVo.java | 3 +++ 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index cbeedabe85..c57ab3e07a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -2598,6 +2598,7 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl vo.setNodeNum(param.getNodeNum()); vo.setSwitchStutus(param.getSwitchStatus()); vo.setUserId(param.getUserId()); + vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); if (Objects.isNull(applicationResult) || !applicationResult.getInstanceInfo().getInstanceOnlineAmount().equals(param.getNodeNum()) || CollectionUtils.isEmpty(applicationNodeResultList) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java index e1f71022fe..837020f0fc 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java @@ -1,15 +1,13 @@ package io.shulie.takin.web.biz.service.pressureresource.common; -import lombok.Data; - /** * @author xingchen * @description: TODO * @date 2022/8/30 3:43 PM */ public enum ResourceTypeEnum { - MANUAL(1, "手工新增"), - AUTO(2, "业务流程自动新增"); + MANUAL(0, "手工新增"), + AUTO(1, "业务流程自动新增"); private int code; private String desc; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 6ba28c8e23..c0aa641be6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -1,16 +1,23 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; +import com.pamirs.takin.entity.domain.vo.ApplicationVo; import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; +import io.shulie.takin.web.biz.pojo.request.fastagentaccess.AgentVersionQueryRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; +import io.shulie.takin.web.biz.service.ApplicationService; +import io.shulie.takin.web.biz.service.fastagentaccess.AgentVersionService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.common.common.Response; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationAppMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -37,6 +44,9 @@ public class PressureResourceAppServiceImpl implements PressureResourceAppServic @Resource private PressureResourceRelationAppMapper pressureResourceRelationAppMapper; + @Resource + private ApplicationService applicationService; + /** * 应用检查列表 * @@ -57,6 +67,18 @@ public PagingList appCheckList(PressureResourceAp List returnList = source.stream().map(configDto -> { PressureResourceRelationAppVO vo = new PressureResourceRelationAppVO(); BeanUtils.copyProperties(configDto, vo); + vo.setAgentNodeNum(0); + vo.setStatus(1); + // 获取应用信息 + List list = applicationService.getApplicationList(vo.getAppName()); + if (CollectionUtils.isNotEmpty(list)) { + Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum()); + vo.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + } + } return vo; }).collect(Collectors.toList()); return PagingList.of(returnList, pageList.getTotal()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java index f46ef87365..16c01ca9ec 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java @@ -30,15 +30,18 @@ public class PressureResourceRelationAppVO extends TenantBaseEntity { @ApiModelProperty("应用名称") private String appName; - @ApiModelProperty("状态") + @ApiModelProperty("状态 0-正常 1-不正常") @Column(name = "`status`") private int status; - @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @ApiModelProperty("隔离方式(0-无 1-影子库 2-影子库/影子表 3-影子表)") private int isolateType; @ApiModelProperty("节点数") - private int nodeNum; + private Integer nodeNum; + + @ApiModelProperty("探针节点数") + private Integer agentNodeNum; @ApiModelProperty("是否加入压测范围(0-否 1-是)") private int joinPressure; diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/ApplicationVo.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/ApplicationVo.java index 89b7a7f2e5..a5722c86e4 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/ApplicationVo.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/ApplicationVo.java @@ -38,6 +38,9 @@ public class ApplicationVo extends AuthQueryResponseCommonExt implements Seriali @ApiModelProperty(name = "nodeNum", value = "节点数量") private Integer nodeNum; + @ApiModelProperty(name = "onlineNodeNum", value = "节点数量") + private Integer onlineNodeNum; + @ApiModelProperty(name = "exceptionInfo", value = "异常信息") private String exceptionInfo; From 63ca53e546ba4f5e1e0ab363a142df9d56c60207 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 5 Sep 2022 20:46:00 +0800 Subject: [PATCH 011/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/pressureresource/ExtInfo.java | 4 ++++ .../PressureResourceRelationDsInput.java | 6 ++--- .../PressureResourceRelationDsRequest.java | 2 +- .../PressureResourceRelationTableInput.java | 4 ++-- .../PressureResourceRelationTableRequest.java | 9 +++++++ .../PressureResourceAppService.java | 4 ---- .../PressureResourceService.java | 3 --- .../impl/PressureResourceAppServiceImpl.java | 2 -- .../impl/PressureResourceDsServiceImpl.java | 24 ++++++++++--------- .../impl/PressureResourceServiceImpl.java | 13 ++++++---- .../PressureResourceTableServiceImpl.java | 19 +++++++++++---- .../vo/PressureResourceRelationDsVO.java | 7 ++++-- .../vo/PressureResourceRelationTableVO.java | 10 ++++---- .../impl/PressureResourceDetailDAOImpl.java | 1 - .../PressureResourceRelationDsDAOImpl.java | 5 ++-- .../PressureResourceRelationTableDAOImpl.java | 8 +++---- .../PressureResourceRelationDsEntity.java | 16 ++++++++----- .../PressureResourceRelationTableEntity.java | 6 ++--- .../PressureResourceTableQueryParam.java | 4 ++-- .../PressureResoureDsController.java | 2 +- .../PressureResoureTableController.java | 4 ++-- 21 files changed, 87 insertions(+), 66 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java index e0da57451c..313ca8d57d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/ExtInfo.java @@ -1,10 +1,14 @@ package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import lombok.Data; + /** * @author xingchen * @description: TODO * @date 2022/9/1 10:10 AM */ +@Data public class ExtInfo { /** * 驱动名称 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java index af9012c11c..dd4977c6a8 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java @@ -27,14 +27,14 @@ public class PressureResourceRelationDsInput extends TenantBaseEntity { @ApiModelProperty("应用名称") private String appName; - @ApiModelProperty("中间件类型") - private String middlewareType; + @ApiModelProperty("中间件名称") + private String middlewareName; @ApiModelProperty("状态") private String status; @ApiModelProperty("业务数据源") - private String businessDataBase; + private String businessDatabase; @ApiModelProperty("业务数据源用户名") private String businessUserName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java index bbfe3fcb79..01c793ad63 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsRequest.java @@ -31,7 +31,7 @@ public class PressureResourceRelationDsRequest extends PageBaseDTO { @ApiModelProperty("业务数据源,模糊查询") private String queryBusinessDataBase; - @ApiModelProperty("状态") + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") private String status; @ApiModelProperty("业务数据源") diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java index 34d24337dc..4eccda47af 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java @@ -35,8 +35,8 @@ public class PressureResourceRelationTableInput extends TenantBaseEntity { @ApiModelProperty("影子表") private String shadowTable; - @ApiModelProperty("是否加入") - private Integer join; + @ApiModelProperty("是否加入(0-加入 1-未加入)") + private Integer joinFlag; @ApiModelProperty("扩展信息") private String extInfo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java index be4d5bc203..e8a6f22f95 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableRequest.java @@ -23,5 +23,14 @@ public class PressureResourceRelationTableRequest extends PageBaseDTO { @ApiModelProperty("数据源ID") private Long dsId; + + @ApiModelProperty("查询的业务表名") + private String queryBusinessTableName; + + @ApiModelProperty("业务表名") + private String businessTableName; + + @ApiModelProperty("配置状态") + private Integer status; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java index e039efb7d1..b0a292a6c4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java @@ -3,11 +3,7 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; /** * 压测资源配置 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index 349d9a2866..6eefded28c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -4,12 +4,9 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDetailVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; -import java.util.List; - /** * 压测资源配置 * diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index c0aa641be6..a6286bbaf9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -3,11 +3,9 @@ import com.pamirs.takin.entity.domain.vo.ApplicationVo; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; -import io.shulie.takin.web.biz.pojo.request.fastagentaccess.AgentVersionQueryRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; import io.shulie.takin.web.biz.service.ApplicationService; -import io.shulie.takin.web.biz.service.fastagentaccess.AgentVersionService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; import io.shulie.takin.web.common.common.Response; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 6f818283c9..c3f12bfe1a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -64,7 +64,7 @@ public void add(PressureResourceRelationDsInput input) { } // 判断数据源是否已存在 PressureResourceDsQueryParam param = new PressureResourceDsQueryParam(); - param.setBussinessDatabase(input.getBusinessDataBase()); + param.setBussinessDatabase(input.getBusinessDatabase()); param.setResourceId(input.getResourceId()); List list = pressureResourceRelationDsDAO.queryByParam(param); if (CollectionUtils.isNotEmpty(list)) { @@ -111,18 +111,20 @@ public PagingList listByDs(PressureResourceRelatio appQueryParam.setAppNames(appNames); appQueryParam.setResourceId(request.getResourceId()); List appEntitys = pressureResourceRelationAppDAO.queryList(appQueryParam); - Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); - List appVOList = appNames.stream().map(app -> { - PressureResourceRelationAppVO appVO = new PressureResourceRelationAppVO(); - appVO.setAppName(app); - appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); - return appVO; - }).collect(Collectors.toList()); - tmpVO.setAppList(appVOList); + if (CollectionUtils.isNotEmpty(appEntitys)) { + Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); + List appVOList = appNames.stream().map(app -> { + PressureResourceRelationAppVO appVO = new PressureResourceRelationAppVO(); + appVO.setAppName(app); + appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); + return appVO; + }).collect(Collectors.toList()); + tmpVO.setAppList(appVOList); + } tmpVO.setSize(tmpList.size()); listVO.add(tmpVO); } - List pageList = ListUtil.page(request.getCurrentPage() + 1, request.getPageSize(), listVO); + List pageList = ListUtil.page(request.getCurrentPage(), request.getPageSize(), listVO); return PagingList.of(pageList, listVO.size()); } @@ -157,7 +159,7 @@ public PagingList listByApp(PressureResourceRelati tmpVO.setSize(tmpList.size()); listVO.add(tmpVO); } - List pageList = ListUtil.page(request.getCurrentPage() + 1, request.getPageSize(), listVO); + List pageList = ListUtil.page(request.getCurrentPage(), request.getPageSize(), listVO); return PagingList.of(pageList, listVO.size()); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index ca4b903369..40fd984405 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -2,11 +2,13 @@ import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.pressureresource.*; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDetailVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; @@ -17,8 +19,6 @@ import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; -import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; import org.apache.commons.collections4.CollectionUtils; @@ -31,7 +31,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.*; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index 815ef9bad1..7d1824e37d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -1,7 +1,6 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; @@ -16,7 +15,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -62,7 +60,7 @@ public void save(PressureResourceRelationTableInput input) { tableEntity.setDsId(input.getDsId()); tableEntity.setBusinessTable(input.getBusinessTable()); tableEntity.setShadowTable(input.getShadowTable()); - tableEntity.setJoin(input.getJoin()); + tableEntity.setJoinFlag(input.getJoinFlag()); tableEntity.setGmtCreate(new Date()); pressureResourceRelationTableDAO.add(Arrays.asList(tableEntity)); @@ -83,10 +81,21 @@ public void update(PressureResourceRelationTableInput updateInput) { if (entity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); } - + PressureResourceRelationTableRequest tableRequest = new PressureResourceRelationTableRequest(); + tableRequest.setBusinessTableName(updateInput.getBusinessTable()); + PagingList pageList = this.pageList(tableRequest); + if (!pageList.isEmpty()) { + List list = pageList.getList(); + if (CollectionUtils.isNotEmpty(list)) { + PressureResourceRelationTableVO vo = list.get(0); + if (!vo.getId().equals(updateInput.getId())) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表名已存在"); + } + } + } PressureResourceRelationTableEntity updateEntity = new PressureResourceRelationTableEntity(); updateEntity.setId(updateInput.getId()); - updateEntity.setJoin(updateInput.getJoin()); + updateEntity.setJoinFlag(updateInput.getJoinFlag()); updateEntity.setShadowTable(updateInput.getShadowTable()); updateEntity.setRemark(updateEntity.getRemark()); updateEntity.setStatus(updateEntity.getStatus()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java index 67971cf817..26fbb3617c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java @@ -31,11 +31,11 @@ public class PressureResourceRelationDsVO extends TenantBaseEntity { @ApiModelProperty("中间件类型") private String middlewareType; - @ApiModelProperty("状态") + @ApiModelProperty("(0-未检测 1-检测失败 2-检测成功)") private String status; @ApiModelProperty("业务数据源") - private String businessDataBase; + private String businessDatabase; @ApiModelProperty("业务数据源用户名") private String businessUserName; @@ -52,6 +52,9 @@ public class PressureResourceRelationDsVO extends TenantBaseEntity { @ApiModelProperty("扩展信息") private ExtInfo extInfo; + @ApiModelProperty("remark") + private String remark; + @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java index 9a6feecca1..b9f60765c9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java @@ -25,11 +25,10 @@ public class PressureResourceRelationTableVO extends TenantBaseEntity { private Long resourceId; @ApiModelProperty("数据源Id") - @Column(name = "`dsId`") - private Long ds_id; + private Long dsId; - @ApiModelProperty("状态") - private String status; + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") + private Integer status; @ApiModelProperty("业务表") private String businessTable; @@ -38,8 +37,7 @@ public class PressureResourceRelationTableVO extends TenantBaseEntity { private String shadowTable; @ApiModelProperty("是否加入") - @Column(name = "`join`") - private int join; + private int joinFlag; @ApiModelProperty("扩展信息") private int extInfo; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 03169915ff..c59b77e186 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -8,7 +8,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java index e77b4d4c12..f99eced659 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationDsDAOImpl.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import org.apache.commons.collections4.CollectionUtils; @@ -64,14 +63,14 @@ private QueryWrapper getWrapper(PressureResour } // 模糊查询 if (StringUtils.isNotBlank(param.getQueryBussinessDatabase())) { - queryWrapper.like("business_data_base", param.getQueryBussinessDatabase()); + queryWrapper.like("business_database", param.getQueryBussinessDatabase()); } // 模糊查询 if (StringUtils.isNotBlank(param.getQueryAppName())) { queryWrapper.like("app_name", param.getQueryAppName()); } if (StringUtils.isNotBlank(param.getBussinessDatabase())) { - queryWrapper.eq("business_data_base", param.getBussinessDatabase()); + queryWrapper.eq("business_database", param.getBussinessDatabase()); } if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java index eb05e54ba0..fb35caa863 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java @@ -37,7 +37,7 @@ public class PressureResourceRelationTableDAOImpl implements PressureResourceRel */ @Override public void add(List dsEntitys) { - if (CollectionUtils.isNotEmpty(dsEntitys)) { + if (CollectionUtils.isEmpty(dsEntitys)) { return; } dsEntitys.stream().forEach(dsEntity -> { @@ -85,11 +85,11 @@ private QueryWrapper getWrapper(PressureRes return queryWrapper; } // 模糊查询 - if (StringUtils.isNotBlank(param.getQueryTableName())) { - queryWrapper.like("business_table", param.getQueryTableName()); + if (StringUtils.isNotBlank(param.getQueryBusinessTableName())) { + queryWrapper.like("business_table", param.getQueryBusinessTableName()); } if (StringUtils.isNotBlank(param.getBusinessTableName())) { - queryWrapper.like("business_table", param.getBusinessTableName()); + queryWrapper.eq("business_table", param.getBusinessTableName()); } if (param.getStatus() != null) { queryWrapper.eq("status", param.getStatus()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java index 557f19e19e..cf9d74f6e7 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java @@ -32,16 +32,16 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { @Column(name = "`app_name`") private String appName; - @ApiModelProperty("中间件类型") - @Column(name = "`middleware_type`") - private String middlewareType; + @ApiModelProperty("中间件名称") + @Column(name = "`middleware_name`") + private String middlewareName; - @ApiModelProperty("状态") + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") @Column(name = "`status`") private String status; @ApiModelProperty("业务数据源") - @Column(name = "`business_data_base`") + @Column(name = "`business_database`") private String businessDatabase; @ApiModelProperty("业务数据源用户名") @@ -49,7 +49,7 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { private String businessUserName; @ApiModelProperty("影子数据源") - @Column(name = "`shadow_data_base`") + @Column(name = "`shadow_database`") private String shadowDatabase; @ApiModelProperty("影子数据源用户名") @@ -64,6 +64,10 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { @Column(name = "`ext_info`") private String extInfo; + @ApiModelProperty("remark") + @Column(name = "`remark`") + private String remark; + @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java index 6311f48c0e..fe176f9e2f 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java @@ -34,7 +34,7 @@ public class PressureResourceRelationTableEntity extends TenantBaseEntity { @ApiModelProperty("状态(0-正常 1-不正常)") @Column(name = "`status`") - private String status; + private Integer status; @ApiModelProperty("业务表") @Column(name = "`business_table`") @@ -45,8 +45,8 @@ public class PressureResourceRelationTableEntity extends TenantBaseEntity { private String shadowTable; @ApiModelProperty("是否加入(0-加入 1-未加入)") - @Column(name = "`join`") - private int join; + @Column(name = "`join_flag`") + private int joinFlag; @ApiModelProperty("扩展信息") @Column(name = "`ext_info`") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java index aa124af729..f0b5ceb1c4 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -12,12 +12,12 @@ @Data public class PressureResourceTableQueryParam extends PageBaseDTO { @ApiModelProperty("业务数据源,模糊查询") - private String queryTableName; + private String queryBusinessTableName; @ApiModelProperty("业务数据源,等值匹配") private String businessTableName; - @ApiModelProperty("业务数据源,等值查询") + @ApiModelProperty("状态,等值查询") private Integer status; @ApiModelProperty("数据源Id") diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java index 8518824dda..a8c72e3ac2 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java @@ -35,7 +35,7 @@ public class PressureResoureDsController { @Resource private PressureResourceDsService pressureResourceDsService; - @ApiOperation("链路压测资源新增") + @ApiOperation("链路压测资源-数据源-新增") @RequestMapping(value = "/create", method = RequestMethod.POST) public ResponseResult create(@RequestBody PressureResourceRelationDsInput input) { pressureResourceDsService.add(input); diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java index 097f024b48..063482ad05 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java @@ -51,8 +51,8 @@ public ResponseResult list(PressureResourceRelationTableRequest request) { } @ApiOperation("链路压测资源-影子表-修改") - @RequestMapping(value = "/update", method = RequestMethod.GET) - public ResponseResult update(PressureResourceRelationTableInput input) { + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ResponseResult update(@RequestBody PressureResourceRelationTableInput input) { pressureResourceTableService.update(input); return ResponseResult.success(); } From 405eec53e0562ad13a8437c3a37b03e84195fd5d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 6 Sep 2022 15:35:53 +0800 Subject: [PATCH 012/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceRelationTableInput.java | 6 + .../PressureResourceDsService.java | 9 + .../common/IsolateTypeEnum.java | 24 +++ .../pressureresource/common/OpTypeEnum.java | 23 +++ .../impl/PressureResourceDsServiceImpl.java | 176 ++++++++++++++++++ .../PressureResourceTableServiceImpl.java | 3 +- .../vo/PressureResourceDsVO.java | 2 +- .../vo/PressureResourceRelationDsVO.java | 3 + .../vo/PressureResourceRelationTableVO.java | 5 +- .../exception/TakinWebExceptionEnum.java | 1 + .../PressureResourceRelationDsDAO.java | 6 + .../PressureResourceRelationTableDAO.java | 8 +- .../PressureResourceRelationTableDAOImpl.java | 8 + .../PressureResourceRelationTableMapper.java | 18 ++ .../PressureResourceRelationDsEntity.java | 2 +- .../PressureResourceRelationTableEntity.java | 8 +- .../PressureResoureDsController.java | 21 ++- .../PressureResoureTableController.java | 2 + 18 files changed, 314 insertions(+), 11 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java index 4eccda47af..b3d6ce7eea 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationTableInput.java @@ -26,6 +26,9 @@ public class PressureResourceRelationTableInput extends TenantBaseEntity { @ApiModelProperty("数据源配置Id") private Long dsId; + @ApiModelProperty("数据源") + private String database; + @ApiModelProperty("状态") private String status; @@ -41,6 +44,9 @@ public class PressureResourceRelationTableInput extends TenantBaseEntity { @ApiModelProperty("扩展信息") private String extInfo; + @ApiModelProperty("类型(0-手工 1-自动)") + private Integer type; + @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java index e9db49ba92..e5b270157a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -4,6 +4,7 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; +import org.springframework.web.multipart.MultipartFile; /** * 压测资源配置-数据源 @@ -27,4 +28,12 @@ public interface PressureResourceDsService { * 应用视图页面 */ PagingList listByApp(PressureResourceRelationDsRequest request); + + /** + * 导入 + * + * @param file + * @param resouceId + */ + void importDsConfig(MultipartFile file, Long resouceId); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java new file mode 100644 index 0000000000..4a20b25493 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java @@ -0,0 +1,24 @@ +package io.shulie.takin.web.biz.service.pressureresource.common; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/6 9:48 AM + */ +public enum IsolateTypeEnum { + SHADOW_DB(1, "影子库"), + SHADOW_DB_TABLE(2, "影子库/影子表"), + SHADOW_TABLE(3, "影子表"); + + int code; + String desc; + + IsolateTypeEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java new file mode 100644 index 0000000000..4a9eebfc16 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java @@ -0,0 +1,23 @@ +package io.shulie.takin.web.biz.service.pressureresource.common; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 3:43 PM + */ +public enum OpTypeEnum { + MANUAL(0, "手工新增"), + AUTO(1, "系统自动"); + + private int code; + private String desc; + + OpTypeEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index c3f12bfe1a..bdc364ea17 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -1,32 +1,43 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; import cn.hutool.core.collection.ListUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Lists; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.ExtInfo; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDsVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; +import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationTableDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.mortbay.util.ajax.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -44,9 +55,15 @@ public class PressureResourceDsServiceImpl implements PressureResourceDsService @Resource private PressureResourceRelationDsDAO pressureResourceRelationDsDAO; + @Resource + private PressureResourceRelationTableDAO pressureResourceRelationTableDAO; + @Resource private PressureResourceRelationDsMapper pressureResourceRelationDsMapper; + @Resource + private PressureResourceMapper pressureResourceMapper; + @Resource private PressureResourceRelationAppDAO pressureResourceRelationAppDAO; @@ -106,6 +123,12 @@ public PagingList listByDs(PressureResourceRelatio List appNames = tmpList.stream().map(ds -> ds.getAppName()).collect(Collectors.toList()); PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); BeanUtils.copyProperties(tmpList.get(0), tmpVO); + if (StringUtils.isNotBlank(tmpVO.getBusinessDatabase())) { + String bussinessDatabase = tmpVO.getBusinessDatabase(); + if (bussinessDatabase.indexOf("/") > 0) { + tmpVO.setDatabase(bussinessDatabase.substring(bussinessDatabase.indexOf("/") + 1)); + } + } // 通过应用获取是否加入压测范围 PressureResourceAppQueryParam appQueryParam = new PressureResourceAppQueryParam(); appQueryParam.setAppNames(appNames); @@ -162,4 +185,157 @@ public PagingList listByApp(PressureResourceRelati List pageList = ListUtil.page(request.getCurrentPage(), request.getPageSize(), listVO); return PagingList.of(pageList, listVO.size()); } + + /** + * 导入数据源配置 + * + * @param file + * @param resourceId + */ + @Override + public void importDsConfig(MultipartFile file, Long resourceId) { + String originalFilename = file.getOriginalFilename(); + if (StringUtils.isBlank(originalFilename)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_CONFIG_FILE_VALIDATE_ERROR, "文件不存在!"); + } + if (!originalFilename.endsWith(".xlsx")) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, + "文件格式不正确,必须为xlsx格式文件,请重新导出配置文件!"); + } + // 简单校验 + PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(resourceId); + if (resourceEntity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "资源配置未获取到"); + } + // 读取xlsx文件 + Map>> stringArrayListHashMap = ExcelUtils.readExcelForXlsx(file, 0); + if (stringArrayListHashMap.isEmpty()) { + return; + } + // 数据校验 + // 保存到DB + int isolateType = resourceEntity.getIsolateType(); + // 影子表单独处理 + if (isolateType == IsolateTypeEnum.SHADOW_TABLE.getCode()) { + processShadowTable(resourceId, stringArrayListHashMap); + } else { + // 影子库处理 + processShadowDB(resourceId, stringArrayListHashMap); + } + } + + /** + * 处理影子表 + * + * @param resourceId + * @param stringArrayListHashMap + */ + private void processShadowTable(Long resourceId, Map>> stringArrayListHashMap) { + ArrayList> isolateType_ShadowTable = stringArrayListHashMap.get("隔离方案-影子表"); + if (CollectionUtils.isEmpty(isolateType_ShadowTable)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案为空"); + } + // 解析数据 + List tableList = Lists.newArrayList(); + for (int i = 0; i < isolateType_ShadowTable.size(); i++) { + ArrayList mess = isolateType_ShadowTable.get(i); + // 业务数据源地址 + String bussinessDatabase = mess.get(0); + // 业务库 + String shadowDatabase = mess.get(2); + // 业务表 + String businessTable = mess.get(3); + // 影子表 + String shadowTable = mess.get(4); + + PressureResourceRelationTableInput input = new PressureResourceRelationTableInput(); + input.setDatabase(bussinessDatabase); + input.setBusinessTable(businessTable); + input.setShadowTable(shadowTable); + + tableList.add(input); + } + // 按照URL分组 + Map> tableMap = tableList.stream().collect(Collectors.groupingBy(PressureResourceRelationTableInput::getDatabase)); + List tableEntityList = Lists.newArrayList(); + for (Map.Entry> entry : tableMap.entrySet()) { + // 数据源 + String database = entry.getKey(); + // 判断数据源是否存在 + PressureResourceDsQueryParam queryParam = new PressureResourceDsQueryParam(); + queryParam.setResourceId(resourceId); + queryParam.setBussinessDatabase(database); + List dsEntityList = pressureResourceRelationDsDAO.queryByParam(queryParam); + if (CollectionUtils.isEmpty(dsEntityList)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "数据源不存在"); + } + // 获取数据源Id + Long dsId = dsEntityList.get(0).getId(); + List inputs = entry.getValue(); + for (int i = 0; i < inputs.size(); i++) { + PressureResourceRelationTableInput input = inputs.get(i); + PressureResourceRelationTableEntity entity = new PressureResourceRelationTableEntity(); + entity.setResourceId(resourceId); + entity.setDsId(dsId); + entity.setBusinessTable(input.getBusinessTable()); + entity.setShadowTable(input.getShadowTable()); + entity.setJoinFlag(0); + entity.setGmtCreate(new Date()); + + tableEntityList.add(entity); + } + } + // 批量保存 + pressureResourceRelationTableDAO.saveOrUpdate(tableEntityList); + } + + /** + * 处理影子库 + * + * @param resourceId + * @param stringArrayListHashMap + */ + private void processShadowDB(Long resourceId, Map>> stringArrayListHashMap) { + ArrayList> isolateType_Shadowdb = stringArrayListHashMap.get("隔离方案-影子库"); + if (CollectionUtils.isEmpty(isolateType_Shadowdb)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案"); + } + // 解析列表值 + for (int i = 1; i < isolateType_Shadowdb.size(); i++) { + ArrayList mess = isolateType_Shadowdb.get(i); + // 获取每列值 + String bussinessDatabase = mess.get(0); + String shadowDatabase = mess.get(2); + String userName = mess.get(3); + String password = mess.get(4); + + // 按业务数据源查询,是否存在 + PressureResourceDsQueryParam queryParam = new PressureResourceDsQueryParam(); + queryParam.setResourceId(resourceId); + queryParam.setBussinessDatabase(bussinessDatabase); + List dsEntityList = pressureResourceRelationDsDAO.queryByParam(queryParam); + if (CollectionUtils.isEmpty(dsEntityList)) { + // 新增 + PressureResourceRelationDsEntity dsInput = new PressureResourceRelationDsEntity(); + dsInput.setResourceId(resourceId); + dsInput.setBusinessDatabase(bussinessDatabase); + dsInput.setShadowDatabase(shadowDatabase); + dsInput.setShadowUserName(userName); + dsInput.setShadowPassword(password); + pressureResourceRelationDsMapper.insert(dsInput); + } else { + // update + PressureResourceRelationDsEntity updateEntity = new PressureResourceRelationDsEntity(); + updateEntity.setShadowDatabase(shadowDatabase); + updateEntity.setShadowUserName(userName); + updateEntity.setShadowPassword(password); + updateEntity.setGmtModified(new Date()); + + QueryWrapper whereWrapper = new QueryWrapper<>(); + whereWrapper.eq("resource_id", resourceId); + whereWrapper.eq("business_database", bussinessDatabase); + pressureResourceRelationDsMapper.update(updateEntity, whereWrapper); + } + } + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index 7d1824e37d..4326a9c690 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -61,8 +61,8 @@ public void save(PressureResourceRelationTableInput input) { tableEntity.setBusinessTable(input.getBusinessTable()); tableEntity.setShadowTable(input.getShadowTable()); tableEntity.setJoinFlag(input.getJoinFlag()); + tableEntity.setType(input.getType()); tableEntity.setGmtCreate(new Date()); - pressureResourceRelationTableDAO.add(Arrays.asList(tableEntity)); } @@ -131,6 +131,7 @@ public PagingList pageList(PressureResourceRela List returnList = source.stream().map(configDto -> { PressureResourceRelationTableVO vo = new PressureResourceRelationTableVO(); BeanUtils.copyProperties(configDto, vo); + vo.setId(String.valueOf(configDto.getId())); return vo; }).collect(Collectors.toList()); return PagingList.of(returnList, pageList.getTotal()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java index 2c5c89c40a..7474dc2360 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDsVO.java @@ -13,7 +13,7 @@ @ToString(callSuper = true) public class PressureResourceDsVO { @ApiModelProperty("状态") - private String status; + private int status; @ApiModelProperty("业务数据源") private String businessDataBase; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java index 26fbb3617c..1d524f8766 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java @@ -37,6 +37,9 @@ public class PressureResourceRelationDsVO extends TenantBaseEntity { @ApiModelProperty("业务数据源") private String businessDatabase; + @ApiModelProperty("库名") + private String database; + @ApiModelProperty("业务数据源用户名") private String businessUserName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java index b9f60765c9..0a7b073dca 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java @@ -19,7 +19,7 @@ public class PressureResourceRelationTableVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("资源配置Id") private Long resourceId; @@ -39,6 +39,9 @@ public class PressureResourceRelationTableVO extends TenantBaseEntity { @ApiModelProperty("是否加入") private int joinFlag; + @ApiModelProperty("类型(0-手工 1-自动)") + private int type; + @ApiModelProperty("扩展信息") private int extInfo; diff --git a/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java b/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java index ed437666d7..c6d0406466 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java +++ b/takin-web-common/src/main/java/io/shulie/takin/web/common/exception/TakinWebExceptionEnum.java @@ -201,6 +201,7 @@ public enum TakinWebExceptionEnum implements ExceptionReadable { */ PRESSURE_RESOURCE_OP_ERROR("1909-" + ErrorConstant.UPDATE_ERROR, "操作异常"), PRESSURE_RESOURCE_QUERY_ERROR("1910-" + ErrorConstant.QUERY_ERROR, "查询异常"), + PRESSURE_RESOURCE_CONFIG_FILE_VALIDATE_ERROR("1911-" + ErrorConstant.FILE_VALIDATE_ERROR, "配置文件校验异常"), ; private final String errorCode; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java index 09bcf24e31..e12c0a6a59 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationDsDAO.java @@ -18,5 +18,11 @@ public interface PressureResourceRelationDsDAO { */ void add(List dsEntitys); + /** + * 按条件查询列表页 + * + * @param param + * @return + */ List queryByParam(PressureResourceDsQueryParam param); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java index 39abcc432a..13c2ca9f82 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelationTableDAO.java @@ -28,9 +28,15 @@ public interface PressureResourceRelationTableDAO { PagingList pageList(PressureResourceTableQueryParam param); /** - * * @param param * @return */ List queryList(PressureResourceTableQueryParam param); + + /** + * 批量保存 + * + * @param tableEntitys + */ + void saveOrUpdate(List tableEntitys); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java index fb35caa863..dbe00cf7c8 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java @@ -79,6 +79,14 @@ public List queryList(PressureResourceTable return list; } + @Override + public void saveOrUpdate(List tableEntitys) { + if (CollectionUtils.isEmpty(tableEntitys)) { + return; + } + pressureResourceRelationTableMapper.saveOrUpdate(tableEntitys); + } + private QueryWrapper getWrapper(PressureResourceTableQueryParam param) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (param == null) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java index 9ab6b28689..b797aba99d 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java @@ -3,7 +3,25 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface PressureResourceRelationTableMapper extends BaseMapper { + + @Insert("") + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java index cf9d74f6e7..afe3730124 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java @@ -38,7 +38,7 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") @Column(name = "`status`") - private String status; + private int status; @ApiModelProperty("业务数据源") @Column(name = "`business_database`") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java index fe176f9e2f..67b58c9996 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java @@ -32,9 +32,9 @@ public class PressureResourceRelationTableEntity extends TenantBaseEntity { @Column(name = "`ds_id`") private Long dsId; - @ApiModelProperty("状态(0-正常 1-不正常)") + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") @Column(name = "`status`") - private Integer status; + private int status; @ApiModelProperty("业务表") @Column(name = "`business_table`") @@ -48,6 +48,10 @@ public class PressureResourceRelationTableEntity extends TenantBaseEntity { @Column(name = "`join_flag`") private int joinFlag; + @ApiModelProperty("类型(0-手工 1-自动)") + @Column(name = "`type`") + private int type; + @ApiModelProperty("扩展信息") @Column(name = "`ext_info`") private String extInfo; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java index a8c72e3ac2..4147f7ebc7 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java @@ -11,12 +11,11 @@ import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; /** * 链路资源配置-数据源隔离 @@ -53,4 +52,18 @@ public ResponseResult listByDs(PressureResourceRelationDsRequest request) { public ResponseResult listByApp(PressureResourceRelationDsRequest request) { return ResponseResult.success(pressureResourceDsService.listByApp(request)); } + + @ApiOperation("链路压测资源-导入影子资源") + @RequestMapping(value = "/import", method = RequestMethod.POST) + public ResponseResult importDsConfig(@RequestParam MultipartFile file, @RequestParam Long resourceId) { + pressureResourceDsService.importDsConfig(file, resourceId); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-导出影子资源") + @RequestMapping(value = "/export", method = RequestMethod.GET) + public ResponseResult exportDsConfig(HttpServletResponse response, Long resourceId) { + //pressureResourceDsService.importDsConfig(file, resourceId); + return ResponseResult.success(); + } } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java index 063482ad05..6d6dca1f95 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java @@ -7,6 +7,7 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; +import io.shulie.takin.web.biz.service.pressureresource.common.OpTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -40,6 +41,7 @@ public class PressureResoureTableController { @ApiOperation("链路压测资源-影子表新增") @RequestMapping(value = "/save", method = RequestMethod.POST) public ResponseResult save(@RequestBody PressureResourceRelationTableInput input) { + input.setType(OpTypeEnum.MANUAL.getCode()); pressureResourceTableService.save(input); return ResponseResult.success(); } From 85f9a13e7817f54418b537342d2f6dbf0dbeb053 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 6 Sep 2022 16:23:52 +0800 Subject: [PATCH 013/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceDsService.java | 10 +++ .../impl/PressureResourceAppServiceImpl.java | 1 + .../impl/PressureResourceDsServiceImpl.java | 66 +++++++++++++++++++ .../impl/PressureResourceServiceImpl.java | 2 + .../vo/PressureResourceDetailVO.java | 4 +- .../vo/PressureResourceRelationAppVO.java | 6 +- .../vo/PressureResourceRelationDsVO.java | 4 +- .../vo/PressureResourceRelationTableVO.java | 4 +- .../vo/ShadwoTableExcelVO.java | 29 ++++++++ .../PressureResourceRelationTableDAOImpl.java | 3 + .../PressureResourceTableQueryParam.java | 3 + .../PressureResoureDsController.java | 2 +- 12 files changed, 124 insertions(+), 10 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java index e5b270157a..74b3377504 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -6,6 +6,8 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; + /** * 压测资源配置-数据源 * @@ -36,4 +38,12 @@ public interface PressureResourceDsService { * @param resouceId */ void importDsConfig(MultipartFile file, Long resouceId); + + /** + * 导出 + * + * @param response + * @param resourceId + */ + void export(HttpServletResponse response, Long resourceId); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index a6286bbaf9..1e2b7f81ef 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -67,6 +67,7 @@ public PagingList appCheckList(PressureResourceAp BeanUtils.copyProperties(configDto, vo); vo.setAgentNodeNum(0); vo.setStatus(1); + vo.setId(String.valueOf(configDto.getId())); // 获取应用信息 List list = applicationService.getApplicationList(vo.getAppName()); if (CollectionUtils.isNotEmpty(list)) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index bdc364ea17..d32187f146 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -16,6 +16,8 @@ import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.common.vo.excel.ExcelSheetVO; +import io.shulie.takin.web.common.vo.excel.ShadowJobExcelVO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationTableDAO; @@ -27,6 +29,7 @@ import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.mortbay.util.ajax.JSON; @@ -37,6 +40,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -123,6 +127,8 @@ public PagingList listByDs(PressureResourceRelatio List appNames = tmpList.stream().map(ds -> ds.getAppName()).collect(Collectors.toList()); PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); BeanUtils.copyProperties(tmpList.get(0), tmpVO); + tmpVO.setId(String.valueOf(tmpList.get(0).getId())); + tmpVO.setResourceId(String.valueOf(tmpList.get(0).getResourceId())); if (StringUtils.isNotBlank(tmpVO.getBusinessDatabase())) { String bussinessDatabase = tmpVO.getBusinessDatabase(); if (bussinessDatabase.indexOf("/") > 0) { @@ -171,6 +177,8 @@ public PagingList listByApp(PressureResourceRelati List tmpList = entry.getValue(); PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); BeanUtils.copyProperties(tmpList.get(0), tmpVO); + tmpVO.setId(String.valueOf(tmpList.get(0).getId())); + tmpVO.setResourceId(String.valueOf(tmpList.get(0).getResourceId())); List dsVOList = tmpList.stream().map(ds -> { PressureResourceDsVO tmpDs = new PressureResourceDsVO(); tmpDs.setBusinessDataBase(ds.getBusinessDatabase()); @@ -224,6 +232,64 @@ public void importDsConfig(MultipartFile file, Long resourceId) { } } + /** + * 导出 + * + * @param response + * @param resourceId + */ + @Override + public void export(HttpServletResponse response, Long resourceId) { + PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(resourceId); + if (resourceEntity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "资源配置未获取到"); + } + // 判断隔离方式 + if (resourceEntity.getIsolateType() == IsolateTypeEnum.SHADOW_TABLE.getCode()) { + // 影子表导出 + exportShadowTable(response, resourceEntity); + } else { + // 影子库导出 + } + } + + /** + * 导出影子表 + * + * @param response + * @param resource + */ + private void exportShadowTable(HttpServletResponse response, PressureResourceEntity resource) { + // 查询当前配置下的所有数据源信息 + PressureResourceDsQueryParam dsQueryParam = new PressureResourceDsQueryParam(); + dsQueryParam.setResourceId(resource.getId()); + List dsEntityList = pressureResourceRelationDsDAO.queryByParam(dsQueryParam); + List> sheets = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(dsEntityList)) { + // 查询影子表 + PressureResourceTableQueryParam tableQueryParam = new PressureResourceTableQueryParam(); + tableQueryParam.setResourceId(resource.getId()); + List tableEntityList = pressureResourceRelationTableDAO.queryList(tableQueryParam); + // 按照数据源分组下 + if (CollectionUtils.isNotEmpty(tableEntityList)) { + Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getDsId()))); + } + /*List jobExcelModelList = this.job2ExcelJobModel(shadowJobConfigs); + ExcelSheetVO jobSheet = new ExcelSheetVO<>(); + jobSheet.setData(jobExcelModelList); + jobSheet.setExcelModelClass(ShadowJobExcelVO.class); + jobSheet.setSheetName(AppConfigSheetEnum.JOB.getDesc()); + jobSheet.setSheetNum(1); + // 出口挡板配置 + sheets.add(this.getLinkGuardSheet(applicationId));*/ + } + try { + ExcelUtils.exportExcelManySheet(response, resource.getName(), sheets); + } catch (Exception e) { + logger.error("应用配置导出错误: {}", e.getMessage(), e); + } + } + /** * 处理影子表 * diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 40fd984405..3e23fafb1a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -238,6 +238,8 @@ public PressureResourceInfoVO detail(PressureResourceQueryRequest request) { PressureResourceDetailVO tmpDetailVo = new PressureResourceDetailVO(); BeanUtils.copyProperties(detail, tmpDetailVo); tmpDetailVo.setValue(String.valueOf(detail.getId())); + tmpDetailVo.setId(String.valueOf(detail.getId())); + tmpDetailVo.setResourceId(String.valueOf(detail.getResourceId())); return tmpDetailVo; }).collect(Collectors.toList()); infoVO.setDetailInputs(detailVOList); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java index 07953cdc00..f239f585b1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceDetailVO.java @@ -18,13 +18,13 @@ public class PressureResourceDetailVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("给前端搞个ID的字符串") private String value; @ApiModelProperty("资源配置Id") - private Long resourceId; + private String resourceId; @ApiModelProperty("应用名称") private String appName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java index 16c01ca9ec..8657a4f012 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java @@ -19,13 +19,13 @@ public class PressureResourceRelationAppVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("资源配置Id") - private Long resourceId; + private String resourceId; @ApiModelProperty("详情Id") - private Long detailId; + private String detailId; @ApiModelProperty("应用名称") private String appName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java index 1d524f8766..b83dae0854 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java @@ -20,10 +20,10 @@ public class PressureResourceRelationDsVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") - private Long id; + private String id; @ApiModelProperty("资源配置Id") - private Long resourceId; + private String resourceId; @ApiModelProperty("应用名称") private String appName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java index 0a7b073dca..6160236bdd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java @@ -22,10 +22,10 @@ public class PressureResourceRelationTableVO extends TenantBaseEntity { private String id; @ApiModelProperty("资源配置Id") - private Long resourceId; + private String resourceId; @ApiModelProperty("数据源Id") - private Long dsId; + private String dsId; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") private Integer status; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java new file mode 100644 index 0000000000..a6ebbd5a08 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java @@ -0,0 +1,29 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.metadata.BaseRowModel; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ShadwoTableExcelVO extends BaseRowModel implements Serializable { + @ExcelProperty(value ="name",index = 0) + private String name; + + @ExcelProperty(value ="type",index = 1) + private Integer type; + + @ExcelProperty(value ="configCode",index = 2) + private String configCode; + + @ExcelProperty(value ="status",index = 3) + private Integer status; + + @ExcelProperty(value ="active",index = 4) + private Integer active; + + @ExcelProperty(value ="remark",index = 5) + private String remark; + +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java index dbe00cf7c8..d59f0c96c5 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelationTableDAOImpl.java @@ -105,6 +105,9 @@ private QueryWrapper getWrapper(PressureRes if (param.getDsId() != null) { queryWrapper.eq("ds_id", param.getDsId()); } + if (param.getResourceId() != null) { + queryWrapper.eq("resource_id", param.getResourceId()); + } return queryWrapper; } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java index f0b5ceb1c4..0721e7fcc2 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -17,6 +17,9 @@ public class PressureResourceTableQueryParam extends PageBaseDTO { @ApiModelProperty("业务数据源,等值匹配") private String businessTableName; + @ApiModelProperty("资源配置Id") + private Long resourceId; + @ApiModelProperty("状态,等值查询") private Integer status; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java index 4147f7ebc7..dc763f9023 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java @@ -63,7 +63,7 @@ public ResponseResult importDsConfig(@RequestParam MultipartFile file, @RequestP @ApiOperation("链路压测资源-导出影子资源") @RequestMapping(value = "/export", method = RequestMethod.GET) public ResponseResult exportDsConfig(HttpServletResponse response, Long resourceId) { - //pressureResourceDsService.importDsConfig(file, resourceId); + pressureResourceDsService.export(response, resourceId); return ResponseResult.success(); } } From 091cf122197cdf8c85d6b5dddd4f40a20ba8f7a9 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 6 Sep 2022 17:54:16 +0800 Subject: [PATCH 014/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/common/DbNameUtil.java | 34 ++++++++ .../common/IsolateTypeEnum.java | 20 ++++- .../impl/PressureResourceDsServiceImpl.java | 81 ++++++++++++++++--- .../PressureResourceTableServiceImpl.java | 2 +- .../pressureresource/vo/ShadowDbExcelVO.java | 31 +++++++ .../vo/ShadowTableExcelVO.java | 31 +++++++ .../vo/ShadwoTableExcelVO.java | 29 ------- 7 files changed, 182 insertions(+), 46 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DbNameUtil.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowDbExcelVO.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowTableExcelVO.java delete mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DbNameUtil.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DbNameUtil.java new file mode 100644 index 0000000000..699e71a021 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DbNameUtil.java @@ -0,0 +1,34 @@ +package io.shulie.takin.web.biz.service.pressureresource.common; + +import org.apache.commons.lang3.StringUtils; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/6 5:13 PM + */ +public class DbNameUtil { + /** + * 获取解析库名 + * + * @param url + * @return + */ + public static String getDbName(String url) { + if (StringUtils.isBlank(url)) { + return ""; + } + if (url.lastIndexOf("/") > 0) { + url = url.substring(url.lastIndexOf("/") + 1); + } + if (url.indexOf("?") > 0) { + url = url.substring(0, url.indexOf("?")); + } + return url; + } + + public static void main(String[] args) { + System.out.println(getDbName("jdbc:mysql://127.0.0.1/trodb?useUnicode=true")); + System.out.println(getDbName("jdbc:mysql://127.0.0.1/trodb")); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java index 4a20b25493..7bc5bbdf84 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java @@ -11,14 +11,28 @@ public enum IsolateTypeEnum { SHADOW_TABLE(3, "影子表"); int code; - String desc; + String name; - IsolateTypeEnum(int code, String desc) { + IsolateTypeEnum(int code, String name) { this.code = code; - this.desc = desc; + this.name = name; } public int getCode() { return code; } + + public String getName() { + return name; + } + + public static String getName(int code) { + IsolateTypeEnum[] isolateTypeEnums = IsolateTypeEnum.values(); + for (IsolateTypeEnum isolateTypeEnum : isolateTypeEnums) { + if (isolateTypeEnum.getCode() == (code)) { + return isolateTypeEnum.getName(); + } + } + return "UNKNOW"; + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index d32187f146..fb14e1d7eb 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -9,15 +9,13 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationDsRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.common.DbNameUtil; import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDsVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationDsVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.vo.excel.ExcelSheetVO; -import io.shulie.takin.web.common.vo.excel.ShadowJobExcelVO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationAppDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationDsDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelationTableDAO; @@ -32,6 +30,7 @@ import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.mortbay.util.ajax.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,6 +126,8 @@ public PagingList listByDs(PressureResourceRelatio List appNames = tmpList.stream().map(ds -> ds.getAppName()).collect(Collectors.toList()); PressureResourceRelationDsVO tmpVO = new PressureResourceRelationDsVO(); BeanUtils.copyProperties(tmpList.get(0), tmpVO); + tmpVO.setDatabase(DbNameUtil.getDbName(tmpList.get(0).getBusinessDatabase())); + tmpVO.setId(String.valueOf(tmpList.get(0).getId())); tmpVO.setResourceId(String.valueOf(tmpList.get(0).getResourceId())); if (StringUtils.isNotBlank(tmpVO.getBusinessDatabase())) { @@ -250,6 +251,44 @@ public void export(HttpServletResponse response, Long resourceId) { exportShadowTable(response, resourceEntity); } else { // 影子库导出 + exportShadowDB(response, resourceEntity); + } + } + + /** + * 导出影子库 + * + * @param response + * @param resource + */ + private void exportShadowDB(HttpServletResponse response, PressureResourceEntity resource) { + // 查询所有影子库 + PressureResourceDsQueryParam dsQueryParam = new PressureResourceDsQueryParam(); + dsQueryParam.setResourceId(resource.getId()); + List dsEntityList = pressureResourceRelationDsDAO.queryByParam(dsQueryParam); + List shadowDbExcelVOList = Lists.newArrayList(); + List> sheets = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(dsEntityList)) { + shadowDbExcelVOList = dsEntityList.stream().map(entity -> { + ShadowDbExcelVO excelVO = new ShadowDbExcelVO(); + excelVO.setBusinessDatabase(entity.getBusinessDatabase()); + excelVO.setShadowDatabase(entity.getShadowDatabase()); + excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getType())); + excelVO.setShadowUsername(entity.getShadowUserName()); + excelVO.setShadowPassword(entity.getShadowPassword()); + return excelVO; + }).collect(Collectors.toList()); + } + ExcelSheetVO shadowDbSheet = new ExcelSheetVO<>(); + shadowDbSheet.setData(shadowDbExcelVOList); + shadowDbSheet.setExcelModelClass(ShadowDbExcelVO.class); + shadowDbSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowDbSheet.setSheetNum(1); + sheets.add(shadowDbSheet); + try { + ExcelUtils.exportExcelManySheet(response, resource.getName() + "_隔离配置", sheets); + } catch (Exception e) { + logger.error("配置导出错误: {}", ExceptionUtils.getStackTrace(e)); } } @@ -273,20 +312,36 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt // 按照数据源分组下 if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getDsId()))); + Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); + List shadowTableExcelVOList = Lists.newArrayList(); + for (Map.Entry> entry : tableEntityMap.entrySet()) { + String dsId = entry.getKey(); + PressureResourceRelationDsEntity tmpDs = dsMap.get(dsId).stream().findFirst().orElse(new PressureResourceRelationDsEntity()); + if (tmpDs != null && tmpDs.getId() != null) { + List list = entry.getValue().stream().map(table -> { + ShadowTableExcelVO excelVO = new ShadowTableExcelVO(); + excelVO.setBusinessDatabase(tmpDs.getBusinessDatabase()); + excelVO.setDatabase(DbNameUtil.getDbName(tmpDs.getBusinessDatabase())); + excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getIsolateType())); + excelVO.setShadowTable(table.getShadowTable()); + excelVO.setBusinessTable(table.getBusinessTable()); + return excelVO; + }).collect(Collectors.toList()); + shadowTableExcelVOList.addAll(list); + } + } + ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); + shadowTableSheet.setData(shadowTableExcelVOList); + shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); + shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowTableSheet.setSheetNum(1); + sheets.add(shadowTableSheet); } - /*List jobExcelModelList = this.job2ExcelJobModel(shadowJobConfigs); - ExcelSheetVO jobSheet = new ExcelSheetVO<>(); - jobSheet.setData(jobExcelModelList); - jobSheet.setExcelModelClass(ShadowJobExcelVO.class); - jobSheet.setSheetName(AppConfigSheetEnum.JOB.getDesc()); - jobSheet.setSheetNum(1); - // 出口挡板配置 - sheets.add(this.getLinkGuardSheet(applicationId));*/ } try { ExcelUtils.exportExcelManySheet(response, resource.getName(), sheets); } catch (Exception e) { - logger.error("应用配置导出错误: {}", e.getMessage(), e); + logger.error("配置导出错误: {}", ExceptionUtils.getStackTrace(e)); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index 4326a9c690..d43b2e326f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -88,7 +88,7 @@ public void update(PressureResourceRelationTableInput updateInput) { List list = pageList.getList(); if (CollectionUtils.isNotEmpty(list)) { PressureResourceRelationTableVO vo = list.get(0); - if (!vo.getId().equals(updateInput.getId())) { + if (!vo.getId().equals(String.valueOf(updateInput.getId()))) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表名已存在"); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowDbExcelVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowDbExcelVO.java new file mode 100644 index 0000000000..0896bf4b0f --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowDbExcelVO.java @@ -0,0 +1,31 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.metadata.BaseRowModel; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ShadowDbExcelVO extends BaseRowModel implements Serializable { + @ColumnWidth(50) + @ExcelProperty(value = {"Takin为您生成了影子库账号和密码(如不用系统生成的账号或密码,请替换新的账号密码到此表中", "业务数据源地址"}, index = 0) + private String businessDatabase; + + @ColumnWidth(25) + @ExcelProperty(value = {"Takin为您生成了影子库账号和密码(如不用系统生成的账号或密码,请替换新的账号密码到此表中", "隔离方案"}, index = 1) + private String isolateType; + + @ColumnWidth(50) + @ExcelProperty(value = {"Takin为您生成了影子库账号和密码(如不用系统生成的账号或密码,请替换新的账号密码到此表中", "影子数据源地址(请提供)"}, index = 2) + private String shadowDatabase; + + @ColumnWidth(25) + @ExcelProperty(value = {"Takin为您生成了影子库账号和密码(如不用系统生成的账号或密码,请替换新的账号密码到此表中", "影子库账号"}, index = 3) + private String shadowUsername; + + @ColumnWidth(25) + @ExcelProperty(value = {"Takin为您生成了影子库账号和密码(如不用系统生成的账号或密码,请替换新的账号密码到此表中", "影子库密码"}, index = 4) + private String shadowPassword; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowTableExcelVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowTableExcelVO.java new file mode 100644 index 0000000000..3e73aec74f --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadowTableExcelVO.java @@ -0,0 +1,31 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.metadata.BaseRowModel; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ShadowTableExcelVO extends BaseRowModel implements Serializable { + @ColumnWidth(50) + @ExcelProperty(value = "业务数据源地址", index = 0) + private String businessDatabase; + + @ColumnWidth(30) + @ExcelProperty(value = "隔离方式", index = 1) + private String isolateType; + + @ColumnWidth(30) + @ExcelProperty(value = "业务库", index = 2) + private String database; + + @ColumnWidth(30) + @ExcelProperty(value = "业务表", index = 3) + private String businessTable; + + @ColumnWidth(30) + @ExcelProperty(value = "是否加入影子表(请提供)", index = 4) + private String shadowTable; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java deleted file mode 100644 index a6ebbd5a08..0000000000 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/ShadwoTableExcelVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.shulie.takin.web.biz.service.pressureresource.vo; - -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.metadata.BaseRowModel; -import lombok.Data; - -import java.io.Serializable; - -@Data -public class ShadwoTableExcelVO extends BaseRowModel implements Serializable { - @ExcelProperty(value ="name",index = 0) - private String name; - - @ExcelProperty(value ="type",index = 1) - private Integer type; - - @ExcelProperty(value ="configCode",index = 2) - private String configCode; - - @ExcelProperty(value ="status",index = 3) - private Integer status; - - @ExcelProperty(value ="active",index = 4) - private Integer active; - - @ExcelProperty(value ="remark",index = 5) - private String remark; - -} From d5a1156efe7e1a8e6135d89672db6b8b97a887b0 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 6 Sep 2022 19:36:50 +0800 Subject: [PATCH 015/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceAppInput.java | 2 +- .../PressureResourceRelationDsInput.java | 3 +++ .../common/ResourceTypeEnum.java | 23 ------------------- .../{OpTypeEnum.java => SourceTypeEnum.java} | 4 ++-- .../impl/PressureResourceDsServiceImpl.java | 5 ++++ .../impl/PressureResourceServiceImpl.java | 8 ++++--- .../vo/PressureResourceRelationDsVO.java | 3 +++ .../PressureResourceDetailDAO.java | 5 ++++ .../PressureResourceRelationTableMapper.java | 4 ++-- .../PressureResourceDetailEntity.java | 4 ++++ .../PressureResourceEntity.java | 4 ++-- .../PressureResourceRelationAppEntity.java | 4 ++++ .../PressureResourceRelationDsEntity.java | 4 ++++ .../PressureResoureAppController.java | 5 ---- .../PressureResoureController.java | 6 ++--- .../PressureResoureDsController.java | 4 ++-- .../PressureResoureTableController.java | 9 ++------ 17 files changed, 47 insertions(+), 50 deletions(-) delete mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java rename takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/{OpTypeEnum.java => SourceTypeEnum.java} (83%) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java index a3ee87a8ee..f9949de48f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppInput.java @@ -13,7 +13,7 @@ public class PressureResourceAppInput { @ApiModelProperty("id") private Long id; - @ApiModelProperty("隔离方式(1-影子库 2-影子库/影子表 3-影子表)") + @ApiModelProperty("隔离方式(0-未设置 1-影子库 2-影子库/影子表 3-影子表)") private int isolateType; @ApiModelProperty("节点数") diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java index dd4977c6a8..d909ecee32 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelationDsInput.java @@ -33,6 +33,9 @@ public class PressureResourceRelationDsInput extends TenantBaseEntity { @ApiModelProperty("状态") private String status; + @ApiModelProperty("来源类型(0-手工,1-自动)") + private int type; + @ApiModelProperty("业务数据源") private String businessDatabase; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java deleted file mode 100644 index 837020f0fc..0000000000 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/ResourceTypeEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.shulie.takin.web.biz.service.pressureresource.common; - -/** - * @author xingchen - * @description: TODO - * @date 2022/8/30 3:43 PM - */ -public enum ResourceTypeEnum { - MANUAL(0, "手工新增"), - AUTO(1, "业务流程自动新增"); - - private int code; - private String desc; - - ResourceTypeEnum(int code, String desc) { - this.code = code; - this.desc = desc; - } - - public int getCode() { - return code; - } -} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/SourceTypeEnum.java similarity index 83% rename from takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java rename to takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/SourceTypeEnum.java index 4a9eebfc16..5cdfee0ce1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/OpTypeEnum.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/SourceTypeEnum.java @@ -5,14 +5,14 @@ * @description: TODO * @date 2022/8/30 3:43 PM */ -public enum OpTypeEnum { +public enum SourceTypeEnum { MANUAL(0, "手工新增"), AUTO(1, "系统自动"); private int code; private String desc; - OpTypeEnum(int code, String desc) { + SourceTypeEnum(int code, String desc) { this.code = code; this.desc = desc; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index fb14e1d7eb..b382708a7f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -11,6 +11,7 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.common.DbNameUtil; import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; import io.shulie.takin.web.common.exception.TakinWebException; @@ -401,6 +402,7 @@ private void processShadowTable(Long resourceId, Map detailInputs = input.getDetailInputs(); if (CollectionUtils.isNotEmpty(detailInputs)) { - List insertEntityList = convertEntitys(resourceId, detailInputs); + List insertEntityList = convertEntitys(input.getType(), resourceId, detailInputs); pressureResourceDetailDAO.batchInsert(insertEntityList); } } - private List convertEntitys(Long resourceId, List detailInputs) { + private List convertEntitys(int type, Long resourceId, List detailInputs) { List insertEntityList = detailInputs.stream().map(detail -> { PressureResourceDetailEntity detailEntity = new PressureResourceDetailEntity(); BeanUtils.copyProperties(detail, detailEntity); detailEntity.setId(null); + // 来源类型 + detailEntity.setType(type); detailEntity.setResourceId(resourceId); detailEntity.setGmtCreate(new Date()); detailEntity.setGmtModified(new Date()); @@ -137,7 +139,7 @@ public void update(PressureResourceInput input) { PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); detailParam.setResourceId(input.getId()); List oldList = pressureResourceDetailDAO.getList(detailParam); - List newList = convertEntitys(input.getId(), input.getDetailInputs()); + List newList = convertEntitys(input.getType(), input.getId(), input.getDetailInputs()); Map> newMap = newList.stream().collect(Collectors.groupingBy(ele -> fetchKey(ele))); Map> oldMap = oldList.stream().collect(Collectors.groupingBy(ele -> fetchKey(ele))); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java index b83dae0854..25cd51ee20 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationDsVO.java @@ -55,6 +55,9 @@ public class PressureResourceRelationDsVO extends TenantBaseEntity { @ApiModelProperty("扩展信息") private ExtInfo extInfo; + @ApiModelProperty("来源类型(0-手工,1-自动)") + private int type; + @ApiModelProperty("remark") private String remark; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java index 0b2662c074..7f66725be4 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java @@ -19,5 +19,10 @@ public interface PressureResourceDetailDAO { */ List getList(PressureResourceDetailQueryParam params); + /** + * 新增 + * + * @param insertList + */ void batchInsert(List insertList); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java index b797aba99d..a8f3859de6 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java @@ -13,11 +13,11 @@ public interface PressureResourceRelationTableMapper @Insert("") + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java index 52c9d51694..f6bc83c078 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java @@ -1,13 +1,18 @@ package io.shulie.takin.web.data.mapper.mysql; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; public interface PressureResourceMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + @Select("select * from t_pressure_resource where is_delete=0") + List getAll(); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java similarity index 75% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java index a8f3859de6..daa803eae7 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationTableMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java @@ -1,16 +1,16 @@ package io.shulie.takin.web.data.mapper.mysql; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationTableEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; import java.util.List; -public interface PressureResourceRelationTableMapper - extends BaseMapper { - +public interface PressureResourceRelateTableMapper + extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") @Insert("") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java index a6f5958499..837d35084d 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java @@ -1,9 +1,26 @@ package io.shulie.takin.web.data.mapper.mysql; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationAppEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface PressureResourceRelationAppMapper - extends BaseMapper { + extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + @Insert("") + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java index bb2d35ddc4..1baa6afd20 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java @@ -1,9 +1,28 @@ package io.shulie.takin.web.data.mapper.mysql; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelationDsEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface PressureResourceRelationDsMapper - extends BaseMapper { + extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + @Insert("") + void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java index e4f6ae92cd..17dfb9365d 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java @@ -52,6 +52,10 @@ public class PressureResourceDetailEntity extends TenantBaseEntity { @Column(name = "`extend`") private String extend; + @ApiModelProperty("linkId") + @Column(name = "`link_id`") + private String linkId; + @ApiModelProperty("来源类型(0-手工,1-自动)") @Column(name = "`type`") private int type; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java index 4be708d526..c5b8605b41 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -40,6 +40,10 @@ public class PressureResourceEntity extends TenantBaseEntity { @Column(name = "`status`") private int status; + @ApiModelProperty("来源的Id") + @Column(name = "`source_id`") + private Long sourceId; + @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java similarity index 87% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java index fb4f075c73..6e05edd92e 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationAppEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java @@ -18,7 +18,7 @@ @Data @TableName(value = "t_pressure_resource_relation_app") @ToString(callSuper = true) -public class PressureResourceRelationAppEntity extends TenantBaseEntity { +public class PressureResourceRelateAppEntity extends TenantBaseEntity { @Id @Column(name = "`id`") @ApiModelProperty("ID") @@ -40,10 +40,6 @@ public class PressureResourceRelationAppEntity extends TenantBaseEntity { @Column(name = "`status`") private int status; - @ApiModelProperty("隔离方式(0-无 1-影子库 2-影子库/影子表 3-影子表)") - @Column(name = "`isolate_type`") - private int isolateType; - @ApiModelProperty("节点数") @Column(name = "`node_num`") private int nodeNum; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java similarity index 86% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java index 87ab1bf53e..46453b857a 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationDsEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java @@ -16,9 +16,9 @@ * @date 2022/8/30 10:24 AM */ @Data -@TableName(value = "t_pressure_resource_relation_ds") +@TableName(value = "t_pressure_resource_relate_ds") @ToString(callSuper = true) -public class PressureResourceRelationDsEntity extends TenantBaseEntity { +public class PressureResourceRelateDsEntity extends TenantBaseEntity { @Id @Column(name = "`id`") @ApiModelProperty("ID") @@ -28,6 +28,10 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { @Column(name = "`resource_id`") private Long resourceId; + @ApiModelProperty("链路详情Id") + @Column(name = "`detail_id`") + private Long detailId; + @ApiModelProperty("应用名称") @Column(name = "`app_name`") private String appName; @@ -44,6 +48,10 @@ public class PressureResourceRelationDsEntity extends TenantBaseEntity { @Column(name = "`type`") private int type; + @ApiModelProperty("唯一键") + @Column(name = "`unique_key`") + private String uniqueKey; + @ApiModelProperty("业务数据源") @Column(name = "`business_database`") private String businessDatabase; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java similarity index 87% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java index 67b58c9996..67fb06101a 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelationTableEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java @@ -16,9 +16,9 @@ * @date 2022/8/30 10:24 AM */ @Data -@TableName(value = "t_pressure_resource_relation_table") +@TableName(value = "t_pressure_resource_relate_table") @ToString(callSuper = true) -public class PressureResourceRelationTableEntity extends TenantBaseEntity { +public class PressureResourceRelateTableEntity extends TenantBaseEntity { @Id @Column(name = "`id`") @ApiModelProperty("ID") @@ -28,9 +28,9 @@ public class PressureResourceRelationTableEntity extends TenantBaseEntity { @Column(name = "`resource_id`") private Long resourceId; - @ApiModelProperty("数据源Id") - @Column(name = "`ds_id`") - private Long dsId; + @ApiModelProperty("数据源唯一键") + @Column(name = "`ds_key`") + private String dsKey; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") @Column(name = "`status`") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java index 7a68355867..9bd4a2aaa3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceQueryParam.java @@ -1,6 +1,7 @@ package io.shulie.takin.web.data.param.pressureresource; import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @@ -14,5 +15,8 @@ public class PressureResourceQueryParam extends PageBaseDTO { private String name; + @ApiModelProperty("来源ID") + private Long sourceId; + private List userIdList; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java index 0721e7fcc2..14be6c83d1 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -24,5 +24,5 @@ public class PressureResourceTableQueryParam extends PageBaseDTO { private Integer status; @ApiModelProperty("数据源Id") - private Long dsId; + private String dsKey; } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java index 1a3b5a8545..de548359be 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureDsController.java @@ -35,7 +35,7 @@ public class PressureResoureDsController { @ApiOperation("链路压测资源-数据源-新增") @RequestMapping(value = "/create", method = RequestMethod.POST) - public ResponseResult create(@RequestBody PressureResourceRelationDsInput input) { + public ResponseResult create(@RequestBody PressureResourceRelateDsInput input) { input.setType(SourceTypeEnum.MANUAL.getCode()); pressureResourceDsService.add(input); return ResponseResult.success(); @@ -43,13 +43,13 @@ public ResponseResult create(@RequestBody PressureResourceRelationDsInput input) @ApiOperation("链路压测资源-数据源视图") @RequestMapping(value = "/listByDs", method = RequestMethod.GET) - public ResponseResult listByDs(PressureResourceRelationDsRequest request) { + public ResponseResult listByDs(PressureResourceRelateDsRequest request) { return ResponseResult.success(pressureResourceDsService.listByDs(request)); } @ApiOperation("链路压测资源-应用视图") @RequestMapping(value = "/listByApp", method = RequestMethod.GET) - public ResponseResult listByApp(PressureResourceRelationDsRequest request) { + public ResponseResult listByApp(PressureResourceRelateDsRequest request) { return ResponseResult.success(pressureResourceDsService.listByApp(request)); } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java index 4ed7b7bd99..ee1a8822ed 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java @@ -1,16 +1,14 @@ package io.shulie.takin.web.entrypoint.controller.pressureresource; import io.shulie.takin.common.beans.response.ResponseResult; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelationTableRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -35,7 +33,7 @@ public class PressureResoureTableController { @ApiOperation("链路压测资源-影子表新增") @RequestMapping(value = "/save", method = RequestMethod.POST) - public ResponseResult save(@RequestBody PressureResourceRelationTableInput input) { + public ResponseResult save(@RequestBody PressureResourceRelateTableInput input) { input.setType(SourceTypeEnum.MANUAL.getCode()); pressureResourceTableService.save(input); return ResponseResult.success(); @@ -43,20 +41,20 @@ public ResponseResult save(@RequestBody PressureResourceRelationTableInput input @ApiOperation("链路压测资源-影子表列表") @RequestMapping(value = "/list", method = RequestMethod.GET) - public ResponseResult list(PressureResourceRelationTableRequest request) { + public ResponseResult list(PressureResourceRelateTableRequest request) { return ResponseResult.success(pressureResourceTableService.pageList(request)); } @ApiOperation("链路压测资源-影子表-修改") @RequestMapping(value = "/update", method = RequestMethod.POST) - public ResponseResult update(@RequestBody PressureResourceRelationTableInput input) { + public ResponseResult update(@RequestBody PressureResourceRelateTableInput input) { pressureResourceTableService.update(input); return ResponseResult.success(); } @ApiOperation("链路压测资源-影子表-删除") @RequestMapping(value = "/del", method = RequestMethod.GET) - public ResponseResult del(PressureResourceRelationTableInput input) { + public ResponseResult del(PressureResourceRelateTableInput input) { pressureResourceTableService.delete(input.getId()); return ResponseResult.success(); } From d29bfb481fb46f346a020f3de96f2b4721a8d217 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 7 Sep 2022 17:14:11 +0800 Subject: [PATCH 018/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87=E5=AE=9A=E6=97=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- takin-web-amdb-accessor/pom.xml | 2 +- takin-web-app/pom.xml | 2 +- .../io/shulie/takin/web/app/conf/ThreadPoolConfig.java | 7 +++++++ takin-web-biz-service/pom.xml | 2 +- .../io/shulie/takin/web/biz/job/PressureResourceJob.java | 6 +++--- .../takin/web/biz/job/PressureResourceRelateJob.java | 6 +++--- takin-web-bom/pom.xml | 4 ++-- takin-web-common/pom.xml | 2 +- takin-web-data/pom.xml | 2 +- takin-web-entrypoint/pom.xml | 2 +- takin-web-eventcenter/pom.xml | 2 +- takin-web-ext/pom.xml | 4 ++-- takin-web-ext/takin-web-ext-api/pom.xml | 4 ++-- takin-web-ext/takin-web-ext-jmeter/pom.xml | 4 ++-- takin-web-service-adapters/pom.xml | 2 +- takin-web-service-adapters/takin-web-adapter/pom.xml | 2 +- .../takin-web-adapter/takin-web-adapter-api/pom.xml | 2 +- .../takin-web-adapter/takin-web-adapter-cloud/pom.xml | 2 +- takin-web-service-adapters/takin-web-config/pom.xml | 2 +- .../takin-web-config/takin-web-config-common/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-api/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-http/pom.xml | 2 +- .../takin-web-config-sync-http-common/pom.xml | 2 +- .../takin-web-config-sync-http-impl/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-zk/pom.xml | 2 +- .../takin-web-config-sync-zk-common/pom.xml | 2 +- .../takin-web-config-sync-zk-impl/pom.xml | 2 +- takin-web-service-adapters/takin-web-diff/pom.xml | 2 +- .../takin-web-diff/takin-web-diff-api/pom.xml | 2 +- .../takin-web-diff/takin-web-diff-cloud/pom.xml | 2 +- 31 files changed, 46 insertions(+), 39 deletions(-) diff --git a/pom.xml b/pom.xml index 55bcb95e88..7d00875c86 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.1 pom https://github.com/shulieTech/Takin-web.git @@ -41,7 +41,7 @@ 3.8.0 yyyyMMddHHmmss - takin-web-5.9.0 + takin-web-5.10.1 common-2.0.2-SNAPSHOT common-2.0.0-SNAPSHOT 2.0.6.2 diff --git a/takin-web-amdb-accessor/pom.xml b/takin-web-amdb-accessor/pom.xml index 6404a4a4b5..0ab13e45a2 100644 --- a/takin-web-amdb-accessor/pom.xml +++ b/takin-web-amdb-accessor/pom.xml @@ -20,7 +20,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-app/pom.xml b/takin-web-app/pom.xml index d0fa560016..1ceff0c9b8 100644 --- a/takin-web-app/pom.xml +++ b/takin-web-app/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml takin-web-app diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java index a20664b7a2..16b080096e 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java @@ -47,6 +47,13 @@ public ThreadPoolExecutor jobThreadPool() { new ThreadPoolExecutor.AbortPolicy()); } + @Bean(name = "pressureResouceThreadPool") + public ThreadPoolExecutor pressureResouceThreadPool() { + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResouceJob-%d").build(); + return new ThreadPoolExecutor(20, 40, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, + new ThreadPoolExecutor.AbortPolicy()); + } + /** * 远程调用job * diff --git a/takin-web-biz-service/pom.xml b/takin-web-biz-service/pom.xml index f61bd4e413..2ef6bd0cda 100644 --- a/takin-web-biz-service/pom.xml +++ b/takin-web-biz-service/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java index dc296afa43..2f4134dff7 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java @@ -35,8 +35,8 @@ public class PressureResourceJob implements SimpleJob { private DistributedLock distributedLock; @Resource - @Qualifier("pressureResouceJob") - private ThreadPoolExecutor pressureResouceJob; + @Qualifier("pressureResouceThreadPool") + private ThreadPoolExecutor pressureResouceThreadPool; @Override public void execute(ShardingContext shardingContext) { @@ -55,7 +55,7 @@ public void execute(ShardingContext shardingContext) { if (distributedLock.checkLock(lockKey)) { continue; } - pressureResouceJob.execute(() -> { + pressureResouceThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); if (!tryLock) { return; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 66eea1b5a0..31b36f03e2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -38,8 +38,8 @@ public class PressureResourceRelateJob implements SimpleJob { private PressureResourceDAO pressureResourceDAO; @Resource - @Qualifier("pressureResouceJob") - private ThreadPoolExecutor pressureResouceJob; + @Qualifier("pressureResouceThreadPool") + private ThreadPoolExecutor pressureResouceThreadPool; @Resource private DistributedLock distributedLock; @@ -65,7 +65,7 @@ public void execute(ShardingContext shardingContext) { if (distributedLock.checkLock(lockKey)) { continue; } - pressureResouceJob.execute(() -> { + pressureResouceThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); if (!tryLock) { return; diff --git a/takin-web-bom/pom.xml b/takin-web-bom/pom.xml index 12f39863ed..3b7236e293 100644 --- a/takin-web-bom/pom.xml +++ b/takin-web-bom/pom.xml @@ -5,11 +5,11 @@ 4.0.0 io.shulie.takin takin-web-bom - takin-web-5.9.0 + takin-web-5.10.1 pom - takin-web-5.9.0 + takin-web-5.10.1 1.0.3 diff --git a/takin-web-common/pom.xml b/takin-web-common/pom.xml index 4eeab85547..9151a37f4c 100644 --- a/takin-web-common/pom.xml +++ b/takin-web-common/pom.xml @@ -19,7 +19,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml takin-web-common diff --git a/takin-web-data/pom.xml b/takin-web-data/pom.xml index f2ec98e079..de1822b903 100644 --- a/takin-web-data/pom.xml +++ b/takin-web-data/pom.xml @@ -21,7 +21,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml takin-web-data diff --git a/takin-web-entrypoint/pom.xml b/takin-web-entrypoint/pom.xml index d1a49059dc..5a26fc94f8 100644 --- a/takin-web-entrypoint/pom.xml +++ b/takin-web-entrypoint/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-eventcenter/pom.xml b/takin-web-eventcenter/pom.xml index ae545a99e6..2105c55b84 100644 --- a/takin-web-eventcenter/pom.xml +++ b/takin-web-eventcenter/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-ext/pom.xml b/takin-web-ext/pom.xml index 329c34abcb..6b40d1ad8c 100644 --- a/takin-web-ext/pom.xml +++ b/takin-web-ext/pom.xml @@ -5,12 +5,12 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 takin-web-ext - takin-web-5.9.0 + takin-web-5.10.1 pom takin-web-ext-api diff --git a/takin-web-ext/takin-web-ext-api/pom.xml b/takin-web-ext/takin-web-ext-api/pom.xml index c05ffa65ef..d86e9916fa 100644 --- a/takin-web-ext/takin-web-ext-api/pom.xml +++ b/takin-web-ext/takin-web-ext-api/pom.xml @@ -5,14 +5,14 @@ takin-web-ext io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 takin-web-ext-api - takin-web-5.9.0 + takin-web-5.10.1 diff --git a/takin-web-ext/takin-web-ext-jmeter/pom.xml b/takin-web-ext/takin-web-ext-jmeter/pom.xml index 9698de4520..30e6c5ff30 100644 --- a/takin-web-ext/takin-web-ext-jmeter/pom.xml +++ b/takin-web-ext/takin-web-ext-jmeter/pom.xml @@ -5,13 +5,13 @@ takin-web-ext io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 takin-web-ext-jmeter - takin-web-5.9.0 + takin-web-5.10.1 UTF-8 diff --git a/takin-web-service-adapters/pom.xml b/takin-web-service-adapters/pom.xml index 05254ee92f..f1218b1408 100644 --- a/takin-web-service-adapters/pom.xml +++ b/takin-web-service-adapters/pom.xml @@ -20,7 +20,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/pom.xml b/takin-web-service-adapters/takin-web-adapter/pom.xml index 3e73cd9172..830965fabb 100644 --- a/takin-web-service-adapters/takin-web-adapter/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/pom.xml @@ -5,7 +5,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml index 5344b77b4a..d72e5fa71c 100644 --- a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml @@ -5,7 +5,7 @@ takin-web-adapter io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml index 28f3c299f4..d4f83ddfe8 100644 --- a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml @@ -5,7 +5,7 @@ takin-web-adapter io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/pom.xml b/takin-web-service-adapters/takin-web-config/pom.xml index 6c3eb411b7..82a504081a 100644 --- a/takin-web-service-adapters/takin-web-config/pom.xml +++ b/takin-web-service-adapters/takin-web-config/pom.xml @@ -20,7 +20,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml index 1d4021f9f2..d997864492 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml index 6fd22d92af..69d7bfb26c 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml index 1423fccf2d..e41795c29d 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml @@ -20,7 +20,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml index 53a9e6c57c..f2825ca264 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml @@ -20,7 +20,7 @@ takin-web-config-sync-http io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml index 4e0145665b..4b33b23bfb 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml @@ -5,7 +5,7 @@ takin-web-config-sync-http io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml index 165e90c2c0..8fd3432943 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 takin-web-config-sync-zk diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml index e73107aea8..186e0daca1 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml @@ -5,7 +5,7 @@ takin-web-config-sync-zk io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml index cdc0252851..67d6699b3f 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml @@ -20,7 +20,7 @@ takin-web-config-sync-zk io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-diff/pom.xml b/takin-web-service-adapters/takin-web-diff/pom.xml index 8ada7395be..184acfd92f 100644 --- a/takin-web-service-adapters/takin-web-diff/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/pom.xml @@ -5,7 +5,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 pom diff --git a/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml b/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml index eaf835ffaa..06da92de7a 100644 --- a/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml @@ -20,7 +20,7 @@ takin-web-diff io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml b/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml index 1a0c6464b5..4b73cf890c 100644 --- a/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml @@ -20,7 +20,7 @@ takin-web-diff io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.1 4.0.0 takin-web-diff-cloud From 0e40cf0b96fc3765b11904a2198728aea1d4466e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 7 Sep 2022 22:15:24 +0800 Subject: [PATCH 019/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87=E5=AE=9A=E6=97=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceAppService.java | 4 ++-- .../PressureResourceTableService.java | 4 ++-- .../impl/PressureResourceAppServiceImpl.java | 20 +++++++++---------- .../impl/PressureResourceDsServiceImpl.java | 4 ++-- .../PressureResourceTableServiceImpl.java | 14 ++++++------- ....java => PressureResourceRelateAppVO.java} | 2 +- .../vo/PressureResourceRelateDsVO.java | 2 +- ...ava => PressureResourceRelateTableVO.java} | 2 +- .../PressureResourceRelateAppDAOImpl.java | 10 +++++----- ...a => PressureResourceRelateAppMapper.java} | 2 +- .../PressureResourceRelateAppEntity.java | 2 +- 11 files changed, 33 insertions(+), 33 deletions(-) rename takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/{PressureResourceRelationAppVO.java => PressureResourceRelateAppVO.java} (94%) rename takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/{PressureResourceRelationTableVO.java => PressureResourceRelateTableVO.java} (94%) rename takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/{PressureResourceRelationAppMapper.java => PressureResourceRelateAppMapper.java} (95%) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java index b0a292a6c4..df39abea5c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceAppService.java @@ -3,7 +3,7 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateAppVO; /** * 压测资源配置 @@ -19,7 +19,7 @@ public interface PressureResourceAppService { * @param request * @return */ - PagingList appCheckList(PressureResourceAppRequest request); + PagingList appCheckList(PressureResourceAppRequest request); /** * 修改 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java index d3e317d360..1c6847f2bd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceTableService.java @@ -3,7 +3,7 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableRequest; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationTableVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateTableVO; /** * 压测资源配置-数据源 @@ -38,5 +38,5 @@ public interface PressureResourceTableService { * @param request * @return */ - PagingList pageList(PressureResourceRelateTableRequest request); + PagingList pageList(PressureResourceRelateTableRequest request); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index d549da8c8e..2530a9e2f8 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -7,13 +7,13 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; import io.shulie.takin.web.biz.service.ApplicationService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationAppVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateAppVO; import io.shulie.takin.web.common.common.Response; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateAppDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; -import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationAppMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateAppMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; @@ -39,10 +39,10 @@ public class PressureResourceAppServiceImpl implements PressureResourceAppServic private static Logger logger = LoggerFactory.getLogger(PressureResourceAppServiceImpl.class); @Resource - private PressureResourceRelateAppDAO pressureResourceRelationAppDAO; + private PressureResourceRelateAppDAO pressureResourceRelateAppDAO; @Resource - private PressureResourceRelationAppMapper pressureResourceRelationAppMapper; + private PressureResourceRelateAppMapper pressureResourceRelateAppMapper; @Resource private ApplicationService applicationService; @@ -57,7 +57,7 @@ public class PressureResourceAppServiceImpl implements PressureResourceAppServic * @return */ @Override - public PagingList appCheckList(PressureResourceAppRequest request) { + public PagingList appCheckList(PressureResourceAppRequest request) { // 校验Resource PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(request.getResourceId()); if (resourceEntity == null) { @@ -66,14 +66,14 @@ public PagingList appCheckList(PressureResourceAp PressureResourceAppQueryParam param = new PressureResourceAppQueryParam(); BeanUtils.copyProperties(request, param); - PagingList pageList = pressureResourceRelationAppDAO.pageList(param); + PagingList pageList = pressureResourceRelateAppDAO.pageList(param); if (pageList.isEmpty()) { return PagingList.of(Collections.emptyList(), pageList.getTotal()); } //转换下 List source = pageList.getList(); - List returnList = source.stream().map(configDto -> { - PressureResourceRelationAppVO vo = new PressureResourceRelationAppVO(); + List returnList = source.stream().map(configDto -> { + PressureResourceRelateAppVO vo = new PressureResourceRelateAppVO(); BeanUtils.copyProperties(configDto, vo); // 设置主表隔离方式 vo.setIsolateType(resourceEntity.getIsolateType()); @@ -107,7 +107,7 @@ public void update(PressureResourceAppInput input) { if (relationAppId == null) { throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); } - PressureResourceRelateAppEntity entity = pressureResourceRelationAppMapper.selectById(relationAppId); + PressureResourceRelateAppEntity entity = pressureResourceRelateAppMapper.selectById(relationAppId); if (entity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); } @@ -116,6 +116,6 @@ public void update(PressureResourceAppInput input) { updateEntity.setId(input.getId()); updateEntity.setJoinPressure(input.getJoinPressure()); updateEntity.setGmtModified(new Date()); - pressureResourceRelationAppMapper.updateById(updateEntity); + pressureResourceRelateAppMapper.updateById(updateEntity); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 6152cd9426..b9cc6309e8 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -144,8 +144,8 @@ public PagingList listByDs(PressureResourceRelateDsR List appEntitys = pressureResourceRelateAppDAO.queryList(appQueryParam); if (CollectionUtils.isNotEmpty(appEntitys)) { Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); - List appVOList = appNames.stream().map(app -> { - PressureResourceRelationAppVO appVO = new PressureResourceRelationAppVO(); + List appVOList = appNames.stream().map(app -> { + PressureResourceRelateAppVO appVO = new PressureResourceRelateAppVO(); appVO.setAppName(app); appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); return appVO; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index ed1729d017..dcf11c9520 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -4,7 +4,7 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelationTableVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateTableVO; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; @@ -83,11 +83,11 @@ public void update(PressureResourceRelateTableInput updateInput) { } PressureResourceRelateTableRequest tableRequest = new PressureResourceRelateTableRequest(); tableRequest.setBusinessTableName(updateInput.getBusinessTable()); - PagingList pageList = this.pageList(tableRequest); + PagingList pageList = this.pageList(tableRequest); if (!pageList.isEmpty()) { - List list = pageList.getList(); + List list = pageList.getList(); if (CollectionUtils.isNotEmpty(list)) { - PressureResourceRelationTableVO vo = list.get(0); + PressureResourceRelateTableVO vo = list.get(0); if (!vo.getId().equals(String.valueOf(updateInput.getId()))) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表名已存在"); } @@ -118,7 +118,7 @@ public void delete(Long id) { * @return */ @Override - public PagingList pageList(PressureResourceRelateTableRequest request) { + public PagingList pageList(PressureResourceRelateTableRequest request) { PressureResourceTableQueryParam param = new PressureResourceTableQueryParam(); BeanUtils.copyProperties(request, param); PagingList pageList = pressureResourceRelateTableDAO.pageList(param); @@ -128,8 +128,8 @@ public PagingList pageList(PressureResourceRela } //转换下 List source = pageList.getList(); - List returnList = source.stream().map(configDto -> { - PressureResourceRelationTableVO vo = new PressureResourceRelationTableVO(); + List returnList = source.stream().map(configDto -> { + PressureResourceRelateTableVO vo = new PressureResourceRelateTableVO(); BeanUtils.copyProperties(configDto, vo); vo.setId(String.valueOf(configDto.getId())); return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java similarity index 94% rename from takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java rename to takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java index 8657a4f012..1d3747ee6f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java @@ -16,7 +16,7 @@ */ @Data @ToString(callSuper = true) -public class PressureResourceRelationAppVO extends TenantBaseEntity { +public class PressureResourceRelateAppVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") private String id; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java index 900ac54a63..c5230e7131 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java @@ -70,7 +70,7 @@ public class PressureResourceRelateDsVO extends TenantBaseEntity { private List relationApps; @ApiModelProperty("关联应用信息") - private List appList; + private List appList; @ApiModelProperty("关联数据信息") private List dsList; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java similarity index 94% rename from takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java rename to takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java index 6160236bdd..d882198d71 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelationTableVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java @@ -16,7 +16,7 @@ */ @Data @ToString(callSuper = true) -public class PressureResourceRelationTableVO extends TenantBaseEntity { +public class PressureResourceRelateTableVO extends TenantBaseEntity { @Id @ApiModelProperty("ID") private String id; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java index d5a234786a..7f43db5772 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateAppDAO; -import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationAppMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateAppMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import org.apache.commons.collections4.CollectionUtils; @@ -27,7 +27,7 @@ public class PressureResourceRelateAppDAOImpl implements PressureResourceRelateA private static Logger logger = LoggerFactory.getLogger(PressureResourceRelateAppDAOImpl.class); @Resource - private PressureResourceRelationAppMapper pressureResourceRelationAppMapper; + private PressureResourceRelateAppMapper pressureResourceRelateAppMapper; /** * 分页 @@ -40,7 +40,7 @@ public PagingList pageList(PressureResourceAppQ QueryWrapper queryWrapper = this.getWrapper(param); Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); queryWrapper.orderByDesc("gmt_modified"); - IPage pageList = pressureResourceRelationAppMapper.selectPage(page, queryWrapper); + IPage pageList = pressureResourceRelateAppMapper.selectPage(page, queryWrapper); if (pageList.getRecords().isEmpty()) { return PagingList.empty(); } @@ -50,7 +50,7 @@ public PagingList pageList(PressureResourceAppQ @Override public List queryList(PressureResourceAppQueryParam param) { QueryWrapper queryWrapper = this.getWrapper(param); - return pressureResourceRelationAppMapper.selectList(queryWrapper); + return pressureResourceRelateAppMapper.selectList(queryWrapper); } /** @@ -63,7 +63,7 @@ public void saveOrUpdate(List list) { if (CollectionUtils.isEmpty(list)) { return; } - pressureResourceRelationAppMapper.saveOrUpdate(list); + pressureResourceRelateAppMapper.saveOrUpdate(list); } private QueryWrapper getWrapper(PressureResourceAppQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java similarity index 95% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java index 837d35084d..b5ffb726f3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationAppMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java @@ -8,7 +8,7 @@ import java.util.List; -public interface PressureResourceRelationAppMapper +public interface PressureResourceRelateAppMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") @Insert("") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java index 45fdd59d8c..66daf78af8 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java @@ -36,7 +36,7 @@ public class PressureResourceRelateAppEntity extends TenantBaseEntity { @Column(name = "`app_name`") private String appName; - @ApiModelProperty("状态") + @ApiModelProperty("状态(0-正常-1-不正常)") @Column(name = "`status`") private Integer status; From fb06908a818f8fa7c763fe738557954d15cac7c0 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 8 Sep 2022 14:39:07 +0800 Subject: [PATCH 023/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/pressureresource/PressureResourceDetailInput.java | 4 ++-- .../pojo/request/pressureresource/PressureResourceInput.java | 2 +- .../impl/PressureResourceCommonServiceImpl.java | 3 +++ .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java index 676dad187c..5cb1d996b6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceDetailInput.java @@ -31,8 +31,8 @@ public class PressureResourceDetailInput { @ApiModelProperty("extend") private String extend; - @ApiModelProperty("类型-是否虚拟") - private int type; + @ApiModelProperty("来源类型(0-手工,1-自动)") + private Integer type; @ApiModelProperty("linkId") private String linkId; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java index 456d72ba07..74001ed01d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java @@ -24,7 +24,7 @@ public class PressureResourceInput extends TenantBaseEntity { private String name; @ApiModelProperty("来源类型-手工/业务流程") - private int type; + private Integer type; @ApiModelProperty("sourceId") private Long sourceId; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 2a17b9e204..0fa18e2fc1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -119,6 +119,9 @@ public void processAutoPressureResource() { PressureResourceEntity tmpEntity = pageList.getList().get(0); // 设置Id pressureResourceInput.setId(tmpEntity.getId()); + pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); + pressureResourceInput.setName(sceneName); + pressureResourceInput.setSourceId(flowId); insertFlag = false; } // 处理详情 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 550854232a..9d5b2f6e71 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -174,7 +174,7 @@ public void update(PressureResourceInput input) { pressureResourceDetailDAO.batchInsert(insertEntitys); } // 自动梳理出来的不做删除操作 - if (input.getType() != SourceTypeEnum.AUTO.getCode()) { + if (input.getType().intValue() != SourceTypeEnum.AUTO.getCode()) { // 删除的,不在newMap里面的, List deleteIds = Lists.newArrayList(); for (Map.Entry> entry : oldMap.entrySet()) { From b7b6c940982acb3a507bd259a2f5cb2866704e99 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 8 Sep 2022 15:12:40 +0800 Subject: [PATCH 024/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A2=B3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceCommonServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 0fa18e2fc1..894e44ed55 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -174,7 +174,6 @@ public void processAutoPressureResource() { /** * 自动梳理关联信息 */ - @Transactional(rollbackFor = Exception.class) @Override public void processAutoPressureResourceRelate(Long resourceId) { PressureResourceDetailQueryParam detailQueryParam = new PressureResourceDetailQueryParam(); From 96f0d54d8451093e6422a05d43fb84f99e3cd85a Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 8 Sep 2022 15:16:45 +0800 Subject: [PATCH 025/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A2=B3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceCommonServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 894e44ed55..714966839c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -37,7 +37,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; From 47eac7dc5ce36a5c61f1bad733f150865ae9df7c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 8 Sep 2022 17:21:09 +0800 Subject: [PATCH 026/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A2=B3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceRelateDsInput.java | 4 +- .../PressureResourceDsService.java | 10 +++++ .../impl/PressureResourceDsServiceImpl.java | 43 +++++++++++++++++-- .../PressureResourceTableServiceImpl.java | 1 + .../impl/PressureResourceRelateDsDAOImpl.java | 10 ++--- ...va => PressureResourceRelateDsMapper.java} | 2 +- .../PressureResoureDsController.java | 7 +++ 7 files changed, 65 insertions(+), 12 deletions(-) rename takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/{PressureResourceRelationDsMapper.java => PressureResourceRelateDsMapper.java} (96%) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsInput.java index df87da4ae3..363eb5c640 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsInput.java @@ -31,10 +31,10 @@ public class PressureResourceRelateDsInput extends TenantBaseEntity { private String middlewareName; @ApiModelProperty("状态") - private String status; + private Integer status; @ApiModelProperty("来源类型(0-手工,1-自动)") - private int type; + private Integer type; @ApiModelProperty("唯一键") private String uniqueKey; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java index 53d182e153..bcad0bbb2d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -21,6 +21,16 @@ public interface PressureResourceDsService { */ void add(PressureResourceRelateDsInput input); + /** + * 数据源新增 + */ + void update(PressureResourceRelateDsInput input); + + /** + * 数据源删除 + */ + void del(Long dsId); + /** * 数据源视图页面 */ diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index b9cc6309e8..7681ad6135 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -21,7 +21,7 @@ import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; -import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; @@ -63,7 +63,7 @@ public class PressureResourceDsServiceImpl implements PressureResourceDsService private PressureResourceRelateTableDAO pressureResourceRelateTableDAO; @Resource - private PressureResourceRelationDsMapper pressureResourceRelationDsMapper; + private PressureResourceRelateDsMapper pressureResourceRelateDsMapper; @Resource private PressureResourceMapper pressureResourceMapper; @@ -105,6 +105,41 @@ public void add(PressureResourceRelateDsInput input) { pressureResourceRelateDsDAO.add(dsEntitys); } + @Override + public void update(PressureResourceRelateDsInput input) { + if (input.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + // 判断是否存在 + PressureResourceRelateDsEntity entity = pressureResourceRelateDsMapper.selectById(input.getId()); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); + } + + PressureResourceRelateDsEntity updateEntity = new PressureResourceRelateDsEntity(); + updateEntity.setId(input.getId()); + updateEntity.setStatus(input.getStatus()); + updateEntity.setBusinessDatabase(input.getBusinessDatabase()); + updateEntity.setBusinessUserName(input.getBusinessUserName()); + updateEntity.setShadowDatabase(input.getShadowDatabase()); + updateEntity.setShadowUserName(input.getShadowUserName()); + updateEntity.setShadowPassword(input.getShadowPassword()); + //updateEntity.set + } + + /** + * 删除 + * + * @param dsId + */ + @Override + public void del(Long dsId) { + if (dsId == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "参数ID未传递!"); + } + pressureResourceRelateDsMapper.deleteById(dsId); + } + /** * 数据源视图页面,内存分页 * @@ -448,7 +483,7 @@ private void processShadowDB(Long resourceId, Map whereWrapper = new QueryWrapper<>(); whereWrapper.eq("resource_id", resourceId); whereWrapper.eq("business_database", bussinessDatabase); - pressureResourceRelationDsMapper.update(updateEntity, whereWrapper); + pressureResourceRelateDsMapper.update(updateEntity, whereWrapper); } } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index dcf11c9520..4e41a947ed 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -96,6 +96,7 @@ public void update(PressureResourceRelateTableInput updateInput) { PressureResourceRelateTableEntity updateEntity = new PressureResourceRelateTableEntity(); updateEntity.setId(updateInput.getId()); updateEntity.setJoinFlag(updateInput.getJoinFlag()); + updateEntity.setBusinessTable(updateInput.getBusinessTable()); updateEntity.setShadowTable(updateInput.getShadowTable()); updateEntity.setRemark(updateEntity.getRemark()); updateEntity.setStatus(updateEntity.getStatus()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java index 8ea40802ea..c8d7d7650c 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java @@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; -import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelationDsMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import org.apache.commons.collections4.CollectionUtils; @@ -25,7 +25,7 @@ public class PressureResourceRelateDsDAOImpl implements PressureResourceRelateDs private static Logger logger = LoggerFactory.getLogger(PressureResourceRelateDsDAOImpl.class); @Resource - private PressureResourceRelationDsMapper pressureResourceRelationDsMapper; + private PressureResourceRelateDsMapper pressureResourceRelateDsMapper; /** * 批量新增 @@ -36,7 +36,7 @@ public class PressureResourceRelateDsDAOImpl implements PressureResourceRelateDs public void add(List dsEntitys) { if (CollectionUtils.isNotEmpty(dsEntitys)) { dsEntitys.stream().forEach(entity -> { - pressureResourceRelationDsMapper.insert(entity); + pressureResourceRelateDsMapper.insert(entity); }); } } @@ -49,7 +49,7 @@ public void add(List dsEntitys) { @Override public List queryByParam(PressureResourceDsQueryParam param) { QueryWrapper queryWrapper = this.getWrapper(param); - List resultLists = pressureResourceRelationDsMapper.selectList(queryWrapper); + List resultLists = pressureResourceRelateDsMapper.selectList(queryWrapper); if (CollectionUtils.isEmpty(resultLists)) { return Collections.emptyList(); } @@ -61,7 +61,7 @@ public void saveOrUpdate(List list) { if (CollectionUtils.isEmpty(list)) { return; } - pressureResourceRelationDsMapper.saveOrUpdate(list); + pressureResourceRelateDsMapper.saveOrUpdate(list); } private QueryWrapper getWrapper(PressureResourceDsQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java similarity index 96% rename from takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java rename to takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java index 655c692659..781ff2abe5 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelationDsMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java @@ -9,7 +9,7 @@ import java.util.List; -public interface PressureResourceRelationDsMapper +public interface PressureResourceRelateDsMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") @Insert("") void saveOrUpdate(@Param("list") List list); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java index 61181d50dd..85d388e060 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -40,10 +40,18 @@ public class PressureResourceEntity extends TenantBaseEntity { @Column(name = "`status`") private Integer status; + @ApiModelProperty("检测状态(0-未检测 1-检测中 2-检测完成)") + @Column(name = "`check_status`") + private Integer checkStatus; + @ApiModelProperty("来源的Id") @Column(name = "`source_id`") private Long sourceId; + @Column(name = "`check_time`") + @ApiModelProperty("检测时间") + private Date checkTime; + @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java index 75b70d83d2..e65d0784ff 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java @@ -36,11 +36,11 @@ public class PressureResourceRelateDsEntity extends TenantBaseEntity { @Column(name = "`app_name`") private String appName; - @ApiModelProperty("中间件名称") + @ApiModelProperty("中间件名称 druid, hikari,c3p0等") @Column(name = "`middleware_name`") private String middlewareName; - @ApiModelProperty("中间件类型") + @ApiModelProperty("中间件类型 缓存/连接池") @Column(name = "`middleware_type`") private String middlewareType; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java index d55a63c606..9b9b897271 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java @@ -16,6 +16,9 @@ public class PressureResourceAppQueryParam extends PageBaseDTO { @ApiModelProperty("配置资源ID") private Long resourceId; + @ApiModelProperty("配置资源ID") + private List resourceIds; + @ApiModelProperty("应用名称") private String appName; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index 4ed82c152b..b9cdd5bf45 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -5,6 +5,7 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; +import io.shulie.takin.web.biz.service.pressureresource.common.CheckStatusEnum; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; import io.swagger.annotations.Api; @@ -41,6 +42,7 @@ public class PressureResoureController { public ResponseResult create(@RequestBody PressureResourceInput input) { // 这里只是页面手工新增入口 input.setType(SourceTypeEnum.MANUAL.getCode()); + input.setCheckStatus(CheckStatusEnum.CHECK_NO.getCode()); pressureResourceService.add(input); return ResponseResult.success(); } @@ -71,4 +73,16 @@ public ResponseResult list(PressureResourceQueryRequest request) { public ResponseResult detailList(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.detail(request)); } + + @ApiOperation("链路压测资源查询-汇总数据-应用") + @RequestMapping(value = "/appInfo", method = RequestMethod.GET) + public ResponseResult appInfo(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.appInfo(request.getId())); + } + + @ApiOperation("链路压测资源查询-汇总数据-数据源") + @RequestMapping(value = "/dsInfo", method = RequestMethod.GET) + public ResponseResult dsInfo(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.dsInfo(request.getId())); + } } From 67ec0098434b8295d943ac4693efa126ca34de7b Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 9 Sep 2022 14:57:04 +0800 Subject: [PATCH 030/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A2=B3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/pressureresource/PressureResourceInput.java | 3 +++ .../impl/PressureResourceCommonServiceImpl.java | 3 +++ .../impl/PressureResourceServiceImpl.java | 9 +++++---- .../mysql/pressureresource/PressureResourceEntity.java | 4 ++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java index a56cc11162..0a6b33fca9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceInput.java @@ -38,6 +38,9 @@ public class PressureResourceInput extends TenantBaseEntity { @ApiModelProperty("更新时间") private Date gmtUpdate; + @ApiModelProperty("归属人Id") + private Long userId; + /** * 详情明细 */ diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index bac06c34b1..4f715da17a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -122,6 +122,8 @@ public void processAutoPressureResource() { pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); pressureResourceInput.setCheckStatus(CheckStatusEnum.CHECK_NO.getCode()); pressureResourceInput.setSourceId(flowId); + // 设置归属人 + pressureResourceInput.setUserId(flow.getUserId()); } else { // 修改 PressureResourceEntity tmpEntity = pageList.getList().get(0); @@ -130,6 +132,7 @@ public void processAutoPressureResource() { pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); pressureResourceInput.setName(sceneName); pressureResourceInput.setSourceId(flowId); + pressureResourceInput.setUserId(flow.getUserId()); insertFlag = false; } // 处理详情 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 3fdda74f1c..f69ff9b9ea 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -48,10 +48,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -102,6 +99,7 @@ public void add(PressureResourceInput input) { // 来源Id,业务流程Id insertEntity.setSourceId(input.getSourceId()); insertEntity.setType(input.getType()); + insertEntity.setUserId(WebPluginUtils.traceUserId()); insertEntity.setGmtCreate(new Date()); insertEntity.setGmtModified(new Date()); Long resourceId = pressureResourceDAO.add(insertEntity); @@ -169,6 +167,7 @@ public void update(PressureResourceInput input) { updateResourceEntity.setId(input.getId()); updateResourceEntity.setName(input.getName()); updateResourceEntity.setGmtModified(new Date()); + updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); // 修改详情 @@ -339,6 +338,7 @@ public PressureResourceExtInfo appInfo(Long id) { } // 检测时间都是一批的 extInfo.setCheckTime(entity.getCheckTime()); + extInfo.setUserName(WebPluginUtils.getUserName(entity.getUserId(), WebPluginUtils.getUserMapByIds(Arrays.asList(entity.getUserId())))); return extInfo; } @@ -379,6 +379,7 @@ public PressureResourceExtInfo dsInfo(Long id) { } // 检测时间都是一批的 extInfo.setCheckTime(entity.getCheckTime()); + extInfo.setUserName(WebPluginUtils.getUserName(entity.getUserId(), WebPluginUtils.getUserMapByIds(Arrays.asList(entity.getUserId())))); return extInfo; } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java index 85d388e060..44bee5c7ea 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -48,6 +48,10 @@ public class PressureResourceEntity extends TenantBaseEntity { @Column(name = "`source_id`") private Long sourceId; + @ApiModelProperty("归属人Id") + @Column(name = "user_id") + private Long userId; + @Column(name = "`check_time`") @ApiModelProperty("检测时间") private Date checkTime; From ac25d30a703e56e9acdab37b3c7c7a9f3c92b021 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 9 Sep 2022 15:57:59 +0800 Subject: [PATCH 031/318] =?UTF-8?q?=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 53 ++++++++++++++++--- .../vo/PressureResourceProcessStatusVO.java | 22 ++++++++ .../PressureResoureController.java | 9 ++++ 3 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceProcessStatusVO.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index f69ff9b9ea..1d8308a0d4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -1,15 +1,11 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; import com.google.common.collect.Maps; -import com.pamirs.takin.entity.domain.vo.ApplicationVo; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; -import io.shulie.takin.web.biz.service.ActivityService; -import io.shulie.takin.web.biz.service.ApplicationService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.common.StatusEnum; @@ -17,12 +13,9 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceExtInfo; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; -import io.shulie.takin.web.biz.service.scene.SceneService; -import io.shulie.takin.web.common.common.Response; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.util.ActivityUtil; -import io.shulie.takin.web.data.dao.activity.ActivityDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateAppDAO; @@ -309,6 +302,52 @@ public void updateIsolate(PressureResourceIsolateInput isolateInput) { pressureResourceMapper.updateById(updateEntity); } + /** + * 处理进度 + * + * @param id + * @return + */ + @Override + public Map progress(Long id) { + Map statusMap = Maps.newHashMap(); + statusMap.put("APP", 0); + statusMap.put("DS", 0); + statusMap.put("REMOTECALL", 0); + + // 查看应用状态 + PressureResourceAppQueryParam appQueryParam = new PressureResourceAppQueryParam(); + appQueryParam.setResourceId(id); + List appEntityList = pressureResourceRelateAppDAO.queryList(appQueryParam); + if (CollectionUtils.isNotEmpty(appEntityList)) { + // 判断状态是否都是正常的 + int normal = appEntityList.stream().filter(app -> app.getStatus().intValue() == 0).collect(Collectors.toList()).size(); + if (normal == appEntityList.size()) { + statusMap.put("APP", 2); + } + // 存在正常的,进行中 + if (appEntityList.size() - normal > 0) { + statusMap.put("APP", 1); + } + } + // 影子资源检查 + PressureResourceDsQueryParam dsQueryParam = new PressureResourceDsQueryParam(); + dsQueryParam.setResourceId(id); + List dsEntityList = pressureResourceRelateDsDAO.queryByParam(dsQueryParam); + if (CollectionUtils.isNotEmpty(dsEntityList)) { + // 判断状态是否都是正常的 + int normal = dsEntityList.stream().filter(ds -> ds.getStatus().intValue() == 2).collect(Collectors.toList()).size(); + if (normal == dsEntityList.size()) { + statusMap.put("DS", 2); + } + // 存在正常的,进行中 + if (dsEntityList.size() - normal > 0) { + statusMap.put("DS", 1); + } + } + return statusMap; + } + /** * 处理页面汇总数据 * diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceProcessStatusVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceProcessStatusVO.java new file mode 100644 index 0000000000..17382686b5 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceProcessStatusVO.java @@ -0,0 +1,22 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * 进度状态 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceProcessStatusVO { + @ApiModelProperty("类型(APP-应用检查,DS-影子隔离 REMORECALL-远程调用 )") + private String type; + + @ApiModelProperty("状态(0-未开始 1-进行中 2-完成)") + private Integer status; +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index b9cdd5bf45..c3ac65cfb4 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -9,6 +9,7 @@ import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; @@ -85,4 +86,12 @@ public ResponseResult appInfo(PressureResourceQueryRequest request) { public ResponseResult dsInfo(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.dsInfo(request.getId())); } + + //@ApiModelProperty("类型(1-应用检查,2-影子隔离 3-远程调用 )") + //@ApiModelProperty("状态(0-未开始 1-进行中 2-完成)") + @ApiOperation("链路压测资源查询-汇总数据-进度") + @RequestMapping(value = "/progress", method = RequestMethod.GET) + public ResponseResult progress(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.progress(request.getId())); + } } From 0dd9403e7e6f36cdd597efec2011a282072f2940 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 9 Sep 2022 17:11:01 +0800 Subject: [PATCH 032/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=A2=B3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/PressureResourceService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index bb5f0723b4..217422c212 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -6,8 +6,11 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceExtInfo; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceProcessStatusVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; +import java.util.Map; + /** * 压测资源配置 * @@ -53,6 +56,13 @@ public interface PressureResourceService { */ void updateIsolate(PressureResourceIsolateInput isolateInput); + /** + * 处理进度 + * + * @return + */ + Map progress(Long id); + /** * 处理汇总信息-应用 * From 8bbd07aa941bf3440465b0296693ad77297ed615 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 15:12:52 +0800 Subject: [PATCH 033/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/scene/impl/SceneServiceImpl.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 5b9da1af3c..e0751403c0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pamirs.takin.entity.domain.dto.linkmanage.ScriptJmxNode; import io.shulie.takin.cloud.common.utils.CommonUtil; @@ -30,6 +31,7 @@ import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowParseRequest; import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowUpdateRequest; import io.shulie.takin.web.biz.pojo.request.linkmanage.SceneLinkRelateRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.scriptmanage.PluginConfigCreateRequest; import io.shulie.takin.web.biz.pojo.request.scriptmanage.ScriptManageDeployCreateRequest; import io.shulie.takin.web.biz.pojo.request.scriptmanage.ScriptManageDeployUpdateRequest; @@ -40,6 +42,7 @@ import io.shulie.takin.web.biz.pojo.response.linkmanage.BusinessFlowThreadResponse; import io.shulie.takin.web.biz.pojo.response.scriptmanage.ScriptManageDeployDetailResponse; import io.shulie.takin.web.biz.service.ActivityService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.scene.ApplicationBusinessActivityService; import io.shulie.takin.web.biz.service.scene.SceneService; import io.shulie.takin.web.biz.service.scenemanage.SceneManageService; @@ -61,8 +64,10 @@ import io.shulie.takin.web.data.dao.linkmanage.SceneDAO; import io.shulie.takin.web.data.dao.scene.SceneLinkRelateDAO; import io.shulie.takin.web.data.dao.scriptmanage.ScriptManageDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.mapper.mysql.SceneMapper; import io.shulie.takin.web.data.model.mysql.SceneEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.param.activity.ActivityExistsQueryParam; import io.shulie.takin.web.data.param.activity.ActivityQueryParam; import io.shulie.takin.web.data.param.linkmanage.SceneCreateParam; @@ -134,6 +139,8 @@ public class SceneServiceImpl implements SceneService { private ApplicationBusinessActivityService applicationBusinessActivityService; @Resource private ApplicationDAO applicationDAO; + @Resource + private PressureResourceMapper pressureResourceMapper; @Override public List nodeLinkToBusinessActivity(List nodes, Long sceneId) { @@ -726,6 +733,16 @@ public void updateBusinessFlow(BusinessFlowUpdateRequest businessFlowUpdateReque sceneUpdateParam.setSceneLevel(businessFlowUpdateRequest.getSceneLevel()); sceneUpdateParam.setIsCore(businessFlowUpdateRequest.getIsCore()); sceneDao.update(sceneUpdateParam); + + // 同步更新压测准备 + if (StringUtils.isNotBlank(businessFlowUpdateRequest.getSceneName())) { + PressureResourceEntity entity = new PressureResourceEntity(); + entity.setName(businessFlowUpdateRequest.getSceneName()); + entity.setGmtModified(new Date()); + QueryWrapper updateWrapper = new QueryWrapper<>(); + updateWrapper.eq("source_id", businessFlowUpdateRequest.getId()); + pressureResourceMapper.update(entity, updateWrapper); + } } @Transactional(rollbackFor = Exception.class) From 6bd1ab4280b7645271dc1409d6403429628e0a20 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 15:45:30 +0800 Subject: [PATCH 034/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ApplicationEntranceClientImpl.java | 11 +++ .../takin/web/app/conf/ThreadPoolConfig.java | 4 +- .../web/biz/job/PressureResourceJob.java | 6 +- .../biz/job/PressureResourceRelateJob.java | 8 +- .../PressureResourceCommonServiceImpl.java | 85 +++++++++---------- .../impl/PressureResourceServiceImpl.java | 2 +- 6 files changed, 61 insertions(+), 55 deletions(-) diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java index 982aa9569b..49bd453f86 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/api/impl/ApplicationEntranceClientImpl.java @@ -194,6 +194,17 @@ public List queryBatchMetrics(QueryMetricsFromAMDB queryMetricsFromA } } + /** + * @param tempActivity + * @param applicationName + * @param linkId + * @param serviceName + * @param method + * @param rpcType + * @param extend + * @param extFlag 是否查询扩展边信息,会返回数据库关联的库信息 + * @return + */ @Override public LinkTopologyDTO getApplicationEntrancesTopology(boolean tempActivity, String applicationName, String linkId, String serviceName, diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java index 16b080096e..e1a649003a 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java @@ -47,9 +47,9 @@ public ThreadPoolExecutor jobThreadPool() { new ThreadPoolExecutor.AbortPolicy()); } - @Bean(name = "pressureResouceThreadPool") + @Bean(name = "pressureResourceThreadPool") public ThreadPoolExecutor pressureResouceThreadPool() { - ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResouceJob-%d").build(); + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResourceJob-%d").build(); return new ThreadPoolExecutor(20, 40, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java index 41d4513d47..082780b729 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java @@ -34,8 +34,8 @@ public class PressureResourceJob implements SimpleJob { private DistributedLock distributedLock; @Resource - @Qualifier("pressureResouceThreadPool") - private ThreadPoolExecutor pressureResouceThreadPool; + @Qualifier("pressureResourceThreadPool") + private ThreadPoolExecutor pressureResourceThreadPool; @Override public void execute(ShardingContext shardingContext) { @@ -54,7 +54,7 @@ public void execute(ShardingContext shardingContext) { if (distributedLock.checkLock(lockKey)) { continue; } - pressureResouceThreadPool.execute(() -> { + pressureResourceThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); if (!tryLock) { return; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index f979a9c200..0a001d8912 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -7,7 +7,6 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommonService; import io.shulie.takin.web.biz.utils.job.JobRedisUtils; import io.shulie.takin.web.common.enums.ContextSourceEnum; -import io.shulie.takin.web.common.util.RedisClientUtil; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; @@ -19,7 +18,6 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -42,8 +40,8 @@ public class PressureResourceRelateJob implements SimpleJob { private PressureResourceDAO pressureResourceDAO; @Resource - @Qualifier("pressureResouceThreadPool") - private ThreadPoolExecutor pressureResouceThreadPool; + @Qualifier("pressureResourceThreadPool") + private ThreadPoolExecutor pressureResourceThreadPool; @Resource private DistributedLock distributedLock; @@ -69,7 +67,7 @@ public void execute(ShardingContext shardingContext) { if (distributedLock.checkLock(lockKey)) { continue; } - pressureResouceThreadPool.execute(() -> { + pressureResourceThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); if (!tryLock) { return; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 4f715da17a..0b75fde07f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -5,8 +5,8 @@ import io.shulie.amdb.common.dto.link.topology.LinkEdgeDTO; import io.shulie.amdb.common.dto.link.topology.LinkNodeDTO; import io.shulie.amdb.common.dto.link.topology.LinkTopologyDTO; +import io.shulie.amdb.common.enums.EdgeTypeGroupEnum; import io.shulie.amdb.common.enums.NodeTypeEnum; -import io.shulie.amdb.common.enums.NodeTypeGroupEnum; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.amdb.api.ApplicationEntranceClient; import io.shulie.takin.web.amdb.bean.common.EntranceTypeEnum; @@ -114,25 +114,21 @@ public void processAutoPressureResource() { PressureResourceQueryParam queryParam = new PressureResourceQueryParam(); queryParam.setSourceId(flowId); PagingList pageList = pressureResourceDAO.pageList(queryParam); + + PressureResourceInput pressureResourceInput = new PressureResourceInput(); + pressureResourceInput.setName(sceneName); + pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); + pressureResourceInput.setCheckStatus(CheckStatusEnum.CHECK_NO.getCode()); + pressureResourceInput.setSourceId(flowId); + // 设置归属人 + pressureResourceInput.setUserId(flow.getUserId()); boolean insertFlag = true; - if (pageList.isEmpty() || CollectionUtils.isEmpty(pageList.getList())) { - // 新增压测准备配置 - pressureResourceInput.setName(sceneName); - pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); - pressureResourceInput.setCheckStatus(CheckStatusEnum.CHECK_NO.getCode()); - pressureResourceInput.setSourceId(flowId); - // 设置归属人 - pressureResourceInput.setUserId(flow.getUserId()); - } else { + if (!pageList.isEmpty() && !CollectionUtils.isEmpty(pageList.getList())) { // 修改 PressureResourceEntity tmpEntity = pageList.getList().get(0); // 设置Id pressureResourceInput.setId(tmpEntity.getId()); - pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); - pressureResourceInput.setName(sceneName); - pressureResourceInput.setSourceId(flowId); - pressureResourceInput.setUserId(flow.getUserId()); insertFlag = false; } // 处理详情 @@ -149,11 +145,12 @@ public void processAutoPressureResource() { if (CollectionUtils.isNotEmpty(activityListResults)) { for (int i = 0; i < activityListResults.size(); i++) { ActivityListResult activityListResult = activityListResults.get(i); + // 查询业务活动详情 ActivityInfoQueryRequest request = new ActivityInfoQueryRequest(); request.setActivityId(activityListResult.getActivityId()); ActivityResponse responseDetail = activityService.getActivityById(request); - // 保存详情,存在则更新 + // 找到已经匹配的业务活动 if (responseDetail.getBusinessType() != BusinessTypeEnum.VIRTUAL_BUSINESS.getType()) { PressureResourceDetailInput detailInput = new PressureResourceDetailInput(); detailInput.setAppName(responseDetail.getApplicationName()); @@ -204,7 +201,6 @@ public void processAutoPressureResourceRelate(Long resourceId) { request.setExtend(detailEntity.getExtend()); request.setServiceName(detailEntity.getEntranceUrl()); request.setType(EntranceTypeEnum.getEnumByType(detailEntity.getRpcType())); - // 拓扑图查询 // 大数据查询拓扑图 LinkTopologyDTO applicationEntrancesTopology = applicationEntranceClient.getApplicationEntrancesTopology( false, request.getApplicationName(), request.getLinkId(), request.getServiceName(), request.getMethod(), @@ -216,34 +212,35 @@ public void processAutoPressureResourceRelate(Long resourceId) { // 获取应用节点 List nodeDTOList = applicationEntrancesTopology.getNodes(); List appNodeList = nodeDTOList.stream().filter(node -> node.getNodeType().equals(NodeTypeEnum.APP.getType())).collect(Collectors.toList()); - List appEntityList = appNodeList.stream().map(appNode -> { - PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); - appEntity.setAppName(appNode.getNodeName()); - appEntity.setResourceId(resourceId); - appEntity.setDetailId(detailEntity.getId()); - appEntity.setTenantId(WebPluginUtils.traceTenantId()); - appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - // 节点数默认为0 - appEntity.setNodeNum(0); - // 默认不正常 - appEntity.setStatus(1); - // 通过应用去查询状态 - List list = applicationService.getApplicationList(appEntity.getAppName()); - if (CollectionUtils.isNotEmpty(list)) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(0); + List appEntityList = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(appNodeList)) { + appEntityList = appNodeList.stream().map(appNode -> { + PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); + appEntity.setAppName(appNode.getNodeName()); + appEntity.setResourceId(resourceId); + appEntity.setDetailId(detailEntity.getId()); + appEntity.setTenantId(WebPluginUtils.traceTenantId()); + appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + // 节点数默认为0 + appEntity.setNodeNum(0); + // 默认不正常 + appEntity.setStatus(1); + // 通过应用去查询状态 + List list = applicationService.getApplicationList(appEntity.getAppName()); + if (CollectionUtils.isNotEmpty(list)) { + Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); + appEntity.setStatus(0); + } } - } - appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); - appEntity.setType(SourceTypeEnum.AUTO.getCode()); - appEntity.setStatus(1); - - return appEntity; - }).collect(Collectors.toList()); + appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); + appEntity.setType(SourceTypeEnum.AUTO.getCode()); + return appEntity; + }).collect(Collectors.toList()); + } if (CollectionUtils.isNotEmpty(appNodeList)) { // 保存关联应用 pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); @@ -251,7 +248,7 @@ public void processAutoPressureResourceRelate(Long resourceId) { List edgeDTOList = applicationEntrancesTopology.getEdges(); // 获取所有的数据库操作信息 List dbEdgeList = edgeDTOList.stream().filter(edge -> { - if (edge.getEagleTypeGroup().equals(NodeTypeGroupEnum.DB.getType())) { + if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { return true; } return false; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 1d8308a0d4..4bcfa68355 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -203,7 +203,7 @@ public void update(PressureResourceInput input) { } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s-%s-%s-%s-%s", ele.getEntranceUrl(), ele.getMethod(), ele.getRpcType(), ele.getExtend(), ele.getAppName()); + return String.format("%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); } /** From 48eff121e228d172a358095c4fe9ce0172ea30f5 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 16:40:54 +0800 Subject: [PATCH 035/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceAppRequest.java | 4 +- .../PressureResourceService.java | 8 ++++ .../impl/PressureResourceAppServiceImpl.java | 17 +++++++++ .../impl/PressureResourceServiceImpl.java | 37 +++++++++++++++++-- .../vo/PressureResourceRelateAppVO.java | 4 +- .../impl/PressureResourceDetailDAOImpl.java | 4 ++ .../PressureResourceRelateAppDAOImpl.java | 3 ++ .../PressureResourceAppQueryParam.java | 4 +- .../PressureResourceDetailQueryParam.java | 2 + .../PressureResoureController.java | 7 ++++ 10 files changed, 81 insertions(+), 9 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java index e87ba47843..02d8a47cf3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceAppRequest.java @@ -23,9 +23,9 @@ public class PressureResourceAppRequest extends PageBaseDTO { private String appName; @ApiModelProperty("入口") - private String entranceUrl; + private String entry; - @ApiModelProperty("状态(0 不正常-1正常)") + @ApiModelProperty("状态(0正常-1不正常)") private Integer status; @ApiModelProperty("是否加入压测范围(0-否 1-是)") diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index 217422c212..7026d3e8ea 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -26,6 +26,14 @@ public interface PressureResourceService { */ void add(PressureResourceInput input); + /** + * 新增 + * + * @param id + */ + void delete(Long id); + + /** * 修改 * diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index a3274d1124..67f6adbd43 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -11,13 +11,17 @@ import io.shulie.takin.web.common.common.Response; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateAppDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateAppMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -41,6 +45,9 @@ public class PressureResourceAppServiceImpl implements PressureResourceAppServic @Resource private PressureResourceRelateAppDAO pressureResourceRelateAppDAO; + @Resource + private PressureResourceDetailDAO pressureResourceDetailDAO; + @Resource private PressureResourceRelateAppMapper pressureResourceRelateAppMapper; @@ -65,6 +72,16 @@ public PagingList appCheckList(PressureResourceAppR } PressureResourceAppQueryParam param = new PressureResourceAppQueryParam(); BeanUtils.copyProperties(request, param); + if (StringUtils.isNotBlank(request.getEntry())) { + // 通过entry获取详情Id + PressureResourceDetailQueryParam queryParam = new PressureResourceDetailQueryParam(); + queryParam.setLinkId(request.getEntry()); + List detailEntityList = pressureResourceDetailDAO.getList(queryParam); + if (CollectionUtils.isNotEmpty(detailEntityList)) { + List detailIds = detailEntityList.stream().map(detail -> detail.getId()).distinct().collect(Collectors.toList()); + param.setDetailIds(detailIds); + } + } PagingList pageList = pressureResourceRelateAppDAO.pageList(param); if (pageList.isEmpty()) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 4bcfa68355..7f3e13b787 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -1,5 +1,6 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; @@ -22,10 +23,9 @@ import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceDetailMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.*; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; @@ -59,6 +59,12 @@ public class PressureResourceServiceImpl implements PressureResourceService { @Resource private PressureResourceMapper pressureResourceMapper; + @Resource + private PressureResourceRelateDsMapper pressureResourceRelateDsMapper; + + @Resource + private PressureResourceRelateTableMapper pressureResourceRelateTableMapper; + @Resource private PressureResourceDetailDAO pressureResourceDetailDAO; @@ -105,6 +111,29 @@ public void add(PressureResourceInput input) { } } + @Override + public void delete(Long resourceId) { + if (resourceId == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "参数未传递"); + } + // 删除主表 + pressureResourceMapper.deleteById(resourceId); + // 删除详情 + QueryWrapper detailWrapper = new QueryWrapper<>(); + detailWrapper.eq("resource_id", resourceId); + pressureResourceDetailMapper.delete(detailWrapper); + + // 删除数据源 + QueryWrapper dsWrapper = new QueryWrapper<>(); + dsWrapper.eq("resource_id", resourceId); + pressureResourceRelateDsMapper.delete(dsWrapper); + + // 删除表 + QueryWrapper tableWrapper = new QueryWrapper<>(); + tableWrapper.eq("resource_id", resourceId); + pressureResourceRelateTableMapper.delete(tableWrapper); + } + /** * 转换 * diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java index 5c93253189..99638339bb 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java @@ -32,10 +32,10 @@ public class PressureResourceRelateAppVO extends TenantBaseEntity { @ApiModelProperty("状态 0-正常 1-不正常") @Column(name = "`status`") - private int status; + private Integer status; @ApiModelProperty("隔离方式(0-无 1-影子库 2-影子库/影子表 3-影子表)") - private int isolateType; + private Integer isolateType; @ApiModelProperty("节点数") private Integer nodeNum; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index c59b77e186..0a5d91436b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -6,6 +6,7 @@ import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -57,6 +58,9 @@ private QueryWrapper getWrapper(PressureResourceDe if (CollectionUtils.isNotEmpty(param.getResourceIds())) { queryWrapper.in("resource_id", param.getResourceIds()); } + if (StringUtils.isNotBlank(param.getLinkId())) { + queryWrapper.eq("link_id", param.getLinkId()); + } return queryWrapper; } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java index 2060a3684b..1d3976f796 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java @@ -86,6 +86,9 @@ private QueryWrapper getWrapper(PressureResourc if (param.getDetailId() != null) { queryWrapper.eq("detail_id", param.getDetailId()); } + if (CollectionUtils.isNotEmpty(param.getDetailIds())) { + queryWrapper.in("detail_id", param.getDetailIds()); + } if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java index 9b9b897271..b7af3622ff 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceAppQueryParam.java @@ -25,7 +25,7 @@ public class PressureResourceAppQueryParam extends PageBaseDTO { @ApiModelProperty("入口") private String entranceUrl; - @ApiModelProperty("状态(0 不正常-1正常)") + @ApiModelProperty("状态(0-正常 1-不正常)") private Integer status; @ApiModelProperty("是否加入压测范围(0-否 1-是)") @@ -35,6 +35,8 @@ public class PressureResourceAppQueryParam extends PageBaseDTO { private Long detailId; private List appNames; + + private List detailIds; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java index 1eb4588f21..9ec30c252f 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDetailQueryParam.java @@ -14,4 +14,6 @@ public class PressureResourceDetailQueryParam { private Long resourceId; private List resourceIds; + + private String linkId; } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index c3ac65cfb4..a1cc633c86 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -56,6 +56,13 @@ public ResponseResult update(@RequestBody PressureResourceInput input) { return ResponseResult.success(); } + @ApiOperation("链路压测资源删除") + @RequestMapping(value = "/del", method = RequestMethod.GET) + public ResponseResult del(PressureResourceInput input) { + pressureResourceService.delete(input.getId()); + return ResponseResult.success(); + } + @ApiOperation("设置数据隔离方式") @RequestMapping(value = "/updateIsolate", method = RequestMethod.POST) public ResponseResult updateIsolate(@RequestBody PressureResourceIsolateInput input) { From 4c4de257fc832499b58385679d9fa279dc16e38e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 16:51:08 +0800 Subject: [PATCH 036/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 7f3e13b787..8304e433a5 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -116,6 +116,13 @@ public void delete(Long resourceId) { if (resourceId == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "参数未传递"); } + PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(resourceId); + if (resourceEntity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "数据不存在"); + } + if (resourceEntity.getType().intValue() == SourceTypeEnum.AUTO.getCode()) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "此链路自动新增,无法删除"); + } // 删除主表 pressureResourceMapper.deleteById(resourceId); // 删除详情 From 941ad3c8d1c8f28accab0288513964d9a012b442 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 18:23:41 +0800 Subject: [PATCH 037/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 38 ++++++++++++++++++- .../web/common/enums/scene/SceneTypeEnum.java | 3 +- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 8304e433a5..8b6fe9cc76 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowParseRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; @@ -14,9 +15,11 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceExtInfo; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; +import io.shulie.takin.web.biz.service.scene.SceneService; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.util.ActivityUtil; +import io.shulie.takin.web.data.dao.linkmanage.SceneDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateAppDAO; @@ -26,10 +29,14 @@ import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.*; +import io.shulie.takin.web.data.param.linkmanage.SceneCreateParam; +import io.shulie.takin.web.data.param.linkmanage.SceneQueryParam; +import io.shulie.takin.web.data.param.linkmanage.SceneUpdateParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; +import io.shulie.takin.web.data.result.linkmange.SceneResult; import io.shulie.takin.web.ext.util.WebPluginUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; @@ -77,6 +84,9 @@ public class PressureResourceServiceImpl implements PressureResourceService { @Resource private PressureResourceRelateDsDAO pressureResourceRelateDsDAO; + @Resource + private SceneDAO sceneDAO; + /** * 新增 * @@ -109,6 +119,12 @@ public void add(PressureResourceInput input) { List insertEntityList = convertEntitys(input.getType(), resourceId, detailInputs); pressureResourceDetailDAO.batchInsert(insertEntityList); } + + // 新增业务流程 + SceneCreateParam sceneCreateParam = new SceneCreateParam(); + sceneCreateParam.setSceneName(input.getName()); + sceneCreateParam.setType(1); + sceneDAO.insert(sceneCreateParam); } @Override @@ -199,6 +215,26 @@ public void update(PressureResourceInput input) { updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); + // 新增业务流程 + // 按名字查询链路 + SceneQueryParam sceneQueryParam = new SceneQueryParam(); + sceneQueryParam.setSceneName(input.getName()); + List list = sceneDAO.selectListByName(sceneQueryParam); + if (CollectionUtils.isEmpty(list)) { + SceneCreateParam sceneCreateParam = new SceneCreateParam(); + sceneCreateParam.setSceneName(input.getName()); + sceneCreateParam.setUserId(WebPluginUtils.traceUserId()); + sceneCreateParam.setType(1); + sceneDAO.insert(sceneCreateParam); + } else { + SceneUpdateParam updateParam = new SceneUpdateParam(); + updateParam.setSceneName(input.getName()); + updateParam.setUpdateTime(new Date()); + updateParam.setId(list.get(0).getId()); + updateParam.setUserId(WebPluginUtils.traceUserId()); + sceneDAO.update(updateParam); + } + // 修改详情 PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); detailParam.setResourceId(input.getId()); @@ -239,7 +275,7 @@ public void update(PressureResourceInput input) { } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); + return String.format("%s|%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); } /** diff --git a/takin-web-common/src/main/java/io/shulie/takin/web/common/enums/scene/SceneTypeEnum.java b/takin-web-common/src/main/java/io/shulie/takin/web/common/enums/scene/SceneTypeEnum.java index 9f910f96f0..d683d35195 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/web/common/enums/scene/SceneTypeEnum.java +++ b/takin-web-common/src/main/java/io/shulie/takin/web/common/enums/scene/SceneTypeEnum.java @@ -12,7 +12,8 @@ public enum SceneTypeEnum { NORMAL_SCENE(0, "手工创建枚举"), JMETER_UPLOAD_SCENE(1, "jmeter上传创建"), - PERFORMANCE_AUTO_SCENE(2, "单接口压测场景创建"); + PERFORMANCE_AUTO_SCENE(2, "单接口压测场景创建"), + PRESSURE_RESOURCE_AUTO_SCENE(3, "压测准备创建"); private Integer type; private String desc; From 4be0a5f624241fcf784ccc49bbccabfe58267d67 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 19:07:19 +0800 Subject: [PATCH 038/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/PressureResourceRelateDsRequest.java | 2 +- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsRequest.java index 2857b8a93d..d5674f58cb 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateDsRequest.java @@ -32,7 +32,7 @@ public class PressureResourceRelateDsRequest extends PageBaseDTO { private String queryBusinessDataBase; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") - private String status; + private Integer status; @ApiModelProperty("业务数据源") private String businessDataBase; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 7681ad6135..581e45fa9d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -179,7 +179,7 @@ public PagingList listByDs(PressureResourceRelateDsR List appEntitys = pressureResourceRelateAppDAO.queryList(appQueryParam); if (CollectionUtils.isNotEmpty(appEntitys)) { Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); - List appVOList = appNames.stream().map(app -> { + List appVOList = appNames.stream().filter(app -> appNames.contains(app)).map(app -> { PressureResourceRelateAppVO appVO = new PressureResourceRelateAppVO(); appVO.setAppName(app); appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); From 2c303fd42a8bf3ceb810152c8101bd8ad426557a Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 19:14:23 +0800 Subject: [PATCH 039/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 9 +++++++-- .../impl/PressureResourceRelateDsDAOImpl.java | 3 +++ .../pressureresource/PressureResourceDsQueryParam.java | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 581e45fa9d..ebbf2c099f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -11,6 +11,7 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.common.DbNameUtil; import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.JoinFlagEnum; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; @@ -152,6 +153,7 @@ public PagingList listByDs(PressureResourceRelateDsR PressureResourceDsQueryParam param = new PressureResourceDsQueryParam(); param.setResourceId(request.getResourceId()); param.setQueryBussinessDatabase(request.getQueryBusinessDataBase()); + param.setStatus(request.getStatus()); List dsList = pressureResourceRelateDsDAO.queryByParam(param); // 相同数据源合并 @@ -179,10 +181,13 @@ public PagingList listByDs(PressureResourceRelateDsR List appEntitys = pressureResourceRelateAppDAO.queryList(appQueryParam); if (CollectionUtils.isNotEmpty(appEntitys)) { Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); - List appVOList = appNames.stream().filter(app -> appNames.contains(app)).map(app -> { + List appVOList = appNames.stream().map(app -> { PressureResourceRelateAppVO appVO = new PressureResourceRelateAppVO(); appVO.setAppName(app); - appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); + appVO.setJoinPressure(JoinFlagEnum.NO.getCode()); + if (appMap.containsKey(app)) { + appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); + } return appVO; }).collect(Collectors.toList()); tmpVO.setAppList(appVOList); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java index c8d7d7650c..18e69ecbcc 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java @@ -83,6 +83,9 @@ private QueryWrapper getWrapper(PressureResource if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); } + if (param.getStatus() != null) { + queryWrapper.eq("status", param.getStatus()); + } return queryWrapper; } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java index 55b7a9d076..778b6a2999 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceDsQueryParam.java @@ -21,4 +21,7 @@ public class PressureResourceDsQueryParam { @ApiModelProperty("应用名称,模糊查询") private String queryAppName; + + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") + private Integer status; } From 43cbec08f33dffc4c4a364cda3acff291d6b69a7 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 19:25:57 +0800 Subject: [PATCH 040/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 8b6fe9cc76..a0c228e127 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -275,7 +275,7 @@ public void update(PressureResourceInput input) { } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s|%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); + return String.format("%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); } /** From e5b9946ca5a985253a302fd06d67d4d16eb44e66 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 13 Sep 2022 20:11:40 +0800 Subject: [PATCH 041/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shulie/takin/web/biz/job/PressureResourceJob.java | 8 ++++---- .../takin/web/biz/job/PressureResourceRelateJob.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java index 082780b729..b8d6f4a4fa 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceJob.java @@ -55,11 +55,11 @@ public void execute(ShardingContext shardingContext) { continue; } pressureResourceThreadPool.execute(() -> { - boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); - if (!tryLock) { - return; - } try { + boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); + if (!tryLock) { + return; + } WebPluginUtils.setTraceTenantContext( new TenantCommonExt(ext.getTenantId(), ext.getTenantAppKey(), e.getEnvCode(), ext.getTenantCode(), ContextSourceEnum.JOB.getCode())); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 0a001d8912..285832fc87 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -68,11 +68,11 @@ public void execute(ShardingContext shardingContext) { continue; } pressureResourceThreadPool.execute(() -> { - boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); - if (!tryLock) { - return; - } try { + boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); + if (!tryLock) { + return; + } TenantCommonExt commonExt = new TenantCommonExt(); commonExt.setSource(ContextSourceEnum.JOB.getCode()); commonExt.setEnvCode(resource.getEnvCode()); From b54deedf7f22c5979c1a1fb739f645a8e0f7d27f Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 10:18:50 +0800 Subject: [PATCH 042/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linkmanage/BusinessFlowListResponse.java | 2 ++ .../PressureResourceCommonServiceImpl.java | 3 +- .../impl/PressureResourceServiceImpl.java | 20 +++++------ .../web/data/dao/linkmanage/SceneDAO.java | 2 +- .../web/data/dao/linkmanage/SceneDAOImpl.java | 36 ++++++++++--------- .../param/linkmanage/SceneCreateParam.java | 1 + 6 files changed, 33 insertions(+), 31 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/linkmanage/BusinessFlowListResponse.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/linkmanage/BusinessFlowListResponse.java index 77501edf52..fe4c08f9ff 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/linkmanage/BusinessFlowListResponse.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/linkmanage/BusinessFlowListResponse.java @@ -42,4 +42,6 @@ public class BusinessFlowListResponse extends AuthQueryResponseCommonExt implem @ApiModelProperty(name = "scriptDeployId", value = "脚本实例id") private Long scriptDeployId; + + private String features; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 0b75fde07f..8b80f97994 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -1,5 +1,7 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.pamirs.takin.entity.domain.vo.ApplicationVo; import io.shulie.amdb.common.dto.link.topology.AppShadowDatabaseDTO; import io.shulie.amdb.common.dto.link.topology.LinkEdgeDTO; @@ -115,7 +117,6 @@ public void processAutoPressureResource() { queryParam.setSourceId(flowId); PagingList pageList = pressureResourceDAO.pageList(queryParam); - PressureResourceInput pressureResourceInput = new PressureResourceInput(); pressureResourceInput.setName(sceneName); pressureResourceInput.setType(SourceTypeEnum.AUTO.getCode()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index a0c228e127..1580247c83 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowParseRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; @@ -15,7 +14,6 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceExtInfo; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; -import io.shulie.takin.web.biz.service.scene.SceneService; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.util.ActivityUtil; @@ -124,7 +122,13 @@ public void add(PressureResourceInput input) { SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(input.getName()); sceneCreateParam.setType(1); - sceneDAO.insert(sceneCreateParam); + Long sourceId = sceneDAO.insert(sceneCreateParam); + + // 更新sourceId + PressureResourceEntity updateResource = new PressureResourceEntity(); + updateResource.setId(resourceId); + updateResource.setSourceId(sourceId); + pressureResourceMapper.updateById(updateResource); } @Override @@ -215,18 +219,11 @@ public void update(PressureResourceInput input) { updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); - // 新增业务流程 // 按名字查询链路 SceneQueryParam sceneQueryParam = new SceneQueryParam(); sceneQueryParam.setSceneName(input.getName()); List list = sceneDAO.selectListByName(sceneQueryParam); - if (CollectionUtils.isEmpty(list)) { - SceneCreateParam sceneCreateParam = new SceneCreateParam(); - sceneCreateParam.setSceneName(input.getName()); - sceneCreateParam.setUserId(WebPluginUtils.traceUserId()); - sceneCreateParam.setType(1); - sceneDAO.insert(sceneCreateParam); - } else { + if (CollectionUtils.isNotEmpty(list)) { SceneUpdateParam updateParam = new SceneUpdateParam(); updateParam.setSceneName(input.getName()); updateParam.setUpdateTime(new Date()); @@ -234,7 +231,6 @@ public void update(PressureResourceInput input) { updateParam.setUserId(WebPluginUtils.traceUserId()); sceneDAO.update(updateParam); } - // 修改详情 PressureResourceDetailQueryParam detailParam = new PressureResourceDetailQueryParam(); detailParam.setResourceId(input.getId()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAO.java index 830e03e24c..50465b812f 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAO.java @@ -14,7 +14,7 @@ * @date 2020/11/4 2:56 下午 */ public interface SceneDAO { - int insert(SceneCreateParam param); + Long insert(SceneCreateParam param); /** * 指定责任人-业务流程 diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java index 11b13fc801..de201eada7 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java @@ -40,12 +40,12 @@ public class SceneDAOImpl implements SceneDAO { private SceneMapper sceneMapper; @Override - public int insert(SceneCreateParam param) { + public Long insert(SceneCreateParam param) { SceneEntity entity = new SceneEntity(); BeanUtils.copyProperties(param, entity); - int count = sceneMapper.insert(entity); + sceneMapper.insert(entity); param.setId(entity.getId()); - return count; + return entity.getId(); } /** @@ -58,7 +58,7 @@ public int insert(SceneCreateParam param) { public int allocationUser(SceneUpdateParam param) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper(); wrapper.set(SceneEntity::getUserId, param.getUserId()) - .eq(SceneEntity::getId, param.getId()); + .eq(SceneEntity::getId, param.getId()); return sceneMapper.update(null, wrapper); } @@ -74,10 +74,10 @@ public List selectList(SceneQueryParam queryParam) { } queryWrapper.eq(SceneEntity::getIsDeleted, 0); queryWrapper.select( - SceneEntity::getId, - SceneEntity::getSceneName, - SceneEntity::getTenantId, - SceneEntity::getUserId); + SceneEntity::getId, + SceneEntity::getSceneName, + SceneEntity::getTenantId, + SceneEntity::getUserId); List sceneEntityList = sceneMapper.selectList(queryWrapper); if (CollectionUtils.isNotEmpty(sceneEntityList)) { sceneResultList = sceneEntityList.stream().map(sceneEntity -> { @@ -104,10 +104,10 @@ public List selectListByName(SceneQueryParam queryParam) { } queryWrapper.eq(SceneEntity::getIsDeleted, 0); queryWrapper.select( - SceneEntity::getId, - SceneEntity::getSceneName, - SceneEntity::getTenantId, - SceneEntity::getUserId); + SceneEntity::getId, + SceneEntity::getSceneName, + SceneEntity::getTenantId, + SceneEntity::getUserId); List sceneEntityList = sceneMapper.selectList(queryWrapper); if (CollectionUtils.isNotEmpty(sceneEntityList)) { sceneResultList = sceneEntityList.stream().map(sceneEntity -> { @@ -134,7 +134,9 @@ public int update(SceneUpdateParam sceneUpdateParam) { @Override public SceneResult getSceneDetail(Long id) { SceneEntity sceneEntity = sceneMapper.selectById(id); - if (sceneEntity == null) {return null;} + if (sceneEntity == null) { + return null; + } return BeanUtil.copyProperties(sceneEntity, SceneResult.class); } @@ -161,16 +163,16 @@ public PagingList selectPageList(ScenePageQueryParam param) { return PagingList.of(Lists.newArrayList(), 0); } List sceneResultList = BusinessLinkManageConvert.INSTANCE.ofSceneEntityList( - sceneEntityPage.getRecords()); + sceneEntityPage.getRecords()); return PagingList.of(sceneResultList, sceneEntityPage.getTotal()); } @Override public boolean existsScene(Long tenantId, String envCode) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(SceneEntity.class) - .eq(SceneEntity::getTenantId, tenantId) - .eq(SceneEntity::getEnvCode, envCode) - .eq(SceneEntity::getIsDeleted, 0); + .eq(SceneEntity::getTenantId, tenantId) + .eq(SceneEntity::getEnvCode, envCode) + .eq(SceneEntity::getIsDeleted, 0); return SqlHelper.retBool(sceneMapper.selectCount(wrapper)); } } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java index 0d8f495cbc..97d7885747 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java @@ -76,4 +76,5 @@ public class SceneCreateParam extends ContextExt { */ private Integer totalNodeNum; + private String features; } From 43f2bfb0eb2bfa851251a1eed93b13e812dbe021 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 16:01:49 +0800 Subject: [PATCH 043/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index ebbf2c099f..b399af4150 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -351,10 +351,10 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt tableQueryParam.setResourceId(resource.getId()); List tableEntityList = pressureResourceRelateTableDAO.queryList(tableQueryParam); // 按照数据源分组下 + List shadowTableExcelVOList = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); - List shadowTableExcelVOList = Lists.newArrayList(); for (Map.Entry> entry : tableEntityMap.entrySet()) { String dsId = entry.getKey(); PressureResourceRelateDsEntity tmpDs = dsMap.get(dsId).stream().findFirst().orElse(new PressureResourceRelateDsEntity()); @@ -371,13 +371,13 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt shadowTableExcelVOList.addAll(list); } } - ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); - shadowTableSheet.setData(shadowTableExcelVOList); - shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); - shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); - shadowTableSheet.setSheetNum(1); - sheets.add(shadowTableSheet); } + ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); + shadowTableSheet.setData(shadowTableExcelVOList); + shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); + shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowTableSheet.setSheetNum(1); + sheets.add(shadowTableSheet); } try { ExcelUtils.exportExcelManySheet(response, resource.getName(), sheets); From fc8ba8d3c25f1e7c571809343995c48a7d39d7e3 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 16:02:59 +0800 Subject: [PATCH 044/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index b399af4150..258e55c384 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -345,13 +345,13 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt dsQueryParam.setResourceId(resource.getId()); List dsEntityList = pressureResourceRelateDsDAO.queryByParam(dsQueryParam); List> sheets = new ArrayList<>(); + List shadowTableExcelVOList = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(dsEntityList)) { // 查询影子表 PressureResourceTableQueryParam tableQueryParam = new PressureResourceTableQueryParam(); tableQueryParam.setResourceId(resource.getId()); List tableEntityList = pressureResourceRelateTableDAO.queryList(tableQueryParam); // 按照数据源分组下 - List shadowTableExcelVOList = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); @@ -372,13 +372,13 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt } } } - ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); - shadowTableSheet.setData(shadowTableExcelVOList); - shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); - shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); - shadowTableSheet.setSheetNum(1); - sheets.add(shadowTableSheet); } + ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); + shadowTableSheet.setData(shadowTableExcelVOList); + shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); + shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowTableSheet.setSheetNum(1); + sheets.add(shadowTableSheet); try { ExcelUtils.exportExcelManySheet(response, resource.getName(), sheets); } catch (Exception e) { From cc90e2b77955dc8aaf07551bab8737a96a6bf01d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 16:23:00 +0800 Subject: [PATCH 045/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index e0751403c0..374597cb83 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -361,7 +361,9 @@ public BusinessFlowDetailResponse getBusinessFlowDetail(Long id) { if (sceneResult == null) { return result; } - + if (StringUtils.isBlank(sceneResult.getScriptJmxNode())) { + return result; + } List scriptNodes = JsonHelper.json2List(sceneResult.getScriptJmxNode(), ScriptNode.class); //将节点树处理成线程组在最外层的形式 List scriptNodeByType = JmxUtil.getScriptNodeByType(NodeTypeEnum.THREAD_GROUP, scriptNodes); From a4141d17ac7c640313a1dcf9607b1cf5db852432 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 17:01:52 +0800 Subject: [PATCH 046/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 374597cb83..c22c0d04be 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -362,6 +362,7 @@ public BusinessFlowDetailResponse getBusinessFlowDetail(Long id) { return result; } if (StringUtils.isBlank(sceneResult.getScriptJmxNode())) { + result.setId(sceneResult.getId()); return result; } List scriptNodes = JsonHelper.json2List(sceneResult.getScriptJmxNode(), ScriptNode.class); From 9c39dea214de3de85ebe761a49dd48ac65d09234 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 17:29:35 +0800 Subject: [PATCH 047/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/query/trace/TraceInfoQueryDTO.java | 4 + .../biz/job/PressureResourceRelateJob.java | 20 +- .../PressureResourceCommonServiceImpl.java | 326 +++++++++++------- .../impl/PressureResourceServiceImpl.java | 2 +- .../service/scene/impl/SceneServiceImpl.java | 9 +- .../PressureResourceRelateRemoteCallDAO.java | 19 + ...essureResourceRelateRemoteCallDAOImpl.java | 34 ++ ...ressureResourceRelateRemoteCallMapper.java | 29 ++ ...ressureResourceRelateRemoteCallEntity.java | 94 +++++ 9 files changed, 399 insertions(+), 138 deletions(-) create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateRemoteCallDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/trace/TraceInfoQueryDTO.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/trace/TraceInfoQueryDTO.java index 14a6bd8088..f7d790df12 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/trace/TraceInfoQueryDTO.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/trace/TraceInfoQueryDTO.java @@ -85,5 +85,9 @@ public class TraceInfoQueryDTO implements Serializable { */ private Integer queryType; + private String appName; + + private String rpcType; + private Integer clusterTest; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 285832fc87..61649bfeaa 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -29,7 +30,7 @@ @Component @ElasticSchedulerJob(jobName = "pressureResourceRelateJob", isSharding = true, - cron = "0 0/1 * * * ? *", + cron = "0/10 * * * * ? *", description = "压测资源准备-压测资源关联应用") @Slf4j public class PressureResourceRelateJob implements SimpleJob { @@ -48,6 +49,7 @@ public class PressureResourceRelateJob implements SimpleJob { @Override public void execute(ShardingContext shardingContext) { + //test(); // 查询所有压测资源准备配置 List resourceList = pressureResourceDAO.getAll(); if (CollectionUtils.isEmpty(resourceList)) { @@ -58,6 +60,7 @@ public void execute(ShardingContext shardingContext) { List filterList = resourceList.stream().filter(resouce -> resouce.getId() % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filterList)) { return; } @@ -92,4 +95,19 @@ public void execute(ShardingContext shardingContext) { }); } } + + private void test() { + TenantCommonExt commonExt = new TenantCommonExt(); + commonExt.setSource(ContextSourceEnum.JOB.getCode()); + commonExt.setEnvCode("test"); + commonExt.setTenantId(2L); + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(commonExt.getTenantId()); + if (tenantInfoExt == null) { + return; + } + String tenantAppKey = tenantInfoExt.getTenantAppKey(); + commonExt.setTenantAppKey(tenantAppKey); + WebPluginUtils.setTraceTenantContext(commonExt); + pressureResourceCommonService.processAutoPressureResourceRelate(1L); + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 8b80f97994..0b3932e325 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -1,7 +1,5 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.pamirs.takin.entity.domain.vo.ApplicationVo; import io.shulie.amdb.common.dto.link.topology.AppShadowDatabaseDTO; import io.shulie.amdb.common.dto.link.topology.LinkEdgeDTO; @@ -11,7 +9,11 @@ import io.shulie.amdb.common.enums.NodeTypeEnum; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.amdb.api.ApplicationEntranceClient; +import io.shulie.takin.web.amdb.api.TraceClient; import io.shulie.takin.web.amdb.bean.common.EntranceTypeEnum; +import io.shulie.takin.web.amdb.bean.query.trace.EntranceRuleDTO; +import io.shulie.takin.web.amdb.bean.query.trace.TraceInfoQueryDTO; +import io.shulie.takin.web.amdb.bean.result.trace.EntryTraceInfoDTO; import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; import io.shulie.takin.web.biz.pojo.request.activity.ActivityInfoQueryRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationEntranceTopologyQueryRequest; @@ -41,14 +43,13 @@ import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.commons.lang3.tuple.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -66,6 +67,9 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Resource private PressureResourceRelateTableDAO pressureResourceRelateTableDAO; + @Resource + private PressureResourceRelateRemoteCallDAO pressureResourceRelateRemoteCallDAO; + @Resource private PressureResourceRelateDsDAO pressureResourceRelateDsDAO; @@ -90,6 +94,9 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Resource private ApplicationEntranceClient applicationEntranceClient; + @Resource + private TraceClient traceClient; + @Resource private ApplicationService applicationService; @@ -185,152 +192,207 @@ public void processAutoPressureResource() { */ @Override public void processAutoPressureResourceRelate(Long resourceId) { + processRemoteCall(null); + PressureResourceDetailQueryParam detailQueryParam = new PressureResourceDetailQueryParam(); detailQueryParam.setResourceId(resourceId); List detailEntityList = pressureResourceDetailDAO.getList(detailQueryParam); if (CollectionUtils.isNotEmpty(detailEntityList)) { try { + // 根据详情来处理 for (int i = 0; i < detailEntityList.size(); i++) { // 获取入口 PressureResourceDetailEntity detailEntity = detailEntityList.get(i); - // 链路拓扑图查询 - ApplicationEntranceTopologyQueryRequest request = new ApplicationEntranceTopologyQueryRequest(); - request.setApplicationName(detailEntity.getAppName()); - request.setLinkId(detailEntity.getLinkId()); - request.setMethod(detailEntity.getMethod()); - request.setRpcType(detailEntity.getRpcType()); - request.setExtend(detailEntity.getExtend()); - request.setServiceName(detailEntity.getEntranceUrl()); - request.setType(EntranceTypeEnum.getEnumByType(detailEntity.getRpcType())); - // 大数据查询拓扑图 - LinkTopologyDTO applicationEntrancesTopology = applicationEntranceClient.getApplicationEntrancesTopology( - false, request.getApplicationName(), request.getLinkId(), request.getServiceName(), request.getMethod(), - request.getRpcType(), request.getExtend(), true); - if (applicationEntrancesTopology == null) { - logger.warn("链路拓扑图未梳理完成,{}", detailEntity.getEntranceUrl()); - continue; + Pair, List> pair = processDsAndTable(detailEntity); + // 远程调用梳理 + List remoteCallEntityList = processRemoteCall(detailEntity); + + pressureResourceRelateDsDAO.saveOrUpdate(pair.getLeft()); + pressureResourceRelateTableDAO.saveOrUpdate(pair.getRight()); + pressureResourceRelateRemoteCallDAO.saveOrUpdate(remoteCallEntityList); + } + } catch (Throwable e) { + logger.error(ExceptionUtils.getStackTrace(e)); + throw new RuntimeException(e); + } + } + } + + /** + * 通过链路拓扑图来处理关联应用,关联数据源,关联表 + * + * @param detailEntity + * @return + */ + private Pair, List> + processDsAndTable(PressureResourceDetailEntity detailEntity) { + // 需要新增的数据源列表 + List dsEntityList = Lists.newArrayList(); + // 需要新增的表信息 + List tableEntityList = Lists.newArrayList(); + Long resourceId = detailEntity.getResourceId(); + // 链路拓扑图查询 + ApplicationEntranceTopologyQueryRequest request = new ApplicationEntranceTopologyQueryRequest(); + request.setApplicationName(detailEntity.getAppName()); + request.setLinkId(detailEntity.getLinkId()); + request.setMethod(detailEntity.getMethod()); + request.setRpcType(detailEntity.getRpcType()); + request.setExtend(detailEntity.getExtend()); + request.setServiceName(detailEntity.getEntranceUrl()); + request.setType(EntranceTypeEnum.getEnumByType(detailEntity.getRpcType())); + // 大数据查询拓扑图 + LinkTopologyDTO applicationEntrancesTopology = applicationEntranceClient.getApplicationEntrancesTopology( + false, request.getApplicationName(), request.getLinkId(), request.getServiceName(), request.getMethod(), + request.getRpcType(), request.getExtend(), true); + // 关联表和数据源处理 + if (applicationEntrancesTopology != null) { + // 获取应用节点 + List nodeDTOList = applicationEntrancesTopology.getNodes(); + List appNodeList = nodeDTOList.stream().filter(node -> node.getNodeType().equals(NodeTypeEnum.APP.getType())).collect(Collectors.toList()); + List appEntityList = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(appNodeList)) { + appEntityList = appNodeList.stream().map(appNode -> { + PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); + appEntity.setAppName(appNode.getNodeName()); + appEntity.setResourceId(resourceId); + appEntity.setDetailId(detailEntity.getId()); + appEntity.setTenantId(WebPluginUtils.traceTenantId()); + appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + // 节点数默认为0 + appEntity.setNodeNum(0); + // 默认不正常 + appEntity.setStatus(1); + // 通过应用去查询状态 + List list = applicationService.getApplicationList(appEntity.getAppName()); + if (CollectionUtils.isNotEmpty(list)) { + Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); + appEntity.setStatus(0); + } } - // 获取应用节点 - List nodeDTOList = applicationEntrancesTopology.getNodes(); - List appNodeList = nodeDTOList.stream().filter(node -> node.getNodeType().equals(NodeTypeEnum.APP.getType())).collect(Collectors.toList()); - List appEntityList = Lists.newArrayList(); - if (CollectionUtils.isNotEmpty(appNodeList)) { - appEntityList = appNodeList.stream().map(appNode -> { - PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); - appEntity.setAppName(appNode.getNodeName()); - appEntity.setResourceId(resourceId); - appEntity.setDetailId(detailEntity.getId()); - appEntity.setTenantId(WebPluginUtils.traceTenantId()); - appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - // 节点数默认为0 - appEntity.setNodeNum(0); - // 默认不正常 - appEntity.setStatus(1); - // 通过应用去查询状态 - List list = applicationService.getApplicationList(appEntity.getAppName()); - if (CollectionUtils.isNotEmpty(list)) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(0); - } - } - appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); - appEntity.setType(SourceTypeEnum.AUTO.getCode()); - return appEntity; - }).collect(Collectors.toList()); + appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); + appEntity.setType(SourceTypeEnum.AUTO.getCode()); + return appEntity; + }).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(appEntityList)) { + // 保存关联应用 + pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); + } + List edgeDTOList = applicationEntrancesTopology.getEdges(); + // 获取所有的数据库操作信息 + List dbEdgeList = edgeDTOList.stream().filter(edge -> { + if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { + return true; + } + return false; + }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(dbEdgeList)) { + // 按照URL分组 + Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); + + for (Map.Entry> entry : serviceMap.entrySet()) { + String key = entry.getKey(); + PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); + dsEntity.setResourceId(resourceId); + dsEntity.setDetailId(detailEntity.getId()); + dsEntity.setAppName(key.split("#")[0]); + String database = key.split("#")[1]; + String dbName = DbNameUtil.getDbName(database); + if (PtUtils.isShadow(dbName)) { + continue; } - if (CollectionUtils.isNotEmpty(appNodeList)) { - // 保存关联应用 - pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); + // 从任意的边里面获取数据源详情信息 + LinkEdgeDTO edgeDTO = entry.getValue().get(0); + List dsList = edgeDTO.getDsList(); + if (CollectionUtils.isEmpty(dsList)) { + logger.warn("应用数据源未梳理完成,{}", database); + } else { + AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); + dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); + dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); + dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); } - List edgeDTOList = applicationEntrancesTopology.getEdges(); - // 获取所有的数据库操作信息 - List dbEdgeList = edgeDTOList.stream().filter(edge -> { - if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { - return true; - } - return false; - }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(dbEdgeList)) { - // 按照URL分组 - Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); - - List dsEntityList = Lists.newArrayList(); - List tableEntityList = Lists.newArrayList(); - for (Map.Entry> entry : serviceMap.entrySet()) { - String key = entry.getKey(); - PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); - dsEntity.setResourceId(resourceId); - dsEntity.setDetailId(detailEntity.getId()); - dsEntity.setAppName(key.split("#")[0]); - String database = key.split("#")[1]; - String dbName = DbNameUtil.getDbName(database); - if (PtUtils.isShadow(dbName)) { + dsEntity.setBusinessDatabase(database); + dsEntity.setTenantId(WebPluginUtils.traceTenantId()); + dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + dsEntity.setStatus(StatusEnum.NO.getCode()); + dsEntity.setType(SourceTypeEnum.AUTO.getCode()); + dsEntity.setGmtCreate(new Date()); + // 生成唯一key,关联表 + String uniqueKey = DataSourceUtil.generateKey(dsEntity); + dsEntity.setUniqueKey(uniqueKey); + + dsEntityList.add(dsEntity); + + List value = entry.getValue(); + if (CollectionUtils.isNotEmpty(value)) { + for (int k = 0; k < value.size(); k++) { + String method = value.get(k).getMethod(); + // 过滤掉影子的表 + if (PtUtils.isShadow(method)) { continue; } - // 从任意的边里面获取数据源详情信息 - LinkEdgeDTO edgeDTO = entry.getValue().get(0); - List dsList = edgeDTO.getDsList(); - if (CollectionUtils.isEmpty(dsList)) { - logger.warn("应用数据源未梳理完成,{}", database); - } else { - AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); - dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); - dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); - dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); - } - dsEntity.setBusinessDatabase(database); - dsEntity.setTenantId(WebPluginUtils.traceTenantId()); - dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - dsEntity.setStatus(StatusEnum.NO.getCode()); - dsEntity.setType(SourceTypeEnum.AUTO.getCode()); - dsEntity.setGmtCreate(new Date()); - // 生成唯一key,关联表 - String uniqueKey = DataSourceUtil.generateKey(dsEntity); - dsEntity.setUniqueKey(uniqueKey); - - dsEntityList.add(dsEntity); - - List value = entry.getValue(); - if (CollectionUtils.isNotEmpty(value)) { - for (int k = 0; k < value.size(); k++) { - String method = value.get(i).getMethod(); - // 过滤掉影子的表 - if (PtUtils.isShadow(method)) { - continue; - } - PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); - tableEntity.setResourceId(resourceId); - if (StringUtils.isBlank(method)) { - logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); - continue; - } - tableEntity.setBusinessTable(method); - tableEntity.setDsKey(uniqueKey); - tableEntity.setGmtCreate(new Date()); - - tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); - tableEntity.setStatus(StatusEnum.NO.getCode()); - tableEntity.setType(SourceTypeEnum.AUTO.getCode()); - tableEntity.setTenantId(WebPluginUtils.traceTenantId()); - tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - - tableEntityList.add(tableEntity); - } + PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); + tableEntity.setResourceId(resourceId); + if (StringUtils.isBlank(method)) { + logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); + continue; } + tableEntity.setBusinessTable(method); + tableEntity.setDsKey(uniqueKey); + tableEntity.setGmtCreate(new Date()); + + tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); + tableEntity.setStatus(StatusEnum.NO.getCode()); + tableEntity.setType(SourceTypeEnum.AUTO.getCode()); + tableEntity.setTenantId(WebPluginUtils.traceTenantId()); + tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + + tableEntityList.add(tableEntity); } - pressureResourceRelateDsDAO.saveOrUpdate(dsEntityList); - pressureResourceRelateTableDAO.saveOrUpdate(tableEntityList); } } - } catch (Throwable e) { - logger.error(ExceptionUtils.getStackTrace(e)); - throw new RuntimeException(e); } } + return Pair.of(dsEntityList, tableEntityList); + } + + /** + * 处理关联的远程调用信息 + * + * @param detailEntity + * @return + */ + private List processRemoteCall(PressureResourceDetailEntity detailEntity) { + detailEntity = new PressureResourceDetailEntity(); + detailEntity.setAppName("druid_test"); + detailEntity.setEntranceUrl("/druid/mysql/save"); + detailEntity.setMethod("GET"); + detailEntity.setRpcType("0"); + + // 查询trace日志 + TraceInfoQueryDTO traceInfoQueryDTO = new TraceInfoQueryDTO(); + // 查询agent上报的日志 + traceInfoQueryDTO.setRpcType(detailEntity.getRpcType()); + traceInfoQueryDTO.setQueryType(1); + traceInfoQueryDTO.setSortField("startDate"); + traceInfoQueryDTO.setSortType("desc"); + EntranceRuleDTO entranceRuleDTO = new EntranceRuleDTO(); + entranceRuleDTO.setBusinessType(BusinessTypeEnum.NORMAL_BUSINESS.getType()); + entranceRuleDTO.setAppName(detailEntity.getAppName()); + entranceRuleDTO.setEntrance(detailEntity.getMethod() + "|" + detailEntity.getEntranceUrl() + "|" + detailEntity.getRpcType()); + traceInfoQueryDTO.setEntranceRuleDTOS(Arrays.asList(entranceRuleDTO)); + + PagingList entryTraceInfoDTOPagingList = traceClient.listEntryTraceInfo(traceInfoQueryDTO); + if (entryTraceInfoDTOPagingList.isEmpty()) { + return Collections.emptyList(); + } + // + return Collections.emptyList(); } // 应用+数据源 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 1580247c83..65836844da 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -98,7 +98,7 @@ public void add(PressureResourceInput input) { } PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); if (entity != null) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "名称已存在"); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); } // 压测资源配置 PressureResourceEntity insertEntity = new PressureResourceEntity(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index c22c0d04be..c1e2aecc01 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -292,7 +292,7 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu businessFlowParseRequest.setId(createParam.getId()); businessFlowName = createParam.getSceneName(); } else { - SceneResult sceneResult = updateBusinessFlow(businessFlowParseRequest.getId(), businessFlowParseRequest.getScriptFile(), null, data, businessFlowParseRequest.getPluginList()); + SceneResult sceneResult = updateBusinessFlow(businessFlowParseRequest.getId(), businessFlowParseRequest.getScriptFile(), null, data, businessFlowParseRequest.getPluginList(), testPlanName); businessFlowName = sceneResult.getSceneName(); } @@ -415,7 +415,7 @@ public SceneResult getScene(Long id) { @Override public BusinessFlowDetailResponse uploadDataFile(BusinessFlowDataFileRequest businessFlowDataFileRequest) { - updateBusinessFlow(businessFlowDataFileRequest.getId(), null, businessFlowDataFileRequest, null, businessFlowDataFileRequest.getPluginList()); + updateBusinessFlow(businessFlowDataFileRequest.getId(), null, businessFlowDataFileRequest, null, businessFlowDataFileRequest.getPluginList(), ""); BusinessFlowDetailResponse result = new BusinessFlowDetailResponse(); result.setId(businessFlowDataFileRequest.getId()); return result; @@ -751,7 +751,7 @@ public void updateBusinessFlow(BusinessFlowUpdateRequest businessFlowUpdateReque @Transactional(rollbackFor = Exception.class) public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateRequest scriptFile, BusinessFlowDataFileRequest businessFlowDataFileRequest, List data, - List pluginList) { + List pluginList, String testPlanName) { SceneResult sceneResult = sceneDao.getSceneDetail(businessFlowId); if (sceneResult == null) { throw new TakinWebException(TakinWebExceptionEnum.LINK_QUERY_ERROR, "没有找到对应的业务流程!"); @@ -760,7 +760,8 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque Long oldScriptDeployId = sceneResult.getScriptDeployId(); ScriptManageDeployResult scriptManageDeployResult = scriptManageDao.selectScriptManageDeployById(oldScriptDeployId); if (scriptManageDeployResult == null) { - throw new TakinWebException(TakinWebExceptionEnum.LINK_QUERY_ERROR, "没有找到业务流程对应的脚本!"); + scriptManageDeployResult = new ScriptManageDeployResult(); + scriptManageDeployResult.setName(testPlanName); } ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateRemoteCallDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateRemoteCallDAO.java new file mode 100644 index 0000000000..eb439241fb --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateRemoteCallDAO.java @@ -0,0 +1,19 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceRelateRemoteCallDAO { + /** + * 批量保存 + * + * @param remoteCallEntityList + */ + void saveOrUpdate(List remoteCallEntityList); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java new file mode 100644 index 0000000000..bee323751f --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java @@ -0,0 +1,34 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateRemoteCallDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateRemoteCallMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/14 11:09 AM + */ +@Service +public class PressureResourceRelateRemoteCallDAOImpl implements PressureResourceRelateRemoteCallDAO { + @Resource + private PressureResourceRelateRemoteCallMapper pressureResourceRelateRemoteCallMapper; + + /** + * 存在则更新 + * + * @param remoteCallEntityList + */ + @Override + public void saveOrUpdate(List remoteCallEntityList) { + if (CollectionUtils.isEmpty(remoteCallEntityList)) { + return; + } + pressureResourceRelateRemoteCallMapper.saveOrUpdate(remoteCallEntityList); + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java new file mode 100644 index 0000000000..0ce09deaa6 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java @@ -0,0 +1,29 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface PressureResourceRelateRemoteCallMapper + extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + @Insert("") + void saveOrUpdate(@Param("list") List list); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java new file mode 100644 index 0000000000..4b26a2bf9b --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java @@ -0,0 +1,94 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.surge.data.common.doc.annotation.Id; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; +import org.influxdb.annotation.Column; + +import java.util.Date; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@TableName(value = "t_pressure_resource_relate_remote_call") +@ToString(callSuper = true) +public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { + @Id + @Column(name = "`id`") + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @Column(name = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") + @Column(name = "`status`") + private Integer status; + + @ApiModelProperty("接口名") + @Column(name = "`interface_name`") + private String interfaceName; + + @ApiModelProperty("接口类型") + @Column(name = "`interface_type`") + private String interfaceType; + + @ApiModelProperty("服务端应用名") + @Column(name = "`server_app_name`") + private String serverAppName; + + @ApiModelProperty("应用名") + @Column(name = "`app_name`") + private String appName; + + @ApiModelProperty("备注") + @Column(name = "`remark`") + private String remark; + + @ApiModelProperty("配置类型0:未配置,1:白名单配置,2:返回值mock,3:转发mock") + @Column(name = "`type`") + private Byte type; + + @ApiModelProperty("mock返回值") + @Column(name = "`mock_return_value`") + private String mockReturnValue; + + @ApiModelProperty("所属用户") + @Column(name = "`user_id`") + private Long userId; + + @ApiModelProperty("是否同步") + @Column(name = "`is_synchronize`") + private Byte isSynchronize; + + @ApiModelProperty("接口子类型") + @Column(name = "`interface_child_type`") + private String interfaceChildType; + + @ApiModelProperty("是否手动录入 0:否;1:是") + @Column(name = "`manual_tag`") + private Byte manualTag; + + @ApiModelProperty("应用名,接口名称,接口类型,租户id,环境code求md5") + @Column(name = "`md5`") + private String md5; + + @ApiModelProperty("是否有效 0:有效;1:无效") + @Column(name = "`is_deleted`") + private Byte isDeleted; + + @Column(name = "`gmt_create`") + @ApiModelProperty("创建时间") + private Date gmtCreate; + + @Column(name = "`gmt_modified`") + @ApiModelProperty("更新时间") + private Date gmtModified; +} From 1edb233ea8c45e0c5216a5c80ec2896879a39a73 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 17:59:52 +0800 Subject: [PATCH 048/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/job/PressureResourceRelateJob.java | 1 - .../impl/PressureResourceDsServiceImpl.java | 10 +++++++++- .../web/biz/service/scene/impl/SceneServiceImpl.java | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 61649bfeaa..42455c8ada 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -18,7 +18,6 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 258e55c384..eaf9d2ac35 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -352,9 +352,9 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt tableQueryParam.setResourceId(resource.getId()); List tableEntityList = pressureResourceRelateTableDAO.queryList(tableQueryParam); // 按照数据源分组下 + Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); - Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); for (Map.Entry> entry : tableEntityMap.entrySet()) { String dsId = entry.getKey(); PressureResourceRelateDsEntity tmpDs = dsMap.get(dsId).stream().findFirst().orElse(new PressureResourceRelateDsEntity()); @@ -371,6 +371,14 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt shadowTableExcelVOList.addAll(list); } } + } else { + for (Map.Entry> entry : dsMap.entrySet()) { + ShadowTableExcelVO excelVO = new ShadowTableExcelVO(); + excelVO.setBusinessDatabase(entry.getValue().get(0).getBusinessDatabase()); + excelVO.setDatabase(DbNameUtil.getDbName(excelVO.getBusinessDatabase())); + excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getIsolateType())); + shadowTableExcelVOList.add(excelVO); + } } } ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index c1e2aecc01..0ed9509131 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -765,7 +765,10 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque } ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); - List fileManageResponseList = result.getFileManageResponseList(); + List fileManageResponseList = Lists.newArrayList(); + if (result == null) { + fileManageResponseList = result.getFileManageResponseList(); + } ScriptManageDeployUpdateRequest updateRequest = new ScriptManageDeployUpdateRequest(); updateRequest.setId(oldScriptDeployId); updateRequest.setMVersion(ScriptMVersionEnum.SCRIPT_M_1.getCode()); From a8897c435c43362f9ac3c8a00a5117fc5ffa2a64 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 18:09:44 +0800 Subject: [PATCH 049/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 0ed9509131..f635e9db51 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -766,7 +766,7 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); List fileManageResponseList = Lists.newArrayList(); - if (result == null) { + if (result != null) { fileManageResponseList = result.getFileManageResponseList(); } ScriptManageDeployUpdateRequest updateRequest = new ScriptManageDeployUpdateRequest(); From 8ab9b0454ee1cc93927d91631d7232803b392d53 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 18:25:50 +0800 Subject: [PATCH 050/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 65836844da..61b501f05f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -1,5 +1,6 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; @@ -98,6 +99,9 @@ public void add(PressureResourceInput input) { } PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); if (entity != null) { + if (input.getSourceId() == null) { + input.setName(input.getName() + "_" + DateUtil.formatDateTime(new Date())); + } throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); } // 压测资源配置 From b31617679f0c56d9696b562e42e69cc7630a4cb0 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 18:28:46 +0800 Subject: [PATCH 051/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index f635e9db51..d21e7f3749 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -807,7 +807,9 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque updateFileManageRequests.add(scriptFile); updateFileManageRequests.addAll(LinkManageConvert.INSTANCE.ofFileManageResponseList(dataFileManageResponseList)); // 将最新的附件信息处理合并到一起 - updateFileManageRequests.addAll(LinkManageConvert.INSTANCE.ofFileManageResponseList(result.getAttachmentManageResponseList())); + if (CollectionUtils.isNotEmpty(result.getAttachmentManageResponseList())) { + updateFileManageRequests.addAll(LinkManageConvert.INSTANCE.ofFileManageResponseList(result.getAttachmentManageResponseList())); + } updateRequest.setFileManageUpdateRequests(updateFileManageRequests); } // 设置插件信息 From 0325d73f58648897bb75051c8a44e26e072c52f3 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 18:34:57 +0800 Subject: [PATCH 052/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceRelateTableDAOImpl.java | 4 ++-- .../pressureresource/PressureResourceTableQueryParam.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java index 8da94125ed..5274934796 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java @@ -102,8 +102,8 @@ private QueryWrapper getWrapper(PressureResou if (param.getStatus() != null) { queryWrapper.eq("status", param.getStatus()); } - if (StringUtils.isNotBlank(param.getDsKey())) { - queryWrapper.eq("ds_key", param.getDsKey()); + if (StringUtils.isNotBlank(param.getDsId())) { + queryWrapper.eq("ds_key", param.getDsId()); } if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java index 14be6c83d1..2666cf3bbe 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -24,5 +24,5 @@ public class PressureResourceTableQueryParam extends PageBaseDTO { private Integer status; @ApiModelProperty("数据源Id") - private String dsKey; + private String dsId; } From f49c193ee5375d5fe7bef28bc91639a724b8d490 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 19:04:07 +0800 Subject: [PATCH 053/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index b8e8eaf9f0..7abb1a355d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -50,7 +50,7 @@ public void save(PressureResourceRelateTableInput input) { // 判断业务表是否存在 PressureResourceTableQueryParam queryParam = new PressureResourceTableQueryParam(); queryParam.setBusinessTableName(input.getBusinessTable()); - queryParam.setDsKey(input.getDsId()); + queryParam.setDsId(input.getDsId()); List tableList = pressureResourceRelateTableDAO.queryList(queryParam); if (CollectionUtils.isNotEmpty(tableList)) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表已存在"); From c78aedb274c7e367c40ec65360278f3286145ef7 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 19:19:27 +0800 Subject: [PATCH 054/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index d21e7f3749..15e87ab02d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -766,7 +766,9 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); List fileManageResponseList = Lists.newArrayList(); - if (result != null) { + if (result == null) { + result = new ScriptManageDeployDetailResponse(); + } else { fileManageResponseList = result.getFileManageResponseList(); } ScriptManageDeployUpdateRequest updateRequest = new ScriptManageDeployUpdateRequest(); From b439995a47d9a3c3e46874f836b9b0b4bbbd5437 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 20:10:48 +0800 Subject: [PATCH 055/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceRelateTableInput.java | 5 ++++- .../PressureResourceRelateTableRequest.java | 3 +++ .../PressureResourceDsService.java | 5 +++++ .../impl/PressureResourceDsServiceImpl.java | 10 +++++++--- .../impl/PressureResourceServiceImpl.java | 4 +++- .../impl/PressureResourceTableServiceImpl.java | 14 ++++++++++++-- .../vo/PressureResourceRelateDsVO.java | 3 +++ .../vo/PressureResourceRelateTableVO.java | 4 ++-- .../impl/PressureResourceRelateTableDAOImpl.java | 4 ++-- .../PressureResourceTableQueryParam.java | 4 ++-- 10 files changed, 43 insertions(+), 13 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableInput.java index 4f6ca89614..d04397de0e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableInput.java @@ -27,8 +27,11 @@ public class PressureResourceRelateTableInput extends TenantBaseEntity { @ApiModelProperty("资源配置Id") private Long resourceId; + @ApiModelProperty("数据源配置key") + private String dsKey; + @ApiModelProperty("数据源配置Id") - private String dsId; + private Long dsId; @ApiModelProperty("数据源") private String database; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableRequest.java index 1926c80a22..5e6b831773 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateTableRequest.java @@ -24,6 +24,9 @@ public class PressureResourceRelateTableRequest extends PageBaseDTO { @ApiModelProperty("数据源ID") private Long dsId; + @ApiModelProperty("数据源Key") + private String dsKey; + @ApiModelProperty("查询的业务表名") private String queryBusinessTableName; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java index bcad0bbb2d..1500b4bcdb 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -21,6 +21,11 @@ public interface PressureResourceDsService { */ void add(PressureResourceRelateDsInput input); + /** + * 数据源新增 + */ + String getDsKey(Long dsId); + /** * 数据源新增 */ diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index eaf9d2ac35..944291cccd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -106,6 +106,12 @@ public void add(PressureResourceRelateDsInput input) { pressureResourceRelateDsDAO.add(dsEntitys); } + @Override + public String getDsKey(Long dsId) { + PressureResourceRelateDsEntity entity = pressureResourceRelateDsMapper.selectById(dsId); + return entity.getUniqueKey(); + } + @Override public void update(PressureResourceRelateDsInput input) { if (input.getId() == null) { @@ -170,9 +176,7 @@ public PagingList listByDs(PressureResourceRelateDsR tmpVO.setResourceId(String.valueOf(tmpList.get(0).getResourceId())); if (StringUtils.isNotBlank(tmpVO.getBusinessDatabase())) { String bussinessDatabase = tmpVO.getBusinessDatabase(); - if (bussinessDatabase.indexOf("/") > 0) { - tmpVO.setDatabase(bussinessDatabase.substring(bussinessDatabase.indexOf("/") + 1)); - } + tmpVO.setDatabase(DbNameUtil.getDbName(bussinessDatabase)); } // 通过应用获取是否加入压测范围 PressureResourceAppQueryParam appQueryParam = new PressureResourceAppQueryParam(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 61b501f05f..295e53bdc2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -99,10 +99,12 @@ public void add(PressureResourceInput input) { } PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); if (entity != null) { + // 业务流程名字可重复,这里处理下 if (input.getSourceId() == null) { input.setName(input.getName() + "_" + DateUtil.formatDateTime(new Date())); + } else { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); } - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); } // 压测资源配置 PressureResourceEntity insertEntity = new PressureResourceEntity(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index 7abb1a355d..cfa01eadaa 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -4,10 +4,12 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateTableVO; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; @@ -40,6 +42,9 @@ public class PressureResourceTableServiceImpl implements PressureResourceTableSe @Resource private PressureResourceRelateTableMapper pressureResourceRelateTableMapper; + @Resource + private PressureResourceDsService pressureResourceDsService; + /** * 新增 * @@ -50,7 +55,8 @@ public void save(PressureResourceRelateTableInput input) { // 判断业务表是否存在 PressureResourceTableQueryParam queryParam = new PressureResourceTableQueryParam(); queryParam.setBusinessTableName(input.getBusinessTable()); - queryParam.setDsId(input.getDsId()); + String dsKey = pressureResourceDsService.getDsKey(input.getDsId()); + queryParam.setDsKey(dsKey); List tableList = pressureResourceRelateTableDAO.queryList(queryParam); if (CollectionUtils.isNotEmpty(tableList)) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务表已存在"); @@ -63,7 +69,7 @@ public void save(PressureResourceRelateTableInput input) { tableEntity.setJoinFlag(input.getJoinFlag()); tableEntity.setType(input.getType()); tableEntity.setGmtCreate(new Date()); - tableEntity.setDsKey(input.getDsId()); + tableEntity.setDsKey(dsKey); pressureResourceRelateTableDAO.add(Arrays.asList(tableEntity)); } @@ -141,6 +147,10 @@ public void delete(Long id) { public PagingList pageList(PressureResourceRelateTableRequest request) { PressureResourceTableQueryParam param = new PressureResourceTableQueryParam(); BeanUtils.copyProperties(request, param); + if (request.getDsId() != null) { + String dsKey = pressureResourceDsService.getDsKey(request.getDsId()); + param.setDsKey(dsKey); + } PagingList pageList = pressureResourceRelateTableDAO.pageList(param); if (pageList.isEmpty()) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java index 904d84e24e..8f146bcaff 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateDsVO.java @@ -61,6 +61,9 @@ public class PressureResourceRelateDsVO extends TenantBaseEntity { @ApiModelProperty("remark") private String remark; + @ApiModelProperty("唯一键") + private String uniqueKey; + @ApiModelProperty("创建时间") private Date gmtCreate; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java index d882198d71..0318423856 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateTableVO.java @@ -24,8 +24,8 @@ public class PressureResourceRelateTableVO extends TenantBaseEntity { @ApiModelProperty("资源配置Id") private String resourceId; - @ApiModelProperty("数据源Id") - private String dsId; + @ApiModelProperty("数据源Key") + private String dsKey; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") private Integer status; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java index 5274934796..8da94125ed 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java @@ -102,8 +102,8 @@ private QueryWrapper getWrapper(PressureResou if (param.getStatus() != null) { queryWrapper.eq("status", param.getStatus()); } - if (StringUtils.isNotBlank(param.getDsId())) { - queryWrapper.eq("ds_key", param.getDsId()); + if (StringUtils.isNotBlank(param.getDsKey())) { + queryWrapper.eq("ds_key", param.getDsKey()); } if (param.getResourceId() != null) { queryWrapper.eq("resource_id", param.getResourceId()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java index 2666cf3bbe..bd6d3bf3a6 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceTableQueryParam.java @@ -23,6 +23,6 @@ public class PressureResourceTableQueryParam extends PageBaseDTO { @ApiModelProperty("状态,等值查询") private Integer status; - @ApiModelProperty("数据源Id") - private String dsId; + @ApiModelProperty("数据源key") + private String dsKey; } From 24c57ebe6c68b53e0ca048187f8f09c4ad0017d7 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 20:27:55 +0800 Subject: [PATCH 056/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 15e87ab02d..d8de9cf92f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -761,6 +761,7 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque ScriptManageDeployResult scriptManageDeployResult = scriptManageDao.selectScriptManageDeployById(oldScriptDeployId); if (scriptManageDeployResult == null) { scriptManageDeployResult = new ScriptManageDeployResult(); + scriptManageDeployResult.setId(1L); scriptManageDeployResult.setName(testPlanName); } From 4520cfa1d183c2efe27f24b6f3c9e7f446dcae65 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 20:29:35 +0800 Subject: [PATCH 057/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 295e53bdc2..fc8b7418a7 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -100,7 +100,7 @@ public void add(PressureResourceInput input) { PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); if (entity != null) { // 业务流程名字可重复,这里处理下 - if (input.getSourceId() == null) { + if (input.getSourceId() != null) { input.setName(input.getName() + "_" + DateUtil.formatDateTime(new Date())); } else { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); From 4e0dd9434323941056deba78e49bae2c9e952e1f Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 20:39:13 +0800 Subject: [PATCH 058/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index d8de9cf92f..3a08468968 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -761,8 +761,8 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque ScriptManageDeployResult scriptManageDeployResult = scriptManageDao.selectScriptManageDeployById(oldScriptDeployId); if (scriptManageDeployResult == null) { scriptManageDeployResult = new ScriptManageDeployResult(); - scriptManageDeployResult.setId(1L); scriptManageDeployResult.setName(testPlanName); + oldScriptDeployId = 1L; } ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); From 937b08ed865c69403a8fe09e67cb680896aa2a7e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 21:29:12 +0800 Subject: [PATCH 059/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScriptManageDeployUpdateRequest.java | 2 + .../impl/PressureResourceServiceImpl.java | 31 ++++++---- .../service/scene/impl/SceneServiceImpl.java | 59 ++++++++++--------- .../data/result/linkmange/SceneResult.java | 10 ++++ 4 files changed, 61 insertions(+), 41 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployUpdateRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployUpdateRequest.java index 6830bbbd07..5ef68480df 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployUpdateRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployUpdateRequest.java @@ -70,4 +70,6 @@ public class ScriptManageDeployUpdateRequest implements Serializable { * 是否覆盖大文件 */ private Integer ifCoverBigFile; + + private boolean isPressureResource; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index fc8b7418a7..dbc959af80 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -40,6 +40,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; +import org.mortbay.util.ajax.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -100,7 +101,7 @@ public void add(PressureResourceInput input) { PressureResourceEntity entity = pressureResourceDAO.queryByName(input.getName()); if (entity != null) { // 业务流程名字可重复,这里处理下 - if (input.getSourceId() != null) { + if (input.getType().intValue() == SourceTypeEnum.AUTO.getCode()) { input.setName(input.getName() + "_" + DateUtil.formatDateTime(new Date())); } else { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, input.getName() + "已存在"); @@ -124,17 +125,23 @@ public void add(PressureResourceInput input) { pressureResourceDetailDAO.batchInsert(insertEntityList); } - // 新增业务流程 - SceneCreateParam sceneCreateParam = new SceneCreateParam(); - sceneCreateParam.setSceneName(input.getName()); - sceneCreateParam.setType(1); - Long sourceId = sceneDAO.insert(sceneCreateParam); - - // 更新sourceId - PressureResourceEntity updateResource = new PressureResourceEntity(); - updateResource.setId(resourceId); - updateResource.setSourceId(sourceId); - pressureResourceMapper.updateById(updateResource); + // 手工的新增流程 + if (input.getType() == SourceTypeEnum.MANUAL.getCode()) { + // 新增业务流程 + SceneCreateParam sceneCreateParam = new SceneCreateParam(); + sceneCreateParam.setSceneName(input.getName()); + sceneCreateParam.setType(1); + Map features = Maps.newHashMap(); + features.put("PR", "PressureResource"); + sceneCreateParam.setFeatures(JSON.toString(features)); + Long sourceId = sceneDAO.insert(sceneCreateParam); + + // 更新sourceId + PressureResourceEntity updateResource = new PressureResourceEntity(); + updateResource.setId(resourceId); + updateResource.setSourceId(sourceId); + pressureResourceMapper.updateById(updateResource); + } } @Override diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 3a08468968..d976fcb3ca 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -7,6 +7,8 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -286,9 +288,14 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu } testPlanName = testPlan.get(0).getTestName(); } + boolean isPressureResouce = false; + if (businessFlowParseRequest.getId() != null) { + SceneResult sceneResult = sceneDao.getSceneDetail(businessFlowParseRequest.getId()); + isPressureResouce = sceneResult.isPressureResource(); + } String businessFlowName = null; - if (businessFlowParseRequest.getId() == null) { - SceneCreateParam createParam = saveBusinessFlow(businessFlowParseRequest.getSource(), testPlanName, data, fileManageCreateRequest, businessFlowParseRequest.getPluginList()); + if (isPressureResouce || businessFlowParseRequest.getId() == null) { + SceneCreateParam createParam = saveBusinessFlow(businessFlowParseRequest.getSource(), testPlanName, data, fileManageCreateRequest, businessFlowParseRequest.getPluginList(), isPressureResouce, businessFlowParseRequest.getId()); businessFlowParseRequest.setId(createParam.getId()); businessFlowName = createParam.getSceneName(); } else { @@ -304,27 +311,29 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu @Transactional(rollbackFor = Exception.class) public SceneCreateParam saveBusinessFlow(Integer source, String testName, List data, FileManageUpdateRequest fileManageCreateRequest, - List pluginList) { - SceneQueryParam sceneQueryParam = new SceneQueryParam(); - sceneQueryParam.setSceneName(testName); - List sceneResultList = sceneDao.selectListByName(sceneQueryParam); - if (CollectionUtils.isNotEmpty(sceneResultList)) { - testName = testName + "_" + DateUtil.formatDateTime(new Date()); - } + List pluginList, boolean isPressureResource, Long extId) { //保存业务流程 SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(testName); - sceneCreateParam.setLinkRelateNum(0); - sceneCreateParam.setScriptJmxNode(JsonHelper.bean2Json(data)); - sceneCreateParam.setTotalNodeNum(JmxUtil.getNodeNumByType(NodeTypeEnum.SAMPLER, data)); - if (source != null) { - sceneCreateParam.setType(source); - } else { - sceneCreateParam.setType(SceneTypeEnum.JMETER_UPLOAD_SCENE.getType()); + sceneCreateParam.setId(extId); + if (!isPressureResource) { + SceneQueryParam sceneQueryParam = new SceneQueryParam(); + sceneQueryParam.setSceneName(testName); + List sceneResultList = sceneDao.selectListByName(sceneQueryParam); + if (CollectionUtils.isNotEmpty(sceneResultList)) { + testName = testName + "_" + DateUtil.formatDateTime(new Date()); + } + sceneCreateParam.setLinkRelateNum(0); + sceneCreateParam.setScriptJmxNode(JsonHelper.bean2Json(data)); + sceneCreateParam.setTotalNodeNum(JmxUtil.getNodeNumByType(NodeTypeEnum.SAMPLER, data)); + if (source != null) { + sceneCreateParam.setType(source); + } else { + sceneCreateParam.setType(SceneTypeEnum.JMETER_UPLOAD_SCENE.getType()); + } + WebPluginUtils.fillCloudUserData(sceneCreateParam); + sceneDao.insert(sceneCreateParam); } - WebPluginUtils.fillCloudUserData(sceneCreateParam); - sceneDao.insert(sceneCreateParam); - //新增脚本文件 ScriptManageDeployCreateRequest createRequest = new ScriptManageDeployCreateRequest(); //脚本文件名称去重 @@ -760,18 +769,10 @@ public SceneResult updateBusinessFlow(Long businessFlowId, FileManageUpdateReque Long oldScriptDeployId = sceneResult.getScriptDeployId(); ScriptManageDeployResult scriptManageDeployResult = scriptManageDao.selectScriptManageDeployById(oldScriptDeployId); if (scriptManageDeployResult == null) { - scriptManageDeployResult = new ScriptManageDeployResult(); - scriptManageDeployResult.setName(testPlanName); - oldScriptDeployId = 1L; + throw new TakinWebException(TakinWebExceptionEnum.LINK_QUERY_ERROR, "没有找到业务流程对应的脚本!"); } - ScriptManageDeployDetailResponse result = scriptManageService.getScriptManageDeployDetail(oldScriptDeployId); - List fileManageResponseList = Lists.newArrayList(); - if (result == null) { - result = new ScriptManageDeployDetailResponse(); - } else { - fileManageResponseList = result.getFileManageResponseList(); - } + List fileManageResponseList = fileManageResponseList = result.getFileManageResponseList(); ScriptManageDeployUpdateRequest updateRequest = new ScriptManageDeployUpdateRequest(); updateRequest.setId(oldScriptDeployId); updateRequest.setMVersion(ScriptMVersionEnum.SCRIPT_M_1.getCode()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/linkmange/SceneResult.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/linkmange/SceneResult.java index edf2537971..7e0486d698 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/linkmange/SceneResult.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/linkmange/SceneResult.java @@ -1,6 +1,9 @@ package io.shulie.takin.web.data.result.linkmange; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import java.time.LocalDateTime; import java.util.Date; @@ -78,4 +81,11 @@ public class SceneResult { private Integer totalNodeNum; private String features; + + public boolean isPressureResource() { + if (StringUtils.isBlank(scriptJmxNode)) { + return true; + } + return false; + } } From edc6501138190e7f97414efdc99f418b5db64747 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 21:48:08 +0800 Subject: [PATCH 060/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index d976fcb3ca..bd7dc563ff 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -313,6 +313,10 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu public SceneCreateParam saveBusinessFlow(Integer source, String testName, List data, FileManageUpdateRequest fileManageCreateRequest, List pluginList, boolean isPressureResource, Long extId) { //保存业务流程 + if (isPressureResource) { + SceneResult sceneResult = sceneDao.getSceneDetail(extId); + testName = sceneResult.getSceneName(); + } SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(testName); sceneCreateParam.setId(extId); @@ -359,6 +363,9 @@ public SceneCreateParam saveBusinessFlow(Integer source, String testName, List Date: Wed, 14 Sep 2022 21:57:38 +0800 Subject: [PATCH 061/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index dbc959af80..7ca44859dd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -223,7 +223,7 @@ public void update(PressureResourceInput input) { param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "名字已存在"); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); } PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); updateResourceEntity.setId(input.getId()); From 73cbc00a8681247a98b79d59cdf098fa4dca7325 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 22:08:21 +0800 Subject: [PATCH 062/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java | 2 +- .../impl/PressureResourceCommonServiceImpl.java | 1 + .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- .../pressureresource/impl/PressureResourceDetailDAOImpl.java | 4 +--- .../pressureresource/PressureResoureController.java | 2 ++ 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java index e1a649003a..f10d7c06a9 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java @@ -49,7 +49,7 @@ public ThreadPoolExecutor jobThreadPool() { @Bean(name = "pressureResourceThreadPool") public ThreadPoolExecutor pressureResouceThreadPool() { - ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResourceJob-%d").build(); + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResourceThreadPool-%d").build(); return new ThreadPoolExecutor(20, 40, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 0b3932e325..7abfef7b53 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -137,6 +137,7 @@ public void processAutoPressureResource() { PressureResourceEntity tmpEntity = pageList.getList().get(0); // 设置Id pressureResourceInput.setId(tmpEntity.getId()); + pressureResourceInput.setUserId(tmpEntity.getUserId()); insertFlag = false; } // 处理详情 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 7ca44859dd..ef87deb415 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -113,7 +113,7 @@ public void add(PressureResourceInput input) { // 来源Id,业务流程Id insertEntity.setSourceId(input.getSourceId()); insertEntity.setType(input.getType()); - insertEntity.setUserId(WebPluginUtils.traceUserId()); + insertEntity.setUserId(input.getUserId()); insertEntity.setGmtCreate(new Date()); insertEntity.setGmtModified(new Date()); Long resourceId = pressureResourceDAO.add(insertEntity); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 0a5d91436b..5367b62611 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -42,9 +42,7 @@ public void batchInsert(List insertList) { if (CollectionUtils.isEmpty(insertList)) { return; } - insertList.stream().forEach(insert -> { - pressureResourceDetailMapper.insert(insert); - }); + pressureResourceDetailMapper.saveOrUpdate(insertList); } private QueryWrapper getWrapper(PressureResourceDetailQueryParam param) { diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index a1cc633c86..ffdc7469cf 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -8,6 +8,7 @@ import io.shulie.takin.web.biz.service.pressureresource.common.CheckStatusEnum; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; +import io.shulie.takin.web.ext.util.WebPluginUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; @@ -44,6 +45,7 @@ public ResponseResult create(@RequestBody PressureResourceInput input) { // 这里只是页面手工新增入口 input.setType(SourceTypeEnum.MANUAL.getCode()); input.setCheckStatus(CheckStatusEnum.CHECK_NO.getCode()); + input.setUserId(WebPluginUtils.traceUserId()); pressureResourceService.add(input); return ResponseResult.success(); } From 5769ac3b2791a498cc3da1f11fa67b7eb6044cb4 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 22:21:53 +0800 Subject: [PATCH 063/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index ef87deb415..679a176362 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -126,7 +126,7 @@ public void add(PressureResourceInput input) { } // 手工的新增流程 - if (input.getType() == SourceTypeEnum.MANUAL.getCode()) { + if (input.getType().intValue() == SourceTypeEnum.MANUAL.getCode()) { // 新增业务流程 SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(input.getName()); From 5df5cb0dc454e68babcf27b49b9e1b1f965f685e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 14 Sep 2022 22:25:47 +0800 Subject: [PATCH 064/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 679a176362..6a5ea4c32f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -172,6 +172,12 @@ public void delete(Long resourceId) { QueryWrapper tableWrapper = new QueryWrapper<>(); tableWrapper.eq("resource_id", resourceId); pressureResourceRelateTableMapper.delete(tableWrapper); + + // 删除流程 + SceneUpdateParam updateParam = new SceneUpdateParam(); + updateParam.setId(resourceEntity.getSourceId()); + updateParam.setIsDeleted(1); + sceneDAO.update(updateParam); } /** From c8d3f40bf225dba550fe1ffa4dd4215ffdd28880 Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Thu, 15 Sep 2022 09:51:37 +0800 Subject: [PATCH 065/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E4=B8=8B=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/job/PressureResourceCommandJob.java | 90 ++++++ .../PressureResourceCommandService.java | 19 ++ .../common/PressureResourceTypeEnum.java | 46 +++ .../PressureResourceCommandServiceImpl.java | 302 ++++++++++++++++++ .../vo/agent/command/DataSourceConfig.java | 84 +++++ .../vo/agent/command/DataSourceEntity.java | 52 +++ .../command/JdbcTableCompareCommand.java | 44 +++ .../vo/agent/command/JdbcTableConfig.java | 22 ++ .../vo/agent/command/Response.java | 68 ++++ .../vo/agent/command/TakinAck.java | 66 ++++ .../vo/agent/command/TakinCommand.java | 93 ++++++ .../vo/agent/command/TakinCommandAck.java | 64 ++++ .../vo/agent/command/TakinConfig.java | 89 ++++++ .../vo/agent/command/TakinConfigAck.java | 57 ++++ .../PressureResourceAckController.java | 34 ++ 15 files changed, 1130 insertions(+) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommandService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PressureResourceTypeEnum.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceConfig.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceEntity.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableCompareCommand.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableConfig.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinAck.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommand.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommandAck.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfig.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfigAck.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceAckController.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java new file mode 100644 index 0000000000..87a86576ee --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -0,0 +1,90 @@ +package io.shulie.takin.web.biz.job; + +import com.dangdang.ddframe.job.api.ShardingContext; +import com.dangdang.ddframe.job.api.simple.SimpleJob; +import io.shulie.takin.job.annotation.ElasticSchedulerJob; +import io.shulie.takin.web.biz.service.DistributedLock; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; +import io.shulie.takin.web.biz.utils.job.JobRedisUtils; +import io.shulie.takin.web.common.enums.ContextSourceEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; +import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * 压测资源关联应用 + */ +@Component +@ElasticSchedulerJob(jobName = "pressureResourceCommandJob", + isSharding = true, + //cron = "0/10 * * * * ?", + cron = "0 0/1 * * * ? *", + description = "下发验证命令") +@Slf4j +public class PressureResourceCommandJob implements SimpleJob { + + @Resource + private PressureResourceDAO pressureResourceDAO; + + @Autowired + private PressureResourceCommandService pressureResourceCommandService; + + @Resource + @Qualifier("pressureResouceThreadPool") + private ThreadPoolExecutor pressureResouceThreadPool; + + @Resource + private DistributedLock distributedLock; + + @Override + public void execute(ShardingContext shardingContext) { + // 查询所有压测资源准备配置 + List resourceList = pressureResourceDAO.getAll(); + if (CollectionUtils.isEmpty(resourceList)) { + log.warn("当前压测资源准备配置为空,暂不处理!!!"); + return; + } + resourceList.forEach(resource ->{ + String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resource.getId()); + if (distributedLock.checkLock(lockKey)) { + return; + } + pressureResouceThreadPool.execute(() -> { + boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); + if (!tryLock) { + return; + } + try { + TenantCommonExt commonExt = new TenantCommonExt(); + commonExt.setSource(ContextSourceEnum.JOB.getCode()); + commonExt.setEnvCode(resource.getEnvCode()); + commonExt.setTenantId(resource.getTenantId()); + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); + if (tenantInfoExt == null) { + return; + } + String tenantAppKey = tenantInfoExt.getTenantAppKey(); + commonExt.setTenantAppKey(tenantAppKey); + WebPluginUtils.setTraceTenantContext(commonExt); + pressureResourceCommandService.pushCommand(resource.getId()); + } finally { + distributedLock.unLockSafely(lockKey); + } + + }); + }); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommandService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommandService.java new file mode 100644 index 0000000000..b28f309642 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommandService.java @@ -0,0 +1,19 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; + +/** + * @author guann1n9 + * @date 2022/9/14 10:57 AM + */ +public interface PressureResourceCommandService { + + /** + * 下发命令并更新数据库 + * @param resourceId + * @return + */ + void pushCommand(Long resourceId); + + void processAck(TakinAck pressureResourceAck); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PressureResourceTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PressureResourceTypeEnum.java new file mode 100644 index 0000000000..42aea04fcb --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PressureResourceTypeEnum.java @@ -0,0 +1,46 @@ +package io.shulie.takin.web.biz.service.pressureresource.common; + +import org.springframework.util.StringUtils; + +/** + * @author guann1n9 + * @date 2022/9/14 6:52 PM + */ +public enum PressureResourceTypeEnum { + + /** + * 数据库 + */ + DATABASE("pressure_database"), + + /** + * 白名单 + */ + WHITELIST("pressure_whitelist"); + + + private String code; + + + PressureResourceTypeEnum(String code) { + this.code = code; + } + + + public String getCode() { + return code; + } + + + public static PressureResourceTypeEnum getByCode(String code){ + if(!StringUtils.hasText(code)){ + return null; + } + for (PressureResourceTypeEnum value : PressureResourceTypeEnum.values()) { + if(value.getCode().equals(code)){ + return value; + } + } + return null; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java new file mode 100644 index 0000000000..40695a75d2 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -0,0 +1,302 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; +import io.shulie.takin.web.biz.service.pressureresource.common.CheckStatusEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.PressureResourceTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; +import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author guann1n9 + * @date 2022/9/14 10:57 AM + */ +@Service +@Slf4j +public class PressureResourceCommandServiceImpl implements PressureResourceCommandService { + + private static final String PUSH_COMMAND_URL = "takin/command"; + + private static final String PUSH_CONFIG_URL = "takin/config"; + + @Value("${agent.manager.host}") + private String agentManagerHost; + + @Resource + private PressureResourceMapper resourceMapper; + @Resource + private PressureResourceRelateDsMapper resourceDsMapper; + @Resource + private PressureResourceRelateTableMapper resourceTableMapper; + + + /** + * 下发校验命令并更新数据库 + * @param resourceId + * @return + */ + @Override + public void pushCommand(Long resourceId){ + PressureResourceEntity resource = resourceMapper.selectById(resourceId); + if(resource == null){ + return; + } + if(resource.getIsolateType() == IsolateTypeEnum.DEFAULT.getCode()){ + //未配置隔离类型 + return; + } + List dsEntities = resourceDsMapper.selectList(new QueryWrapper().lambda() + .eq(PressureResourceRelateDsEntity::getResourceId, resourceId)); + List tableEntities = resourceTableMapper.selectList(new QueryWrapper().lambda() + .eq(PressureResourceRelateTableEntity::getResourceId, resourceId)); + //appName分组 + Map> dsMap = dsEntities.stream().collect(Collectors.groupingBy(PressureResourceRelateDsEntity::getAppName)); + //dsKey分组 + Map> tableMap = tableEntities.stream().collect(Collectors.groupingBy(PressureResourceRelateTableEntity::getDsKey)); + + List list = new ArrayList<>(); + //遍历dsMap + dsMap.forEach((appName,appDsList) ->{ + List collect = appDsList.stream().map(dsEntity -> mapping(resource, dsEntity, tableMap.get(dsEntity.getUniqueKey()))).collect(Collectors.toList()); + list.addAll(collect); + }); + + //下发命令 + String url = joinUrl(agentManagerHost, PUSH_COMMAND_URL); + String post = HttpUtil.post(url,JSON.toJSONString(list)); + Response response = JSON.parseObject(post, new TypeReference>() {}); + if(response.getData() == null || !response.getData()){ + //未下发成功 下次循环触发 + return; + } + //更新数据库 + PressureResourceEntity update = new PressureResourceEntity(); + update.setId(resourceId); + update.setStatus(CheckStatusEnum.CHECK_ING.getCode()); + resourceMapper.updateById(update); + } + + @Override + public void processAck(TakinAck takinAck) { + + String ackType = takinAck.getAckType(); + switch (ackType){ + case TakinAck.COMMAND: + //配置校验响应 + processCommandAck(takinAck); + break; + case TakinAck.CONFIG: + //配置生效响应 + processConfigAck(takinAck); + break; + default:break; + + } + + + } + + /** + * 配置生效响应 + * @param takinAck + */ + private void processConfigAck(TakinAck takinAck) { + TakinConfigAck configAck = takinAck.getAck(); + long resourceId = Long.parseLong(configAck.getConfigId()); + boolean success = configAck.isSuccess(); + PressureResourceTypeEnum resourceTypeEnum = PressureResourceTypeEnum.getByCode(configAck.getConfigType()); + switch (resourceTypeEnum) { + case DATABASE: + //更新ds + + + + break; + case WHITELIST: + break; + default:break; + } + + } + + + /** + * 压测配置校验响应处理 + * @param takinAck + */ + private void processCommandAck(TakinAck takinAck){ + TakinCommandAck commandAck = takinAck.getAck(); + String commandId = commandAck.getCommandId(); + Long resourceId = getResourceId(commandId); + Long subId = getSubId(commandId); + + PressureResourceEntity resource = resourceMapper.selectById(resourceId); + if(resource == null){ + return; + } + PressureResourceEntity update = new PressureResourceEntity(); + update.setId(resourceId); + update.setCheckTime(new Date()); + update.setCheckStatus(CheckStatusEnum.CHECK_FIN.getCode()); + resourceMapper.updateById(update); + //更新附属资源 + PressureResourceTypeEnum resourceTypeEnum = PressureResourceTypeEnum.getByCode(commandAck.getCommandType()); + switch (resourceTypeEnum){ + case DATABASE: + PressureResourceRelateDsEntity dsEntity = resourceDsMapper.selectById(subId); + if(dsEntity == null){ + throw new IllegalArgumentException("未找到对应的数据库资源"); + } + PressureResourceRelateDsEntity updateDs = new PressureResourceRelateDsEntity(); + updateDs.setId(subId); + updateDs.setStatus(commandAck.isSuccess() ? 2 : 1); + updateDs.setRemark(commandAck.getResponse()); + resourceDsMapper.updateById(updateDs); + //下发数据库配置 + if(commandAck.isSuccess()){ + pushPressureDatabaseConfig(resource); + } + break; + case WHITELIST: + break; + default: + break; + } + } + + + /** + * 校验通过,下发压测库配置 + * @param resource + */ + private void pushPressureDatabaseConfig(PressureResourceEntity resource) { + //租户信息 + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); + + List dsEntities = resourceDsMapper.selectList(new QueryWrapper().lambda() + .eq(PressureResourceRelateDsEntity::getResourceId, resource.getId())); + //appName分组 + Map> dsMap = dsEntities.stream().collect(Collectors.groupingBy(PressureResourceRelateDsEntity::getAppName)); + List configList = new ArrayList<>(); + dsMap.forEach((appName,dsList)->{ + TakinConfig takinConfig = new TakinConfig(); + takinConfig.setConfigId(resource.getId().toString()); + takinConfig.setAppName(appName); + takinConfig.setAgentSpecification(TakinCommand.SIMULATOR_AGENT); + takinConfig.setEnvCode(resource.getEnvCode()); + takinConfig.setTenantCode(tenantInfoExt.getTenantCode()); + takinConfig.setConfigType(PressureResourceTypeEnum.DATABASE.getCode()); + List collect = dsList.stream().map(dsEntity -> mapping(resource.getIsolateType(),dsEntity)).collect(Collectors.toList()); + JdbcTableConfig jdbcTableConfig = new JdbcTableConfig(); + jdbcTableConfig.setData(collect); + takinConfig.setConfigParam(JSON.toJSONString(jdbcTableConfig)); + configList.add(takinConfig); + }); + //推送配置 + String url = joinUrl(agentManagerHost, PUSH_CONFIG_URL); + HttpUtil.post(url,JSON.toJSONString(configList)); + } + + + private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEntity dsEntity){ + DataSourceConfig dataSourceConfig = new DataSourceConfig(); + dataSourceConfig.setShadowType(shadowType); + dataSourceConfig.setUrl(dsEntity.getBusinessDatabase()); + dataSourceConfig.setUsername(dsEntity.getBusinessUserName()); + dataSourceConfig.setShadowUrl(dsEntity.getShadowDatabase()); + dataSourceConfig.setShadowUsername(dsEntity.getShadowUserName()); + dataSourceConfig.setShadowPassword(dsEntity.getShadowPassword()); + return dataSourceConfig; + } + + + private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRelateDsEntity dsEntity,List tableEntities){ + TakinCommand takinCommand = new TakinCommand(); + takinCommand.setCommandId(commandId(resource.getId(), dsEntity.getId())); + takinCommand.setAppName(dsEntity.getAppName()); + takinCommand.setAgentSpecification(TakinCommand.SIMULATOR_AGENT); + takinCommand.setEnvCode(resource.getEnvCode()); + String tenantCode = WebPluginUtils.traceTenantCode(); + takinCommand.setTenantCode(tenantCode); + takinCommand.setCommandType(PressureResourceTypeEnum.DATABASE.getCode()); + //命令 + JdbcTableCompareCommand tableCompareCommand = new JdbcTableCompareCommand(); + tableCompareCommand.setShadowType(resource.getIsolateType()); + + DataSourceEntity bizDataSource = new DataSourceEntity(); + bizDataSource.setUrl(dsEntity.getBusinessDatabase()); + bizDataSource.setUserName(dsEntity.getBusinessUserName()); + tableCompareCommand.setBizDataSource(bizDataSource); + //影子表 + if(!CollectionUtils.isEmpty(tableEntities)){ + List tables = tableEntities.stream().map(PressureResourceRelateTableEntity::getBusinessTable).collect(Collectors.toList()); + tableCompareCommand.setTables(tables); + } + //影子库 + if(StringUtils.hasText(dsEntity.getShadowDatabase())){ + DataSourceEntity shadowDataSource = new DataSourceEntity(); + shadowDataSource.setUrl(dsEntity.getShadowDatabase()); + shadowDataSource.setUserName(dsEntity.getShadowUserName()); + shadowDataSource.setPassword(dsEntity.getShadowPassword()); + tableCompareCommand.setShadowDataSource(shadowDataSource); + } + takinCommand.setCommandParam(JSON.toJSONString(tableCompareCommand)); + return takinCommand; + } + + + + private String joinUrl(String host, String path) { + return host.endsWith("/") ? host + path : host + "/" + path; + } + + + + private String commandId(Long resourceId,Long subId){ + return resourceId+"_"+subId; + } + + + private Long getResourceId(String commandId){ + String[] split = commandId.split("_"); + if(split.length != 2){ + throw new IllegalArgumentException("命令id校验失败:"+commandId); + } + return Long.parseLong(split[0]); + } + + private Long getSubId(String commandId){ + String[] split = commandId.split("_"); + if(split.length != 2){ + throw new IllegalArgumentException("命令id校验失败:"+commandId); + } + return Long.parseLong(split[1]); + } + + + + +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceConfig.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceConfig.java new file mode 100644 index 0000000000..b849e96580 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceConfig.java @@ -0,0 +1,84 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +public class DataSourceConfig implements Serializable { + + /** + * 业务库url + */ + private String url; + + /** + * 业务库用户名 + */ + private String username; + + /** + * 数据源类型 0:影子库 1:影子表 2:影子库+影子表 + */ + private int shadowType; + + /** + * 影子库url + */ + private String shadowUrl; + + /** + * 影子库用户名 + */ + private String shadowUsername; + + /** + * 影子库密码 + */ + private String shadowPassword; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getShadowUrl() { + return shadowUrl; + } + + public void setShadowUrl(String shadowUrl) { + this.shadowUrl = shadowUrl; + } + + public String getShadowUsername() { + return shadowUsername; + } + + public void setShadowUsername(String shadowUsername) { + this.shadowUsername = shadowUsername; + } + + public String getShadowPassword() { + return shadowPassword; + } + + public void setShadowPassword(String shadowPassword) { + this.shadowPassword = shadowPassword; + } + + public int getShadowType() { + return shadowType; + } + + public void setShadowType(int shadowType) { + this.shadowType = shadowType; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceEntity.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceEntity.java new file mode 100644 index 0000000000..c0ae6483f6 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/DataSourceEntity.java @@ -0,0 +1,52 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +public class DataSourceEntity implements Serializable { + + private String url; + private String userName; + private String password; + private String driverClassName; + private String connectionPool; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + public String getConnectionPool() { + return connectionPool; + } + + public void setConnectionPool(String connectionPool) { + this.connectionPool = connectionPool; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableCompareCommand.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableCompareCommand.java new file mode 100644 index 0000000000..3cf5844790 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableCompareCommand.java @@ -0,0 +1,44 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; +import java.util.List; + +public class JdbcTableCompareCommand implements Serializable { + + private Integer shadowType; + private List tables; + private DataSourceEntity bizDataSource; + private DataSourceEntity shadowDataSource; + + public Integer getShadowType() { + return shadowType; + } + + public void setShadowType(Integer shadowType) { + this.shadowType = shadowType; + } + + public List getTables() { + return tables; + } + + public void setTables(List tables) { + this.tables = tables; + } + + public DataSourceEntity getBizDataSource() { + return bizDataSource; + } + + public void setBizDataSource(DataSourceEntity bizDataSource) { + this.bizDataSource = bizDataSource; + } + + public DataSourceEntity getShadowDataSource() { + return shadowDataSource; + } + + public void setShadowDataSource(DataSourceEntity shadowDataSource) { + this.shadowDataSource = shadowDataSource; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableConfig.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableConfig.java new file mode 100644 index 0000000000..5e8221d930 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/JdbcTableConfig.java @@ -0,0 +1,22 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; +import java.util.List; + +/** + * @author guann1n9 + * @date 2022/9/14 8:13 PM + */ +public class JdbcTableConfig implements Serializable { + + private List data; + + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java new file mode 100644 index 0000000000..07209d2b25 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java @@ -0,0 +1,68 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +/** + * @author guann1n9 + * @date 2022/5/5 5:29 PM + */ +@Data +@Builder +public class Response { + + + /** + * 200正常 401 未获取到登录信息 500异常 + */ + public static Integer SUCCESS = 200; + + public static Integer AUTH_ERROR = 401; + + public static Integer SERVER_ERROR = 500; + + + /** + * 响应码 200正常 401 未获取到登录信息 500异常 + */ + @ApiModelProperty("响应码 200正常 401 未获取到登录信息 500异常") + private Integer code; + + /** + * 响应消息 + */ + @ApiModelProperty("响应消息") + private String message; + + /** + * 业务返回 + */ + @ApiModelProperty("业务返回") + private T data; + + + public static Response success(T data){ + return Response.builder().code(200).message("Success").data(data).build(); + } + + public static Response success(T data, String message){ + return Response.builder().code(200).message(message).data(data).build(); + } + + public static Response error(String message){ + return Response.error(SERVER_ERROR,message); + } + + public static Response authError(String message){ + return Response.error(AUTH_ERROR,message); + } + + public static Response error(Integer code, String message){ + return Response.builder().code(code).message(message).data(null).build(); + } + + + + +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinAck.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinAck.java new file mode 100644 index 0000000000..67fa121e17 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinAck.java @@ -0,0 +1,66 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +/** + * @author guann1n9 + * @date 2022/9/14 11:56 PM + */ +public class TakinAck { + + public static final String COMMAND = "COMMAND"; + + public static final String CONFIG = "CONFIG"; + + private String tenantCode; + + + private String envCode; + + + private String appName; + + + private String ackType; + + private T ack; + + + public String getTenantCode() { + return tenantCode; + } + + public void setTenantCode(String tenantCode) { + this.tenantCode = tenantCode; + } + + public String getEnvCode() { + return envCode; + } + + public void setEnvCode(String envCode) { + this.envCode = envCode; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getAckType() { + return ackType; + } + + public void setAckType(String ackType) { + this.ackType = ackType; + } + + public T getAck() { + return ack; + } + + public void setAck(T ack) { + this.ack = ack; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommand.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommand.java new file mode 100644 index 0000000000..c576965542 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommand.java @@ -0,0 +1,93 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +/** + * @author guann1n9 + * @date 2022/9/14 10:16 AM + */ +public class TakinCommand implements Serializable { + + public static final String SIMULATOR_AGENT = "simulator-agent"; + + /** + * resource id 确保唯一 + */ + private String commandId; + + + private String commandType; + + + private String tenantCode; + + + private String agentSpecification; + + + private String envCode; + + + private String appName; + + + private String commandParam; + + + public String getCommandId() { + return commandId; + } + + public void setCommandId(String commandId) { + this.commandId = commandId; + } + + public String getCommandType() { + return commandType; + } + + public String getAgentSpecification() { + return agentSpecification; + } + + public void setAgentSpecification(String agentSpecification) { + this.agentSpecification = agentSpecification; + } + + public void setCommandType(String commandType) { + this.commandType = commandType; + } + + public String getTenantCode() { + return tenantCode; + } + + public void setTenantCode(String tenantCode) { + this.tenantCode = tenantCode; + } + + public String getEnvCode() { + return envCode; + } + + public void setEnvCode(String envCode) { + this.envCode = envCode; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getCommandParam() { + return commandParam; + } + + public void setCommandParam(String commandParam) { + this.commandParam = commandParam; + } + +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommandAck.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommandAck.java new file mode 100644 index 0000000000..40d3e3d425 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinCommandAck.java @@ -0,0 +1,64 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +/** + * @author guann1n9 + * @date 2022/9/14 1:46 PM + */ +public class TakinCommandAck implements Serializable { + + /** + * 命令id + */ + private String commandId; + + /** + * 命令类型 + */ + private String commandType; + + /** + * 探针检查结果 + */ + private boolean success; + + /** + * 命令响应 + */ + private String response; + + + public String getCommandId() { + return commandId; + } + + public void setCommandId(String commandId) { + this.commandId = commandId; + } + + public String getCommandType() { + return commandType; + } + + public void setCommandType(String commandType) { + this.commandType = commandType; + } + + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getResponse() { + return response; + } + + public void setResponse(String response) { + this.response = response; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfig.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfig.java new file mode 100644 index 0000000000..c9b89ea511 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfig.java @@ -0,0 +1,89 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +/** + * @author guann1n9 + * @date 2022/9/14 10:12 PM + */ +public class TakinConfig implements Serializable { + + /** + * resource id 确保唯一 + */ + private String configId; + + + private String configType; + + + private String tenantCode; + + + private String envCode; + + + private String appName; + + + private String agentSpecification; + + + private String configParam; + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getConfigType() { + return configType; + } + + public void setConfigType(String configType) { + this.configType = configType; + } + + public String getConfigParam() { + return configParam; + } + + public void setConfigParam(String configParam) { + this.configParam = configParam; + } + + public String getAgentSpecification() { + return agentSpecification; + } + + public void setAgentSpecification(String agentSpecification) { + this.agentSpecification = agentSpecification; + } + + public String getTenantCode() { + return tenantCode; + } + + public void setTenantCode(String tenantCode) { + this.tenantCode = tenantCode; + } + + public String getEnvCode() { + return envCode; + } + + public void setEnvCode(String envCode) { + this.envCode = envCode; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfigAck.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfigAck.java new file mode 100644 index 0000000000..4efffa895e --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/TakinConfigAck.java @@ -0,0 +1,57 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo.agent.command; + +import java.io.Serializable; + +/** + * @author guann1n9 + * @date 2022/9/14 10:12 PM + */ +public class TakinConfigAck implements Serializable { + + /** + * resource id 确保唯一 + */ + private String configId; + + + private String configType; + + + private boolean success; + + + private String response; + + + public String getConfigId() { + return configId; + } + + public void setConfigId(String configId) { + this.configId = configId; + } + + public String getConfigType() { + return configType; + } + + public void setConfigType(String configType) { + this.configType = configType; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getResponse() { + return response; + } + + public void setResponse(String response) { + this.response = response; + } +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceAckController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceAckController.java new file mode 100644 index 0000000000..a45e26ca95 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceAckController.java @@ -0,0 +1,34 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import com.alibaba.fastjson.JSON; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; +import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.TakinAck; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/agent") +@Api(tags = "接口: 压测资源探针检测结果上报") +@Slf4j +public class PressureResourceAckController { + + @Autowired + private PressureResourceCommandService pressureResourceCommandService; + + + @PostMapping("/ack") + public void commandAck(@RequestBody TakinAck takinAck){ + log.info("收到压测资源响应:{}", JSON.toJSONString(takinAck)); + pressureResourceCommandService.processAck(takinAck); + } + + + +} From 6dcda739e36c899e3514178c5bdc6990d4d76070 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 10:18:16 +0800 Subject: [PATCH 066/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 18 ++++++++++++++++-- .../impl/PressureResourceServiceImpl.java | 11 +++++------ .../mapper/mysql/PressureResourceMapper.java | 4 ++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 944291cccd..5ccc5e2cd9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -15,6 +15,7 @@ import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; +import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.vo.excel.ExcelSheetVO; @@ -30,6 +31,8 @@ import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceTableQueryParam; +import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -286,10 +289,21 @@ public void importDsConfig(MultipartFile file, Long resourceId) { */ @Override public void export(HttpServletResponse response, Long resourceId) { - PressureResourceEntity resourceEntity = pressureResourceMapper.selectById(resourceId); + PressureResourceEntity resourceEntity = pressureResourceMapper.queryByIdNoTenant(resourceId); if (resourceEntity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "资源配置未获取到"); } + TenantInfoExt tenantInfo = WebPluginUtils.getTenantInfo(resourceEntity.getTenantId()); + String tenantCode = ""; + String tenantAppKey = ""; + if (tenantInfo != null) { + tenantCode = tenantInfo.getTenantCode(); + tenantAppKey = tenantInfo.getTenantAppKey(); + } + // 复制上下文 + WebPluginUtils.setTraceTenantContext(resourceEntity.getTenantId(), + tenantAppKey, resourceEntity.getEnvCode(), tenantCode, ContextSourceEnum.HREF.getCode()); + // 判断隔离方式 if (resourceEntity.getIsolateType() == IsolateTypeEnum.SHADOW_TABLE.getCode()) { // 影子表导出 @@ -356,7 +370,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt tableQueryParam.setResourceId(resource.getId()); List tableEntityList = pressureResourceRelateTableDAO.queryList(tableQueryParam); // 按照数据源分组下 - Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getId()))); + Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getUniqueKey()))); if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); for (Map.Entry> entry : tableEntityMap.entrySet()) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 6a5ea4c32f..b0bbf398cd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -131,9 +131,6 @@ public void add(PressureResourceInput input) { SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(input.getName()); sceneCreateParam.setType(1); - Map features = Maps.newHashMap(); - features.put("PR", "PressureResource"); - sceneCreateParam.setFeatures(JSON.toString(features)); Long sourceId = sceneDAO.insert(sceneCreateParam); // 更新sourceId @@ -229,7 +226,9 @@ public void update(PressureResourceInput input) { param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); + if (input.getType().intValue() == SourceTypeEnum.MANUAL.getCode()) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); + } } PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); updateResourceEntity.setId(input.getId()); @@ -246,8 +245,8 @@ public void update(PressureResourceInput input) { SceneUpdateParam updateParam = new SceneUpdateParam(); updateParam.setSceneName(input.getName()); updateParam.setUpdateTime(new Date()); - updateParam.setId(list.get(0).getId()); - updateParam.setUserId(WebPluginUtils.traceUserId()); + updateParam.setId(input.getSourceId()); + updateParam.setUserId(input.getUserId()); sceneDAO.update(updateParam); } // 修改详情 diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java index f6bc83c078..791d78f612 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceMapper.java @@ -15,4 +15,8 @@ public interface PressureResourceMapper @InterceptorIgnore(tenantLine = "true") @Select("select * from t_pressure_resource where is_delete=0") List getAll(); + + @InterceptorIgnore(tenantLine = "true") + @Select("select * from t_pressure_resource where id = #{id} and is_delete=0") + PressureResourceEntity queryByIdNoTenant(@Param("id") Long id); } From 1beb48d930fc0e43dcbece83b57a1ebc2432149d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 10:24:04 +0800 Subject: [PATCH 067/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index bd7dc563ff..b7364b1299 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -292,6 +292,7 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu if (businessFlowParseRequest.getId() != null) { SceneResult sceneResult = sceneDao.getSceneDetail(businessFlowParseRequest.getId()); isPressureResouce = sceneResult.isPressureResource(); + testPlanName = sceneResult.getSceneName(); } String businessFlowName = null; if (isPressureResouce || businessFlowParseRequest.getId() == null) { @@ -312,11 +313,6 @@ public BusinessFlowDetailResponse parseScriptAndSave(BusinessFlowParseRequest bu @Transactional(rollbackFor = Exception.class) public SceneCreateParam saveBusinessFlow(Integer source, String testName, List data, FileManageUpdateRequest fileManageCreateRequest, List pluginList, boolean isPressureResource, Long extId) { - //保存业务流程 - if (isPressureResource) { - SceneResult sceneResult = sceneDao.getSceneDetail(extId); - testName = sceneResult.getSceneName(); - } SceneCreateParam sceneCreateParam = new SceneCreateParam(); sceneCreateParam.setSceneName(testName); sceneCreateParam.setId(extId); @@ -365,6 +361,7 @@ public SceneCreateParam saveBusinessFlow(Integer source, String testName, List Date: Thu, 15 Sep 2022 10:31:03 +0800 Subject: [PATCH 068/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/job/PressureResourceCommandJob.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 87a86576ee..1f27ed3d93 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -43,8 +43,8 @@ public class PressureResourceCommandJob implements SimpleJob { private PressureResourceCommandService pressureResourceCommandService; @Resource - @Qualifier("pressureResouceThreadPool") - private ThreadPoolExecutor pressureResouceThreadPool; + @Qualifier("pressureResourceThreadPool") + private ThreadPoolExecutor pressureResourceThreadPool; @Resource private DistributedLock distributedLock; @@ -57,12 +57,12 @@ public void execute(ShardingContext shardingContext) { log.warn("当前压测资源准备配置为空,暂不处理!!!"); return; } - resourceList.forEach(resource ->{ + resourceList.forEach(resource -> { String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resource.getId()); if (distributedLock.checkLock(lockKey)) { return; } - pressureResouceThreadPool.execute(() -> { + pressureResourceThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); if (!tryLock) { return; From dc8b0868397ad58e2acd1bfc8b9aa0e56611b97e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 10:51:56 +0800 Subject: [PATCH 069/318] =?UTF-8?q?=E5=90=8D=E5=AD=97=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/job/PressureResourceCommandJob.java | 2 ++ .../vo/agent/command/Response.java | 19 +++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 1f27ed3d93..e16fe76b83 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -76,8 +76,10 @@ public void execute(ShardingContext shardingContext) { if (tenantInfoExt == null) { return; } + String tenantCode = tenantInfoExt.getTenantCode(); String tenantAppKey = tenantInfoExt.getTenantAppKey(); commonExt.setTenantAppKey(tenantAppKey); + commonExt.setTenantCode(tenantCode); WebPluginUtils.setTraceTenantContext(commonExt); pressureResourceCommandService.pushCommand(resource.getId()); } finally { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java index 07209d2b25..8149f809a8 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/agent/command/Response.java @@ -11,7 +11,8 @@ @Data @Builder public class Response { - + public Response() { + } /** * 200正常 401 未获取到登录信息 500异常 @@ -42,27 +43,25 @@ public class Response { private T data; - public static Response success(T data){ + public static Response success(T data) { return Response.builder().code(200).message("Success").data(data).build(); } - public static Response success(T data, String message){ + public static Response success(T data, String message) { return Response.builder().code(200).message(message).data(data).build(); } - public static Response error(String message){ - return Response.error(SERVER_ERROR,message); + public static Response error(String message) { + return Response.error(SERVER_ERROR, message); } - public static Response authError(String message){ - return Response.error(AUTH_ERROR,message); + public static Response authError(String message) { + return Response.error(AUTH_ERROR, message); } - public static Response error(Integer code, String message){ + public static Response error(Integer code, String message) { return Response.builder().code(code).message(message).data(null).build(); } - - } From 80607ef7cee244e42173d117eb2e7720779b4e07 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 10:55:55 +0800 Subject: [PATCH 070/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index b7364b1299..7d25f79b9b 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -361,7 +361,7 @@ public SceneCreateParam saveBusinessFlow(Integer source, String testName, List Date: Thu, 15 Sep 2022 17:25:11 +0800 Subject: [PATCH 071/318] null check --- .../impl/PressureResourceCommandServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 40695a75d2..e3ff20cf80 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -234,6 +234,9 @@ private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEnti private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRelateDsEntity dsEntity,List tableEntities){ + if(!StringUtils.hasText(dsEntity.getBusinessDatabase()) || !StringUtils.hasText(dsEntity.getBusinessUserName()) || !StringUtils.hasText(dsEntity.getAppName())){ + return null; + } TakinCommand takinCommand = new TakinCommand(); takinCommand.setCommandId(commandId(resource.getId(), dsEntity.getId())); takinCommand.setAppName(dsEntity.getAppName()); @@ -245,7 +248,6 @@ private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRel //命令 JdbcTableCompareCommand tableCompareCommand = new JdbcTableCompareCommand(); tableCompareCommand.setShadowType(resource.getIsolateType()); - DataSourceEntity bizDataSource = new DataSourceEntity(); bizDataSource.setUrl(dsEntity.getBusinessDatabase()); bizDataSource.setUserName(dsEntity.getBusinessUserName()); From 28cdf1e4288c2bbdb89b74f2676e88cc2cc5cd79 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 17:29:24 +0800 Subject: [PATCH 072/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/DataSourceUtil.java | 17 +++++++++++++++ .../PressureResourceCommonServiceImpl.java | 12 ++++++----- .../impl/PressureResourceDsServiceImpl.java | 21 +++++++++++-------- .../vo/agent/command/Response.java | 6 ++++++ .../PressureResourceRelateAppDAOImpl.java | 4 +++- .../PressureResourceRelateTableDAOImpl.java | 9 ++++++-- .../PressureResourceRelateAppMapper.java | 9 ++++---- .../PressureResourceRelateTableMapper.java | 12 +++++------ 8 files changed, 62 insertions(+), 28 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java index b2135fa7ab..5ee3a7940e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java @@ -24,4 +24,21 @@ public static String generateKey(PressureResourceRelateDsEntity dsEntity) { dsEntity.getEnvCode()); return MD5Util.getMD5(key); } + + /** + * 数据源唯一 + * + * @return + */ + public static String generateDsKey(Long resourceId, + String businessDatabase, + Long tenantId, + String envCode) { + String key = String.format("%d-%s-%d-%s", + resourceId, + businessDatabase, + tenantId, + envCode); + return MD5Util.getMD5(key); + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 7abfef7b53..7fa5be4f06 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -193,8 +193,7 @@ public void processAutoPressureResource() { */ @Override public void processAutoPressureResourceRelate(Long resourceId) { - processRemoteCall(null); - + //processRemoteCall(null); PressureResourceDetailQueryParam detailQueryParam = new PressureResourceDetailQueryParam(); detailQueryParam.setResourceId(resourceId); List detailEntityList = pressureResourceDetailDAO.getList(detailQueryParam); @@ -207,7 +206,6 @@ public void processAutoPressureResourceRelate(Long resourceId) { Pair, List> pair = processDsAndTable(detailEntity); // 远程调用梳理 List remoteCallEntityList = processRemoteCall(detailEntity); - pressureResourceRelateDsDAO.saveOrUpdate(pair.getLeft()); pressureResourceRelateTableDAO.saveOrUpdate(pair.getRight()); pressureResourceRelateRemoteCallDAO.saveOrUpdate(remoteCallEntityList); @@ -324,7 +322,7 @@ public void processAutoPressureResourceRelate(Long resourceId) { dsEntity.setType(SourceTypeEnum.AUTO.getCode()); dsEntity.setGmtCreate(new Date()); // 生成唯一key,关联表 - String uniqueKey = DataSourceUtil.generateKey(dsEntity); + String uniqueKey = DataSourceUtil.generateDsKey(resourceId, database, dsEntity.getTenantId(), dsEntity.getEnvCode()); dsEntity.setUniqueKey(uniqueKey); dsEntityList.add(dsEntity); @@ -377,11 +375,12 @@ private List processRemoteCall(PressureR // 查询trace日志 TraceInfoQueryDTO traceInfoQueryDTO = new TraceInfoQueryDTO(); - // 查询agent上报的日志 traceInfoQueryDTO.setRpcType(detailEntity.getRpcType()); + // 查询agent上报的日志 traceInfoQueryDTO.setQueryType(1); traceInfoQueryDTO.setSortField("startDate"); traceInfoQueryDTO.setSortType("desc"); + traceInfoQueryDTO.setPageSize(5); EntranceRuleDTO entranceRuleDTO = new EntranceRuleDTO(); entranceRuleDTO.setBusinessType(BusinessTypeEnum.NORMAL_BUSINESS.getType()); entranceRuleDTO.setAppName(detailEntity.getAppName()); @@ -393,6 +392,9 @@ private List processRemoteCall(PressureR return Collections.emptyList(); } // + entryTraceInfoDTOPagingList.getList().stream().forEach(entry -> { + + }); return Collections.emptyList(); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 5ccc5e2cd9..9791922741 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -3,16 +3,14 @@ import cn.hutool.core.collection.ListUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Lists; +import com.pamirs.takin.common.util.MD5Util; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.ExtInfo; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateDsInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateDsRequest; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateTableInput; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; -import io.shulie.takin.web.biz.service.pressureresource.common.DbNameUtil; -import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.JoinFlagEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.*; import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.biz.utils.xlsx.ExcelUtils; import io.shulie.takin.web.common.enums.ContextSourceEnum; @@ -441,6 +439,7 @@ private void processShadowTable(Long resourceId, Map dsEntityList = pressureResourceRelateDsDAO.queryByParam(queryParam); if (CollectionUtils.isEmpty(dsEntityList)) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "数据源不存在"); + // TODO,新增数据源 + continue; } - // 获取数据源Id - String dsKey = dsEntityList.get(0).getUniqueKey(); + // 根据dsKey去更新 dsKey = resource_id + business_database + String dsKey = DataSourceUtil.generateDsKey(resourceId, database, WebPluginUtils.traceTenantId(), WebPluginUtils.traceEnvCode()); + List inputs = entry.getValue(); for (int i = 0; i < inputs.size(); i++) { PressureResourceRelateTableInput input = inputs.get(i); @@ -467,10 +468,12 @@ private void processShadowTable(Long resourceId, Map { public Response() { } + public Response(Integer code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + /** * 200正常 401 未获取到登录信息 500异常 */ diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java index 1d3976f796..803dc272f3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateAppDAOImpl.java @@ -63,7 +63,9 @@ public void saveOrUpdate(List list) { if (CollectionUtils.isEmpty(list)) { return; } - pressureResourceRelateAppMapper.saveOrUpdate(list); + list.stream().forEach(appEntity -> { + pressureResourceRelateAppMapper.saveOrUpdate(appEntity); + }); } private QueryWrapper getWrapper(PressureResourceAppQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java index 8da94125ed..5780887830 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -24,7 +26,8 @@ * @date 2022/9/1 8:38 PM */ @Service -public class PressureResourceRelateTableDAOImpl implements PressureResourceRelateTableDAO { +public class PressureResourceRelateTableDAOImpl + implements PressureResourceRelateTableDAO { private static Logger logger = LoggerFactory.getLogger(PressureResourceRelateTableDAOImpl.class); @Resource @@ -84,7 +87,9 @@ public void saveOrUpdate(List tableEntitys) { if (CollectionUtils.isEmpty(tableEntitys)) { return; } - pressureResourceRelateTableMapper.saveOrUpdate(tableEntitys); + tableEntitys.stream().forEach(table -> { + pressureResourceRelateTableMapper.saveOrUpdate(table); + }); } private QueryWrapper getWrapper(PressureResourceTableQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java index e7b6e631e8..e82eae9511 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java @@ -16,11 +16,12 @@ public interface PressureResourceRelateAppMapper "resource_id,detail_id,app_name,status,node_num,join_pressure,type," + "tenant_id,env_code,gmt_create)" + "values " + - "" + "(#{item.resourceId},#{item.detailId},#{item.appName},#{item.status},#{item.nodeNum},#{item.joinPressure}," + "#{item.type},#{item.tenantId},#{item.envCode},#{item.gmtCreate})" + - "" + - " ON DUPLICATE KEY UPDATE status =values(status),gmt_modified=now()" + + " ON DUPLICATE KEY UPDATE gmt_modified=now()" + + "" + + " ,status = values(status)" + + "" + "") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("item") PressureResourceRelateAppEntity item); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java index 6081a6e4cf..b140bf0ffd 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateTableMapper.java @@ -6,8 +6,6 @@ import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; -import java.util.List; - public interface PressureResourceRelateTableMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") @@ -16,12 +14,12 @@ public interface PressureResourceRelateTableMapper "resource_id,ds_key,status,business_table,shadow_table,join_flag,ext_info," + "type,remark,tenant_id,env_code,gmt_create)" + "values " + - "" + "(#{item.resourceId},#{item.dsKey},#{item.status},#{item.businessTable},#{item.shadowTable},#{item.joinFlag}," + "#{item.extInfo},#{item.type},#{item.remark},#{item.tenantId},#{item.envCode},#{item.gmtCreate})" + - "" + - " ON DUPLICATE KEY UPDATE " + - " shadow_table =values(shadow_table),gmt_modified=now()" + + " ON DUPLICATE KEY UPDATE gmt_modified=now()" + + " " + + " ,shadow_table =values(shadow_table)" + + "" + "") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("item") PressureResourceRelateTableEntity item); } From 1833b171838be003ab566033bd1208751cc9e8ff Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 17:40:51 +0800 Subject: [PATCH 073/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index b0bbf398cd..44a5a7229a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -228,6 +228,8 @@ public void update(PressureResourceInput input) { if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { if (input.getType().intValue() == SourceTypeEnum.MANUAL.getCode()) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); + } else { + input.setName(input.getName() + DateUtil.formatDateTime(new Date())); } } PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); From 3ec7559aeafd2432e319b83f2b08f6e50fefecb9 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 17:54:27 +0800 Subject: [PATCH 074/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 9791922741..e1e6f99c43 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -186,15 +186,17 @@ public PagingList listByDs(PressureResourceRelateDsR List appEntitys = pressureResourceRelateAppDAO.queryList(appQueryParam); if (CollectionUtils.isNotEmpty(appEntitys)) { Map> appMap = appEntitys.stream().collect(Collectors.groupingBy(app -> app.getAppName())); - List appVOList = appNames.stream().map(app -> { - PressureResourceRelateAppVO appVO = new PressureResourceRelateAppVO(); - appVO.setAppName(app); - appVO.setJoinPressure(JoinFlagEnum.NO.getCode()); - if (appMap.containsKey(app)) { - appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); - } - return appVO; - }).collect(Collectors.toList()); + List appVOList = appNames.stream() + .filter(app -> StringUtils.isBlank(app)) + .map(app -> { + PressureResourceRelateAppVO appVO = new PressureResourceRelateAppVO(); + appVO.setAppName(app); + appVO.setJoinPressure(JoinFlagEnum.NO.getCode()); + if (appMap.containsKey(app)) { + appVO.setJoinPressure(appMap.get(app).get(0).getJoinPressure()); + } + return appVO; + }).collect(Collectors.toList()); tmpVO.setAppList(appVOList); } tmpVO.setSize(tmpList.size()); From 6b9af029e0abcfb7986917cbd53124e4f8dc514e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 18:00:13 +0800 Subject: [PATCH 075/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index e1e6f99c43..ddf735f1ea 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -332,7 +332,7 @@ private void exportShadowDB(HttpServletResponse response, PressureResourceEntity ShadowDbExcelVO excelVO = new ShadowDbExcelVO(); excelVO.setBusinessDatabase(entity.getBusinessDatabase()); excelVO.setShadowDatabase(entity.getShadowDatabase()); - excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getType())); + excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getIsolateType())); excelVO.setShadowUsername(entity.getShadowUserName()); excelVO.setShadowPassword(entity.getShadowPassword()); return excelVO; From d5c3b84e5da30641c01e1c8a96382b87a0e50486 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 18:18:12 +0800 Subject: [PATCH 076/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ApplicationServiceImpl.java | 123 ++++--- .../impl/LinkManageServiceImpl.java | 323 +++++++++--------- .../pressureresource/PressureResourceDAO.java | 3 + .../impl/PressureResourceDAOImpl.java | 7 + 4 files changed, 260 insertions(+), 196 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index c57ab3e07a..c659e775c1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -3,6 +3,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -20,10 +21,13 @@ import java.util.stream.Collectors; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import cn.hutool.Hutool; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.date.*; import com.alibaba.fastjson.JSONObject; import cn.hutool.core.bean.BeanUtil; @@ -67,6 +71,7 @@ import io.shulie.takin.web.biz.pojo.input.application.*; import io.shulie.takin.web.biz.pojo.input.whitelist.WhitelistImportFromExcelInput; import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; +import io.shulie.takin.web.biz.pojo.output.application.ApplicationErrorOutput; import io.shulie.takin.web.biz.pojo.request.activity.ActivityCreateRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationListByUpgradeRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationNodeOperateProbeRequest; @@ -79,6 +84,7 @@ import io.shulie.takin.web.biz.pojo.response.application.ShadowServerConfigurationResponse; import io.shulie.takin.web.biz.pojo.vo.application.ApplicationDsManageExportVO; import io.shulie.takin.web.biz.service.*; +import io.shulie.takin.web.biz.service.application.ApplicationErrorService; import io.shulie.takin.web.biz.service.application.ApplicationNodeService; import io.shulie.takin.web.biz.service.dsManage.DsService; import io.shulie.takin.web.biz.service.linkmanage.LinkGuardService; @@ -143,6 +149,7 @@ import org.springframework.web.multipart.MultipartFile; import static io.shulie.takin.web.common.common.Response.PAGE_TOTAL_HEADER; + import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -285,6 +292,11 @@ public class ApplicationServiceImpl implements ApplicationService, WhiteListCons @Qualifier("agentDataThreadPool") private ThreadPoolExecutor agentDataThreadPool; + @Autowired + private ApplicationErrorService applicationErrorService; + + @Value("${takin.redis.error.expire:90}") + private Integer errorExpireTime; @PostConstruct public void init() { @@ -392,7 +404,7 @@ public Response> getApplicationList(ApplicationQueryRequest public Long getAccessErrorNum() { ApplicationQueryRequestV2 requestV2 = new ApplicationQueryRequestV2(); requestV2.setAccessStatus(3); - return this.pageApplication(requestV2).getTotal(); + return this.pageApplication(requestV2).getTotal(); } // @Override @@ -508,9 +520,9 @@ public Response> getApplicationList(ApplicationQueryRequestV }).collect(Collectors.toList()); } Response.setHeaders( - new HashMap(1) {{ - put(PAGE_TOTAL_HEADER, String.valueOf(paging.getTotal())); - }}); + new HashMap(1) {{ + put(PAGE_TOTAL_HEADER, String.valueOf(paging.getTotal())); + }}); return Response.success(resultList); } @@ -524,6 +536,21 @@ public Response getApplicationInfo(String id) { return Response.success(new ApplicationVo()); } + //判断是否有异常信息来获取状态,t_application_mnt中的不准 + ApplicationErrorQueryInput queryInput = new ApplicationErrorQueryInput(); + queryInput.setApplicationId(tApplicationMnt.getApplicationId()); + + List errors = applicationErrorService.list(queryInput); + // 判断下时间 + if (CollectionUtil.isNotEmpty(errors)) { + // 错误信息已被倒序排序,这里去第一个错误信息,超过1分半的则忽略 2022-09-01 18:11:31 + String time = errors.get(0).getTime(); + DateTime dateTime = DateUtil.parse(time, DatePattern.NORM_DATETIME_FORMAT); + if (DateUtil.between(DateTime.now(), dateTime, DateUnit.SECOND) < errorExpireTime) { + tApplicationMnt.setAccessStatus(3); + } + } + // 取应用节点数信息 List applicationResultList = applicationDAO.getApplicationByName( Collections.singletonList(tApplicationMnt.getApplicationName())); @@ -703,7 +730,7 @@ public void uploadAppStatus(NodeUploadDataDTO param) { } @Override - public synchronized void syncApplicationAccessStatus() { + public void syncApplicationAccessStatus() { try { // 应用分页大小 int pageSize = 20; @@ -742,6 +769,7 @@ public synchronized void syncApplicationAccessStatus() { // 正常的应用 Set normalApplicationIdSet = new HashSet<>(20); + Map errorInfo = Maps.newHashMap(); // 遍历比对 for (ApplicationListResult application : applicationList) { String applicationName = application.getApplicationName(); @@ -758,6 +786,8 @@ public synchronized void syncApplicationAccessStatus() { || !Objects.equals(amdbApplication.getInstanceInfo().getInstanceOnlineAmount(), nodeNum)) { // amdbApplicationMap 不存在, map.get 不存在, 或者节点数不一致 errorApplicationIdSet.add(applicationId); + errorInfo.put(applicationId, "节点数不一致"); + } else if (!amdbApplicationMap.isEmpty() && (amdbApplication = amdbApplicationMap.get(applicationName)) != null @@ -780,7 +810,7 @@ public synchronized void syncApplicationAccessStatus() { } - this.syncApplicationAccessStatus(applicationList,errorApplicationIdSet); + this.syncApplicationAccessStatus(applicationList, errorApplicationIdSet, errorInfo); } while (applicationNumber == pageSize); // 先执行一遍, 然后如果分页应用数量等于pageSize, 那么查询下一页 @@ -790,7 +820,8 @@ public synchronized void syncApplicationAccessStatus() { log.debug("定时同步应用状态完成!"); } - private void syncApplicationAccessStatus(List applicationList,Set errorApplicationIdSet) { + private void syncApplicationAccessStatus(List applicationList + , Set errorApplicationIdSet, Map errorInfo) { if (CollectionUtils.isNotEmpty(applicationList)) { for (ApplicationListResult app : applicationList) { Map result = applicationDAO.getStatus(app.getApplicationName()); @@ -801,6 +832,11 @@ private void syncApplicationAccessStatus(List application if (StringUtils.isBlank(e)) { String a = (String) result.get("a"); if (StringUtils.isEmpty(a)) { + if (!io.shulie.takin.utils.string.StringUtil + .isEmpty(errorInfo.get(app.getApplicationId()))) { + //节点不一致 + applicationDAO.updateStatus(app.getApplicationId(), e); + } continue; } e = "探针接入异常"; @@ -823,7 +859,8 @@ private void syncApplicationAccessStatus(List application param.setSwitchErrorMap(map); uploadAccessStatus(param); } else { - applicationDAO.updateStatus(app.getApplicationId());} + applicationDAO.updateStatus(app.getApplicationId()); + } } } } @@ -1227,8 +1264,8 @@ public String getApplicationNameByApplicationId(Long applicationId) { @Override public void uninstallAllAgent(List appIds) { try { - appIds = this.filterAppIds(appIds,AgentConstants.UNINSTALL); - if (CollectionUtils.isEmpty(appIds)){ + appIds = this.filterAppIds(appIds, AgentConstants.UNINSTALL); + if (CollectionUtils.isEmpty(appIds)) { log.info("所有需要卸载的应用都被过滤掉了"); return; } @@ -1345,24 +1382,29 @@ public PagingList pageApplication(ApplicationQueryReq queryApplicationParam.setUpdateStartTime(request.getUpdateStartTime()); queryApplicationParam.setUpdateEndTime(request.getUpdateEndTime()); IPage applicationListResultPage = applicationDAO.pageByParam(queryApplicationParam); - if (org.springframework.util.CollectionUtils.isEmpty(applicationListResultPage.getRecords())){ + + if (org.springframework.util.CollectionUtils.isEmpty(applicationListResultPage.getRecords())) { return PagingList.empty(); } -// if (applicationListResultPage.getTotal() == 0) { -// return PagingList.empty(); -// } List records = applicationListResultPage.getRecords(); List responseList = records.stream().map(result -> { ApplicationListResponseV2 response = BeanUtil.copyProperties(result, ApplicationListResponseV2.class); response.setId(result.getApplicationId().toString()); + + // 跟应用详情再对比下,同步下状态 + Response vo = this.getApplicationInfo(response.getId()); + if (vo.getSuccess() && vo.getData() != null) { + response.setAccessStatus(vo.getData().getAccessStatus()); + } return response; }).collect(Collectors.toList()); return PagingList.of(responseList, applicationListResultPage.getTotal()); } @Override - public PagingList listApplicationByUpgrade(ApplicationListByUpgradeRequest request) { + public PagingList listApplicationByUpgrade(ApplicationListByUpgradeRequest + request) { QueryApplicationByUpgradeParam param = BeanUtil.copyProperties(request, QueryApplicationByUpgradeParam.class); param.setTenantId(WebPluginUtils.traceTenantId()); param.setEnvCode(WebPluginUtils.traceEnvCode()); @@ -1384,7 +1426,7 @@ public PagingList listApplicationByUpgrade(App @Override public Response operateCheck(List appIds, String operate) { - if (CollectionUtils.isEmpty(appIds) || StringUtil.isEmpty(operate)){ + if (CollectionUtils.isEmpty(appIds) || StringUtil.isEmpty(operate)) { return Response.fail("参数异常"); } @@ -1400,25 +1442,25 @@ public Response operateCheck(List appIds, String operate) { List appNames = applicationList.stream().map(ApplicationDetailResult::getApplicationName).collect( Collectors.toList()); List applicationNodeProbeResults = applicationNodeProbeDAO.listByAppNameAndOperate(ApplicationNodeProbeOperateEnum.UNINSTALL.getCode(), appNames); - long count = applicationNodeProbeResults == null ? 0 : applicationNodeProbeResults.stream().map(ApplicationNodeProbeResult::getApplicationName).distinct().count(); - if (AgentConstants.UNINSTALL.equals(operate)){ - if (count > 0){ + long count = applicationNodeProbeResults == null ? 0 : applicationNodeProbeResults.stream().map(ApplicationNodeProbeResult::getApplicationName).distinct().count(); + if (AgentConstants.UNINSTALL.equals(operate)) { + if (count > 0) { //构建返回数据 List distinct = applicationNodeProbeResults.stream().map(ApplicationNodeProbeResult::getApplicationName).distinct().collect(Collectors.toList()); StringBuilder sb = new StringBuilder(); distinct.forEach(s -> { sb.append(s).append("\n"); }); - return Response.success(String.format("已选择%d个应用,%d个应用已处于卸载状态\n应用名称为:",appIds.size(),count) + sb); - }else { - return Response.success(String.format("已选择%d个应用,点击继续卸载",appIds.size())); + return Response.success(String.format("已选择%d个应用,%d个应用已处于卸载状态\n应用名称为:", appIds.size(), count) + sb); + } else { + return Response.success(String.format("已选择%d个应用,点击继续卸载", appIds.size())); } } - if (AgentConstants.RESUME.equals(operate)){ - if (appIds.size() > count){ + if (AgentConstants.RESUME.equals(operate)) { + if (appIds.size() > count) { //构建返回数据 List result = appNames; - if (count != 0){ + if (count != 0) { List distinct = applicationNodeProbeResults.stream().map(ApplicationNodeProbeResult::getApplicationName).distinct().collect(Collectors.toList()); result = result.stream().filter(o -> !distinct.contains(o)).collect(Collectors.toList()); } @@ -1426,9 +1468,9 @@ public Response operateCheck(List appIds, String operate) { result.forEach(s -> { sb.append(s).append("\n"); }); - return Response.success(String.format("已选择%d个应用,%d个应用处于非卸载状态\n应用名称为:",appIds.size(), appIds.size() - count) + sb); - }else { - return Response.success(String.format("已选择%d个应用,点击继续",appIds.size())); + return Response.success(String.format("已选择%d个应用,%d个应用处于非卸载状态\n应用名称为:", appIds.size(), appIds.size() - count) + sb); + } else { + return Response.success(String.format("已选择%d个应用,点击继续", appIds.size())); } } return Response.fail("上传的状态当前不支持校验"); @@ -1436,7 +1478,7 @@ public Response operateCheck(List appIds, String operate) { @Override public List filterAppIds(List appIds, String operate) { - if (CollectionUtils.isEmpty(appIds) || StringUtil.isEmpty(operate)){ + if (CollectionUtils.isEmpty(appIds) || StringUtil.isEmpty(operate)) { return null; } @@ -1456,12 +1498,12 @@ public List filterAppIds(List appIds, String operate) { List uninstallAppNames = applicationNodeProbeResults.stream().map(ApplicationNodeProbeResult::getApplicationName) .collect(Collectors.toList()); //需要卸载的数据,需要不存在卸载的数据 - if (AgentConstants.UNINSTALL.equals(operate)){ + if (AgentConstants.UNINSTALL.equals(operate)) { return applicationList.stream().filter(o -> !uninstallAppNames.contains(o.getApplicationName())).map(o -> o.getApplicationId().toString()).collect(Collectors.toList()); } //需要恢复的数据,需要是已经卸载的数据 - if (AgentConstants.RESUME.equals(operate)){ + if (AgentConstants.RESUME.equals(operate)) { return applicationList.stream().filter(o -> uninstallAppNames.contains(o.getApplicationName())).map(o -> o.getApplicationId().toString()).collect(Collectors.toList()); } @@ -1537,7 +1579,8 @@ private Map, Integer> doGetAppDataByAppName( } private Map, Integer> doSortAndPageAndConvertActivityId( - List data, List attentionList, String orderBy, int pageSize, int current, + List data, List attentionList, String orderBy, int pageSize, + int current, int total, String nameActivity) { if (CollectionUtils.isEmpty(data)) { return null; @@ -1743,7 +1786,8 @@ private void saveConfig2Db(Long applicationId, Map>> configMap) { + private void saveRemoteCallFromImport(ApplicationDetailResult + detailResult, Map>> configMap) { // map 取出数据 ArrayList> importRemoteCall; if ((importRemoteCall = configMap.get(AppConfigSheetEnum.REMOTE_CALL.getDesc())) == null) { @@ -1820,7 +1864,8 @@ private void savePluginsListFromImport(ApplicationDetailResult application, } } - private void saveBlacklistFromImport(Long applicationId, Map>> configMap) { + private void saveBlacklistFromImport(Long + applicationId, Map>> configMap) { // map 取出数据 ArrayList> importBlackLists; if ((importBlackLists = configMap.get(AppConfigSheetEnum.BLACK.getDesc())) == null) { @@ -1867,7 +1912,8 @@ private void saveBlacklistFromImport(Long applicationId, Map>> configMap) { + private void saveWhiteListFromImport(Long + applicationId, Map>> configMap) { // map 取出数据 ArrayList> importWhiteLists; if ((importWhiteLists = configMap.get(AppConfigSheetEnum.WHITE.getDesc())) == null) { @@ -2253,7 +2299,8 @@ private ExcelSheetVO getWhiteListSheet(ApplicationDetailResult * @param shadowMqConsumers 影子消费者实例列表 * @return 导出实例列表 */ - private List shadowConsumer2ExcelModel(List shadowMqConsumers) { + private List shadowConsumer2ExcelModel + (List shadowMqConsumers) { if (CollectionUtils.isEmpty(shadowMqConsumers)) { return Collections.emptyList(); } @@ -2492,8 +2539,8 @@ public Response uploadMiddlewareStatus(Map reques @Override public void resumeAllAgent(List appIds) { try { - appIds = this.filterAppIds(appIds,AgentConstants.RESUME); - if (CollectionUtils.isEmpty(appIds)){ + appIds = this.filterAppIds(appIds, AgentConstants.RESUME); + if (CollectionUtils.isEmpty(appIds)) { log.info("所有需要恢复的应用都被过滤掉了"); return; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java index 2c2acba759..0a050c0bd3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java @@ -89,7 +89,9 @@ import io.shulie.takin.web.data.dao.linkmanage.BusinessLinkManageDAO; import io.shulie.takin.web.data.dao.linkmanage.LinkManageDAO; import io.shulie.takin.web.data.dao.linkmanage.SceneDAO; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.dao.scene.SceneLinkRelateDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.param.activity.ActivityQueryParam; import io.shulie.takin.web.data.param.linkmanage.BusinessLinkManageQueryParam; import io.shulie.takin.web.data.param.linkmanage.LinkManageQueryParam; @@ -163,24 +165,26 @@ public class LinkManageServiceImpl implements LinkManageService { private ActivityDAO activityDAO; @Autowired private SceneLinkRelateDAO sceneLinkRelateDAO; + @Autowired + private PressureResourceDAO pressureResourceDAO; private static void iteratorChildNodes(TopologicalGraphNode parentNode, - List childList, - List nodes, - List relations) { + List childList, + List nodes, + List relations) { if (CollectionUtils.isEmpty(childList)) { return; } List filterChildList = childList.stream().filter(distinctByName(Category::getApplicationName)).collect( - Collectors.toList()); + Collectors.toList()); int index = 0; for (Category category : filterChildList) { TopologicalGraphNode childNode = new TopologicalGraphNode(); childNode.setKey(parentNode.getKey() + "." + index); NodeClassEnum nodeClassEnum = getNodeClassEnumByApplicationName( - category.getApplicationName()); + category.getApplicationName()); MiddlewareTypeEnum middlewareTypeEnum = getMiddlewareTypeEnumByApplicationName( - category.getApplicationName()); + category.getApplicationName()); childNode.setNodeType(nodeClassEnum.getCode()); childNode.setNodeClass(nodeClassEnum.getDesc()); if (middlewareTypeEnum != null) { @@ -358,64 +362,64 @@ public Response getBussisnessLinks(BusinessQueryVo vo) { List queryResult = tBusinessLinkManageTableMapper.selectBussinessLinkListBySelective2(queryVo, WebPluginUtils.getQueryAllowUserIdList()); //用户ids List userIds = queryResult.stream() - .map(BusinessLinkDto::getUserId) - .filter(Objects::nonNull) - .collect(Collectors.toList()); + .map(BusinessLinkDto::getUserId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); //用户信息Map key:userId value:user对象 Map userMap = WebPluginUtils.getUserMapByIds(userIds); List pageData = PageUtils.getPage(true, vo.getCurrentPage(), vo.getPageSize(), queryResult); if (CollectionUtils.isNotEmpty(pageData) && pageData.size() > 0) { pageData.forEach( - single -> { - BusinessActiveViewListDto dto = new BusinessActiveViewListDto(); - dto.setBusinessActiceId(single.getId()); - dto.setBusinessActiveName(single.getLinkName()); - dto.setCandelete(single.getCandelete()); - dto.setCreateTime(single.getCreateTime()); - dto.setIschange(single.getIschange()); - //负责人id - dto.setUserId(single.getUserId()); - //负责人name - String userName = Optional.ofNullable(userMap.get(single.getUserId())) - .map(UserExt::getName) - .orElse(""); - dto.setUserName(userName); - WebPluginUtils.fillQueryResponse(dto); - //新版本设置业务域 - if (StringUtils.isNotBlank(single.getBusinessDomain())) { - String desc = DictionaryCache.getObjectByParam("domain", - Integer.parseInt(single.getBusinessDomain())).getLabel(); - if (StringUtils.isNotBlank(desc)) { - dto.setBusinessDomain(desc); - } else { - //兼容历史版本 - LinkDomainEnum domainEnum = LinkDomainEnumMapping.getByCode(single.getBusinessDomain()); - dto.setBusinessDomain(domainEnum == null ? null : domainEnum.getDesc()); + single -> { + BusinessActiveViewListDto dto = new BusinessActiveViewListDto(); + dto.setBusinessActiceId(single.getId()); + dto.setBusinessActiveName(single.getLinkName()); + dto.setCandelete(single.getCandelete()); + dto.setCreateTime(single.getCreateTime()); + dto.setIschange(single.getIschange()); + //负责人id + dto.setUserId(single.getUserId()); + //负责人name + String userName = Optional.ofNullable(userMap.get(single.getUserId())) + .map(UserExt::getName) + .orElse(""); + dto.setUserName(userName); + WebPluginUtils.fillQueryResponse(dto); + //新版本设置业务域 + if (StringUtils.isNotBlank(single.getBusinessDomain())) { + String desc = DictionaryCache.getObjectByParam("domain", + Integer.parseInt(single.getBusinessDomain())).getLabel(); + if (StringUtils.isNotBlank(desc)) { + dto.setBusinessDomain(desc); + } else { + //兼容历史版本 + LinkDomainEnum domainEnum = LinkDomainEnumMapping.getByCode(single.getBusinessDomain()); + dto.setBusinessDomain(domainEnum == null ? null : domainEnum.getDesc()); + } } + TechLinkDto techLinkDto = single.getTechLinkDto(); + + if (techLinkDto != null) { + List middlewareInfos = + tMiddlewareInfoMapper.selectBySystemProcessId(techLinkDto.getLinkId()); + List middleWareStrings = middlewareInfos + .stream() + .map(entity -> + entity.getMiddlewareName() + " " + entity.getMiddlewareVersion() + ).collect(Collectors.toList()); + dto.setMiddleWareList(middleWareStrings); + dto.setSystemProcessName(single.getTechLinkDto().getTechLinkName()); + } + result.add(dto); } - TechLinkDto techLinkDto = single.getTechLinkDto(); - - if (techLinkDto != null) { - List middlewareInfos = - tMiddlewareInfoMapper.selectBySystemProcessId(techLinkDto.getLinkId()); - List middleWareStrings = middlewareInfos - .stream() - .map(entity -> - entity.getMiddlewareName() + " " + entity.getMiddlewareVersion() - ).collect(Collectors.toList()); - dto.setMiddleWareList(middleWareStrings); - dto.setSystemProcessName(single.getTechLinkDto().getTechLinkName()); - } - result.add(dto); - } ); } return Response.success(result, CollectionUtils.isEmpty(queryResult) ? 0 : queryResult.size()); } private void convertBusinessLinkResponse(BusinessLinkResult businessLinkResult, - BusinessLinkResponse businessLinkResponse) { + BusinessLinkResponse businessLinkResponse) { businessLinkResponse.setId(businessLinkResult.getId()); businessLinkResponse.setLinkName(businessLinkResult.getLinkName()); businessLinkResponse.setEntrance(businessLinkResult.getEntrace()); @@ -455,9 +459,9 @@ public BusinessLinkResponse getBussisnessLinkDetail(String id) { Long systemProcessId = businessLinkResponse.getTechLinkResponse().getLinkId(); if (systemProcessId != null) { LinkManageResult linkManageResult = linkManageDAO.selectLinkManageById( - businessLinkResult.getTechLinkResult().getLinkId()); + businessLinkResult.getTechLinkResult().getLinkId()); businessLinkResponse.getTechLinkResponse().setMiddleWareResponses( - getMiddleWareResponses(linkManageResult.getApplicationName())); + getMiddleWareResponses(linkManageResult.getApplicationName())); //处理系统流程前端展示数据 TechLinkResponse techLinkResponse = businessLinkResponse.getTechLinkResponse(); String linkBody; @@ -527,7 +531,10 @@ public String deleteScene(String sceneId) { //过滤出可以设置为删除状态的业务活动id并设置为可以删除 enableBusinessActiveCanDelte(businessLinkIds); + // 删除压测资源准备 + pressureResourceDAO.delete(Long.valueOf(sceneId)); transactionManager.commit(status); + return "删除成功"; } catch (TakinWebException e) { transactionManager.rollback(status); @@ -545,13 +552,13 @@ private void enableBusinessActiveCanDelte(List businessLinkIds) { return; } List candeletedList = businessLinkIds.stream() - .map(single -> { - long count = sceneLinkRelateDAO.countByBusinessLinkId(single); - if (!(count > 0)) { - return single; - } - return 0L; - }).collect(Collectors.toList()); + .map(single -> { + long count = sceneLinkRelateDAO.countByBusinessLinkId(single); + if (!(count > 0)) { + return single; + } + return 0L; + }).collect(Collectors.toList()); tBusinessLinkManageTableMapper.cannotdelete(candeletedList, 0L); } @@ -565,7 +572,7 @@ public Response> getScenes(SceneQueryVo vo) { } //查询业务活动是否存在虚拟业务活动 List sceneIds = pageData.stream().map(SceneDto::getId).map(String::valueOf).collect( - Collectors.toList()); + Collectors.toList()); SceneLinkRelateParam relateParam = new SceneLinkRelateParam(); relateParam.setSceneIds(sceneIds); List relateResults = sceneLinkRelateDAO.getList(relateParam); @@ -575,25 +582,25 @@ public Response> getScenes(SceneQueryVo vo) { ActivityQueryParam param = new ActivityQueryParam(); param.setBusinessType(BusinessTypeEnum.VIRTUAL_BUSINESS.getType()); param.setActivityIds(relateResults.stream().map(SceneLinkRelateResult::getBusinessLinkId) - .map(Long::parseLong).collect(Collectors.toList())); + .map(Long::parseLong).collect(Collectors.toList())); List results = activityDAO.getActivityList(param); map = relateResults.stream().collect( - Collectors.toMap( - SceneLinkRelateResult::getSceneId, - data -> results.stream() - .filter(activity -> data.getBusinessLinkId().equals(String.valueOf(activity.getActivityId()))) - .collect(Collectors.toList()), - (List newValueList, List oldValueList) -> { - oldValueList.addAll(newValueList); - return oldValueList; - })); + Collectors.toMap( + SceneLinkRelateResult::getSceneId, + data -> results.stream() + .filter(activity -> data.getBusinessLinkId().equals(String.valueOf(activity.getActivityId()))) + .collect(Collectors.toList()), + (List newValueList, List oldValueList) -> { + oldValueList.addAll(newValueList); + return oldValueList; + })); } Map> finalMap = map; //用户ids List userIds = sceneDtos.stream().map(SceneDto::getUserId).filter(Objects::nonNull) - .collect(Collectors.toList()); + .collect(Collectors.toList()); Map userExtMap = WebPluginUtils.getUserMapByIds(userIds); pageData = pageData.stream().map(single -> { long count = sceneLinkRelateDAO.countBySceneId(single.getId()); @@ -620,19 +627,19 @@ public Response> getMiddleWareInfo(StatisticsQuery try { List list = tMiddlewareInfoMapper.selectforstatistics(vo); List pageData = PageUtils.getPage(true, vo.getCurrentPage(), vo.getPageSize(), - list); + list); pageData = pageData.stream().peek( - single -> { - long id = single.getMiddleWareId(); - List techLinkIds = tMiddlewareLinkRelateMapper.selectTechIdsByMiddleWareIds(id); - single.setSystemProcessCount(String.valueOf(techLinkIds.size())); - //统计业务流程条数 - if (CollectionUtils.isNotEmpty(techLinkIds)) { - int countBusinessProcess = sceneLinkRelateDAO.countByTechLinkIds(techLinkIds); - single.setBussinessProcessCount(String.valueOf(countBusinessProcess)); + single -> { + long id = single.getMiddleWareId(); + List techLinkIds = tMiddlewareLinkRelateMapper.selectTechIdsByMiddleWareIds(id); + single.setSystemProcessCount(String.valueOf(techLinkIds.size())); + //统计业务流程条数 + if (CollectionUtils.isNotEmpty(techLinkIds)) { + int countBusinessProcess = sceneLinkRelateDAO.countByTechLinkIds(techLinkIds); + single.setBussinessProcessCount(String.valueOf(countBusinessProcess)); + } } - } ).collect(Collectors.toList()); return Response.success(pageData, CollectionUtils.isEmpty(list) ? 0 : list.size()); @@ -707,8 +714,8 @@ public LinkHistoryInfoDto getChart() { String businessFlowTotalCount = String.valueOf(businessFlowTotalCountNum); String businessFlowPressureCount = "0"; String businessFlowPressureRate = - (businessFlowTotalCountNum == 0L || "0".equals(businessFlowPressureCount)) ? - "0" : String.valueOf(businessFlowTotalCountNum / Long.parseLong(businessFlowPressureCount)); + (businessFlowTotalCountNum == 0L || "0".equals(businessFlowPressureCount)) ? + "0" : String.valueOf(businessFlowTotalCountNum / Long.parseLong(businessFlowPressureCount)); dto.setBusinessFlowTotalCount(businessFlowTotalCount); dto.setBusinessFlowPressureCount(businessFlowPressureCount); dto.setBusinessFlowPressureRate(businessFlowPressureRate); @@ -718,7 +725,7 @@ public LinkHistoryInfoDto getChart() { String applicationTotalCount = String.valueOf(applicationTotalCountNum); String applicationPressureCount = "0"; String applicationPressureRate = (applicationTotalCountNum == 0L || "0".equals(applicationPressureCount)) ? - "0" : String.valueOf(applicationTotalCountNum / Long.parseLong(applicationPressureCount)); + "0" : String.valueOf(applicationTotalCountNum / Long.parseLong(applicationPressureCount)); dto.setApplicationTotalCount(applicationTotalCount); dto.setApplicationPressureCount(applicationPressureCount); dto.setApplicationPressureRate(applicationPressureRate); @@ -731,7 +738,7 @@ public List businessProcessMiddleWares(List ids) { List result = Lists.newArrayList(); List businessIds = - ids.stream().map(id -> Long.parseLong(String.valueOf(id))).collect(Collectors.toList()); + ids.stream().map(id -> Long.parseLong(String.valueOf(id))).collect(Collectors.toList()); //查系统流程id集合 List techIds = tBusinessLinkManageTableMapper.selectTechIdsByBusinessIds(businessIds); if (CollectionUtils.isEmpty(techIds)) { @@ -744,7 +751,7 @@ public List businessProcessMiddleWares(List ids) { } //查中间件信息 List midllewareIdslong = middleWareIds.stream() - .map(Long::parseLong).collect(Collectors.toList()); + .map(Long::parseLong).collect(Collectors.toList()); result = tMiddlewareInfoMapper.selectByIds(midllewareIdslong); @@ -755,7 +762,7 @@ public List businessProcessMiddleWares(List ids) { public List getAllMiddleWareTypeList() { List result = Lists.newArrayList(); List infos = tMiddlewareInfoMapper - .selectBySelective(new TMiddlewareInfo()); + .selectBySelective(new TMiddlewareInfo()); //按照中间件类型去重 infos.forEach(info -> { @@ -767,10 +774,10 @@ public List getAllMiddleWareTypeList() { result.add(entity); }); List distinct = result.stream() - .collect(Collectors.collectingAndThen(Collectors.toCollection( - () -> new TreeSet<>( - Comparator.comparing(MiddleWareEntity::getMiddleWareType))), - ArrayList::new)); + .collect(Collectors.collectingAndThen(Collectors.toCollection( + () -> new TreeSet<>( + Comparator.comparing(MiddleWareEntity::getMiddleWareType))), + ArrayList::new)); return distinct; } @@ -801,7 +808,7 @@ public List getAllSystemProcessCanrelateBusiness(Stri serachTable.setCanDelete(0); List tables = - tLinkManageTableMapper.selectBySelective(serachTable); + tLinkManageTableMapper.selectBySelective(serachTable); if (CollectionUtils.isNotEmpty(tables)) { tables.forEach(table -> { SystemProcessIdAndNameDto dto = new SystemProcessIdAndNameDto(); @@ -863,14 +870,14 @@ public void addBusinessFlow(BusinessFlowVo vo) throws Exception { private void diableDeleteBusinessActives(List relates) { List relateBusinessLinkIds = - relates.stream().map( - single -> { - if (single.getBusinessLinkId() != null) { - return Long.parseLong(single.getBusinessLinkId()); - } - return 0L; - } - ).collect(Collectors.toList()); + relates.stream().map( + single -> { + if (single.getBusinessLinkId() != null) { + return Long.parseLong(single.getBusinessLinkId()); + } + return 0L; + } + ).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(relateBusinessLinkIds)) { tBusinessLinkManageTableMapper.cannotdelete(relateBusinessLinkIds, 1L); @@ -948,28 +955,28 @@ private Long addScene(BusinessFlowVo vo) { private void infoCompletion(List relates) { //获取出所有的业务活动ID List businessIds - = relates - .stream() - .map(relate -> Long.parseLong(relate.getBusinessLinkId())).collect(Collectors.toList()); + = relates + .stream() + .map(relate -> Long.parseLong(relate.getBusinessLinkId())).collect(Collectors.toList()); List tables = - tBusinessLinkManageTableMapper.selectByPrimaryKeys(businessIds); + tBusinessLinkManageTableMapper.selectByPrimaryKeys(businessIds); Map> map - = tables.stream() - .collect(Collectors.groupingBy( - BusinessLinkManageTable::getLinkId)); + = tables.stream() + .collect(Collectors.groupingBy( + BusinessLinkManageTable::getLinkId)); relates.forEach( - relate -> { - Long businessLinkId = Long.parseLong(relate.getBusinessLinkId()); - List lists = map.get(businessLinkId); - if (CollectionUtils.isNotEmpty(lists)) { - BusinessLinkManageTable table = lists.get(0); - relate.setEntrance(table.getEntrace()); - relate.setTechLinkId(table.getRelatedTechLink()); + relate -> { + Long businessLinkId = Long.parseLong(relate.getBusinessLinkId()); + List lists = map.get(businessLinkId); + if (CollectionUtils.isNotEmpty(lists)) { + BusinessLinkManageTable table = lists.get(0); + relate.setEntrance(table.getEntrace()); + relate.setTechLinkId(table.getRelatedTechLink()); + } } - } ); } @@ -981,7 +988,7 @@ private void infoCompletion(List relates) { * @return - */ private List parsing(List children, String parentId, Long sceneId, - List result) { + List result) { for (BusinessFlowTree businessFlowTree : children) { SceneLinkRelateSaveParam relate = new SceneLinkRelateSaveParam(); BusinessFlowTree child = businessFlowTree; @@ -1011,7 +1018,7 @@ public BusinessFlowDto getBusinessFlowDetail(Long id) { Scene scene = tSceneMapper.selectByPrimaryKey(id); if (Objects.isNull(scene)) { throw new TakinWebException(TakinWebExceptionEnum.LINK_VALIDATE_ERROR, - id + "对应的业务流程不存在"); + id + "对应的业务流程不存在"); } dto.setId(String.valueOf(scene.getId())); @@ -1021,18 +1028,18 @@ public BusinessFlowDto getBusinessFlowDetail(Long id) { List relates = sceneLinkRelateDAO.selectBySceneId(id); List existBusinessActiveIds = - relates.stream().map(relate -> - { - ExistBusinessActiveDto single = new ExistBusinessActiveDto(); - single.setKey(relate.getFrontUuidKey()); - single.setId(relate.getBusinessLinkId()); - return single; - }).collect(Collectors.toList()); + relates.stream().map(relate -> + { + ExistBusinessActiveDto single = new ExistBusinessActiveDto(); + single.setKey(relate.getFrontUuidKey()); + single.setId(relate.getBusinessLinkId()); + return single; + }).collect(Collectors.toList()); dto.setExistBusinessActive(existBusinessActiveIds); List roots = sceneLinkRelateDAO.listRecursion(id, WebPluginUtils.traceTenantId(), - WebPluginUtils.traceEnvCode()); + WebPluginUtils.traceEnvCode()); dto.setRoots(roots); //中间件信息 @@ -1040,7 +1047,7 @@ public BusinessFlowDto getBusinessFlowDetail(Long id) { if (CollectionUtils.isNotEmpty(techLinkIds)) { List middleWareIdStrings = tMiddlewareLinkRelateMapper.selectMiddleWareIdsByTechIds(techLinkIds); List middleWareIds = middleWareIdStrings.stream().map(Long::parseLong).collect( - Collectors.toList()); + Collectors.toList()); List middleWareEntityList = Lists.newArrayList(); if (CollectionUtils.isNotEmpty(middleWareIds)) { @@ -1084,10 +1091,10 @@ private void recordBusinessFlowLog(BusinessFlowVo vo) throws Exception { List oldSceneLinkRelateList = sceneLinkRelateDAO.selectBySceneId(Long.parseLong(vo.getId())); List oldBusinessLinkIdList = oldSceneLinkRelateList.stream().map(SceneLinkRelateResult::getBusinessLinkId).map( - Long::parseLong).collect(Collectors.toList()); + Long::parseLong).collect(Collectors.toList()); List currentSceneLinkRelateList = parsingTree(vo, Long.parseLong(vo.getId())); List currentBusinessLinkIdList = currentSceneLinkRelateList.stream().map( - SceneLinkRelateSaveParam::getBusinessLinkId).map(Long::parseLong).collect(Collectors.toList()); + SceneLinkRelateSaveParam::getBusinessLinkId).map(Long::parseLong).collect(Collectors.toList()); List toDeleteIdList = Lists.newArrayList(); toDeleteIdList.addAll(oldBusinessLinkIdList); toDeleteIdList.removeAll(currentBusinessLinkIdList); @@ -1096,25 +1103,25 @@ private void recordBusinessFlowLog(BusinessFlowVo vo) throws Exception { toAddIdList.removeAll(oldBusinessLinkIdList); String selectiveContent = ""; if (oldScene.getSceneName().equals(vo.getSceneName()) - && CollectionUtils.isEmpty(toAddIdList) - && CollectionUtils.isEmpty(toDeleteIdList)) { + && CollectionUtils.isEmpty(toAddIdList) + && CollectionUtils.isEmpty(toDeleteIdList)) { OperationLogContextHolder.ignoreLog(); } if (CollectionUtils.isNotEmpty(toAddIdList)) { List businessLinkManageTableList = tBusinessLinkManageTableMapper - .selectBussinessLinkByIdList(toAddIdList); + .selectBussinessLinkByIdList(toAddIdList); if (CollectionUtils.isNotEmpty(businessLinkManageTableList)) { String addNodeNames = businessLinkManageTableList.stream().map(BusinessLinkManageTable::getLinkName) - .collect(Collectors.joining(",")); + .collect(Collectors.joining(",")); selectiveContent = selectiveContent + "|新增节点:" + addNodeNames; } } if (CollectionUtils.isNotEmpty(toDeleteIdList)) { List businessLinkManageTableList = tBusinessLinkManageTableMapper - .selectBussinessLinkByIdList(toDeleteIdList); + .selectBussinessLinkByIdList(toDeleteIdList); if (CollectionUtils.isNotEmpty(businessLinkManageTableList)) { String deleteNodeNames = businessLinkManageTableList.stream().map(BusinessLinkManageTable::getLinkName) - .collect(Collectors.joining(",")); + .collect(Collectors.joining(",")); selectiveContent = selectiveContent + "|删除节点:" + deleteNodeNames; } } @@ -1132,13 +1139,13 @@ private void enableBusinessDelete(BusinessFlowVo vo) { } List candeleteList = oldRelates.stream() - .map(single -> - { - if (single.getBusinessLinkId() == null) { - return 0L; - } - return Long.parseLong(single.getBusinessLinkId()); - }).collect(Collectors.toList()); + .map(single -> + { + if (single.getBusinessLinkId() == null) { + return 0L; + } + return Long.parseLong(single.getBusinessLinkId()); + }).collect(Collectors.toList()); if (CollectionUtils.isEmpty(candeleteList)) { return; } @@ -1171,10 +1178,10 @@ public List cascadeMiddleWareNameAndVersion(String middleWare info.setMiddlewareType(middleWareType); } List infos = - tMiddlewareInfoMapper.selectBySelective(info); + tMiddlewareInfoMapper.selectBySelective(info); if (CollectionUtils.isNotEmpty(infos)) { Map> groupByMiddleWareName = - infos.stream().collect(Collectors.groupingBy(TMiddlewareInfo::getMiddlewareName)); + infos.stream().collect(Collectors.groupingBy(TMiddlewareInfo::getMiddlewareName)); for (Map.Entry> entry : groupByMiddleWareName.entrySet()) { MiddleWareNameDto dto = new MiddleWareNameDto(); @@ -1184,13 +1191,13 @@ public List cascadeMiddleWareNameAndVersion(String middleWare List values = entry.getValue(); if (CollectionUtils.isNotEmpty(values)) { List children = values.stream().map( - single -> { - MiddleWareVersionDto versionDto = new MiddleWareVersionDto(); - String version = single.getMiddlewareVersion(); - versionDto.setLabel(version); - versionDto.setValue(version); - return versionDto; - } + single -> { + MiddleWareVersionDto versionDto = new MiddleWareVersionDto(); + String version = single.getMiddlewareVersion(); + versionDto.setLabel(version); + versionDto.setValue(version); + return versionDto; + } ).collect(Collectors.toList()); dto.setChildren(children); } @@ -1205,7 +1212,7 @@ public List getDistinctMiddleWareName() { List result = Lists.newArrayList(); List infos = tMiddlewareInfoMapper - .selectBySelective(new TMiddlewareInfo()); + .selectBySelective(new TMiddlewareInfo()); //按照中间件类型去重 infos.forEach(single -> { @@ -1215,8 +1222,8 @@ public List getDistinctMiddleWareName() { result.add(entity); }); return result.stream() - .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( - Comparator.comparing(MiddleWareNameDto::getLabel))), ArrayList::new)); + .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(MiddleWareNameDto::getLabel))), ArrayList::new)); } @Override @@ -1229,7 +1236,7 @@ public List getMiddleWareResponses(String applicationName) { List middleWareResponses = Lists.newArrayList(); List supportList = agentPluginSupportService.queryAgentPluginSupportList(); List applicationResultList = applicationDAO.getApplicationByName( - Collections.singletonList(applicationName)); + Collections.singletonList(applicationName)); if (CollectionUtils.isEmpty(applicationResultList)) { return middleWareResponses; } @@ -1239,7 +1246,7 @@ public List getMiddleWareResponses(String applicationName) { } for (LibraryResult libraryResult : libraryResults) { MiddleWareResponse middleWareResponse = agentPluginSupportService.convertLibInfo(supportList, - libraryResult.getLibraryName()); + libraryResult.getLibraryName()); if (!Objects.isNull(middleWareResponse)) { middleWareResponses.add(middleWareResponse); } @@ -1262,15 +1269,15 @@ public List getBusinessActiveByFlowId(Long busines List sceneLinkRelates = sceneLinkRelateDAO.selectBySceneId(businessFlowId); if (CollectionUtils.isNotEmpty(sceneLinkRelates)) { List businessActivityIds = sceneLinkRelates.stream().map(o -> Long.valueOf(o.getBusinessLinkId())) - .collect(Collectors.toList()); + .collect(Collectors.toList()); List businessLinkManageTables = tBusinessLinkManageTableMapper - .selectBussinessLinkByIdList(businessActivityIds); + .selectBussinessLinkByIdList(businessActivityIds); //因为businessLinkManageTables打乱了业务活动的顺序 所以使用businessActivityIds sceneBusinessActivityRefVOS = businessActivityIds.stream().map(activityId -> { BusinessActivityNameResponse businessActivityNameResponse = new BusinessActivityNameResponse(); businessActivityNameResponse.setBusinessActivityId(activityId); BusinessLinkManageTable linkManageTable = businessLinkManageTables.stream().filter( - link -> activityId.equals(link.getLinkId())).findFirst().orElse(null); + link -> activityId.equals(link.getLinkId())).findFirst().orElse(null); if (Objects.nonNull(linkManageTable)) { businessActivityNameResponse.setBusinessActivityName(linkManageTable.getLinkName()); businessActivityNameResponse.setType(linkManageTable.getType()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java index cc4731ab78..f50f957ecf 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDAO.java @@ -42,4 +42,7 @@ public interface PressureResourceDAO { * @return */ List getAll(); + + + void delete(Long sourceId); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java index 12584dada7..27b1206368 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java @@ -69,6 +69,13 @@ public List getAll() { return pressureResourceMapper.getAll(); } + @Override + public void delete(Long sourceId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("source_id", sourceId); + pressureResourceMapper.delete(queryWrapper); + } + private QueryWrapper getWrapper(PressureResourceQueryParam param) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (param == null) { From 31b8d59e22eed78c2083aa6bacc8dc3123a54443 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 20:06:00 +0800 Subject: [PATCH 077/318] =?UTF-8?q?=E8=84=9A=E6=9C=AC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceRelateDsDAOImpl.java | 4 +++- .../mysql/PressureResourceRelateDsMapper.java | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java index 18e69ecbcc..ca6b85498c 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateDsDAOImpl.java @@ -61,7 +61,9 @@ public void saveOrUpdate(List list) { if (CollectionUtils.isEmpty(list)) { return; } - pressureResourceRelateDsMapper.saveOrUpdate(list); + list.stream().forEach(dsEntity -> { + pressureResourceRelateDsMapper.saveOrUpdate(dsEntity); + }); } private QueryWrapper getWrapper(PressureResourceDsQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java index 781ff2abe5..5ce767d546 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java @@ -14,15 +14,22 @@ public interface PressureResourceRelateDsMapper @InterceptorIgnore(tenantLine = "true") @Insert("") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("item") PressureResourceRelateDsEntity item); } From 27d055d028e0b335161b67fb0765d2b620b227d4 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 15 Sep 2022 20:15:14 +0800 Subject: [PATCH 078/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/data/mapper/mysql/PressureResourceRelateDsMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java index 5ce767d546..8e95d00c47 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java @@ -14,7 +14,7 @@ public interface PressureResourceRelateDsMapper @InterceptorIgnore(tenantLine = "true") @Insert("") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("item") PressureResourceRelateRemoteCallEntity item); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java index 4b26a2bf9b..44e48b03c4 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java @@ -28,6 +28,10 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @Column(name = "`resource_id`") private Long resourceId; + @ApiModelProperty("detail_id") + @Column(name = "`detail_id`") + private Long detailId; + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") @Column(name = "`status`") private Integer status; @@ -38,7 +42,7 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @ApiModelProperty("接口类型") @Column(name = "`interface_type`") - private String interfaceType; + private Integer interfaceType; @ApiModelProperty("服务端应用名") @Column(name = "`server_app_name`") @@ -54,7 +58,11 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @ApiModelProperty("配置类型0:未配置,1:白名单配置,2:返回值mock,3:转发mock") @Column(name = "`type`") - private Byte type; + private Integer type; + + @ApiModelProperty("是否放行(0:是 1:否)") + @Column(name = "`pass`") + private Integer pass; @ApiModelProperty("mock返回值") @Column(name = "`mock_return_value`") @@ -66,7 +74,7 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @ApiModelProperty("是否同步") @Column(name = "`is_synchronize`") - private Byte isSynchronize; + private Integer isSynchronize; @ApiModelProperty("接口子类型") @Column(name = "`interface_child_type`") @@ -74,7 +82,7 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @ApiModelProperty("是否手动录入 0:否;1:是") @Column(name = "`manual_tag`") - private Byte manualTag; + private Integer manualTag; @ApiModelProperty("应用名,接口名称,接口类型,租户id,环境code求md5") @Column(name = "`md5`") @@ -82,7 +90,7 @@ public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { @ApiModelProperty("是否有效 0:有效;1:无效") @Column(name = "`is_deleted`") - private Byte isDeleted; + private Integer isDeleted; @Column(name = "`gmt_create`") @ApiModelProperty("创建时间") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java new file mode 100644 index 0000000000..4d12213ebd --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java @@ -0,0 +1,25 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceRemoteCallQueryParam extends PageBaseDTO { + @ApiModelProperty("查询的接口名") + private String queryInterfaceName; + + @ApiModelProperty("接口类型") + private String interfaceChildType; + + @ApiModelProperty("是否放行(0:是 1:否)") + private Integer pass; + + @ApiModelProperty("状态") + private Integer status; +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java new file mode 100644 index 0000000000..359131ac4e --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java @@ -0,0 +1,52 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMockInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateRemoteCallRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceRemoteCallService; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 链路资源配置-远程调用 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:51 PM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/remotecall") +@Api(tags = "接口: 数据源隔离") +@Slf4j +public class PressureResoureRemouteCallController { + @Resource + private PressureResourceRemoteCallService pressureResourceRemoteCallService; + + @ApiOperation("链路压测资源-远程调用列表") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public ResponseResult list(PressureResourceRelateRemoteCallRequest request) { + return ResponseResult.success(pressureResourceRemoteCallService.pageList(request)); + } + + @ApiOperation("链路压测资源-远程调用-update") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ResponseResult mock(@RequestBody PressureResourceMockInput input) { + pressureResourceRemoteCallService.update(input); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-远程调用-平均响应时间") + @RequestMapping(value = "/avgRt", method = RequestMethod.GET) + public ResponseResult avgRt(PressureResourceRelateRemoteCallRequest input) { + return ResponseResult.success(pressureResourceRemoteCallService.getServiceAvgRt(input.getId())); + } + +} From c2c11ce70210207720b9032473e0229efc756361 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 16 Sep 2022 14:26:44 +0800 Subject: [PATCH 083/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceRelateRemoteCallDAOImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java index 37e52dfa25..dd41481a72 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java @@ -51,7 +51,7 @@ public void saveOrUpdate(List remoteCall public PagingList pageList(PressureResourceRemoteCallQueryParam param) { QueryWrapper queryWrapper = this.getWrapper(param); Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); - queryWrapper.orderByDesc("gmt_modified"); + queryWrapper.orderByAsc("rpcId"); IPage pageList = pressureResourceRelateRemoteCallMapper.selectPage(page, queryWrapper); if (pageList.getRecords().isEmpty()) { return PagingList.empty(); From 9b50205fffe6e8c024f871b0e1d33384fb4f80f5 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 16 Sep 2022 14:37:56 +0800 Subject: [PATCH 084/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/query/application/ApplicationRemoteCallQueryDTO.java | 2 +- .../bean/result/application/ApplicationRemoteCallDTO.java | 1 + .../impl/PressureResourceCommonServiceImpl.java | 1 + .../mapper/mysql/PressureResourceRelateRemoteCallMapper.java | 4 ++-- .../PressureResourceRelateRemoteCallEntity.java | 4 ++++ 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/application/ApplicationRemoteCallQueryDTO.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/application/ApplicationRemoteCallQueryDTO.java index 1f7d1ab413..1e0e0f38d6 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/application/ApplicationRemoteCallQueryDTO.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/query/application/ApplicationRemoteCallQueryDTO.java @@ -16,7 +16,7 @@ public class ApplicationRemoteCallQueryDTO { @JsonProperty("currentPage") private Integer currentPage; @JsonProperty("linkId") - private Integer linkId; + private String linkId; @JsonProperty("methodName") private String methodName; @JsonProperty("middlewareName") diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java index 6df5f2a0bc..ea832f70f6 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java @@ -29,5 +29,6 @@ public class ApplicationRemoteCallDTO { private String upAppName; @JsonProperty("defaultWhiteInfo") private String defaultWhiteInfo; + private String rpcId; } \ No newline at end of file diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 0732613fd7..204bc5649e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -410,6 +410,7 @@ private List processRemoteCall(PressureR callEntity.setAppName(item.getAppName()); callEntity.setStatus(StatusEnum.NO.getCode()); callEntity.setPass(1); + callEntity.setRpcId(item.getRpcId()); callEntity.setInterfaceName(RemoteCallUtils.getInterfaceNameByRpcName(item.getMiddlewareName(), item.getServiceName(), item.getMethodName())); callEntity.setInterfaceType(appRemoteCallService.getInterfaceType(item.getMethodName(), voList)); if (!childEntityMap.containsKey(item.getMiddlewareDetail())) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java index d06c1b593d..578c94ecd7 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java @@ -13,12 +13,12 @@ public interface PressureResourceRelateRemoteCallMapper @InterceptorIgnore(tenantLine = "true") @Insert("") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java index 065a356eaa..b150943cc0 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateRemoteCallMapper.java @@ -23,10 +23,10 @@ public interface PressureResourceRelateRemoteCallMapper " " + " ,server_app_name =values(server_app_name)" + "" + - " " + + " " + " ,type =values(type)" + "" + - " " + + " " + " ,pass =values(pass)" + "" + "") From 5cdc1f69892cc51760649dd301bb5b50b55e8881 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 21 Sep 2022 16:23:32 +0800 Subject: [PATCH 107/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceRelateRemoteCallRequest.java | 3 +++ .../PressureResourceRemoteCallServiceImpl.java | 16 ++++++++++++++++ .../PressureResourceRemoteCallQueryParam.java | 4 ++++ 3 files changed, 23 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateRemoteCallRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateRemoteCallRequest.java index 33f83dd967..6707a28f9f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateRemoteCallRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceRelateRemoteCallRequest.java @@ -30,5 +30,8 @@ public class PressureResourceRelateRemoteCallRequest extends PageBaseDTO { @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") private Integer status; + + @ApiModelProperty("entry") + private String entry; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java index 9919a75354..f7861c4c26 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java @@ -14,10 +14,14 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateRemoteCallVO; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDetailDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateRemoteCallDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateRemoteCallMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceRemoteCallQueryParam; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +49,9 @@ public class PressureResourceRemoteCallServiceImpl implements PressureResourceRe @Resource private PressureResourceRelateRemoteCallMapper pressureResourceRelateRemoteCallMapper; + @Resource + private PressureResourceDetailDAO pressureResourceDetailDAO; + /** * @param request * @return @@ -53,6 +60,15 @@ public class PressureResourceRemoteCallServiceImpl implements PressureResourceRe public PagingList pageList(PressureResourceRelateRemoteCallRequest request) { PressureResourceRemoteCallQueryParam param = new PressureResourceRemoteCallQueryParam(); BeanUtils.copyProperties(request, param); + if (StringUtils.isNotBlank(request.getEntry())) { + PressureResourceDetailQueryParam queryParam = new PressureResourceDetailQueryParam(); + queryParam.setLinkId(request.getEntry()); + List list = pressureResourceDetailDAO.getList(queryParam); + if (CollectionUtils.isNotEmpty(list)) { + String url = list.get(0).getEntranceUrl(); + param.setQueryInterfaceName(url); + } + } PagingList pageList = pressureResourceRelateRemoteCallDAO.pageList(param); if (pageList.isEmpty()) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java index a40ac7f237..9842612d37 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceRemoteCallQueryParam.java @@ -11,6 +11,7 @@ */ @Data public class PressureResourceRemoteCallQueryParam extends PageBaseDTO { + @ApiModelProperty("resourceId") private Long resourceId; @ApiModelProperty("查询的接口名") @@ -24,4 +25,7 @@ public class PressureResourceRemoteCallQueryParam extends PageBaseDTO { @ApiModelProperty("状态") private Integer status; + + @ApiModelProperty("linkId") + private String linkId; } From 6b2ce46eafd26e323734d60be0aaff36f5646273 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 21 Sep 2022 16:36:05 +0800 Subject: [PATCH 108/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/service/pressureresource/common/IsolateTypeEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java index b325b9c595..f101b8d85c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java @@ -8,7 +8,7 @@ public enum IsolateTypeEnum { DEFAULT(0, "无"), SHADOW_DB(1, "影子库"), - SHADOW_DB_TABLE(2, "影子库/影子表"), + SHADOW_DB_TABLE(2, "影子库-影子表"), SHADOW_TABLE(3, "影子表"); int code; From a430abbb4b7ff2fef67f47439d5d880c5a690e9c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 21 Sep 2022 17:03:40 +0800 Subject: [PATCH 109/318] =?UTF-8?q?=E5=BD=B1=E5=AD=90=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceAppServiceImpl.java | 8 +++----- .../impl/PressureResourceCommonServiceImpl.java | 2 +- .../impl/PressureResourceRemoteCallServiceImpl.java | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 15be495af1..0784b96746 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -120,11 +120,9 @@ public PagingList appCheckList(PressureResourceAppR Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); - vo.setAgentNodeNum(applicationVo.getOnlineNodeNum()); - vo.setStatus(applicationVo.getOnlineNodeNum().equals(vo.getNodeNum()) ? 0 : 1); - if (vo.getNodeNum().intValue() == 0) { - vo.setStatus(1); - } + // 默认等于探针在线节点数 + vo.setNodeNum(applicationVo.getOnlineNodeNum()); + vo.setStatus(applicationVo.getAccessStatus().equals("0") ? 0 : 1); } } return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index c31e9b979d..b0c559e099 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -338,7 +338,7 @@ public List getResourceIdsFormRedis() { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(0); + appEntity.setStatus(applicationVo.getAccessStatus().equals("0") ? 0 : 1); } } appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java index f7861c4c26..b36aa166d1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java @@ -105,8 +105,8 @@ public void update(PressureResourceMockInput mockInput) { MockInfo mockInfo = mockInput.getMockInfo(); if (mockInfo != null) { update.setMockReturnValue(JSON.toJSONString(mockInfo)); - // 设置了mock,默认不放行 - update.setPass(PassEnum.PASS_NO.getCode()); + // 设置了mock,默认放行 + update.setPass(PassEnum.PASS_YES.getCode()); } else { update.setPass(mockInput.getPass()); } From a42f460714271667326740861c730a158d5183f2 Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Thu, 22 Sep 2022 11:42:50 +0800 Subject: [PATCH 110/318] =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20=20bug-fix=20=20mockreturnvalue=20null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 5c5e447f8d..580bcec1ee 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -179,7 +179,7 @@ private AgentRemoteCallVO.RemoteCall mapping(PressureResourceRelateRemoteCallEnt remoteCall.setTYPE(getSelectVO(remoteCallEntity.getInterfaceType(), voList).getLabel().toLowerCase()); remoteCall.setCheckType(entityMap.get(remoteCallEntity.getType()).getCheckType()); if (!StringUtils.hasText(remoteCallEntity.getMockReturnValue())) { - return null; + return remoteCall; } MockInfo mockInfo = JSON.parseObject(remoteCallEntity.getMockReturnValue(), MockInfo.class); remoteCall.setContent(mockInfo.getMockValue()); From 5adbe024445c7b6ece80528a9476f393504db3f8 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 13:38:57 +0800 Subject: [PATCH 111/318] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/job/PressureResourceRelateJob.java | 9 +- .../PressureResourceRelateRemoteCallJob.java | 96 +++++++++++ .../BusinessFlowPageQueryRequest.java | 5 + .../pressureresource/MockDetailVO.java | 23 +++ .../PressureResourceCommonService.java | 11 +- .../PressureResourceRemoteCallService.java | 7 +- .../common/IsolateTypeEnum.java | 6 + .../PressureResourceCommonServiceImpl.java | 150 ++++++++++++------ .../impl/PressureResourceDsServiceImpl.java | 19 +-- ...PressureResourceRemoteCallServiceImpl.java | 45 +++++- .../service/scene/impl/SceneServiceImpl.java | 1 + .../web/data/dao/linkmanage/SceneDAOImpl.java | 3 + .../data/param/scene/ScenePageQueryParam.java | 6 + .../PressureResoureRemouteCallController.java | 2 +- 14 files changed, 306 insertions(+), 77 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MockDetailVO.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 7580c6b21f..9b6ee103ec 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -25,13 +25,13 @@ import java.util.stream.Collectors; /** - * 压测资源关联应用 + * 压测资源关联应用,数据源,表 */ @Component @ElasticSchedulerJob(jobName = "pressureResourceRelateJob", isSharding = true, - cron = "0/10 * * * * ? *", - description = "压测资源准备-压测资源关联应用") + cron = "0 0/1 * * * ? *", + description = "压测资源准备-压测资源关联应用,数据源,表") @Slf4j public class PressureResourceRelateJob implements SimpleJob { @Resource @@ -85,7 +85,8 @@ public void execute(ShardingContext shardingContext) { String tenantAppKey = tenantInfoExt.getTenantAppKey(); commonExt.setTenantAppKey(tenantAppKey); WebPluginUtils.setTraceTenantContext(commonExt); - pressureResourceCommonService.processAutoPressureResourceRelate(resource.getId()); + + pressureResourceCommonService.processAutoPressureResourceRelate(resource); } finally { distributedLock.unLockSafely(lockKey); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java new file mode 100644 index 0000000000..f4f913e608 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java @@ -0,0 +1,96 @@ +package io.shulie.takin.web.biz.job; + +import com.dangdang.ddframe.job.api.ShardingContext; +import com.dangdang.ddframe.job.api.simple.SimpleJob; +import io.shulie.takin.job.annotation.ElasticSchedulerJob; +import io.shulie.takin.web.biz.service.DistributedLock; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommonService; +import io.shulie.takin.web.biz.utils.job.JobRedisUtils; +import io.shulie.takin.web.common.enums.ContextSourceEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; +import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +/** + * 压测资源关联远程调用 + */ +@Component +@ElasticSchedulerJob(jobName = "pressureResourceRelateRemoteCallJob", + isSharding = true, + cron = "0 0/1 * * * ? *", + description = "压测资源准备-压测资源关联远程调用") +@Slf4j +public class PressureResourceRelateRemoteCallJob implements SimpleJob { + @Resource + private PressureResourceCommonService pressureResourceCommonService; + + @Resource + private PressureResourceDAO pressureResourceDAO; + + @Resource + @Qualifier("pressureResourceThreadPool") + private ThreadPoolExecutor pressureResourceThreadPool; + + @Resource + private DistributedLock distributedLock; + + @Override + public void execute(ShardingContext shardingContext) { + // 查询所有压测资源准备配置 + List resourceList = pressureResourceDAO.getAll(); + if (CollectionUtils.isEmpty(resourceList)) { + log.warn("当前压测资源准备配置为空,暂不处理!!!"); + return; + } + // 按配置Id分片 + List filterList = resourceList.stream().filter(resouce -> + resouce.getId() % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filterList)) { + return; + } + for (int i = 0; i < filterList.size(); i++) { + PressureResourceEntity resource = filterList.get(i); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "default", resource.getId()); + if (distributedLock.checkLock(lockKey)) { + continue; + } + pressureResourceThreadPool.execute(() -> { + try { + boolean tryLock = distributedLock.tryLock(lockKey, 0L, 60L, TimeUnit.SECONDS); + if (!tryLock) { + return; + } + TenantCommonExt commonExt = new TenantCommonExt(); + commonExt.setSource(ContextSourceEnum.JOB.getCode()); + commonExt.setEnvCode(resource.getEnvCode()); + commonExt.setTenantId(resource.getTenantId()); + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); + if (tenantInfoExt == null) { + return; + } + String tenantAppKey = tenantInfoExt.getTenantAppKey(); + commonExt.setTenantAppKey(tenantAppKey); + WebPluginUtils.setTraceTenantContext(commonExt); + + pressureResourceCommonService.processAutoPressureResourceRelate_remoteCall(resource); + } finally { + distributedLock.unLockSafely(lockKey); + } + + }); + } + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java index 95781e160a..b084ae2d16 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java @@ -5,10 +5,15 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + @Data @ApiModel("业务流程列表查询--入参") public class BusinessFlowPageQueryRequest extends PagingDevice { @ApiModelProperty("业务流程名称") private String businessFlowName; + + @ApiModelProperty("过滤时间范围") + private Date queryGmtModified; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MockDetailVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MockDetailVO.java new file mode 100644 index 0000000000..bf984fee70 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MockDetailVO.java @@ -0,0 +1,23 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class MockDetailVO { + @ApiModelProperty("平均响应时间") + private String responseTime; + + @ApiModelProperty("请求模板") + private List request; +} + diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommonService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommonService.java index d633067e71..3643c550ba 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommonService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceCommonService.java @@ -1,5 +1,7 @@ package io.shulie.takin.web.biz.service.pressureresource; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; + import java.util.List; /** @@ -16,9 +18,14 @@ public interface PressureResourceCommonService { void processAutoPressureResource(); /** - * 自动处理压测准备-应用自动梳理 + * 自动处理压测准备-关联应用-数据库-表 + */ + void processAutoPressureResourceRelate(PressureResourceEntity resource); + + /** + * 自动处理压测准备-远程调用自动梳理 */ - void processAutoPressureResourceRelate(Long resourceId); + void processAutoPressureResourceRelate_remoteCall(PressureResourceEntity resource); /** * 推送变更到Redis diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceRemoteCallService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceRemoteCallService.java index bbfbe04b24..2f58ae8a3f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceRemoteCallService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceRemoteCallService.java @@ -1,10 +1,7 @@ package io.shulie.takin.web.biz.service.pressureresource; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.pressureresource.MockInfo; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceCheckVO; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMockInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateRemoteCallRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateRemoteCallVO; /** @@ -36,7 +33,7 @@ public interface PressureResourceRemoteCallService { * @param id * @return */ - Integer getServiceAvgRt(Long id); + MockDetailVO mockDetail(Long id); /** * 获取服务响应时间 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java index f101b8d85c..a310dcc4dc 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/IsolateTypeEnum.java @@ -36,4 +36,10 @@ public static String getName(int code) { } return IsolateTypeEnum.DEFAULT.getName(); } + + private static String keyPre = "隔离方案-"; + + public static String getKeyName(int code) { + return keyPre + getName(code); + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index b0c559e099..e6ce024f57 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -1,6 +1,6 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; -import com.alibaba.fastjson.JSON; +import cn.hutool.core.date.DateUtil; import com.pamirs.takin.entity.domain.vo.ApplicationVo; import com.pamirs.takin.entity.domain.vo.TDictionaryVo; import io.shulie.amdb.common.dto.link.topology.AppShadowDatabaseDTO; @@ -35,17 +35,19 @@ import io.shulie.takin.web.common.enums.application.AppRemoteCallConfigEnum; import io.shulie.takin.web.common.util.application.RemoteCallUtils; import io.shulie.takin.web.data.dao.activity.ActivityDAO; -import io.shulie.takin.web.data.dao.application.*; +import io.shulie.takin.web.data.dao.application.AppRemoteCallDAO; +import io.shulie.takin.web.data.dao.application.InterfaceTypeChildDAO; import io.shulie.takin.web.data.dao.dictionary.DictionaryDataDAO; import io.shulie.takin.web.data.dao.pressureresource.*; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; +import io.shulie.takin.web.data.model.mysql.AppRemoteCallEntity; import io.shulie.takin.web.data.model.mysql.InterfaceTypeChildEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.*; import io.shulie.takin.web.data.param.activity.ActivityQueryParam; +import io.shulie.takin.web.data.param.application.AppRemoteCallQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; import io.shulie.takin.web.data.result.activity.ActivityListResult; -import io.shulie.takin.web.data.result.application.AppRemoteCallResult; import io.shulie.takin.web.data.result.scene.SceneLinkRelateResult; import io.shulie.takin.web.ext.util.WebPluginUtils; import org.apache.commons.collections4.CollectionUtils; @@ -57,6 +59,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -134,17 +137,11 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Qualifier("redisTemplate") private RedisTemplate redisTemplate; - @Resource - private ApplicationDsDbManageDAO dsDbManageDAO; - - @Resource - private ApplicationDsDAO applicationDsDAO; - - @Autowired - private ApplicationDsCacheManageDAO dsCacheManageDAO; - private static String TAKIN_RESOURCE_MODIFY_KEY = "TAKIN:RESOURCE:MODIFY:KEY"; + @Value("${takin.resource.interval:-1}") + private int takinResourceInterval; + /** * 自动处理压测资源准备任务 */ @@ -154,9 +151,12 @@ public void processAutoPressureResource() { BusinessFlowPageQueryRequest queryRequest = new BusinessFlowPageQueryRequest(); queryRequest.setCurrentPage(0); queryRequest.setPageSize(1000); + if (takinResourceInterval > 0) { + queryRequest.setQueryGmtModified(DateUtil.offsetMinute(new Date(), -1 * takinResourceInterval)); + } PagingList flowList = sceneService.getBusinessFlowList(queryRequest); if (flowList == null || flowList.isEmpty() || CollectionUtils.isEmpty(flowList.getList())) { - logger.warn("当前租户下业务流程为空,暂不处理压测资源准备!!!"); + logger.warn("当前租户{}下业务流程为空,暂不处理压测资源准备!!!", WebPluginUtils.traceTenantCode()); return; } List responseList = flowList.getList(); @@ -237,21 +237,44 @@ public void processAutoPressureResource() { * 自动梳理关联信息 */ @Override - public void processAutoPressureResourceRelate(Long resourceId) { - PressureResourceDetailQueryParam detailQueryParam = new PressureResourceDetailQueryParam(); - detailQueryParam.setResourceId(resourceId); - List detailEntityList = pressureResourceDetailDAO.getList(detailQueryParam); + public void processAutoPressureResourceRelate(PressureResourceEntity resource) { + List detailEntityList = getPressureResourceDetailList(resource.getId()); if (CollectionUtils.isNotEmpty(detailEntityList)) { try { // 根据详情来处理 for (int i = 0; i < detailEntityList.size(); i++) { // 获取入口 PressureResourceDetailEntity detailEntity = detailEntityList.get(i); - Pair, List> pair = processDsAndTable(detailEntity); - // 远程调用梳理 - List remoteCallEntityList = processRemoteCall(detailEntity); + Pair, List> pair = processDsAndTable(detailEntity, resource.getIsolateType()); + // 保存 pressureResourceRelateDsDAO.saveOrUpdate(pair.getLeft()); pressureResourceRelateTableDAO.saveOrUpdate(pair.getRight()); + } + } catch (Throwable e) { + logger.error(ExceptionUtils.getStackTrace(e)); + throw new RuntimeException(e); + } + } + } + + /** + * 自动梳理关联信息-远程调用单独处理 + */ + @Override + public void processAutoPressureResourceRelate_remoteCall(PressureResourceEntity resource) { + // 没设置隔离类型的,暂时不处理白名单,减少不需要的调用处理 + if (resource.getIsolateType().equals(IsolateTypeEnum.DEFAULT.getCode())) { + return; + } + List detailEntityList = getPressureResourceDetailList(resource.getId()); + if (CollectionUtils.isNotEmpty(detailEntityList)) { + try { + // 根据详情来处理 + for (int i = 0; i < detailEntityList.size(); i++) { + // 获取入口 + PressureResourceDetailEntity detailEntity = detailEntityList.get(i); + // 远程调用梳理 + List remoteCallEntityList = processRemoteCall(detailEntity); pressureResourceRelateRemoteCallDAO.saveOrUpdate(remoteCallEntityList); } } catch (Throwable e) { @@ -261,6 +284,13 @@ public void processAutoPressureResourceRelate(Long resourceId) { } } + private List getPressureResourceDetailList(Long resourceId) { + PressureResourceDetailQueryParam detailQueryParam = new PressureResourceDetailQueryParam(); + detailQueryParam.setResourceId(resourceId); + List detailEntityList = pressureResourceDetailDAO.getList(detailQueryParam); + return detailEntityList; + } + @Override public void pushRedis(Long... resoureIds) { redisTemplate.opsForSet().add(TAKIN_RESOURCE_MODIFY_KEY, resoureIds); @@ -287,7 +317,7 @@ public List getResourceIdsFormRedis() { * @return */ private Pair, List> - processDsAndTable(PressureResourceDetailEntity detailEntity) { + processDsAndTable(PressureResourceDetailEntity detailEntity, Integer isolateType) { // 需要新增的数据源列表 List dsEntityList = Lists.newArrayList(); // 需要新增的表信息 @@ -370,7 +400,7 @@ public List getResourceIdsFormRedis() { dsEntity.setAppName(key.split("#")[0]); if ("null".equals(dsEntity.getAppName())) { // TODO 暂时打印下日志 - logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue(), JSON.toJSONString(entry.getValue())); + logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue()); continue; } String database = key.split("#")[1]; @@ -402,32 +432,36 @@ public List getResourceIdsFormRedis() { dsEntityList.add(dsEntity); List value = entry.getValue(); - if (CollectionUtils.isNotEmpty(value)) { - for (int k = 0; k < value.size(); k++) { - String method = value.get(k).getMethod(); - // 过滤掉影子的表 - if (PtUtils.isShadow(method)) { - continue; - } - PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); - tableEntity.setResourceId(resourceId); - if (StringUtils.isBlank(method)) { - logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); - continue; + // 没有设置隔离类型的话,暂时不处理关联表信息,减少没必要的数据梳理 + if (!isolateType.equals(IsolateTypeEnum.DEFAULT.getCode())) { + if (CollectionUtils.isNotEmpty(value)) { + for (int k = 0; k < value.size(); k++) { + String method = value.get(k).getMethod(); + // 过滤掉影子的表 + if (PtUtils.isShadow(method)) { + continue; + } + PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); + tableEntity.setResourceId(resourceId); + if (StringUtils.isBlank(method)) { + logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); + continue; + } + tableEntity.setBusinessTable(method); + tableEntity.setDsKey(uniqueKey); + tableEntity.setGmtCreate(new Date()); + + tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); + tableEntity.setStatus(StatusEnum.NO.getCode()); + tableEntity.setType(SourceTypeEnum.AUTO.getCode()); + tableEntity.setTenantId(WebPluginUtils.traceTenantId()); + tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + + tableEntityList.add(tableEntity); } - tableEntity.setBusinessTable(method); - tableEntity.setDsKey(uniqueKey); - tableEntity.setGmtCreate(new Date()); - - tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); - tableEntity.setStatus(StatusEnum.NO.getCode()); - tableEntity.setType(SourceTypeEnum.AUTO.getCode()); - tableEntity.setTenantId(WebPluginUtils.traceTenantId()); - tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - - tableEntityList.add(tableEntity); } } + } } } @@ -449,6 +483,20 @@ private List processRemoteCall(PressureR if (pageList.isEmpty()) { return Collections.emptyList(); } + // 获取所有应用 + List appIds = Lists.newArrayList(); + pageList.getList().stream().forEach(call -> { + Long appId = applicationService.queryApplicationIdByAppName(call.getAppName()); + call.setAppId(appId); + appIds.add(appId); + }); + + // 通过服务查询本地的远程调用信息 + AppRemoteCallQueryParam queryParam = new AppRemoteCallQueryParam(); + queryParam.setApplicationIds(appIds); + List appRemoteCallEntityList = appRemoteCallDAO.getRemoteCallMd5_ext(queryParam); + Map> md5Map = appRemoteCallEntityList.stream().collect(Collectors.groupingBy(AppRemoteCallEntity::getMd5)); + // 数据字段增加后,也在枚举中增加下 List voList = dictionaryDataDAO.getDictByCode("REMOTE_CALL_TYPE"); Map childEntityMap = interfaceTypeChildDAO.selectToMapWithNameKey(); @@ -476,11 +524,13 @@ private List processRemoteCall(PressureR callEntity.setEnvCode(WebPluginUtils.traceEnvCode()); // 通过服务查询本地的远程调用信息 - AppRemoteCallResult appRemoteCallResult = appRemoteCallDAO.queryOne(callEntity.getAppName(), callEntity.getInterfaceType(), callEntity.getInterfaceName()); - if (appRemoteCallResult != null) { - callEntity.setServerAppName(appRemoteCallResult.getServerAppName()); - callEntity.setType(appRemoteCallResult.getType()); - callEntity.setIsSynchronize(appRemoteCallResult.getIsSynchronize() ? 0 : 1); + String md5 = RemoteCallUtils.buildRemoteCallName(callEntity.getAppName(), callEntity.getInterfaceName(), callEntity.getInterfaceType()); + List md5List = md5Map.get(md5); + if (CollectionUtils.isNotEmpty(md5List)) { + AppRemoteCallEntity tmpEntity = md5List.get(0); + callEntity.setServerAppName(tmpEntity.getServerAppName()); + callEntity.setType(tmpEntity.getType()); + callEntity.setIsSynchronize(tmpEntity.getIsSynchronize() ? 0 : 1); // 是否放行 - 调用方和非调用方为非http类型的,默认自动放行,开关:开;其余的为关 // 0 http 2 feign 1 double if (callEntity.getInterfaceType().intValue() != 0 || callEntity.getInterfaceType() != 2) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index b3b2d59dff..fbb7974eba 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -271,12 +271,13 @@ public void importDsConfig(MultipartFile file, Long resourceId) { // 数据校验 // 保存到DB int isolateType = resourceEntity.getIsolateType(); + String keyName = IsolateTypeEnum.getKeyName(isolateType); // 影子表单独处理 if (isolateType == IsolateTypeEnum.SHADOW_TABLE.getCode()) { - processShadowTable(resourceId, stringArrayListHashMap); + processShadowTable(keyName, resourceId, stringArrayListHashMap); } else { // 影子库处理 - processShadowDB(resourceId, stringArrayListHashMap); + processShadowDB(keyName, resourceId, stringArrayListHashMap); } } @@ -340,7 +341,7 @@ private void exportShadowDB(HttpServletResponse response, PressureResourceEntity ExcelSheetVO shadowDbSheet = new ExcelSheetVO<>(); shadowDbSheet.setData(shadowDbExcelVOList); shadowDbSheet.setExcelModelClass(ShadowDbExcelVO.class); - shadowDbSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowDbSheet.setSheetName(IsolateTypeEnum.getKeyName(resource.getIsolateType())); shadowDbSheet.setSheetNum(1); sheets.add(shadowDbSheet); try { @@ -401,7 +402,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt ExcelSheetVO shadowTableSheet = new ExcelSheetVO<>(); shadowTableSheet.setData(shadowTableExcelVOList); shadowTableSheet.setExcelModelClass(ShadowTableExcelVO.class); - shadowTableSheet.setSheetName("隔离方案-" + IsolateTypeEnum.getName(resource.getIsolateType())); + shadowTableSheet.setSheetName(IsolateTypeEnum.getKeyName(resource.getIsolateType())); shadowTableSheet.setSheetNum(1); sheets.add(shadowTableSheet); try { @@ -417,8 +418,8 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt * @param resourceId * @param stringArrayListHashMap */ - private void processShadowTable(Long resourceId, Map>> stringArrayListHashMap) { - ArrayList> isolateType_ShadowTable = stringArrayListHashMap.get("隔离方案-影子表"); + private void processShadowTable(String keyName, Long resourceId, Map>> stringArrayListHashMap) { + ArrayList> isolateType_ShadowTable = stringArrayListHashMap.get(keyName); if (CollectionUtils.isEmpty(isolateType_ShadowTable)) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案为空"); } @@ -487,10 +488,10 @@ private void processShadowTable(Long resourceId, Map>> stringArrayListHashMap) { - ArrayList> isolateType_Shadowdb = stringArrayListHashMap.get("隔离方案-影子库"); + private void processShadowDB(String keyName, Long resourceId, Map>> stringArrayListHashMap) { + ArrayList> isolateType_Shadowdb = stringArrayListHashMap.get(keyName); if (CollectionUtils.isEmpty(isolateType_Shadowdb)) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案"); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案为空"); } // 解析列表值 for (int i = 1; i < isolateType_Shadowdb.size(); i++) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java index b36aa166d1..3fc11a1286 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java @@ -1,12 +1,14 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; import bsh.Interpreter; +import cn.hutool.core.collection.ListUtil; import com.alibaba.fastjson.JSON; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.pressureresource.MockInfo; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceCheckVO; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMockInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateRemoteCallRequest; +import io.shulie.takin.web.amdb.api.TraceClient; +import io.shulie.takin.web.amdb.bean.query.trace.EntranceRuleDTO; +import io.shulie.takin.web.amdb.bean.query.trace.TraceInfoQueryDTO; +import io.shulie.takin.web.amdb.bean.result.trace.EntryTraceInfoDTO; +import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceRemoteCallService; import io.shulie.takin.web.biz.service.pressureresource.common.PassEnum; import io.shulie.takin.web.biz.service.pressureresource.common.RemoteCallUtil; @@ -29,6 +31,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; @@ -52,6 +55,9 @@ public class PressureResourceRemoteCallServiceImpl implements PressureResourceRe @Resource private PressureResourceDetailDAO pressureResourceDetailDAO; + @Resource + private TraceClient traceClient; + /** * @param request * @return @@ -122,8 +128,35 @@ public void update(PressureResourceMockInput mockInput) { * @return */ @Override - public Integer getServiceAvgRt(Long id) { - return 0; + public MockDetailVO mockDetail(Long id) { + MockDetailVO mockDetailVO = new MockDetailVO(); + mockDetailVO.setRequest(Collections.emptyList()); + mockDetailVO.setResponseTime("0"); + // 远程调用服务Id + PressureResourceRelateRemoteCallEntity call = pressureResourceRelateRemoteCallMapper.selectById(id); + if (call == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "数据未找到"); + } + TraceInfoQueryDTO traceInfoQueryDTO = new TraceInfoQueryDTO(); + traceInfoQueryDTO.setAppName(call.getAppName()); + traceInfoQueryDTO.setQueryType(1); + EntranceRuleDTO entranceRuleDTO = new EntranceRuleDTO(); + entranceRuleDTO.setAppName(call.getAppName()); + entranceRuleDTO.setEntrance(call.getInterfaceName()); + traceInfoQueryDTO.setEntranceRuleDTOS(Arrays.asList(entranceRuleDTO)); + traceInfoQueryDTO.setPageNum(0); + traceInfoQueryDTO.setPageSize(20); + PagingList pageList = traceClient.listEntryTraceInfo(traceInfoQueryDTO); + if (pageList.isEmpty()) { + return mockDetailVO; + } + Double avg = pageList.getList().stream().mapToLong(EntryTraceInfoDTO::getCost).average().orElse(0D); + mockDetailVO.setResponseTime(String.valueOf(Math.floor(avg))); + List requests = pageList.getList().stream().map(mock -> mock.getRequest()).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(requests)) { + mockDetailVO.setRequest(ListUtil.sub(requests, 1, 2)); + } + return mockDetailVO; } /** diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 7d25f79b9b..c0f92eddff 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -662,6 +662,7 @@ public PagingList getBusinessFlowList(BusinessFlowPage queryParam.setPageSize(queryRequest.getPageSize()); WebPluginUtils.fillQueryParam(queryParam); queryParam.setIgnoreType(SceneTypeEnum.PERFORMANCE_AUTO_SCENE.getType()); + queryParam.setQueryGmtModified(queryRequest.getQueryGmtModified()); PagingList pageList = sceneDao.selectPageList(queryParam); List responses = LinkManageConvert.INSTANCE.ofSceneResultList(pageList.getList()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java index de201eada7..ca59201496 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java @@ -156,6 +156,9 @@ public PagingList selectPageList(ScenePageQueryParam param) { if (param.getIgnoreType() != null) { lambdaQueryWrapper.ne(SceneEntity::getType, param.getIgnoreType()); } + if (param.getQueryGmtModified() != null) { + lambdaQueryWrapper.ge(SceneEntity::getUpdateTime, param.getQueryGmtModified()); + } lambdaQueryWrapper.eq(SceneEntity::getIsDeleted, 0); lambdaQueryWrapper.orderByDesc(SceneEntity::getUpdateTime); Page sceneEntityPage = sceneMapper.selectPage(page, lambdaQueryWrapper); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java index 6b678b918e..5086da7037 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java @@ -1,8 +1,11 @@ package io.shulie.takin.web.data.param.scene; import io.shulie.takin.web.ext.entity.AuthQueryParamCommonExt; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + /** * @author zhaoyong */ @@ -12,4 +15,7 @@ public class ScenePageQueryParam extends AuthQueryParamCommonExt { private String sceneName; private Integer ignoreType; + + @ApiModelProperty("过滤时间范围") + private Date queryGmtModified; } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java index d06868b57b..ef2c0ad48b 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java @@ -51,7 +51,7 @@ public ResponseResult mock(@RequestBody PressureResourceMockInput input) { @ApiOperation("链路压测资源-远程调用-平均响应时间") @RequestMapping(value = "/avgRt", method = RequestMethod.GET) public ResponseResult avgRt(PressureResourceRelateRemoteCallRequest input) { - return ResponseResult.success(pressureResourceRemoteCallService.getServiceAvgRt(input.getId())); + return ResponseResult.success(pressureResourceRemoteCallService.mockDetail(input.getId())); } @ApiOperation("链路压测资源-远程调用-校验脚本") From 9e11addb00f21a988d265ef17f5021c83badebee Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 13:39:32 +0800 Subject: [PATCH 112/318] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../amdb/bean/result/application/ApplicationRemoteCallDTO.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java index ea832f70f6..8c2c7c2b2b 100644 --- a/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java +++ b/takin-web-amdb-accessor/src/main/java/io/shulie/takin/web/amdb/bean/result/application/ApplicationRemoteCallDTO.java @@ -13,6 +13,8 @@ public class ApplicationRemoteCallDTO { @JsonProperty("appName") private String appName; + @JsonProperty("appId") + private Long appId; @JsonProperty("extend") private String extend; @JsonProperty("methodName") From 89d411572d2a484d6f6f87621b5befd66b3a2f70 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 13:40:45 +0800 Subject: [PATCH 113/318] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=A2=91=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommonServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index e6ce024f57..ed72096841 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -139,7 +139,7 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon private static String TAKIN_RESOURCE_MODIFY_KEY = "TAKIN:RESOURCE:MODIFY:KEY"; - @Value("${takin.resource.interval:-1}") + @Value("${takin.job.resource.interval:2}") private int takinResourceInterval; /** From 39df92c8cfc21507a8fb6ac87e0a542c7df9d55c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:15:41 +0800 Subject: [PATCH 114/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApplicationQueryRequestV2.java | 3 + .../service/impl/ApplicationServiceImpl.java | 11 +- .../impl/PressureResourceAppServiceImpl.java | 4 +- .../confcenter/ApplicationController.java | 153 +++++++++--------- 4 files changed, 90 insertions(+), 81 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java index b7fac93fd7..c7bf5c1a34 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java @@ -28,4 +28,7 @@ public class ApplicationQueryRequestV2 extends PageBaseDTO { @ApiModelProperty("更新时间结束") private String updateEndTime; + + @ApiModelProperty("全量操作的时候,不要状态") + private boolean all = false; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index c659e775c1..cef5e2be26 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -1392,10 +1392,13 @@ public PagingList pageApplication(ApplicationQueryReq ApplicationListResponseV2 response = BeanUtil.copyProperties(result, ApplicationListResponseV2.class); response.setId(result.getApplicationId().toString()); - // 跟应用详情再对比下,同步下状态 - Response vo = this.getApplicationInfo(response.getId()); - if (vo.getSuccess() && vo.getData() != null) { - response.setAccessStatus(vo.getData().getAccessStatus()); + // 非全量查询的时候,增加不需要处理状态 + if (!request.isAll()) { + // 跟应用详情再对比下,同步下状态 + Response vo = this.getApplicationInfo(response.getId()); + if (vo.getSuccess() && vo.getData() != null) { + response.setAccessStatus(vo.getData().getAccessStatus()); + } } return response; }).collect(Collectors.toList()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 0784b96746..8f753acc72 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -111,7 +111,9 @@ public PagingList appCheckList(PressureResourceAppR BeanUtils.copyProperties(configDto, vo); // 设置主表隔离方式 vo.setIsolateType(resourceEntity.getIsolateType()); + // 默认是0 vo.setAgentNodeNum(0); + // 默认不正常 vo.setStatus(1); vo.setId(String.valueOf(configDto.getId())); // 获取应用信息 @@ -121,7 +123,7 @@ public PagingList appCheckList(PressureResourceAppR if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 - vo.setNodeNum(applicationVo.getOnlineNodeNum()); + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum()); vo.setStatus(applicationVo.getAccessStatus().equals("0") ? 0 : 1); } } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/confcenter/ApplicationController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/confcenter/ApplicationController.java index 6075083263..f3a618d9cc 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/confcenter/ApplicationController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/confcenter/ApplicationController.java @@ -82,8 +82,8 @@ public class ApplicationController { @GetMapping("/application/center/list") @ApiOperation("|_ 应用列表查询接口") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public PagingList pageApplicationWithAuth(ApplicationQueryRequestV2 request) { return applicationService.pageApplication(request); @@ -92,28 +92,29 @@ public PagingList pageApplicationWithAuth(Application @GetMapping("/application/center/list/dictionary") @ApiOperation("应用列表查询接口") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public Response> getApplicationListNoAuth(ApplicationQueryRequestV2 request) { + request.setAll(true); return applicationService.getApplicationList(request); } @GetMapping("/console/application/center/app/info") @ApiOperation("应用详情查询接口") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public Response getApplicationInfoWithAuth( - @ApiParam(name = "id", value = "系统id") @RequestParam String id) { + @ApiParam(name = "id", value = "系统id") @RequestParam String id) { return applicationService.getApplicationInfo(id); } @GetMapping("/application/center/app/info/dictionary") @ApiOperation("应用详情查询接口") public Response getApplicationInfoNoAuth( - @ApiParam(name = "id", value = "系统id") String id + @ApiParam(name = "id", value = "系统id") String id ) { return applicationService.getApplicationInfo(id); } @@ -127,13 +128,13 @@ public Response getApplicationInfoNoAuth( @PostMapping("/console/application/center/app/info") @ApiOperation("新增应用接口") @ModuleDef( - moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, - subModuleName = BizOpConstants.SubModules.BASIC_INFO, - logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_CREATE + moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, + subModuleName = BizOpConstants.SubModules.BASIC_INFO, + logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_CREATE ) @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.CREATE + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.CREATE ) public Response addApplication(@RequestBody ApplicationVo vo) { OperationLogContextHolder.operationType(BizOpConstants.OpTypes.CREATE); @@ -144,13 +145,13 @@ public Response addApplication(@RequestBody ApplicationVo vo) { @PutMapping("/console/application/center/app/info") @ApiOperation("编辑应用") @ModuleDef( - moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, - subModuleName = BizOpConstants.SubModules.BASIC_INFO, - logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_UPDATE + moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, + subModuleName = BizOpConstants.SubModules.BASIC_INFO, + logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_UPDATE ) @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.UPDATE + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.UPDATE ) public Response modifyApplication(@RequestBody ApplicationVo vo) { OperationLogContextHolder.operationType(BizOpConstants.OpTypes.UPDATE); @@ -160,16 +161,16 @@ public Response modifyApplication(@RequestBody ApplicationVo vo) { @ApiOperation("删除应用接口") @DeleteMapping("/console/application/center/app/info") @ModuleDef( - moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, - subModuleName = BizOpConstants.SubModules.BASIC_INFO, - logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_DELETE + moduleName = BizOpConstants.Modules.APPLICATION_MANAGE, + subModuleName = BizOpConstants.SubModules.BASIC_INFO, + logMsgKey = BizOpConstants.Message.MESSAGE_BASIC_INFO_DELETE ) @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.DELETE + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.DELETE ) public Response deleteApplication( - @RequestBody ApplicationVo vo) { + @RequestBody ApplicationVo vo) { if (vo == null || StringUtil.isEmpty(vo.getId())) { return Response.fail(FALSE_CODE, "id 不能为空"); } @@ -187,7 +188,7 @@ public Response deleteApplication( @GetMapping("/application/center/app/switch/calculate") public Response appSwitchForce(@RequestParam(value = "uid", required = false) Long uid) { TenantCommonExt tenantCommonExt = WebPluginUtils.traceTenantCommonExt(); - if(uid != null && !uid.equals(tenantCommonExt.getTenantId())) { + if (uid != null && !uid.equals(tenantCommonExt.getTenantId())) { return Response.fail("租户不匹配"); } return applicationService.calculateUserSwitch(tenantCommonExt); @@ -196,14 +197,14 @@ public Response appSwitchForce(@RequestParam(value = "uid", required = false) Lo @ApiOperation("获取下载导出配置地址") @GetMapping("/application/center/app/config/url") public Response getExportDownloadConfigUrl(@ApiParam(name = "id", value = "系统id") @NotNull String id, - HttpServletRequest request) { + HttpServletRequest request) { return applicationService.buildExportDownLoadConfigUrl(id, request); } @ApiOperation("|_ 应用配置导出") @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "应用id", - paramType = "query", dataType = "int") + @ApiImplicitParam(name = "id", value = "应用id", + paramType = "query", dataType = "int") }) @GetMapping("/application/center/app/config/export") public void export(@RequestParam("id") Long applicationId, HttpServletResponse response) { @@ -213,10 +214,10 @@ public void export(@RequestParam("id") Long applicationId, HttpServletResponse r @ApiOperation("|_ 应用配置导入") @PostMapping("/application/center/app/config/import") @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "应用id", - paramType = "form", dataType = "int"), - @ApiImplicitParam(name = "file", value = "导入的 excel", - paramType = "form", dataType = "file") + @ApiImplicitParam(name = "id", value = "应用id", + paramType = "form", dataType = "int"), + @ApiImplicitParam(name = "file", value = "导入的 excel", + paramType = "form", dataType = "file") }) public Response importApplicationConfig(@RequestParam MultipartFile file, @RequestParam Long id) { return applicationService.importApplicationConfig(file, id); @@ -231,8 +232,8 @@ public Response appDsConfigIsNewVersion() { @PostMapping("/application/center/unstallAllAgent") @ApiOperation("一键卸载探针") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public void uninstallAllAgent(@RequestBody AppUninstallAgentVO vo) { applicationService.uninstallAllAgent(vo.getAppIds()); @@ -241,8 +242,8 @@ public void uninstallAllAgent(@RequestBody AppUninstallAgentVO vo) { @PostMapping("/application/center/resumeAllAgent") @ApiOperation("一键恢复探针") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public void resumeAllAgent(@RequestBody AppUninstallAgentVO vo) { applicationService.resumeAllAgent(vo.getAppIds()); @@ -255,37 +256,37 @@ public void resumeAllAgent(@RequestBody AppUninstallAgentVO vo) { needAuth = ActionTypeEnum.QUERY ) public Response operateCheck(@RequestBody AppOperateAgentCheckVO vo) { - return applicationService.operateCheck(vo.getAppIds(),vo.getOperate()); + return applicationService.operateCheck(vo.getAppIds(), vo.getOperate()); } @ApiOperation("编辑静默开关接口") @PutMapping("/application/center/app/switch/silence") @ModuleDef( - moduleName = BizOpConstants.Modules.CONFIG_CENTER, - subModuleName = BizOpConstants.SubModules.PRESSURE_CONFIG_SWITCH, - logMsgKey = BizOpConstants.Message.MESSAGE_PRESSURE_TEST_SWITCH_ACTION + moduleName = BizOpConstants.Modules.CONFIG_CENTER, + subModuleName = BizOpConstants.SubModules.PRESSURE_CONFIG_SWITCH, + logMsgKey = BizOpConstants.Message.MESSAGE_PRESSURE_TEST_SWITCH_ACTION ) @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, - needAuth = ActionTypeEnum.ENABLE_DISABLE + moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, + needAuth = ActionTypeEnum.ENABLE_DISABLE ) public Response UpdateAppSilenceSwitch(@RequestBody ApplicationVo vo) { if (vo == null || vo.getSilenceEnable() == null) { return Response.fail(FALSE_CODE, "silenceEnable 不能为空"); } OperationLogContextHolder.operationType( - vo.getSilenceEnable() ? BizOpConstants.OpTypes.OPEN : BizOpConstants.OpTypes.CLOSE); + vo.getSilenceEnable() ? BizOpConstants.OpTypes.OPEN : BizOpConstants.OpTypes.CLOSE); OperationLogContextHolder.addVars(BizOpConstants.Vars.ACTION, - vo.getSilenceEnable() ? BizOpConstants.OpTypes.OPEN : BizOpConstants.OpTypes.CLOSE); + vo.getSilenceEnable() ? BizOpConstants.OpTypes.OPEN : BizOpConstants.OpTypes.CLOSE); return applicationService.userAppSilenceSwitch(WebPluginUtils.traceTenantCommonExt(), vo.getSilenceEnable()); } @ApiOperation("获取静默开关状态接口") @GetMapping("/application/center/app/switch/silence") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, + needAuth = ActionTypeEnum.QUERY ) public Response appSilenceSwitch() { return applicationService.userAppSilenceSwitchInfo(); @@ -294,11 +295,11 @@ public Response appSilenceSwitch() { @ApiOperation("按租户查询上报数据接口") @GetMapping("/application/center/app/report/config/info") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.CONFIG_CENTER, + needAuth = ActionTypeEnum.QUERY ) public Response AppConfigReportInfo(@ApiParam(name = "bizType", value = "业务类型") @NotNull Integer bizType, - @ApiParam(name = "appName", value = "应用名称") String appName) { + @ApiParam(name = "appName", value = "应用名称") String appName) { return applicationService.getApplicationReportConfigInfo(bizType, appName); } @@ -310,11 +311,11 @@ public Response AppConfigReportInfo(@ApiParam(name = "bizType", value = "业务 @GetMapping("/application/center/app/monitorDetailes") @ApiOperation("应用监控查询接口") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public Response> getApplicationVisualInfo( - @Valid ApplicationVisualInfoQueryRequest request) { + @Valid ApplicationVisualInfoQueryRequest request) { return applicationService.getApplicationVisualInfo(request); } @@ -326,8 +327,8 @@ public Response> getApplicationVisualInfo( @PostMapping("/application/center/app/attendService") @ApiOperation("关注应用服务接口") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.CREATE + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.CREATE ) public void attendApplicationService(@RequestBody ApplicationVisualInfoQueryRequest request) throws Exception { if (null == request.getAttend()) { @@ -339,8 +340,8 @@ public void attendApplicationService(@RequestBody ApplicationVisualInfoQueryRequ @GetMapping("/application/center/app/activityList") @ApiOperation("关联业务活动") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.QUERY + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.QUERY ) public Response getApplicationActivityList(@Valid ApplicationVisualInfoQueryRequest request) { Response> response = applicationService.getApplicationVisualInfo(request); @@ -361,8 +362,8 @@ public Response getApplicationActivityList(@Valid ApplicationVisualInfoQueryRequ @PostMapping("/application/center/app/gotoActivityInfo") @ApiOperation("跳转业务活动详情") @AuthVerification( - moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, - needAuth = ActionTypeEnum.CREATE + moduleCode = BizOpConstants.ModuleCode.APPLICATION_MANAGE, + needAuth = ActionTypeEnum.CREATE ) public Map gotoActivityInfo(@Validated @RequestBody ActivityCreateRequest request) throws Exception { HashMap result = new HashMap<>(1); @@ -374,27 +375,27 @@ public Map gotoActivityInfo(@Validated @RequestBody ActivityCreat entity = activityService.getActivityByName(temporaryKey); if (null != entity) { result.put(entity.getLinkId(), false); - }else { + } else { List applicationEntrances = applicationEntranceClient.getApplicationEntrances( - request.getApplicationName(), "",null,1,500); + request.getApplicationName(), "", null, 1, 500); if (CollectionUtils.isNotEmpty(applicationEntrances)) { List responseList = applicationEntrances.stream() - .filter(item -> !item.getServiceName().startsWith("PT_")) - .map(item -> { - ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); - applicationEntrancesResponse.setMethod(item.getMethodName()); - applicationEntrancesResponse.setRpcType(item.getRpcType()); - applicationEntrancesResponse.setExtend(item.getExtend()); - applicationEntrancesResponse.setServiceName(item.getServiceName()); - applicationEntrancesResponse.setLabel( - ActivityUtil.serviceNameLabel(item.getServiceName(), item.getMethodName())); - applicationEntrancesResponse.setValue( - ActivityUtil.createLinkId(item.getServiceName(), item.getMethodName(), - item.getAppName(), item.getRpcType(), item.getExtend())); - return applicationEntrancesResponse; - // 增加去重 - }).distinct().filter(item -> item.getLabel().equals(request.getLabel())).collect( - Collectors.toList()); + .filter(item -> !item.getServiceName().startsWith("PT_")) + .map(item -> { + ApplicationEntrancesResponse applicationEntrancesResponse = new ApplicationEntrancesResponse(); + applicationEntrancesResponse.setMethod(item.getMethodName()); + applicationEntrancesResponse.setRpcType(item.getRpcType()); + applicationEntrancesResponse.setExtend(item.getExtend()); + applicationEntrancesResponse.setServiceName(item.getServiceName()); + applicationEntrancesResponse.setLabel( + ActivityUtil.serviceNameLabel(item.getServiceName(), item.getMethodName())); + applicationEntrancesResponse.setValue( + ActivityUtil.createLinkId(item.getServiceName(), item.getMethodName(), + item.getAppName(), item.getRpcType(), item.getExtend())); + return applicationEntrancesResponse; + // 增加去重 + }).distinct().filter(item -> item.getLabel().equals(request.getLabel())).collect( + Collectors.toList()); if (CollectionUtils.isNotEmpty(responseList)) { request.setLinkId(responseList.get(0).getValue()); } From eee581aa04d707ab2c576614bc268306007a989d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:20:40 +0800 Subject: [PATCH 115/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 8f753acc72..eec586a1d9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -97,6 +97,9 @@ public PagingList appCheckList(PressureResourceAppR if (CollectionUtils.isNotEmpty(detailEntityList)) { List detailIds = detailEntityList.stream().map(detail -> detail.getId()).distinct().collect(Collectors.toList()); param.setDetailIds(detailIds); + } else { + // 没有找到详情,直接返回空 + return PagingList.of(Collections.emptyList(), 0); } } From e0c6da15c61fb9d0b5f73e22bb5b0ecb2e552387 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:27:51 +0800 Subject: [PATCH 116/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shulie/takin/web/biz/job/PressureResourceRelateJob.java | 2 +- .../web/biz/job/PressureResourceRelateRemoteCallJob.java | 2 +- .../java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 9b6ee103ec..33a3109955 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -64,7 +64,7 @@ public void execute(ShardingContext shardingContext) { } for (int i = 0; i < filterList.size(); i++) { PressureResourceEntity resource = filterList.get(i); - String lockKey = JobRedisUtils.getRedisJobResource(1L, "default", resource.getId()); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "default", "PressureResourceRelateJob" + resource.getId()); if (distributedLock.checkLock(lockKey)) { continue; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java index f4f913e608..6e576e3990 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java @@ -63,7 +63,7 @@ public void execute(ShardingContext shardingContext) { } for (int i = 0; i < filterList.size(); i++) { PressureResourceEntity resource = filterList.get(i); - String lockKey = JobRedisUtils.getRedisJobResource(1L, "default", resource.getId()); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "default", "PressureResourceRelateRemoteCallJob" + resource.getId()); if (distributedLock.checkLock(lockKey)) { continue; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java index 6b9ce8f477..a44f067b42 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java @@ -41,8 +41,8 @@ public static String getRedisJobReport(Long tenantId,String envCode,Long reportI return String.format(REDIS_JOB_REPORT,tenantId,envCode,reportId); } - public static String getRedisJobResource(Long tenantId,String envCode,Long reportId) { - return String.format(REDIS_JOB_REPORT,tenantId,envCode,reportId); + public static String getRedisJobResource(Long tenantId,String envCode,String key) { + return String.format(REDIS_JOB_REPORT,tenantId,envCode,key); } /** From 47314ffa22f49038b5c0c2500541d838fa41e887 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:29:44 +0800 Subject: [PATCH 117/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shulie/takin/web/biz/job/PressureResourceChangeJob.java | 4 ++-- .../shulie/takin/web/biz/job/PressureResourceCommandJob.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index a942ad3ef6..37f557f71c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -30,7 +30,7 @@ @Component @ElasticSchedulerJob(jobName = "PressureResourceChangeJob", isSharding = true, - cron = "0 0/1 * * * ? *", + cron = "0/10 * * * * ? *", description = "配置资源修改立即触发") @Slf4j public class PressureResourceChangeJob implements SimpleJob { @@ -56,7 +56,7 @@ public void execute(ShardingContext shardingContext) { return; } resourceIds.forEach(resourceId -> { - String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resourceId); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "change", String.valueOf(resourceId)); if (distributedLock.checkLock(lockKey)) { return; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 54e807f580..90e6ae8c28 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -57,7 +57,7 @@ public void execute(ShardingContext shardingContext) { return; } resourceList.forEach(resource -> { - String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resource.getId()); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", String.valueOf(resource.getId())); if (distributedLock.checkLock(lockKey)) { return; } From cc615a8548b18888934c0f276b916360d5d47715 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:31:12 +0800 Subject: [PATCH 118/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shulie/takin/web/biz/job/PressureResourceChangeJob.java | 2 +- .../io/shulie/takin/web/biz/job/PressureResourceCommandJob.java | 2 +- .../java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index 37f557f71c..0eb8c346c3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -56,7 +56,7 @@ public void execute(ShardingContext shardingContext) { return; } resourceIds.forEach(resourceId -> { - String lockKey = JobRedisUtils.getRedisJobResource(1L, "change", String.valueOf(resourceId)); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "change", resourceId); if (distributedLock.checkLock(lockKey)) { return; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 90e6ae8c28..54e807f580 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -57,7 +57,7 @@ public void execute(ShardingContext shardingContext) { return; } resourceList.forEach(resource -> { - String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", String.valueOf(resource.getId())); + String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resource.getId()); if (distributedLock.checkLock(lockKey)) { return; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java index a44f067b42..8fd3fb7d0d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/utils/job/JobRedisUtils.java @@ -41,7 +41,7 @@ public static String getRedisJobReport(Long tenantId,String envCode,Long reportI return String.format(REDIS_JOB_REPORT,tenantId,envCode,reportId); } - public static String getRedisJobResource(Long tenantId,String envCode,String key) { + public static String getRedisJobResource(Long tenantId,String envCode,Object key) { return String.format(REDIS_JOB_REPORT,tenantId,envCode,key); } From 30dba47de114c860aa7cdf0e1e9caf6bdb4d3df0 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:39:35 +0800 Subject: [PATCH 119/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommonServiceImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index ed72096841..b4180b66c3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -64,10 +64,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -269,13 +266,22 @@ public void processAutoPressureResourceRelate_remoteCall(PressureResourceEntity List detailEntityList = getPressureResourceDetailList(resource.getId()); if (CollectionUtils.isNotEmpty(detailEntityList)) { try { + List allEntitys = Lists.newArrayList(); // 根据详情来处理 for (int i = 0; i < detailEntityList.size(); i++) { // 获取入口 PressureResourceDetailEntity detailEntity = detailEntityList.get(i); // 远程调用梳理 List remoteCallEntityList = processRemoteCall(detailEntity); - pressureResourceRelateRemoteCallDAO.saveOrUpdate(remoteCallEntityList); + allEntitys.addAll(remoteCallEntityList); + } + if (CollectionUtils.isNotEmpty(allEntitys)) { + // 去重 + List insertList = allEntitys.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection( + () -> new TreeSet<>(Comparator.comparing(p -> p.getMd5()))), ArrayList::new)); + pressureResourceRelateRemoteCallDAO.saveOrUpdate(insertList); } } catch (Throwable e) { logger.error(ExceptionUtils.getStackTrace(e)); From 6735fb068d55dad1b90073915db9ba611ac2742e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 14:56:00 +0800 Subject: [PATCH 120/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceCommonServiceImpl.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index b4180b66c3..a9b56e95f3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -442,28 +442,36 @@ public List getResourceIdsFormRedis() { if (!isolateType.equals(IsolateTypeEnum.DEFAULT.getCode())) { if (CollectionUtils.isNotEmpty(value)) { for (int k = 0; k < value.size(); k++) { + // 存在逗号分割的数据 String method = value.get(k).getMethod(); - // 过滤掉影子的表 - if (PtUtils.isShadow(method)) { - continue; - } - PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); - tableEntity.setResourceId(resourceId); if (StringUtils.isBlank(method)) { - logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); continue; } - tableEntity.setBusinessTable(method); - tableEntity.setDsKey(uniqueKey); - tableEntity.setGmtCreate(new Date()); - - tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); - tableEntity.setStatus(StatusEnum.NO.getCode()); - tableEntity.setType(SourceTypeEnum.AUTO.getCode()); - tableEntity.setTenantId(WebPluginUtils.traceTenantId()); - tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - - tableEntityList.add(tableEntity); + String[] tables = method.split(","); + for (int j = 0; j < tables.length; j++) { + String tableName = tables[j]; + // 过滤掉影子的表 + if (PtUtils.isShadow(tableName)) { + continue; + } + PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); + tableEntity.setResourceId(resourceId); + if (StringUtils.isBlank(tableName)) { + logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); + continue; + } + tableEntity.setBusinessTable(tableName); + tableEntity.setDsKey(uniqueKey); + tableEntity.setGmtCreate(new Date()); + + tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); + tableEntity.setStatus(StatusEnum.NO.getCode()); + tableEntity.setType(SourceTypeEnum.AUTO.getCode()); + tableEntity.setTenantId(WebPluginUtils.traceTenantId()); + tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + + tableEntityList.add(tableEntity); + } } } } From db3d4da2910cc59872be39c8ef4e7947632cb696 Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Thu, 22 Sep 2022 15:02:16 +0800 Subject: [PATCH 121/318] =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20=20bug-fix=20=20jackson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 580bcec1ee..ab176ccac0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.pamirs.takin.entity.domain.vo.TDictionaryVo; import io.shulie.takin.common.beans.component.SelectVO; import io.shulie.takin.web.biz.pojo.request.pressureresource.MockInfo; @@ -158,7 +160,13 @@ private void pushWhitelistConfigs(PressureResourceEntity resource){ takinConfig.setConfigType(PressureResourceTypeEnum.WHITELIST.getCode()); List collect = remoteCallList.stream().map(this::mapping) .filter(Objects::nonNull).collect(Collectors.toList()); - takinConfig.setConfigParam(JSON.toJSONString(collect)); + String configParam = ""; + try { + ObjectMapper mapper = new ObjectMapper(); + configParam = mapper.writeValueAsString(collect); + } catch (JsonProcessingException e) { + } + takinConfig.setConfigParam(configParam); configList.add(takinConfig); }); //推送配置 From d91df673b7734b84ae06d1eed3b28b40fcce9edd Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:03:22 +0800 Subject: [PATCH 122/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceCommonServiceImpl.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index a9b56e95f3..6648549e5d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -400,20 +400,21 @@ public List getResourceIdsFormRedis() { for (Map.Entry> entry : serviceMap.entrySet()) { String key = entry.getKey(); - PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); - dsEntity.setResourceId(resourceId); - dsEntity.setDetailId(detailEntity.getId()); - dsEntity.setAppName(key.split("#")[0]); - if ("null".equals(dsEntity.getAppName())) { + String appName = key.split("#")[0]; + String database = key.split("#")[1]; + if ("null".equals(appName)) { // TODO 暂时打印下日志 logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue()); continue; } - String database = key.split("#")[1]; String dbName = DbNameUtil.getDbName(database); if (PtUtils.isShadow(dbName)) { continue; } + PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); + dsEntity.setResourceId(resourceId); + dsEntity.setDetailId(detailEntity.getId()); + dsEntity.setAppName(appName); // 从任意的边里面获取数据源详情信息 LinkEdgeDTO edgeDTO = entry.getValue().get(0); List dsList = edgeDTO.getDsList(); @@ -432,9 +433,9 @@ public List getResourceIdsFormRedis() { dsEntity.setType(SourceTypeEnum.AUTO.getCode()); dsEntity.setGmtCreate(new Date()); // 生成唯一key,关联表 - String uniqueKey = DataSourceUtil.generateDsKey(resourceId, database); - dsEntity.setUniqueKey(uniqueKey); - + dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); + // 这里生成的dskey是关联表的,表里面是不区分应用的 + String dsKey = DataSourceUtil.generateDsKey(resourceId, database); dsEntityList.add(dsEntity); List value = entry.getValue(); @@ -454,16 +455,15 @@ public List getResourceIdsFormRedis() { if (PtUtils.isShadow(tableName)) { continue; } - PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); - tableEntity.setResourceId(resourceId); if (StringUtils.isBlank(tableName)) { logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); continue; } + PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); + tableEntity.setResourceId(resourceId); tableEntity.setBusinessTable(tableName); - tableEntity.setDsKey(uniqueKey); + tableEntity.setDsKey(dsKey); tableEntity.setGmtCreate(new Date()); - tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); tableEntity.setStatus(StatusEnum.NO.getCode()); tableEntity.setType(SourceTypeEnum.AUTO.getCode()); From 014543c0a034bdfb5a25132c90733a447aa5102e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:04:57 +0800 Subject: [PATCH 123/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommonServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 6648549e5d..e5b83c3288 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -432,7 +432,7 @@ public List getResourceIdsFormRedis() { dsEntity.setStatus(StatusEnum.NO.getCode()); dsEntity.setType(SourceTypeEnum.AUTO.getCode()); dsEntity.setGmtCreate(new Date()); - // 生成唯一key,关联表 + // 生成唯一key,按应用区分 dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); // 这里生成的dskey是关联表的,表里面是不区分应用的 String dsKey = DataSourceUtil.generateDsKey(resourceId, database); From 9b6d979357ccbd387f8016a3bdfbf7aa31bfdcd9 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:11:38 +0800 Subject: [PATCH 124/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/job/PressureResourceChangeJob.java | 2 +- .../takin/web/biz/job/PressureResourceCommandJob.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index 0eb8c346c3..3538ede319 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -29,7 +29,7 @@ */ @Component @ElasticSchedulerJob(jobName = "PressureResourceChangeJob", - isSharding = true, + isSharding = false, cron = "0/10 * * * * ? *", description = "配置资源修改立即触发") @Slf4j diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 54e807f580..42540b7533 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -30,7 +30,7 @@ @Component @ElasticSchedulerJob(jobName = "pressureResourceCommandJob", isSharding = true, - cron = "0/10 * * * * ?", + cron = "* 0/1 * * * ?", description = "下发验证命令") @Slf4j public class PressureResourceCommandJob implements SimpleJob { @@ -56,7 +56,14 @@ public void execute(ShardingContext shardingContext) { log.warn("当前压测资源准备配置为空,暂不处理!!!"); return; } - resourceList.forEach(resource -> { + // 按配置Id分片 + List filterList = resourceList.stream().filter(resouce -> + resouce.getId() % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filterList)) { + return; + } + filterList.forEach(resource -> { String lockKey = JobRedisUtils.getRedisJobResource(1L, "command", resource.getId()); if (distributedLock.checkLock(lockKey)) { return; From 29f45431a481b02e1fd6a49b854fe7de9c369616 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:19:46 +0800 Subject: [PATCH 125/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 2 +- .../impl/PressureResourceCommonServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index eec586a1d9..cdd4845e7d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -127,7 +127,7 @@ public PagingList appCheckList(PressureResourceAppR ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 vo.setAgentNodeNum(applicationVo.getOnlineNodeNum()); - vo.setStatus(applicationVo.getAccessStatus().equals("0") ? 0 : 1); + vo.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); } } return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index e5b83c3288..0b53639c0e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -374,7 +374,7 @@ public List getResourceIdsFormRedis() { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(applicationVo.getAccessStatus().equals("0") ? 0 : 1); + appEntity.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); } } appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); From 67c4a603cf9c73e93d64a0dee33127895e41ae28 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:21:20 +0800 Subject: [PATCH 126/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index fbb7974eba..bf9ad840ac 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -421,7 +421,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt private void processShadowTable(String keyName, Long resourceId, Map>> stringArrayListHashMap) { ArrayList> isolateType_ShadowTable = stringArrayListHashMap.get(keyName); if (CollectionUtils.isEmpty(isolateType_ShadowTable)) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案为空"); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "sheet列未找到数据"); } // 解析数据 List tableList = Lists.newArrayList(); @@ -491,7 +491,7 @@ private void processShadowTable(String keyName, Long resourceId, Map>> stringArrayListHashMap) { ArrayList> isolateType_Shadowdb = stringArrayListHashMap.get(keyName); if (CollectionUtils.isEmpty(isolateType_Shadowdb)) { - throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "隔离方案为空"); + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "sheet列未找到数据"); } // 解析列表值 for (int i = 1; i < isolateType_Shadowdb.size(); i++) { From 525a6d59985aa71fbd583666586d2edfb8c5b825 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:24:09 +0800 Subject: [PATCH 127/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/common/DataSourceUtil.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java index 7b2154f2f9..689a9e0dd0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/DataSourceUtil.java @@ -27,7 +27,7 @@ public static String generateKey(PressureResourceRelateDsEntity dsEntity) { } /** - * 数据源唯一 + * 数据源关联表的时候,按数据源拆分 * * @return */ @@ -40,6 +40,14 @@ public static String generateDsKey(Long resourceId, String businessDatabase) { return MD5Util.getMD5(key); } + /** + * 关联数据源存储的时候,按应用拆分 + * + * @param resourceId + * @param appName + * @param businessDatabase + * @return + */ public static String generateDsUniqueKey(Long resourceId, String appName, String businessDatabase) { String key = String.format("%d-%s-%s-%d-%s", resourceId, From ab64447ba6c6c9a9744791339616944817d6270e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 15:27:34 +0800 Subject: [PATCH 128/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index bf9ad840ac..d796650372 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -526,6 +526,7 @@ private void processShadowDB(String keyName, Long resourceId, Map whereWrapper = new QueryWrapper<>(); whereWrapper.eq("resource_id", resourceId); whereWrapper.eq("business_database", bussinessDatabase); From c2e2ebdf0715639979eeba484a4b9c2e071602e7 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 16:21:42 +0800 Subject: [PATCH 129/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index d796650372..e16d57ee58 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -370,7 +370,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt tableQueryParam.setResourceId(resource.getId()); List tableEntityList = pressureResourceRelateTableDAO.queryList(tableQueryParam); // 按照数据源分组下 - Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> String.valueOf(item.getUniqueKey()))); + Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(item -> DataSourceUtil.generateDsKey(item.getResourceId(), item.getBusinessDatabase()))); if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); for (Map.Entry> entry : tableEntityMap.entrySet()) { @@ -406,7 +406,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt shadowTableSheet.setSheetNum(1); sheets.add(shadowTableSheet); try { - ExcelUtils.exportExcelManySheet(response, resource.getName(), sheets); + ExcelUtils.exportExcelManySheet(response, resource.getName() + "-隔离方案", sheets); } catch (Exception e) { logger.error("配置导出错误: {}", ExceptionUtils.getStackTrace(e)); } From 48ae6c74faeb350b7b7b87d973babd9f06269ac3 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 16:34:44 +0800 Subject: [PATCH 130/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index e16d57ee58..3ddd9f9cb9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -406,7 +406,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt shadowTableSheet.setSheetNum(1); sheets.add(shadowTableSheet); try { - ExcelUtils.exportExcelManySheet(response, resource.getName() + "-隔离方案", sheets); + ExcelUtils.exportExcelManySheet(response, resource.getName() + "_隔离方案", sheets); } catch (Exception e) { logger.error("配置导出错误: {}", ExceptionUtils.getStackTrace(e)); } From 2644645367f3dc076d3c815204dbb43c0a74e518 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 16:48:25 +0800 Subject: [PATCH 131/318] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 1 - .../impl/PressureResourceRemoteCallServiceImpl.java | 1 - .../impl/PressureResourceTableServiceImpl.java | 1 - .../impl/PressureResourceRelateRemoteCallDAOImpl.java | 1 - .../impl/PressureResourceRelateTableDAOImpl.java | 2 -- .../data/mapper/mysql/PressureResourceRelateAppMapper.java | 2 -- .../data/mapper/mysql/PressureResourceRelateDsMapper.java | 3 --- .../pressureresource/PressureResoureController.java | 1 - .../PressureResoureRemouteCallController.java | 2 +- .../pressureresource/PressureResoureTableController.java | 5 +---- 10 files changed, 2 insertions(+), 17 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 3ddd9f9cb9..acb74452d7 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -3,7 +3,6 @@ import cn.hutool.core.collection.ListUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Lists; -import com.pamirs.takin.common.util.MD5Util; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.ExtInfo; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceRelateDsInput; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java index 3fc11a1286..a185cd0785 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java @@ -1,6 +1,5 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; -import bsh.Interpreter; import cn.hutool.core.collection.ListUtil; import com.alibaba.fastjson.JSON; import io.shulie.takin.common.beans.page.PagingList; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index cfa01eadaa..adc949c107 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -9,7 +9,6 @@ import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceRelateTableVO; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; -import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java index 2fea138273..7dfc1b5264 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateRemoteCallDAOImpl.java @@ -13,7 +13,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collections; import java.util.List; /** diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java index 5780887830..74a0a046b3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateTableDAOImpl.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateTableDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; @@ -16,7 +15,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collection; import java.util.Collections; import java.util.List; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java index 45a1d238ec..6c3f4f0062 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java @@ -6,8 +6,6 @@ import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; -import java.util.List; - public interface PressureResourceRelateAppMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java index 8e95d00c47..07aa9488a9 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateDsMapper.java @@ -2,13 +2,10 @@ import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateAppEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; -import java.util.List; - public interface PressureResourceRelateDsMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index ffdc7469cf..7fb285463b 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -10,7 +10,6 @@ import io.shulie.takin.web.common.constant.ApiUrls; import io.shulie.takin.web.ext.util.WebPluginUtils; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java index ef2c0ad48b..1440a2aa82 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureRemouteCallController.java @@ -26,7 +26,7 @@ */ @RestController @RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/remotecall") -@Api(tags = "接口: 数据源隔离") +@Api(tags = "接口: 远程调用") @Slf4j public class PressureResoureRemouteCallController { @Resource diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java index e40f79c267..71afd7e63a 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureTableController.java @@ -7,12 +7,9 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceTableService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.common.constant.ApiUrls; -import io.shulie.takin.web.common.util.RedisClientUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -29,7 +26,7 @@ */ @RestController @RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/table") -@Api(tags = "接口: 数据源隔离") +@Api(tags = "接口: 关联表") @Slf4j public class PressureResoureTableController { @Resource From 8e5d8391bea2ab58d0c85f0b848e6473f9a286da Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 16:59:18 +0800 Subject: [PATCH 132/318] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index acb74452d7..1f446f9140 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -373,19 +373,21 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt if (CollectionUtils.isNotEmpty(tableEntityList)) { Map> tableEntityMap = tableEntityList.stream().collect(Collectors.groupingBy(item -> item.getDsKey())); for (Map.Entry> entry : tableEntityMap.entrySet()) { - String dsId = entry.getKey(); - PressureResourceRelateDsEntity tmpDs = dsMap.get(dsId).stream().findFirst().orElse(new PressureResourceRelateDsEntity()); - if (tmpDs != null && tmpDs.getId() != null) { - List list = entry.getValue().stream().map(table -> { - ShadowTableExcelVO excelVO = new ShadowTableExcelVO(); - excelVO.setBusinessDatabase(tmpDs.getBusinessDatabase()); - excelVO.setDatabase(DbNameUtil.getDbName(tmpDs.getBusinessDatabase())); - excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getIsolateType())); - excelVO.setShadowTable(table.getShadowTable()); - excelVO.setBusinessTable(table.getBusinessTable()); - return excelVO; - }).collect(Collectors.toList()); - shadowTableExcelVOList.addAll(list); + List dsList = dsMap.get(entry.getKey()); + if (CollectionUtils.isNotEmpty(dsList)) { + PressureResourceRelateDsEntity tmpDs = dsList.get(0); + if (tmpDs != null && tmpDs.getId() != null) { + List list = entry.getValue().stream().map(table -> { + ShadowTableExcelVO excelVO = new ShadowTableExcelVO(); + excelVO.setBusinessDatabase(tmpDs.getBusinessDatabase()); + excelVO.setDatabase(DbNameUtil.getDbName(tmpDs.getBusinessDatabase())); + excelVO.setIsolateType(IsolateTypeEnum.getName(resource.getIsolateType())); + excelVO.setShadowTable(table.getShadowTable()); + excelVO.setBusinessTable(table.getBusinessTable()); + return excelVO; + }).collect(Collectors.toList()); + shadowTableExcelVOList.addAll(list); + } } } } else { From 1c294fe79a57e45a236a9ba417bc109a1894460c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 17:35:13 +0800 Subject: [PATCH 133/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommonServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 0b53639c0e..b1ab76ec1a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -493,6 +493,8 @@ private List processRemoteCall(PressureR ApplicationRemoteCallQueryDTO callQueryDTO = new ApplicationRemoteCallQueryDTO(); callQueryDTO.setLinkId(detailEntity.getLinkId()); callQueryDTO.setQueryTye("2"); + callQueryDTO.setPageSize(1000); + callQueryDTO.setCurrentPage(0); PagingList pageList = applicationClient.listApplicationRemoteCalls(callQueryDTO); if (pageList.isEmpty()) { return Collections.emptyList(); From 20deb26ed7c7b6c2c0fde2a6e5740887dc5d433e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 18:38:47 +0800 Subject: [PATCH 134/318] =?UTF-8?q?wokerbenche=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/service/impl/ApplicationServiceImpl.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index cef5e2be26..cfae681170 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -134,6 +134,7 @@ import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.dom4j.DocumentException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -402,9 +403,15 @@ public Response> getApplicationList(ApplicationQueryRequest @Override public Long getAccessErrorNum() { - ApplicationQueryRequestV2 requestV2 = new ApplicationQueryRequestV2(); - requestV2.setAccessStatus(3); - return this.pageApplication(requestV2).getTotal(); + try { + ApplicationQueryRequestV2 requestV2 = new ApplicationQueryRequestV2(); + requestV2.setAccessStatus(3); + Long total = this.pageApplication(requestV2).getTotal(); + return total; + } catch (Throwable e) { + log.error(ExceptionUtils.getStackTrace(e)); + } + return 0L; } // @Override From 0e5689a8571b6b44261a20dfb1b0862435182e93 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 19:01:12 +0800 Subject: [PATCH 135/318] =?UTF-8?q?wokerbenche=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/impl/ApplicationServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index cfae681170..dab6daac97 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -2655,13 +2655,13 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl vo.setNodeNum(param.getNodeNum()); vo.setSwitchStutus(param.getSwitchStatus()); vo.setUserId(param.getUserId()); - vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); if (Objects.isNull(applicationResult) || !applicationResult.getInstanceInfo().getInstanceOnlineAmount().equals(param.getNodeNum()) || CollectionUtils.isEmpty(applicationNodeResultList) || applicationNodeResultList.stream().map(ApplicationNodeResult::getAgentVersion).distinct().count() > 1) { vo.setAccessStatus(3); vo.setExceptionInfo("agent状态:" + param.getAccessStatus() + ",节点状态: 3"); + vo.setOnlineNodeNum(0); } else { vo.setAccessStatus(param.getAccessStatus()); String exceptionMsg = "agent状态:" + param.getAccessStatus(); @@ -2672,6 +2672,11 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl exceptionMsg = exceptionMsg + ",节点状态: 3"; } vo.setExceptionInfo(exceptionMsg); + if (applicationResult.getInstanceInfo() != null) { + vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); + } else { + vo.setOnlineNodeNum(0); + } } vo.setUserId(param.getUserId()); WebPluginUtils.fillQueryResponse(vo); From 44e5bc89eb5cd28d2a3446cd515b2dbe2f754454 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 19:09:55 +0800 Subject: [PATCH 136/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/biz/service/impl/ApplicationServiceImpl.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index dab6daac97..721b315e6c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -2661,7 +2661,6 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl || applicationNodeResultList.stream().map(ApplicationNodeResult::getAgentVersion).distinct().count() > 1) { vo.setAccessStatus(3); vo.setExceptionInfo("agent状态:" + param.getAccessStatus() + ",节点状态: 3"); - vo.setOnlineNodeNum(0); } else { vo.setAccessStatus(param.getAccessStatus()); String exceptionMsg = "agent状态:" + param.getAccessStatus(); @@ -2672,11 +2671,12 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl exceptionMsg = exceptionMsg + ",节点状态: 3"; } vo.setExceptionInfo(exceptionMsg); - if (applicationResult.getInstanceInfo() != null) { - vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); - } else { - vo.setOnlineNodeNum(0); - } + } + // 设置下在线节点数 + if (Objects.isNull(applicationResult) || applicationResult.getInstanceInfo() != null) { + vo.setOnlineNodeNum(0); + } else { + vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); } vo.setUserId(param.getUserId()); WebPluginUtils.fillQueryResponse(vo); From e9f99e01b78956c1ae64f4f289b89af63ca5abd6 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 22 Sep 2022 19:14:32 +0800 Subject: [PATCH 137/318] =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/impl/ApplicationServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index 721b315e6c..fbb7620dfd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -2673,7 +2673,7 @@ ApplicationVo appEntryToVo(ApplicationDetailResult param, ApplicationResult appl vo.setExceptionInfo(exceptionMsg); } // 设置下在线节点数 - if (Objects.isNull(applicationResult) || applicationResult.getInstanceInfo() != null) { + if (Objects.isNull(applicationResult) || applicationResult.getInstanceInfo() == null) { vo.setOnlineNodeNum(0); } else { vo.setOnlineNodeNum(applicationResult.getInstanceInfo().getInstanceOnlineAmount()); From 78d4b339c31228dd42b5e6924f1f4b54ef00e8b7 Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Fri, 23 Sep 2022 10:04:02 +0800 Subject: [PATCH 138/318] =?UTF-8?q?bug-fix=20=20dskey=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index ab176ccac0..47125584a2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -10,10 +10,7 @@ import io.shulie.takin.common.beans.component.SelectVO; import io.shulie.takin.web.biz.pojo.request.pressureresource.MockInfo; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; -import io.shulie.takin.web.biz.service.pressureresource.common.CheckStatusEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.IsolateTypeEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.JoinFlagEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.PressureResourceTypeEnum; +import io.shulie.takin.web.biz.service.pressureresource.common.*; import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; import io.shulie.takin.web.common.vo.agent.AgentRemoteCallVO; import io.shulie.takin.web.data.dao.application.AppRemoteCallDAO; @@ -118,8 +115,10 @@ private void pushDataSourceCommands(PressureResourceEntity resource){ List list = new ArrayList<>(); //遍历dsMap dsMap.forEach((appName,appDsList) ->{ - List collect = appDsList.stream().map(dsEntity -> mapping(resource, dsEntity, tableMap.get(dsEntity.getUniqueKey()))) - .filter(Objects::nonNull).collect(Collectors.toList()); + List collect = appDsList.stream().map(dsEntity -> { + String dsKey = DataSourceUtil.generateDsKey(dsEntity.getResourceId(), dsEntity.getBusinessDatabase()); + return mapping(resource, dsEntity, tableMap.get(dsKey)); + }).filter(Objects::nonNull).collect(Collectors.toList()); list.addAll(collect); }); //下发命令 @@ -352,8 +351,9 @@ private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEnti //非影子表模式 无表配置 return dataSourceConfig; } + String dsKey = DataSourceUtil.generateDsKey(dsEntity.getResourceId(), dsEntity.getBusinessDatabase()); List tableEntities = resourceTableMapper.selectList(new QueryWrapper().lambda() - .eq(PressureResourceRelateTableEntity::getResourceId, dsEntity.getResourceId()) + .eq(PressureResourceRelateTableEntity::getDsKey, dsKey) .eq(PressureResourceRelateTableEntity::getJoinFlag, JoinFlagEnum.YES.getCode())); if(CollectionUtils.isEmpty(tableEntities)){ dataSourceConfig.setDisabled(true); From d7350a53d9f9bc834646b006e7544938a4770517 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 10:05:56 +0800 Subject: [PATCH 139/318] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 44a5a7229a..82d6946545 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -241,14 +241,14 @@ public void update(PressureResourceInput input) { // 按名字查询链路 SceneQueryParam sceneQueryParam = new SceneQueryParam(); - sceneQueryParam.setSceneName(input.getName()); + // 使用原始名字去查询 + sceneQueryParam.setSceneName(nameEntity.getName()); List list = sceneDAO.selectListByName(sceneQueryParam); if (CollectionUtils.isNotEmpty(list)) { SceneUpdateParam updateParam = new SceneUpdateParam(); + updateParam.setId(input.getSourceId()); updateParam.setSceneName(input.getName()); updateParam.setUpdateTime(new Date()); - updateParam.setId(input.getSourceId()); - updateParam.setUserId(input.getUserId()); sceneDAO.update(updateParam); } // 修改详情 From 858e2fd0e36666e5a3b774cd1e4eb99e7827eb1f Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 11:19:54 +0800 Subject: [PATCH 140/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceDsServiceImpl.java | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 1f446f9140..e02d2f41c5 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -429,14 +429,18 @@ private void processShadowTable(String keyName, Long resourceId, Map mess = isolateType_ShadowTable.get(i); // 业务数据源地址 - String bussinessDatabase = mess.get(0); - // 业务库 - String shadowDatabase = mess.get(2); - // 业务表 - String businessTable = mess.get(3); - // 影子表 - String shadowTable = mess.get(4); - + String bussinessDatabase = ""; + String businessTable = ""; + String shadowTable = ""; + try { + bussinessDatabase = mess.get(0); + // 业务表 + businessTable = mess.get(3); + // 影子表 + shadowTable = mess.get(4); + } catch (Throwable e) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "文件缺少必填项,请检查!"); + } PressureResourceRelateTableInput input = new PressureResourceRelateTableInput(); input.setDatabase(bussinessDatabase); input.setBusinessTable(businessTable); @@ -497,12 +501,24 @@ private void processShadowDB(String keyName, Long resourceId, Map mess = isolateType_Shadowdb.get(i); + // 至少要填三列 + if (mess.size() > 2) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "缺少数据,请检查文件是否正确"); + } // 获取每列值 String bussinessDatabase = mess.get(0); String shadowDatabase = mess.get(2); - String userName = mess.get(3); - String password = mess.get(4); - + String userName = ""; + String password = ""; + try { + // 账号密码可以不填写 + userName = mess.get(3); + password = mess.get(4); + } catch (Throwable e) { + } + if (StringUtils.isBlank(shadowDatabase)) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "业务数据源为空!"); + } // 按业务数据源查询,是否存在 PressureResourceDsQueryParam queryParam = new PressureResourceDsQueryParam(); queryParam.setResourceId(resourceId); From b2f006ef78bbc24c47089d187e22a2f77ca3f5ce Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 11:32:49 +0800 Subject: [PATCH 141/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index e02d2f41c5..3276c68871 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -502,7 +502,7 @@ private void processShadowDB(String keyName, Long resourceId, Map mess = isolateType_Shadowdb.get(i); // 至少要填三列 - if (mess.size() > 2) { + if (mess.size() < 3) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "缺少数据,请检查文件是否正确"); } // 获取每列值 From b53715fe096a74717408732b1881d1a62dc4c5d3 Mon Sep 17 00:00:00 2001 From: zhaoyong Date: Fri, 23 Sep 2022 11:48:09 +0800 Subject: [PATCH 142/318] =?UTF-8?q?=E5=B0=86=E7=A7=9F=E6=88=B7=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=88=B0=E6=B2=A1=E6=9C=89?= =?UTF-8?q?envCode=E6=95=B0=E7=BB=84=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/app/conf/mybatis/TakinTenantLineInnerInterceptor.java | 4 +++- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/mybatis/TakinTenantLineInnerInterceptor.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/mybatis/TakinTenantLineInnerInterceptor.java index e39399e1ab..5817c4ba00 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/mybatis/TakinTenantLineInnerInterceptor.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/mybatis/TakinTenantLineInnerInterceptor.java @@ -151,7 +151,9 @@ public class TakinTenantLineInnerInterceptor extends TenantLineInnerInterceptor "t_warn_detail", "t_pressure_task_variety", "t_pressure_task_callback", - "t_interface_performance_result" + "t_interface_performance_result", + "t_tro_dept_level_name", + "t_tenant_resource" }; private String[] tableArrWithoutUserId = new String[] { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 5b9da1af3c..4c569d57f3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -651,6 +651,7 @@ public PagingList getBusinessFlowList(BusinessFlowPage if (user != null) { r.setUserName(user.getName()); } + WebPluginUtils.fillQueryResponse(r); }); } return PagingList.of(responses, pageList.getTotal()); From 957a9c2fb7c688a3c55d858c06082c9021329665 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 12:38:57 +0800 Subject: [PATCH 143/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 11 +++++++++-- .../impl/PressureResourceDetailDAOImpl.java | 4 +++- .../mapper/mysql/PressureResourceDetailMapper.java | 7 ++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 82d6946545..ea422a05c2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -202,6 +202,8 @@ private List convertEntitys(int type, Long resourc detailEntity.setLinkId(linkId); detailEntity.setGmtCreate(new Date()); detailEntity.setGmtModified(new Date()); + detailEntity.setTenantId(WebPluginUtils.traceTenantId()); + detailEntity.setEnvCode(WebPluginUtils.traceEnvCode()); return detailEntity; }).collect(Collectors.toList()); return insertEntityList; @@ -212,6 +214,7 @@ private List convertEntitys(int type, Long resourc * * @param input */ + @Transactional(rollbackFor = Exception.class) @Override public void update(PressureResourceInput input) { if (input.getId() == null) { @@ -225,12 +228,16 @@ public void update(PressureResourceInput input) { PressureResourceQueryParam param = new PressureResourceQueryParam(); param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); + String oldName = ""; if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { if (input.getType().intValue() == SourceTypeEnum.MANUAL.getCode()) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); } else { input.setName(input.getName() + DateUtil.formatDateTime(new Date())); } + oldName = nameEntity.getName(); + } else { + oldName = input.getName(); } PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); updateResourceEntity.setId(input.getId()); @@ -242,7 +249,7 @@ public void update(PressureResourceInput input) { // 按名字查询链路 SceneQueryParam sceneQueryParam = new SceneQueryParam(); // 使用原始名字去查询 - sceneQueryParam.setSceneName(nameEntity.getName()); + sceneQueryParam.setSceneName(oldName); List list = sceneDAO.selectListByName(sceneQueryParam); if (CollectionUtils.isNotEmpty(list)) { SceneUpdateParam updateParam = new SceneUpdateParam(); @@ -291,7 +298,7 @@ public void update(PressureResourceInput input) { } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); + return String.format("%s|%s|%s|%s|%s|%s", ele.getEntranceName(), ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); } /** diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 5367b62611..8d7513c077 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -42,7 +42,9 @@ public void batchInsert(List insertList) { if (CollectionUtils.isEmpty(insertList)) { return; } - pressureResourceDetailMapper.saveOrUpdate(insertList); + insertList.stream().forEach(entity -> { + pressureResourceDetailMapper.saveOrUpdate(entity); + }); } private QueryWrapper getWrapper(PressureResourceDetailQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java index 345636c59f..efa34b3440 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java @@ -17,11 +17,12 @@ public interface PressureResourceDetailMapper "resource_id,app_name,entrance_url,entrance_name,method,rpc_type,extend,type," + "link_id,tenant_id,env_code,gmt_create)" + "values " + - "" + "(#{item.resourceId},#{item.appName},#{item.entranceUrl},#{item.entranceName},#{item.method},#{item.rpcType},#{item.extend}," + "#{item.type},#{item.linkId},#{item.tenantId},#{item.envCode},#{item.gmtCreate})" + - "" + " ON DUPLICATE KEY UPDATE gmt_modified=now()" + + " " + + " ,entrance_name =values(entrance_name)" + + "" + "") - void saveOrUpdate(@Param("list") List list); + void saveOrUpdate(@Param("item") PressureResourceDetailEntity item); } From edb1a494ca77336fccb7283ab7927f015b997cb6 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 13:56:36 +0800 Subject: [PATCH 144/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 18 +++++++++++++++++- .../PressureResourceDetailDAO.java | 2 ++ .../impl/PressureResourceDetailDAOImpl.java | 13 ++++++++++--- .../mysql/PressureResourceDetailMapper.java | 7 +++---- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index ea422a05c2..fef211aa7b 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -268,16 +268,30 @@ public void update(PressureResourceInput input) { Map> oldMap = oldList.stream().collect(Collectors.groupingBy(ele -> fetchKey(ele))); //判断需要新增的,不在oldMap里面的 List insertEntitys = Lists.newArrayList(); + List updateEntitys = Lists.newArrayList(); for (Map.Entry> entry : newMap.entrySet()) { String tmpKey = entry.getKey(); if (!oldMap.containsKey(tmpKey)) { // 相同URL和请求方式只有一个 insertEntitys.add(entry.getValue().get(0)); + } else { + // 判断下名字是否被修改 + PressureResourceDetailEntity old = oldMap.get(tmpKey).get(0); + PressureResourceDetailEntity neww = newMap.get(tmpKey).get(0); + if (!old.getEntranceName().equals(neww.getEntranceName())) { + updateEntitys.add(neww); + } } } if (CollectionUtils.isNotEmpty(insertEntitys)) { pressureResourceDetailDAO.batchInsert(insertEntitys); } + if (CollectionUtils.isNotEmpty(updateEntitys)) { + // 修改名称 + updateEntitys.stream().forEach(tmp -> { + pressureResourceDetailDAO.updateEntranceName(tmp); + }); + } // 自动梳理出来的不做删除操作 if (input.getType().intValue() != SourceTypeEnum.AUTO.getCode()) { // 删除的,不在newMap里面的, @@ -295,10 +309,12 @@ public void update(PressureResourceInput input) { pressureResourceDetailMapper.deleteBatchIds(deleteIds); } } + // 修改的 + } private String fetchKey(PressureResourceDetailEntity ele) { - return String.format("%s|%s|%s|%s|%s|%s", ele.getEntranceName(), ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); + return String.format("%s|%s|%s|%s|%s", ele.getEntranceUrl(), ele.getMethod(), ele.getAppName(), ele.getRpcType(), ele.getExtend()); } /** diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java index 7f66725be4..79c5276e64 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceDetailDAO.java @@ -25,4 +25,6 @@ public interface PressureResourceDetailDAO { * @param insertList */ void batchInsert(List insertList); + + void updateEntranceName(PressureResourceDetailEntity detailEntity); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java index 8d7513c077..dae450d402 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDetailDAOImpl.java @@ -42,9 +42,16 @@ public void batchInsert(List insertList) { if (CollectionUtils.isEmpty(insertList)) { return; } - insertList.stream().forEach(entity -> { - pressureResourceDetailMapper.saveOrUpdate(entity); - }); + pressureResourceDetailMapper.saveOrUpdate(insertList); + } + + @Override + public void updateEntranceName(PressureResourceDetailEntity detailEntity) { + PressureResourceDetailEntity update = new PressureResourceDetailEntity(); + update.setEntranceName(detailEntity.getEntranceName()); + QueryWrapper updateWrapper = new QueryWrapper<>(); + updateWrapper.eq("link_id", detailEntity.getLinkId()); + pressureResourceDetailMapper.update(update, updateWrapper); } private QueryWrapper getWrapper(PressureResourceDetailQueryParam param) { diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java index efa34b3440..345636c59f 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceDetailMapper.java @@ -17,12 +17,11 @@ public interface PressureResourceDetailMapper "resource_id,app_name,entrance_url,entrance_name,method,rpc_type,extend,type," + "link_id,tenant_id,env_code,gmt_create)" + "values " + + "" + "(#{item.resourceId},#{item.appName},#{item.entranceUrl},#{item.entranceName},#{item.method},#{item.rpcType},#{item.extend}," + "#{item.type},#{item.linkId},#{item.tenantId},#{item.envCode},#{item.gmtCreate})" + + "" + " ON DUPLICATE KEY UPDATE gmt_modified=now()" + - " " + - " ,entrance_name =values(entrance_name)" + - "" + "") - void saveOrUpdate(@Param("item") PressureResourceDetailEntity item); + void saveOrUpdate(@Param("list") List list); } From b1d275aedc2dc4eb07609a70ff5eb296946b3c9d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 14:00:43 +0800 Subject: [PATCH 145/318] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index fef211aa7b..a8b4de0325 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -242,7 +242,10 @@ public void update(PressureResourceInput input) { PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); updateResourceEntity.setId(input.getId()); updateResourceEntity.setName(input.getName()); - updateResourceEntity.setGmtModified(new Date()); + // 系统自动扫描的,不要更新时间,排序有影响 + if (input.getType().equals(SourceTypeEnum.AUTO.getCode())) { + updateResourceEntity.setGmtModified(new Date()); + } updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); From 36c5e9d8b4402d1c938653e4e8938e7c28ffd17b Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 14:02:29 +0800 Subject: [PATCH 146/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index a8b4de0325..71a63de5a0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -281,7 +281,7 @@ public void update(PressureResourceInput input) { // 判断下名字是否被修改 PressureResourceDetailEntity old = oldMap.get(tmpKey).get(0); PressureResourceDetailEntity neww = newMap.get(tmpKey).get(0); - if (!old.getEntranceName().equals(neww.getEntranceName())) { + if (old != null && StringUtils.isNotBlank(old.getEntranceName()) && !old.getEntranceName().equals(neww.getEntranceName())) { updateEntitys.add(neww); } } From 378a71cc6c5b40b5c0169dc7a4ab1aec21fc731c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 15:56:45 +0800 Subject: [PATCH 147/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 71a63de5a0..45f53523e2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -249,12 +249,9 @@ public void update(PressureResourceInput input) { updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); - // 按名字查询链路 - SceneQueryParam sceneQueryParam = new SceneQueryParam(); // 使用原始名字去查询 - sceneQueryParam.setSceneName(oldName); - List list = sceneDAO.selectListByName(sceneQueryParam); - if (CollectionUtils.isNotEmpty(list)) { + SceneResult sceneResult = sceneDAO.getSceneDetail(entity.getSourceId()); + if (sceneResult != null && !sceneResult.getSceneName().equals(input.getName())) { SceneUpdateParam updateParam = new SceneUpdateParam(); updateParam.setId(input.getSourceId()); updateParam.setSceneName(input.getName()); From 50695bab43b00589f76a0dffb4ae75b19a7d08f5 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 16:09:01 +0800 Subject: [PATCH 148/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 45f53523e2..6729c85045 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -253,7 +253,7 @@ public void update(PressureResourceInput input) { SceneResult sceneResult = sceneDAO.getSceneDetail(entity.getSourceId()); if (sceneResult != null && !sceneResult.getSceneName().equals(input.getName())) { SceneUpdateParam updateParam = new SceneUpdateParam(); - updateParam.setId(input.getSourceId()); + updateParam.setId(sceneResult.getId()); updateParam.setSceneName(input.getName()); updateParam.setUpdateTime(new Date()); sceneDAO.update(updateParam); From a0ea140234b17ec626d67e72937b172e0d212159 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 16:20:02 +0800 Subject: [PATCH 149/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 6729c85045..effdee4b5d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -228,16 +228,12 @@ public void update(PressureResourceInput input) { PressureResourceQueryParam param = new PressureResourceQueryParam(); param.setName(input.getName()); PressureResourceEntity nameEntity = pressureResourceDAO.queryByName(input.getName()); - String oldName = ""; if (nameEntity != null && !nameEntity.getId().equals(input.getId())) { if (input.getType().intValue() == SourceTypeEnum.MANUAL.getCode()) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, input.getName() + "已存在"); } else { input.setName(input.getName() + DateUtil.formatDateTime(new Date())); } - oldName = nameEntity.getName(); - } else { - oldName = input.getName(); } PressureResourceEntity updateResourceEntity = new PressureResourceEntity(); updateResourceEntity.setId(input.getId()); From fb84e969e2d79c9e580920b75272ee5f7aea89cd Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 16:34:14 +0800 Subject: [PATCH 150/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/dao/pressureresource/impl/PressureResourceDAOImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java index 27b1206368..cf075a07ac 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceDAOImpl.java @@ -48,7 +48,7 @@ public Long add(PressureResourceEntity insertEntity) { public PagingList pageList(PressureResourceQueryParam param) { QueryWrapper queryWrapper = this.getWrapper(param); Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); - queryWrapper.orderByDesc("gmt_modified"); + queryWrapper.orderByDesc("gmt_create"); IPage pageList = pressureResourceMapper.selectPage(page, queryWrapper); if (pageList.getRecords().isEmpty()) { return PagingList.empty(); From fb358cce375445ca94bc7a2aea676594d64aa36a Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Fri, 23 Sep 2022 16:59:39 +0800 Subject: [PATCH 151/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/scene/impl/SceneServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index c0f92eddff..386c655600 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -376,6 +376,7 @@ public BusinessFlowDetailResponse getBusinessFlowDetail(Long id) { } if (StringUtils.isBlank(sceneResult.getScriptJmxNode())) { result.setId(sceneResult.getId()); + result.setBusinessProcessName(sceneResult.getSceneName()); return result; } List scriptNodes = JsonHelper.json2List(sceneResult.getScriptJmxNode(), ScriptNode.class); From 23e715a9806eb1ff9fbb15538dff95acf94dc582 Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Fri, 23 Sep 2022 17:22:09 +0800 Subject: [PATCH 152/318] =?UTF-8?q?bug-fix=20=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=BF=87=E6=BB=A4=E6=9C=AA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 47125584a2..a0714756a3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -12,6 +12,7 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.service.pressureresource.common.*; import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; +import io.shulie.takin.web.common.enums.application.AppRemoteCallConfigEnum; import io.shulie.takin.web.common.vo.agent.AgentRemoteCallVO; import io.shulie.takin.web.data.dao.application.AppRemoteCallDAO; import io.shulie.takin.web.data.dao.application.InterfaceTypeMainDAO; @@ -157,7 +158,9 @@ private void pushWhitelistConfigs(PressureResourceEntity resource){ takinConfig.setEnvCode(resource.getEnvCode()); takinConfig.setTenantCode(tenantInfoExt.getTenantCode()); takinConfig.setConfigType(PressureResourceTypeEnum.WHITELIST.getCode()); - List collect = remoteCallList.stream().map(this::mapping) + List collect = remoteCallList.stream() + .filter(remoteCallEntity -> !AppRemoteCallConfigEnum.CLOSE_CONFIGURATION.getType().equals(remoteCallEntity.getType())) + .map(this::mapping) .filter(Objects::nonNull).collect(Collectors.toList()); String configParam = ""; try { From fc412b427fdd76f856e65f375b9067b12e2bc6a0 Mon Sep 17 00:00:00 2001 From: zhaoyong Date: Mon, 26 Sep 2022 11:02:54 +0800 Subject: [PATCH 153/318] =?UTF-8?q?swaggert=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/app/conf/SwaggerConfig.java | 19 +++++++++++++++++++ .../dashboard/WorkBenchController.java | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/SwaggerConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/SwaggerConfig.java index f9c10ad383..d12425c78b 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/SwaggerConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/SwaggerConfig.java @@ -451,6 +451,25 @@ public Docket api_twoWeekIteration() { ; } + /** + * 权限改造 + * @return + */ + @Bean + public Docket api_deptAuth() { + return new Docket(DocumentationType.SWAGGER_2) + .pathProvider(this.pathProvider()) + .groupName("部门权限改造") + .select() + .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) + .paths(getRegex("/api/(dept|role).*")) + .build() + .directModelSubstitute(LocalDate.class, String.class) + .useDefaultResponseMessages(false) + .apiInfo(apiInfo()).enable(swaggerEnable) + ; + } + /** diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/dashboard/WorkBenchController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/dashboard/WorkBenchController.java index a278bd1784..3b42741aa7 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/dashboard/WorkBenchController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/dashboard/WorkBenchController.java @@ -23,7 +23,7 @@ */ @RestController -@RequestMapping("api/workbench") +@RequestMapping("api/takinworkbench") @Api(tags = "WorkBenchController", value = "工作台接口") @Slf4j public class WorkBenchController { From ff6973c0cd0023f9d0d6648b5f7bd165a22f57e1 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 26 Sep 2022 13:49:15 +0800 Subject: [PATCH 154/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/RemoteCallUtil.java | 31 +++++++------------ ...PressureResourceRemoteCallServiceImpl.java | 5 ++- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/RemoteCallUtil.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/RemoteCallUtil.java index ad7199324b..4053033ef4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/RemoteCallUtil.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/RemoteCallUtil.java @@ -30,28 +30,21 @@ public static Integer getType(PressureResourceRelateRemoteCallEntity call) { if (call == null) { return 0; } - if (call.getPass() == null) { - return 0; - } - if (call.getPass().intValue() == PassEnum.PASS_NO.getCode()) { - return 0; - } - // 假如是通过,而且mock有值的话,判断下是什么类型 - if (call.getPass().intValue() == PassEnum.PASS_YES.getCode()) { - if (StringUtils.isBlank(call.getMockReturnValue())) { - return 1; // 白名单 + // 假如存在mock的话,判断是什么mock值 + if (StringUtils.isNotBlank(call.getMockReturnValue())) { + MockInfo mockInfo = JSON.parseObject(call.getMockReturnValue(), MockInfo.class); + // json格式 + if ("0".equals(mockInfo.getType())) { + return 4; // 返回值mock } - if (StringUtils.isNotBlank(call.getMockReturnValue())) { - MockInfo mockInfo = JSON.parseObject(call.getMockReturnValue(), MockInfo.class); - // json格式 - if ("0".equals(mockInfo.getType())) { - return 4; // 返回值mock - } - if ("1".equals(mockInfo.getType())) { - return 2; // Groovy脚本mock - } + if ("1".equals(mockInfo.getType())) { + return 2; // Groovy脚本mock } } + // 有设置是否通过,而且是未通过的情况,且mock没有值,则为未配置 + if (call.getPass() != null && call.getPass().intValue() == PassEnum.PASS_YES.getCode()) { + return 1; + } return 0; } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java index a185cd0785..f1174df1e9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceRemoteCallServiceImpl.java @@ -110,9 +110,8 @@ public void update(PressureResourceMockInput mockInput) { MockInfo mockInfo = mockInput.getMockInfo(); if (mockInfo != null) { update.setMockReturnValue(JSON.toJSONString(mockInfo)); - // 设置了mock,默认放行 - update.setPass(PassEnum.PASS_YES.getCode()); - } else { + } + if (mockInput.getPass() != null) { update.setPass(mockInput.getPass()); } update.setGmtModified(new Date()); From d576a261040ea916385d4865e642719550839b9b Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 26 Sep 2022 13:57:15 +0800 Subject: [PATCH 155/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/application/ApplicationEntranceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java index 1d08bbf1bf..f86dda208b 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/application/ApplicationEntranceController.java @@ -117,7 +117,7 @@ public ResponseResult getApplicationEntrances_page( public List getApplicationEntrances_all( ApplicationEntrancesAllQueryRequest request) { List applicationEntrances = applicationEntranceClient.getApplicationEntrances( - request.getApplicationName(), null, request.getServiceName(), 1, 5000); + request.getApplicationName(), null, request.getServiceName(), 1, 1000); if (CollectionUtils.isEmpty(applicationEntrances)) { return Lists.newArrayList(); } From da911ee9fd9c0a42d81b15a3391bfa61f762bc32 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 26 Sep 2022 15:48:57 +0800 Subject: [PATCH 156/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceAppServiceImpl.java | 6 +++--- .../impl/PressureResourceCommonServiceImpl.java | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index cdd4845e7d..98a5e5b7a0 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -120,9 +120,9 @@ public PagingList appCheckList(PressureResourceAppR vo.setStatus(1); vo.setId(String.valueOf(configDto.getId())); // 获取应用信息 - List list = applicationService.getApplicationList(vo.getAppName()); - if (CollectionUtils.isNotEmpty(list)) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); + Long appId = applicationService.queryApplicationIdByAppName(vo.getAppName()); + if (appId != null) { + Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index b1ab76ec1a..974faba870 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -534,6 +534,7 @@ private List processRemoteCall(PressureR callEntity.setInterfaceChildType(item.getMiddlewareDetail()); } callEntity.setMd5(RemoteCallUtils.buildRemoteCallName(String.format("%d-%s", callEntity.getResourceId(), callEntity.getAppName()), callEntity.getInterfaceName(), callEntity.getInterfaceType())); + // 默认未配置 callEntity.setType(AppRemoteCallConfigEnum.CLOSE_CONFIGURATION.getType()); callEntity.setManualTag(0); callEntity.setTenantId(WebPluginUtils.traceTenantId()); From c115626198105aa07f3c6c7ddd5d8c7492e0bc37 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 26 Sep 2022 17:39:59 +0800 Subject: [PATCH 157/318] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/ext/api/user/WebUserExtApi.java | 20 ++++++++++++++----- .../takin/web/ext/util/WebPluginUtils.java | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/api/user/WebUserExtApi.java b/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/api/user/WebUserExtApi.java index 9a7470b239..6478688b8e 100644 --- a/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/api/user/WebUserExtApi.java +++ b/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/api/user/WebUserExtApi.java @@ -67,6 +67,16 @@ public interface WebUserExtApi extends ExtensionPoint { */ Map getUserMapByIds(List userIds); + /** + * 根据用户ids 获取应用 + * 用于:查询用户数据 + * todo :或许想办法如何废弃 + * + * @param userIds - + * @return - + */ + Map getUserMap(List userIds); + /** * 查询所有用户 * 用于:初始化白名单文件 @@ -98,9 +108,9 @@ public interface WebUserExtApi extends ExtensionPoint { * @param traceContextExt 溯源数据对象 */ void setCloudUserData(ContextExt traceContextExt); - - Long getCustomerId(); - + + Long getCustomerId(); + /** * 获取系统个人信息 * @@ -136,8 +146,8 @@ public interface WebUserExtApi extends ExtensionPoint { * @return */ UserExt getUser(); - - /** + + /** * 获取登录用户 * * @return - diff --git a/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/util/WebPluginUtils.java b/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/util/WebPluginUtils.java index 9634181e0c..8b2af75f4d 100644 --- a/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/util/WebPluginUtils.java +++ b/takin-web-ext/takin-web-ext-api/src/main/java/io/shulie/takin/web/ext/util/WebPluginUtils.java @@ -167,7 +167,7 @@ public static Map getUserMapByIds(List userIds) { userIds = userIds.stream().filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); - Map userMap = userApi.getUserMapByIds(userIds); + Map userMap = userApi.getUserMap(userIds); if (null != userMap) { return userMap; } From 2b70bff40ef49667d14e7a8b23f75ccb8c7b3079 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 10:43:49 +0800 Subject: [PATCH 158/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ApplicationServiceImpl.java | 16 +++++++++----- .../impl/PressureResourceAppServiceImpl.java | 18 ++++++++++----- .../PressureResourceCommonServiceImpl.java | 22 ++++++++++++------- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index fbb7620dfd..0a2bbca1bd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -15,8 +15,7 @@ import java.util.Optional; import java.util.Set; import java.util.UUID; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -1401,10 +1400,15 @@ public PagingList pageApplication(ApplicationQueryReq // 非全量查询的时候,增加不需要处理状态 if (!request.isAll()) { - // 跟应用详情再对比下,同步下状态 - Response vo = this.getApplicationInfo(response.getId()); - if (vo.getSuccess() && vo.getData() != null) { - response.setAccessStatus(vo.getData().getAccessStatus()); + // 跟应用详情再对比下,同步下状态,这个接口真慢 + CompletableFuture> future = CompletableFuture.supplyAsync(() -> this.getApplicationInfo(response.getId())); + try { + Response vo = future.get(); + if (vo.getSuccess() && vo.getData() != null) { + response.setAccessStatus(vo.getData().getAccessStatus()); + } + } catch (Throwable e) { + e.printStackTrace(); } } return response; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 98a5e5b7a0..9530d86397 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -39,6 +39,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -122,12 +123,17 @@ public PagingList appCheckList(PressureResourceAppR // 获取应用信息 Long appId = applicationService.queryApplicationIdByAppName(vo.getAppName()); if (appId != null) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - vo.setAgentNodeNum(applicationVo.getOnlineNodeNum()); - vo.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + CompletableFuture> future = CompletableFuture.supplyAsync(() -> applicationService.getApplicationInfo(String.valueOf(appId))); + try { + Response voResponse = future.get(); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + vo.setNodeNum(applicationVo.getOnlineNodeNum()); + vo.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + } + } catch (Throwable e) { + e.printStackTrace(); } } return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 974faba870..da7e607934 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -65,6 +65,7 @@ import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -367,14 +368,19 @@ public List getResourceIdsFormRedis() { // 默认不正常 appEntity.setStatus(1); // 通过应用去查询状态 - List list = applicationService.getApplicationList(appEntity.getAppName()); - if (CollectionUtils.isNotEmpty(list)) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(list.get(0).getApplicationId())); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + Long appId = applicationService.queryApplicationIdByAppName(appEntity.getAppName()); + if (appId != null) { + CompletableFuture> future = CompletableFuture.supplyAsync(() -> applicationService.getApplicationInfo(String.valueOf(appId))); + try { + Response voResponse = future.get(); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); + appEntity.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + } + } catch (Throwable e) { + e.printStackTrace(); } } appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); From a5e595bf798cb6a5d52757c3aaac9f93c7305347 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 13:38:38 +0800 Subject: [PATCH 159/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommonServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index da7e607934..4bab8760f6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -377,7 +377,7 @@ public List getResourceIdsFormRedis() { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); - appEntity.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } catch (Throwable e) { e.printStackTrace(); From 11b76a64dac4db08b195452b1b930a9d48694055 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 14:05:28 +0800 Subject: [PATCH 160/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppDataSourceService.java | 17 -- .../impl/AppDataSourceServiceImpl.java | 45 ---- .../PressureResourceCommonServiceImpl.java | 2 +- .../controller/agent/AgentPushController.java | 244 ------------------ 4 files changed, 1 insertion(+), 307 deletions(-) delete mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java delete mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java delete mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java deleted file mode 100644 index 0aaa9421fe..0000000000 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/AppDataSourceService.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.shulie.takin.web.biz.service.pressureresource; - -import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; - -/** - * @author xingchen - * @description: TODO - * @date 2022/8/30 10:17 AM - */ -public interface AppDataSourceService { - /** - * 保存数据源信息 - * - * @param param - */ - void save(AppDatabaseInputParam param); -} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java deleted file mode 100644 index 6a2ae8bbf4..0000000000 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/AppDataSourceServiceImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.shulie.takin.web.biz.service.pressureresource.impl; - -import com.pamirs.takin.common.util.MD5Util; -import io.shulie.takin.web.biz.service.pressureresource.AppDataSourceService; -import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceAppDataSourceEntity; -import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; -import io.shulie.takin.web.data.dao.pressureresource.AppDataSourceDAO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.Arrays; -import java.util.Date; - -/** - * @author xingchen - * @description: TODO - * @date 2022/8/30 10:17 AM - */ -@Service -public class AppDataSourceServiceImpl implements AppDataSourceService { - private static Logger logger = LoggerFactory.getLogger(AppDataSourceServiceImpl.class); - - @Resource - private AppDataSourceDAO appDataSourceDAO; - - /** - * 保存应用数据源信息 - * - * @param param - */ - @Override - public void save(AppDatabaseInputParam param) { - PressureResourceAppDataSourceEntity entity = new PressureResourceAppDataSourceEntity(); - BeanUtils.copyProperties(param, entity); - - // 生成唯一值 - String uniqueKey = MD5Util.getMD5(String.format("%s-%s-%s", param.getAppName(), param.getDataSource(), param.getTableUser())); - entity.setUniqueKey(uniqueKey); - entity.setGmtCreate(new Date()); - appDataSourceDAO.saveOrUpdate(Arrays.asList(entity)); - } -} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 4bab8760f6..a2081d9a36 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -376,7 +376,7 @@ public List getResourceIdsFormRedis() { if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum()); + appEntity.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } catch (Throwable e) { diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java deleted file mode 100644 index 803c239b10..0000000000 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java +++ /dev/null @@ -1,244 +0,0 @@ -package io.shulie.takin.web.entrypoint.controller.agent; - -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; - -import com.pamirs.takin.common.ResponseOk; -import com.pamirs.takin.common.ResponseError; -import com.pamirs.takin.entity.domain.vo.JarVersionVo; -import com.pamirs.takin.entity.domain.vo.ApplicationVo; -import com.pamirs.takin.entity.domain.vo.TUploadNeedVo; -import com.pamirs.takin.entity.domain.vo.TUploadInterfaceVo; -import com.pamirs.takin.entity.domain.dto.NodeUploadDataDTO; -import com.pamirs.takin.entity.domain.query.ShadowJobConfigQuery; -import io.shulie.takin.channel.bean.CommandPacket; -import io.shulie.takin.web.biz.service.pressureresource.AppDataSourceService; -import io.shulie.takin.web.biz.utils.XmlUtil; -import io.shulie.takin.web.common.common.Response; -import io.shulie.takin.web.common.constant.AgentUrls; -import io.shulie.takin.web.biz.constant.BizOpConstants; -import io.shulie.takin.web.biz.service.ConfCenterService; -import io.shulie.takin.web.common.exception.ExceptionCode; -import io.shulie.takin.web.biz.service.ApplicationService; -import io.shulie.takin.web.common.exception.TakinWebException; -import io.shulie.takin.web.biz.service.UploadInterfaceService; -import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; -import io.shulie.takin.web.common.context.OperationLogContextHolder; -import io.shulie.takin.web.biz.service.simplify.ShadowJobConfigService; -import io.shulie.takin.web.biz.service.linkmanage.ApplicationApiService; -import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; -import io.shulie.takin.web.data.param.application.ConfigReportInputParam; -import io.shulie.takin.web.biz.service.perfomanceanaly.TraceManageService; -import io.shulie.takin.web.biz.service.perfomanceanaly.ReportDetailService; -import lombok.extern.slf4j.Slf4j; -import io.swagger.annotations.Api; -import org.springframework.http.MediaType; -import io.swagger.annotations.ApiOperation; -import org.apache.commons.lang3.StringUtils; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author TODO - */ -@RestController -@RequestMapping(AgentUrls.PREFIX_URL) -@Api(tags = "接口: Agent全局配置") -@Slf4j -public class AgentPushController { - - @Resource - private ApplicationService applicationService; - @Resource - private ApplicationApiService apiService; - @Resource - private ShadowJobConfigService shadowJobConfigService; - @Resource - private UploadInterfaceService uploadInterfaceService; - @Resource - private ConfCenterService confCenterService; - @Resource - private TraceManageService traceManageService; - @Resource - private ReportDetailService reportDetailService; - @Resource - private AppDataSourceService appDataSourceService; - - @ApiOperation("|_ agent注册api") - @PostMapping(value = AgentUrls.REGISTER_URL) - public Response registerApi(@RequestBody Map> register) { - try { - return apiService.registerApi(register); - } catch (Exception e) { - throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.registerApi 注册api异常", e); - } - } - - /** - * @return 响应体 - */ - - @PostMapping(value = AgentUrls.MIDDLE_STAUTS_URL) - @ApiOperation("agent上传中间件列表状态") - public Response uploadMiddlewareStatusAndRole(@RequestBody String requestJson, - @RequestParam(required = false, name = "appName") String appName) { - try { - Map requestMap = JSONObject.parseObject(requestJson, - new TypeReference>() { - }); - return applicationService.uploadMiddlewareStatus(requestMap, appName); - } catch (Exception e) { - e.printStackTrace(); - return Response.fail("middle status error"); - } - } - - /** - * 应用注册 - * - * @param vo 入参 - * @return 响应体 - */ - @PostMapping(value = AgentUrls.APP_INSERT_URL) - @ApiOperation("上传应用") - public Response addApplication(@RequestBody ApplicationVo vo) { - OperationLogContextHolder.operationType(BizOpConstants.OpTypes.CREATE); - OperationLogContextHolder.addVars(BizOpConstants.Vars.APPLICATION, vo.getApplicationName()); - return applicationService.addAgentRegisterApplication(vo); - } - - /** - * 接口需要有,防止大数据出现问题 - * - * @return 响应体 - */ - - @PostMapping(value = AgentUrls.UPLOAD_ACCESS_STATUS) - @ApiOperation("上传应用状态") - public Response uploadAccessStatus(@RequestBody NodeUploadDataDTO param) { - return applicationService.uploadAccessStatus(param); - } - - /** - * 上传应用信息接口 - * - * @param tUploadInterfaceVo appName与接口信息 - * @return 成功, 则返回成功信息, 失败则返回错误编码和错误信息 - */ - - @PostMapping(value = AgentUrls.UPLOAD_APP_INFO, - produces = MediaType.APPLICATION_JSON_VALUE) - @ApiOperation("上传应用信息接口") - public ResponseEntity judgeNeedUpload(@RequestBody TUploadInterfaceVo tUploadInterfaceVo) { - try { - return ResponseOk.create(uploadInterfaceService.saveUploadInterfaceData(tUploadInterfaceVo)); - } catch (Exception e) { - throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.judgeNeedUpload 查询是否需要上传异常", e); - } - } - - /** - * 判断是否需要上传 - * - * @param uploadNeedVo appName与数量 - * @return 成功, 则返回成功信息, 失败则返回错误编码和错误信息 - */ - @PostMapping(value = AgentUrls.UPLOAD, - produces = MediaType.APPLICATION_JSON_VALUE) - @ApiOperation("判断是否需要上传") - public ResponseEntity judgeNeedUpload(@RequestBody TUploadNeedVo uploadNeedVo) { - try { - return ResponseOk.create(uploadInterfaceService.executeNeedUploadInterface(uploadNeedVo)); - } catch (Exception e) { - throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.judgeNeedUpload 查询是否需要上传异常", e); - } - } - - @ApiOperation(value = "影子JOB配置修改") - @RequestMapping(value = AgentUrls.TAKIN_REPORT_ERROR_SHADOW_JOB_URL, method = {RequestMethod.PUT, RequestMethod.POST}, - produces = MediaType.APPLICATION_JSON_VALUE) - public Response update(@RequestBody ShadowJobConfigQuery query) { - try { - if (query.getId() == null) { - return Response.fail(TakinWebExceptionEnum.AGENT_UPDATE_SHADOW_JOB_VALIDATE_ERROR.getErrorCode(), - "ID不能为空"); - } - - Map xmlMap = XmlUtil.readStringXml(query.getConfigCode()); - String className = xmlMap.get("className"); - OperationLogContextHolder.operationType(BizOpConstants.OpTypes.UPDATE); - OperationLogContextHolder.addVars(BizOpConstants.Vars.TASK, className); - return shadowJobConfigService.update(query); - } catch (Exception e) { - return Response.fail(TakinWebExceptionEnum.AGENT_UPDATE_SHADOW_JOB_UPDATE_ERROR.getErrorCode(), - e.getMessage(), e); - } - } - - /** - * 更新 应用agentVersion版本 - * - * @return 响应体 - */ - @Deprecated - @GetMapping(value = AgentUrls.AGENT_VERSION, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity appAgentVersionUpdate(@RequestParam("appName") String appName, - @RequestParam(value = "agentVersion") String agentVersion, - @RequestParam(value = "pradarVersion") String pradarVersion) { - try { - if (StringUtils.isBlank(agentVersion) - || StringUtils.isBlank(pradarVersion) - || "null".equalsIgnoreCase(agentVersion) - || "null".equalsIgnoreCase(pradarVersion)) { - return ResponseError.create(1010100102, "更新应用版本异常,参数为空"); - } - confCenterService.updateAppAgentVersion(appName, agentVersion, pradarVersion); - return ResponseOk.create("succeed"); - } catch (Exception e) { - throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.appAgentVersionUpdate 更新应用版本异常", e); - } - } - - /** - * trace数据 方法追踪 - */ - @PostMapping(value = AgentUrls.PERFORMANCE_TRACE_URL) - @ApiOperation(value = "agent上传trace信息") - public void uploadTraceInfo(@RequestBody CommandPacket commandPacket) { - traceManageService.uploadTraceInfo(commandPacket); - } - - /** - * 配置数据上报 - * - * @param inputParam 入参 - */ - @PostMapping(value = AgentUrls.AGENT_PUSH_APPLICATION_CONFIG) - @ApiOperation(value = "agent上传配置信息") - public void uploadConfigInfo(@Validated @RequestBody ConfigReportInputParam inputParam) { - reportDetailService.uploadConfigInfo(inputParam); - } - - /** - * 配置数据上报 - * - * @param inputParam 入参 - */ - @PostMapping(value = AgentUrls.AGENT_PUSH_APPLICATION_DATA_BASE) - @ApiOperation(value = "agent上传应用数据源信息") - public void uploadAppDataBase(@Validated @RequestBody AppDatabaseInputParam inputParam) { - appDataSourceService.save(inputParam); - } -} From c310675a07838d749484d747dfa9cca3aa77201e Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 14:22:47 +0800 Subject: [PATCH 161/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 9530d86397..e8021518a4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -130,7 +130,7 @@ public PagingList appCheckList(PressureResourceAppR ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 vo.setNodeNum(applicationVo.getOnlineNodeNum()); - vo.setStatus(applicationVo.getAccessStatus().equals(0) ? 0 : 1); + vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } catch (Throwable e) { e.printStackTrace(); From 9e77c34f4c08086d4381651f867016030b4c37da Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 14:46:37 +0800 Subject: [PATCH 162/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index e8021518a4..d6c33d3062 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -129,7 +129,7 @@ public PagingList appCheckList(PressureResourceAppR if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 - vo.setNodeNum(applicationVo.getOnlineNodeNum()); + vo.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } catch (Throwable e) { From c84b8c2bbe1ea0673f6d9dde165bdaecaa322b5d Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 15:05:32 +0800 Subject: [PATCH 163/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index d6c33d3062..6072f979ad 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -129,7 +129,7 @@ public PagingList appCheckList(PressureResourceAppR if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); // 默认等于探针在线节点数 - vo.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } catch (Throwable e) { From 024e0293aed10acfdb22e601c0ee85f20e4d6660 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 15:25:57 +0800 Subject: [PATCH 164/318] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 6072f979ad..9a3915f42f 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -5,7 +5,6 @@ import io.shulie.takin.cloud.data.dao.scene.manage.SceneManageDAO; import io.shulie.takin.cloud.data.model.mysql.SceneManageEntity; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceAppRequest; import io.shulie.takin.web.biz.service.ApplicationService; From cabfed0effe5d866500845688f96a261bbc266fe Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 16:35:24 +0800 Subject: [PATCH 165/318] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/service/dsManage/impl/DsServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/dsManage/impl/DsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/dsManage/impl/DsServiceImpl.java index 0efb705ae6..65c7d621c3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/dsManage/impl/DsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/dsManage/impl/DsServiceImpl.java @@ -766,7 +766,7 @@ private void buildNewDataSource(ApplicationDsCreateInputV2 createRequestV2) { extObj.put(EXT_FLAG, "true"); if ("2".equals(tag) || "3".equals(tag)) { context = dataObj.getString("context"); - if("3".equals(tag)){ + if ("3".equals(tag)) { extObj.put(EXT_FLAG, "3"); } } @@ -835,7 +835,7 @@ private boolean validateOracleURL(String shadowUrl, String url, int dsType, @Override public List querySupperName(String middlewareType) { AbstractDsTemplateService templateService = templateServiceMap.get(middlewareType); - List list = templateService.queryDsSupperName(); + List list = templateService.queryDsSupperName(); List tmpList = list.stream().filter(a -> { if ("兼容老版本(影子库)".equals(a.getLabel()) || "兼容老版本(影子表)".equals(a.getLabel())) { return false; @@ -1133,8 +1133,9 @@ public ShadowTemplateSelect processSelect(String appName) { log.error("从amdb未获取到应用版本信息,当前应用名{}", appName); return select; } - // 获取所有探针版本 + // 获取所有探针版本,Agent版本有可能为空 List agentVersionList = dtoList.stream() + .filter(agentDto -> agentDto.getAgentVersion() != null) .map(agentDto -> agentDto.getAgentVersion()) .collect(Collectors.toList()); // 倒序排 From f1c2d7367599eebd60604148719ee59947f592f2 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Tue, 27 Sep 2022 17:50:20 +0800 Subject: [PATCH 166/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ApplicationServiceImpl.java | 11 +++-------- .../impl/PressureResourceAppServiceImpl.java | 17 ++++++----------- .../impl/PressureResourceCommonServiceImpl.java | 17 ++++++----------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index 0a2bbca1bd..2f28079c45 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -1401,14 +1401,9 @@ public PagingList pageApplication(ApplicationQueryReq // 非全量查询的时候,增加不需要处理状态 if (!request.isAll()) { // 跟应用详情再对比下,同步下状态,这个接口真慢 - CompletableFuture> future = CompletableFuture.supplyAsync(() -> this.getApplicationInfo(response.getId())); - try { - Response vo = future.get(); - if (vo.getSuccess() && vo.getData() != null) { - response.setAccessStatus(vo.getData().getAccessStatus()); - } - } catch (Throwable e) { - e.printStackTrace(); + Response vo = this.getApplicationInfo(response.getId()); + if (vo.getSuccess() && vo.getData() != null) { + response.setAccessStatus(vo.getData().getAccessStatus()); } } return response; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 9a3915f42f..3cbb31e05c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -122,17 +122,12 @@ public PagingList appCheckList(PressureResourceAppR // 获取应用信息 Long appId = applicationService.queryApplicationIdByAppName(vo.getAppName()); if (appId != null) { - CompletableFuture> future = CompletableFuture.supplyAsync(() -> applicationService.getApplicationInfo(String.valueOf(appId))); - try { - Response voResponse = future.get(); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); - vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); - } - } catch (Throwable e) { - e.printStackTrace(); + Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); + vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index a2081d9a36..2c21072236 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -370,17 +370,12 @@ public List getResourceIdsFormRedis() { // 通过应用去查询状态 Long appId = applicationService.queryApplicationIdByAppName(appEntity.getAppName()); if (appId != null) { - CompletableFuture> future = CompletableFuture.supplyAsync(() -> applicationService.getApplicationInfo(String.valueOf(appId))); - try { - Response voResponse = future.get(); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); - appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); - } - } catch (Throwable e) { - e.printStackTrace(); + Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + // 默认等于探针在线节点数 + appEntity.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); + appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); From 29e678bd4d32d5878688b1fea6d8865d934a472c Mon Sep 17 00:00:00 2001 From: zhangjunjie Date: Tue, 27 Sep 2022 18:00:53 +0800 Subject: [PATCH 167/318] =?UTF-8?q?=E5=BA=94=E7=94=A8=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=BA=BF=E7=A8=8B=E8=BF=87=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/job/AppAccessStatusJob.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppAccessStatusJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppAccessStatusJob.java index 42f509ddcd..429fcb26bd 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppAccessStatusJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppAccessStatusJob.java @@ -1,13 +1,5 @@ package io.shulie.takin.web.biz.job; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import javax.annotation.Resource; - import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.api.simple.SimpleJob; @@ -24,6 +16,13 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + /** * @author 无涯 * @date 2021/6/15 5:30 下午 @@ -31,7 +30,7 @@ @Component @ElasticSchedulerJob( jobName = "appAccessStatusJob", - cron = "0/10 * * * * ?", + cron = "0/20 * * * * ?", description = "同步大数据应用状态", // 时效转移 misfire = true, @@ -62,15 +61,16 @@ public void execute(ShardingContext shardingContext) { if (CollectionUtils.isEmpty(ext.getEnvs())) { continue; } - // 根据环境 分线程 - for (TenantEnv e : ext.getEnvs()) { - int shardKey = (ext.getTenantId() + e.getEnvCode()).hashCode() & Integer.MAX_VALUE; - if (shardKey % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) { - String lockKey = JobRedisUtils.getJobRedis(ext.getTenantId(), e.getEnvCode(), shardingContext.getJobName()); - if (distributedLock.checkLock(lockKey)) { - continue; - } - Runnable r = () -> { + Runnable r = () -> { + // 根据环境 分线程 + for (TenantEnv e : ext.getEnvs()) { + int shardKey = (ext.getTenantId() + e.getEnvCode()).hashCode() & Integer.MAX_VALUE; + if (shardKey % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) { + String lockKey = JobRedisUtils.getJobRedis(ext.getTenantId(), e.getEnvCode(), shardingContext.getJobName()); + if (distributedLock.checkLock(lockKey)) { + continue; + } + boolean tryLock = distributedLock.tryLock(lockKey, 0L, 1L, TimeUnit.MINUTES); if (!tryLock) { return; @@ -84,10 +84,11 @@ public void execute(ShardingContext shardingContext) { } finally { distributedLock.unLockSafely(lockKey); } - }; - futureList.add(CompletableFuture.runAsync(r, jobThreadPool)); + } + } - } + }; + futureList.add(CompletableFuture.runAsync(r, jobThreadPool)); } try { CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])).get(); From 8176d67664f3fd9c431769d47d726864fb36c75c Mon Sep 17 00:00:00 2001 From: guann1n9 Date: Wed, 28 Sep 2022 10:02:42 +0800 Subject: [PATCH 168/318] =?UTF-8?q?bug-fix=20=20sql=20=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceCommandServiceImpl.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index a0714756a3..81fb7f39ee 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -12,13 +12,12 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.service.pressureresource.common.*; import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; +import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.common.enums.application.AppRemoteCallConfigEnum; import io.shulie.takin.web.common.vo.agent.AgentRemoteCallVO; -import io.shulie.takin.web.data.dao.application.AppRemoteCallDAO; import io.shulie.takin.web.data.dao.application.InterfaceTypeMainDAO; import io.shulie.takin.web.data.dao.application.RemoteCallConfigDAO; import io.shulie.takin.web.data.dao.dictionary.DictionaryDataDAO; -import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateDsDAO; import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateRemoteCallMapper; @@ -29,6 +28,7 @@ import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; +import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; @@ -244,6 +244,12 @@ public void processAck(TakinAck takinAck) { */ private void processConfigAck(TakinConfigAck configAck) { long resourceId = Long.parseLong(configAck.getConfigId()); + PressureResourceEntity resource = resourceMapper.queryByIdNoTenant(resourceId); + if(resource == null){ + return; + } + //设置租户上下文 + setTraceTenantContext(resource); boolean success = configAck.isSuccess(); PressureResourceTypeEnum resourceTypeEnum = PressureResourceTypeEnum.getByCode(configAck.getConfigType()); switch (resourceTypeEnum) { @@ -265,6 +271,24 @@ private void processConfigAck(TakinConfigAck configAck) { } + private void setTraceTenantContext(PressureResourceEntity resource){ + //设置租户上下文 + TenantCommonExt commonExt = new TenantCommonExt(); + commonExt.setSource(ContextSourceEnum.JOB.getCode()); + commonExt.setEnvCode(resource.getEnvCode()); + commonExt.setTenantId(resource.getTenantId()); + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); + if (tenantInfoExt == null) { + return; + } + String tenantCode = tenantInfoExt.getTenantCode(); + String tenantAppKey = tenantInfoExt.getTenantAppKey(); + commonExt.setTenantAppKey(tenantAppKey); + commonExt.setTenantCode(tenantCode); + WebPluginUtils.setTraceTenantContext(commonExt); + } + + /** * 压测配置校验响应处理 * @param commandAck @@ -274,10 +298,13 @@ private void processCommandAck(TakinCommandAck commandAck){ Long resourceId = getResourceId(commandId); Long subId = getSubId(commandId); - PressureResourceEntity resource = resourceMapper.selectById(resourceId); + PressureResourceEntity resource = resourceMapper.queryByIdNoTenant(resourceId); if(resource == null){ return; } + //设置租户上下文 + setTraceTenantContext(resource); + PressureResourceEntity update = new PressureResourceEntity(); update.setId(resourceId); update.setCheckTime(new Date()); From b874f562d3fd650c955eff8e7b2144ff217ec54a Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 10:11:19 +0800 Subject: [PATCH 169/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shulie/takin/web/biz/job/PressureResourceCommandJob.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 42540b7533..6ad85d855b 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -30,7 +30,7 @@ @Component @ElasticSchedulerJob(jobName = "pressureResourceCommandJob", isSharding = true, - cron = "* 0/1 * * * ?", + cron = "* 0/10 * * * ?", description = "下发验证命令") @Slf4j public class PressureResourceCommandJob implements SimpleJob { From d5ccccdb6869b664dd6dc4e5381809f9b4b47904 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 10:30:35 +0800 Subject: [PATCH 170/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/job/PressureResourceChangeJob.java | 27 +++- .../biz/job/PressureResourceCommandJob.java | 18 +-- .../biz/job/PressureResourceRelateJob.java | 18 +-- .../PressureResourceRelateRemoteCallJob.java | 18 +-- .../web/biz/job/ResourceContextUtil.java | 38 +++++ .../PressureResourceCommandServiceImpl.java | 132 ++++++++---------- 6 files changed, 119 insertions(+), 132 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/ResourceContextUtil.java diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index 3538ede319..692f038372 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -7,12 +7,8 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommonService; import io.shulie.takin.web.biz.utils.job.JobRedisUtils; -import io.shulie.takin.web.common.enums.ContextSourceEnum; -import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; -import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; -import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -23,13 +19,14 @@ import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 压测资源关联应用 */ @Component @ElasticSchedulerJob(jobName = "PressureResourceChangeJob", - isSharding = false, + isSharding = true, cron = "0/10 * * * * ? *", description = "配置资源修改立即触发") @Slf4j @@ -48,6 +45,9 @@ public class PressureResourceChangeJob implements SimpleJob { @Resource private DistributedLock distributedLock; + @Resource + private PressureResourceMapper pressureResourceMapper; + @Override public void execute(ShardingContext shardingContext) { // 查询所有压测资源准备配置 @@ -55,7 +55,14 @@ public void execute(ShardingContext shardingContext) { if (CollectionUtils.isEmpty(resourceIds)) { return; } - resourceIds.forEach(resourceId -> { + // 按配置Id分片 + List filterList = resourceIds.stream().filter(resourceId -> + resourceId % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filterList)) { + return; + } + filterList.forEach(resourceId -> { String lockKey = JobRedisUtils.getRedisJobResource(1L, "change", resourceId); if (distributedLock.checkLock(lockKey)) { return; @@ -66,6 +73,12 @@ public void execute(ShardingContext shardingContext) { return; } try { + PressureResourceEntity resource = pressureResourceMapper.selectById(resourceId); + if (resource == null) { + log.warn("当前资源准备{}状态调整未查询到数据", resourceId); + return; + } + ResourceContextUtil.setTenantContext(resource); pressureResourceCommandService.pushCommand(resourceId); } finally { distributedLock.unLockSafely(lockKey); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 6ad85d855b..74e9bd7520 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -6,12 +6,8 @@ import io.shulie.takin.web.biz.service.DistributedLock; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.utils.job.JobRedisUtils; -import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; -import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; -import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -74,19 +70,7 @@ public void execute(ShardingContext shardingContext) { return; } try { - TenantCommonExt commonExt = new TenantCommonExt(); - commonExt.setSource(ContextSourceEnum.JOB.getCode()); - commonExt.setEnvCode(resource.getEnvCode()); - commonExt.setTenantId(resource.getTenantId()); - TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); - if (tenantInfoExt == null) { - return; - } - String tenantCode = tenantInfoExt.getTenantCode(); - String tenantAppKey = tenantInfoExt.getTenantAppKey(); - commonExt.setTenantAppKey(tenantAppKey); - commonExt.setTenantCode(tenantCode); - WebPluginUtils.setTraceTenantContext(commonExt); + ResourceContextUtil.setTenantContext(resource); pressureResourceCommandService.pushCommand(resource.getId()); } finally { distributedLock.unLockSafely(lockKey); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 33a3109955..667b42a44a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -6,19 +6,14 @@ import io.shulie.takin.web.biz.service.DistributedLock; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommonService; import io.shulie.takin.web.biz.utils.job.JobRedisUtils; -import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; -import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; -import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -74,18 +69,7 @@ public void execute(ShardingContext shardingContext) { if (!tryLock) { return; } - TenantCommonExt commonExt = new TenantCommonExt(); - commonExt.setSource(ContextSourceEnum.JOB.getCode()); - commonExt.setEnvCode(resource.getEnvCode()); - commonExt.setTenantId(resource.getTenantId()); - TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); - if (tenantInfoExt == null) { - return; - } - String tenantAppKey = tenantInfoExt.getTenantAppKey(); - commonExt.setTenantAppKey(tenantAppKey); - WebPluginUtils.setTraceTenantContext(commonExt); - + ResourceContextUtil.setTenantContext(resource); pressureResourceCommonService.processAutoPressureResourceRelate(resource); } finally { distributedLock.unLockSafely(lockKey); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java index 6e576e3990..3bdc936745 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateRemoteCallJob.java @@ -6,12 +6,8 @@ import io.shulie.takin.web.biz.service.DistributedLock; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommonService; import io.shulie.takin.web.biz.utils.job.JobRedisUtils; -import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.data.dao.pressureresource.PressureResourceDAO; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; -import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; -import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; -import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Qualifier; @@ -73,23 +69,11 @@ public void execute(ShardingContext shardingContext) { if (!tryLock) { return; } - TenantCommonExt commonExt = new TenantCommonExt(); - commonExt.setSource(ContextSourceEnum.JOB.getCode()); - commonExt.setEnvCode(resource.getEnvCode()); - commonExt.setTenantId(resource.getTenantId()); - TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); - if (tenantInfoExt == null) { - return; - } - String tenantAppKey = tenantInfoExt.getTenantAppKey(); - commonExt.setTenantAppKey(tenantAppKey); - WebPluginUtils.setTraceTenantContext(commonExt); - + ResourceContextUtil.setTenantContext(resource); pressureResourceCommonService.processAutoPressureResourceRelate_remoteCall(resource); } finally { distributedLock.unLockSafely(lockKey); } - }); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/ResourceContextUtil.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/ResourceContextUtil.java new file mode 100644 index 0000000000..c2a870affb --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/ResourceContextUtil.java @@ -0,0 +1,38 @@ +package io.shulie.takin.web.biz.job; + +import io.shulie.takin.web.common.enums.ContextSourceEnum; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; +import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; + +/** + * @author xingchen + * @description: TODO + * @date 2022/9/28 10:22 AM + */ +public class ResourceContextUtil { + /** + * 根据Resource设置上下文 + * + * @param resource + */ + public static void setTenantContext(PressureResourceEntity resource) { + if (resource == null) { + return; + } + TenantCommonExt commonExt = new TenantCommonExt(); + commonExt.setSource(ContextSourceEnum.JOB.getCode()); + commonExt.setEnvCode(resource.getEnvCode()); + commonExt.setTenantId(resource.getTenantId()); + TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); + if (tenantInfoExt == null) { + return; + } + String tenantCode = tenantInfoExt.getTenantCode(); + String tenantAppKey = tenantInfoExt.getTenantAppKey(); + commonExt.setTenantAppKey(tenantAppKey); + commonExt.setTenantCode(tenantCode); + WebPluginUtils.setTraceTenantContext(commonExt); + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 81fb7f39ee..f408d06664 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.pamirs.takin.entity.domain.vo.TDictionaryVo; import io.shulie.takin.common.beans.component.SelectVO; +import io.shulie.takin.web.biz.job.ResourceContextUtil; import io.shulie.takin.web.biz.pojo.request.pressureresource.MockInfo; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.service.pressureresource.common.*; @@ -74,13 +75,14 @@ public class PressureResourceCommandServiceImpl implements PressureResourceComma /** * 下发校验命令并更新数据库 + * * @param resourceId * @return */ @Override - public void pushCommand(Long resourceId){ + public void pushCommand(Long resourceId) { PressureResourceEntity resource = resourceMapper.selectById(resourceId); - if(resource == null){ + if (resource == null) { return; } //下发数据源校验命令 @@ -92,17 +94,18 @@ public void pushCommand(Long resourceId){ /** * 压测数据源命令 + * * @param resource * @return */ - private void pushDataSourceCommands(PressureResourceEntity resource){ - if(resource.getIsolateType() == IsolateTypeEnum.DEFAULT.getCode()){ + private void pushDataSourceCommands(PressureResourceEntity resource) { + if (resource.getIsolateType() == IsolateTypeEnum.DEFAULT.getCode()) { //未配置隔离类型 return; } List dsEntities = resourceDsMapper.selectList(new QueryWrapper().lambda() .eq(PressureResourceRelateDsEntity::getResourceId, resource.getId())); - if(CollectionUtils.isEmpty(dsEntities)){ + if (CollectionUtils.isEmpty(dsEntities)) { return; } List tableEntities = resourceTableMapper.selectList(new QueryWrapper().lambda() @@ -115,18 +118,19 @@ private void pushDataSourceCommands(PressureResourceEntity resource){ List list = new ArrayList<>(); //遍历dsMap - dsMap.forEach((appName,appDsList) ->{ + dsMap.forEach((appName, appDsList) -> { List collect = appDsList.stream().map(dsEntity -> { - String dsKey = DataSourceUtil.generateDsKey(dsEntity.getResourceId(), dsEntity.getBusinessDatabase()); - return mapping(resource, dsEntity, tableMap.get(dsKey)); - }).filter(Objects::nonNull).collect(Collectors.toList()); + String dsKey = DataSourceUtil.generateDsKey(dsEntity.getResourceId(), dsEntity.getBusinessDatabase()); + return mapping(resource, dsEntity, tableMap.get(dsKey)); + }).filter(Objects::nonNull).collect(Collectors.toList()); list.addAll(collect); }); //下发命令 String url = joinUrl(agentManagerHost, PUSH_COMMAND_URL); - String post = HttpUtil.post(url,JSON.toJSONString(list)); - Response response = JSON.parseObject(post, new TypeReference>() {}); - if(response.getData() == null || !response.getData()){ + String post = HttpUtil.post(url, JSON.toJSONString(list)); + Response response = JSON.parseObject(post, new TypeReference>() { + }); + if (response.getData() == null || !response.getData()) { //未下发成功 下次循环触发 return; } @@ -138,10 +142,10 @@ private void pushDataSourceCommands(PressureResourceEntity resource){ } - private void pushWhitelistConfigs(PressureResourceEntity resource){ + private void pushWhitelistConfigs(PressureResourceEntity resource) { List remoteCallEntities = remoteCallMapper.selectList(new QueryWrapper().lambda() .eq(PressureResourceRelateRemoteCallEntity::getResourceId, resource.getId())); - if(CollectionUtils.isEmpty(remoteCallEntities)){ + if (CollectionUtils.isEmpty(remoteCallEntities)) { return; } //group by appName @@ -150,7 +154,7 @@ private void pushWhitelistConfigs(PressureResourceEntity resource){ TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); List configList = new ArrayList<>(); //遍历dsMap - appMap.forEach((appName,remoteCallList) ->{ + appMap.forEach((appName, remoteCallList) -> { TakinConfig takinConfig = new TakinConfig(); takinConfig.setConfigId(resource.getId().toString()); takinConfig.setAppName(appName); @@ -173,12 +177,12 @@ private void pushWhitelistConfigs(PressureResourceEntity resource){ }); //推送配置 String url = joinUrl(agentManagerHost, PUSH_CONFIG_URL); - HttpUtil.post(url,JSON.toJSONString(configList)); + HttpUtil.post(url, JSON.toJSONString(configList)); } - private AgentRemoteCallVO.RemoteCall mapping(PressureResourceRelateRemoteCallEntity remoteCallEntity){ - if(!StringUtils.hasText(remoteCallEntity.getServerAppName()) || remoteCallEntity.getType() == 0 || remoteCallEntity.getIsDeleted() == 1){ + private AgentRemoteCallVO.RemoteCall mapping(PressureResourceRelateRemoteCallEntity remoteCallEntity) { + if (!StringUtils.hasText(remoteCallEntity.getServerAppName()) || remoteCallEntity.getType() == 0 || remoteCallEntity.getIsDeleted() == 1) { return null; } List voList = dictionaryDataDAO.getDictByCode("REMOTE_CALL_TYPE"); @@ -215,12 +219,11 @@ private SelectVO getSelectVO(Integer interfaceType, List voList) } - @Override public void processAck(TakinAck takinAck) { String ackType = takinAck.getAckType(); - switch (ackType){ + switch (ackType) { case TakinAck.COMMAND: //配置校验响应 TakinCommandAck takinCommandAck = JSON.parseObject(JSON.toJSONString(takinAck.getAck()), TakinCommandAck.class); @@ -231,7 +234,8 @@ public void processAck(TakinAck takinAck) { TakinConfigAck takinConfigAck = JSON.parseObject(JSON.toJSONString(takinAck.getAck()), TakinConfigAck.class); processConfigAck(takinConfigAck); break; - default:break; + default: + break; } @@ -240,16 +244,17 @@ public void processAck(TakinAck takinAck) { /** * 配置生效响应 + * * @param configAck */ private void processConfigAck(TakinConfigAck configAck) { long resourceId = Long.parseLong(configAck.getConfigId()); PressureResourceEntity resource = resourceMapper.queryByIdNoTenant(resourceId); - if(resource == null){ + if (resource == null) { return; } //设置租户上下文 - setTraceTenantContext(resource); + ResourceContextUtil.setTenantContext(resource); boolean success = configAck.isSuccess(); PressureResourceTypeEnum resourceTypeEnum = PressureResourceTypeEnum.getByCode(configAck.getConfigType()); switch (resourceTypeEnum) { @@ -265,45 +270,27 @@ private void processConfigAck(TakinConfigAck configAck) { break; case WHITELIST: break; - default:break; + default: + break; } } - - private void setTraceTenantContext(PressureResourceEntity resource){ - //设置租户上下文 - TenantCommonExt commonExt = new TenantCommonExt(); - commonExt.setSource(ContextSourceEnum.JOB.getCode()); - commonExt.setEnvCode(resource.getEnvCode()); - commonExt.setTenantId(resource.getTenantId()); - TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); - if (tenantInfoExt == null) { - return; - } - String tenantCode = tenantInfoExt.getTenantCode(); - String tenantAppKey = tenantInfoExt.getTenantAppKey(); - commonExt.setTenantAppKey(tenantAppKey); - commonExt.setTenantCode(tenantCode); - WebPluginUtils.setTraceTenantContext(commonExt); - } - - /** * 压测配置校验响应处理 + * * @param commandAck */ - private void processCommandAck(TakinCommandAck commandAck){ + private void processCommandAck(TakinCommandAck commandAck) { String commandId = commandAck.getCommandId(); Long resourceId = getResourceId(commandId); Long subId = getSubId(commandId); PressureResourceEntity resource = resourceMapper.queryByIdNoTenant(resourceId); - if(resource == null){ + if (resource == null) { return; } - //设置租户上下文 - setTraceTenantContext(resource); + ResourceContextUtil.setTenantContext(resource); PressureResourceEntity update = new PressureResourceEntity(); update.setId(resourceId); @@ -312,19 +299,19 @@ private void processCommandAck(TakinCommandAck commandAck){ resourceMapper.updateById(update); //更新附属资源 PressureResourceTypeEnum resourceTypeEnum = PressureResourceTypeEnum.getByCode(commandAck.getCommandType()); - switch (resourceTypeEnum){ + switch (resourceTypeEnum) { case DATABASE: PressureResourceRelateDsEntity dsEntity = resourceDsMapper.selectById(subId); - if(dsEntity == null){ + if (dsEntity == null) { throw new IllegalArgumentException("未找到对应的数据库资源"); } PressureResourceRelateDsEntity updateDs = new PressureResourceRelateDsEntity(); updateDs.setId(subId); updateDs.setStatus(commandAck.isSuccess() ? 2 : 1); - updateDs.setRemark(commandAck.isSuccess()? "影子资源连通" : commandAck.getResponse()); + updateDs.setRemark(commandAck.isSuccess() ? "影子资源连通" : commandAck.getResponse()); resourceDsMapper.updateById(updateDs); //下发数据库配置 - if(commandAck.isSuccess()){ + if (commandAck.isSuccess()) { pushPressureDatabaseConfig(resource); } break; @@ -338,6 +325,7 @@ private void processCommandAck(TakinCommandAck commandAck){ /** * 校验通过,下发压测库配置 + * * @param resource */ private void pushPressureDatabaseConfig(PressureResourceEntity resource) { @@ -349,7 +337,7 @@ private void pushPressureDatabaseConfig(PressureResourceEntity resource) { //appName分组 Map> dsMap = dsEntities.stream().collect(Collectors.groupingBy(PressureResourceRelateDsEntity::getAppName)); List configList = new ArrayList<>(); - dsMap.forEach((appName,dsList)->{ + dsMap.forEach((appName, dsList) -> { TakinConfig takinConfig = new TakinConfig(); takinConfig.setConfigId(resource.getId().toString()); takinConfig.setAppName(appName); @@ -357,7 +345,7 @@ private void pushPressureDatabaseConfig(PressureResourceEntity resource) { takinConfig.setEnvCode(resource.getEnvCode()); takinConfig.setTenantCode(tenantInfoExt.getTenantCode()); takinConfig.setConfigType(PressureResourceTypeEnum.DATABASE.getCode()); - List collect = dsList.stream().map(dsEntity -> mapping(resource.getIsolateType(),dsEntity)).collect(Collectors.toList()); + List collect = dsList.stream().map(dsEntity -> mapping(resource.getIsolateType(), dsEntity)).collect(Collectors.toList()); JdbcTableConfig jdbcTableConfig = new JdbcTableConfig(); jdbcTableConfig.setData(collect); takinConfig.setConfigParam(JSON.toJSONString(jdbcTableConfig)); @@ -365,11 +353,11 @@ private void pushPressureDatabaseConfig(PressureResourceEntity resource) { }); //推送配置 String url = joinUrl(agentManagerHost, PUSH_CONFIG_URL); - HttpUtil.post(url,JSON.toJSONString(configList)); + HttpUtil.post(url, JSON.toJSONString(configList)); } - private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEntity dsEntity){ + private DataSourceConfig mapping(Integer shadowType, PressureResourceRelateDsEntity dsEntity) { DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setShadowType(shadowType); dataSourceConfig.setUrl(dsEntity.getBusinessDatabase()); @@ -377,7 +365,7 @@ private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEnti dataSourceConfig.setShadowUrl(dsEntity.getShadowDatabase()); dataSourceConfig.setShadowUsername(dsEntity.getShadowUserName()); dataSourceConfig.setShadowPassword(dsEntity.getShadowPassword()); - if(!shadowType.equals(IsolateTypeEnum.SHADOW_TABLE.getCode())){ + if (!shadowType.equals(IsolateTypeEnum.SHADOW_TABLE.getCode())) { //非影子表模式 无表配置 return dataSourceConfig; } @@ -385,7 +373,7 @@ private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEnti List tableEntities = resourceTableMapper.selectList(new QueryWrapper().lambda() .eq(PressureResourceRelateTableEntity::getDsKey, dsKey) .eq(PressureResourceRelateTableEntity::getJoinFlag, JoinFlagEnum.YES.getCode())); - if(CollectionUtils.isEmpty(tableEntities)){ + if (CollectionUtils.isEmpty(tableEntities)) { dataSourceConfig.setDisabled(true); return dataSourceConfig; } @@ -395,12 +383,12 @@ private DataSourceConfig mapping(Integer shadowType,PressureResourceRelateDsEnti } - private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRelateDsEntity dsEntity,List tableEntities){ - if(!StringUtils.hasText(dsEntity.getBusinessDatabase()) || !StringUtils.hasText(dsEntity.getBusinessUserName()) || !StringUtils.hasText(dsEntity.getAppName())){ + private TakinCommand mapping(PressureResourceEntity resource, PressureResourceRelateDsEntity dsEntity, List tableEntities) { + if (!StringUtils.hasText(dsEntity.getBusinessDatabase()) || !StringUtils.hasText(dsEntity.getBusinessUserName()) || !StringUtils.hasText(dsEntity.getAppName())) { return null; } TenantInfoExt tenantInfoExt = WebPluginUtils.getTenantInfo(resource.getTenantId()); - if(IsolateTypeEnum.SHADOW_TABLE.getCode() == resource.getIsolateType() && CollectionUtils.isEmpty(tableEntities)){ + if (IsolateTypeEnum.SHADOW_TABLE.getCode() == resource.getIsolateType() && CollectionUtils.isEmpty(tableEntities)) { //影子表模式无影子表 不再下发校验命令 推送禁用配置 pushPressureDatabaseConfig(resource); return null; @@ -420,12 +408,12 @@ private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRel bizDataSource.setUserName(dsEntity.getBusinessUserName()); tableCompareCommand.setBizDataSource(bizDataSource); //影子表 - if(!CollectionUtils.isEmpty(tableEntities)){ + if (!CollectionUtils.isEmpty(tableEntities)) { List tables = tableEntities.stream().map(PressureResourceRelateTableEntity::getBusinessTable).collect(Collectors.toList()); tableCompareCommand.setTables(tables); } //影子库 - if(StringUtils.hasText(dsEntity.getShadowDatabase())){ + if (StringUtils.hasText(dsEntity.getShadowDatabase())) { DataSourceEntity shadowDataSource = new DataSourceEntity(); shadowDataSource.setUrl(dsEntity.getShadowDatabase()); shadowDataSource.setUserName(dsEntity.getShadowUserName()); @@ -437,35 +425,31 @@ private TakinCommand mapping(PressureResourceEntity resource,PressureResourceRel } - private String joinUrl(String host, String path) { return host.endsWith("/") ? host + path : host + "/" + path; } - - private String commandId(Long resourceId,Long subId){ - return resourceId+"_"+subId; + private String commandId(Long resourceId, Long subId) { + return resourceId + "_" + subId; } - private Long getResourceId(String commandId){ + private Long getResourceId(String commandId) { String[] split = commandId.split("_"); - if(split.length != 2){ - throw new IllegalArgumentException("命令id校验失败:"+commandId); + if (split.length != 2) { + throw new IllegalArgumentException("命令id校验失败:" + commandId); } return Long.parseLong(split[0]); } - private Long getSubId(String commandId){ + private Long getSubId(String commandId) { String[] split = commandId.split("_"); - if(split.length != 2){ - throw new IllegalArgumentException("命令id校验失败:"+commandId); + if (split.length != 2) { + throw new IllegalArgumentException("命令id校验失败:" + commandId); } return Long.parseLong(split[1]); } - - } From 1f89219eb67010fcf855ba61902ad3dcddc6334f Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 10:34:07 +0800 Subject: [PATCH 171/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shulie/takin/web/biz/job/PressureResourceCommandJob.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java index 74e9bd7520..e88e60491e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceCommandJob.java @@ -26,7 +26,7 @@ @Component @ElasticSchedulerJob(jobName = "pressureResourceCommandJob", isSharding = true, - cron = "* 0/10 * * * ?", + cron = "0 0/10 * * * ?", description = "下发验证命令") @Slf4j public class PressureResourceCommandJob implements SimpleJob { From 61646b6d433314013a2bb8eff7f92f6431b2a843 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 10:40:30 +0800 Subject: [PATCH 172/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index effdee4b5d..d39f1be9f2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -516,7 +516,7 @@ public PressureResourceExtInfo dsInfo(Long id) { int normalSize = 0; for (Map.Entry> entry : dsMap.entrySet()) { PressureResourceRelateDsEntity dsEntity = entry.getValue().get(0); - if (dsEntity.getStatus().intValue() == StatusEnum.SUCCESS.getCode()) { + if (dsEntity.getStatus().intValue() != StatusEnum.FAIL.getCode()) { normalSize = normalSize + 1; } } From fd1f620da056bac9a3fe9bb1024a5abcb9003c87 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 11:23:49 +0800 Subject: [PATCH 173/318] =?UTF-8?q?=E5=8E=8B=E6=B5=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/agent/AgentPushController.java | 230 ++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java new file mode 100644 index 0000000000..c16c4e7189 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java @@ -0,0 +1,230 @@ +package io.shulie.takin.web.entrypoint.controller.agent; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; + +import com.pamirs.takin.common.ResponseOk; +import com.pamirs.takin.common.ResponseError; +import com.pamirs.takin.entity.domain.vo.JarVersionVo; +import com.pamirs.takin.entity.domain.vo.ApplicationVo; +import com.pamirs.takin.entity.domain.vo.TUploadNeedVo; +import com.pamirs.takin.entity.domain.vo.TUploadInterfaceVo; +import com.pamirs.takin.entity.domain.dto.NodeUploadDataDTO; +import com.pamirs.takin.entity.domain.query.ShadowJobConfigQuery; +import io.shulie.takin.channel.bean.CommandPacket; +import io.shulie.takin.web.biz.utils.XmlUtil; +import io.shulie.takin.web.common.common.Response; +import io.shulie.takin.web.common.constant.AgentUrls; +import io.shulie.takin.web.biz.constant.BizOpConstants; +import io.shulie.takin.web.biz.service.ConfCenterService; +import io.shulie.takin.web.common.exception.ExceptionCode; +import io.shulie.takin.web.biz.service.ApplicationService; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.biz.service.UploadInterfaceService; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.common.context.OperationLogContextHolder; +import io.shulie.takin.web.biz.service.simplify.ShadowJobConfigService; +import io.shulie.takin.web.biz.service.linkmanage.ApplicationApiService; +import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; +import io.shulie.takin.web.data.param.application.ConfigReportInputParam; +import io.shulie.takin.web.biz.service.perfomanceanaly.TraceManageService; +import io.shulie.takin.web.biz.service.perfomanceanaly.ReportDetailService; +import lombok.extern.slf4j.Slf4j; +import io.swagger.annotations.Api; +import org.springframework.http.MediaType; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author TODO + */ +@RestController +@RequestMapping(AgentUrls.PREFIX_URL) +@Api(tags = "接口: Agent全局配置") +@Slf4j +public class AgentPushController { + + @Resource + private ApplicationService applicationService; + @Resource + private ApplicationApiService apiService; + @Resource + private ShadowJobConfigService shadowJobConfigService; + @Resource + private UploadInterfaceService uploadInterfaceService; + @Resource + private ConfCenterService confCenterService; + @Resource + private TraceManageService traceManageService; + @Resource + private ReportDetailService reportDetailService; + + @ApiOperation("|_ agent注册api") + @PostMapping(value = AgentUrls.REGISTER_URL) + public Response registerApi(@RequestBody Map> register) { + try { + return apiService.registerApi(register); + } catch (Exception e) { + throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.registerApi 注册api异常", e); + } + } + + /** + * @return 响应体 + */ + + @PostMapping(value = AgentUrls.MIDDLE_STAUTS_URL) + @ApiOperation("agent上传中间件列表状态") + public Response uploadMiddlewareStatusAndRole(@RequestBody String requestJson, + @RequestParam(required = false, name = "appName") String appName) { + try { + Map requestMap = JSONObject.parseObject(requestJson, + new TypeReference>() { + }); + return applicationService.uploadMiddlewareStatus(requestMap, appName); + } catch (Exception e) { + e.printStackTrace(); + return Response.fail("middle status error"); + } + } + + /** + * 应用注册 + * + * @param vo 入参 + * @return 响应体 + */ + @PostMapping(value = AgentUrls.APP_INSERT_URL) + @ApiOperation("上传应用") + public Response addApplication(@RequestBody ApplicationVo vo) { + OperationLogContextHolder.operationType(BizOpConstants.OpTypes.CREATE); + OperationLogContextHolder.addVars(BizOpConstants.Vars.APPLICATION, vo.getApplicationName()); + return applicationService.addAgentRegisterApplication(vo); + } + + /** + * 接口需要有,防止大数据出现问题 + * + * @return 响应体 + */ + + @PostMapping(value = AgentUrls.UPLOAD_ACCESS_STATUS) + @ApiOperation("上传应用状态") + public Response uploadAccessStatus(@RequestBody NodeUploadDataDTO param) { + return applicationService.uploadAccessStatus(param); + } + + /** + * 上传应用信息接口 + * + * @param tUploadInterfaceVo appName与接口信息 + * @return 成功, 则返回成功信息, 失败则返回错误编码和错误信息 + */ + + @PostMapping(value = AgentUrls.UPLOAD_APP_INFO, + produces = MediaType.APPLICATION_JSON_VALUE) + @ApiOperation("上传应用信息接口") + public ResponseEntity judgeNeedUpload(@RequestBody TUploadInterfaceVo tUploadInterfaceVo) { + try { + return ResponseOk.create(uploadInterfaceService.saveUploadInterfaceData(tUploadInterfaceVo)); + } catch (Exception e) { + throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.judgeNeedUpload 查询是否需要上传异常", e); + } + } + + /** + * 判断是否需要上传 + * + * @param uploadNeedVo appName与数量 + * @return 成功, 则返回成功信息, 失败则返回错误编码和错误信息 + */ + @PostMapping(value = AgentUrls.UPLOAD, + produces = MediaType.APPLICATION_JSON_VALUE) + @ApiOperation("判断是否需要上传") + public ResponseEntity judgeNeedUpload(@RequestBody TUploadNeedVo uploadNeedVo) { + try { + return ResponseOk.create(uploadInterfaceService.executeNeedUploadInterface(uploadNeedVo)); + } catch (Exception e) { + throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.judgeNeedUpload 查询是否需要上传异常", e); + } + } + + @ApiOperation(value = "影子JOB配置修改") + @RequestMapping(value = AgentUrls.TAKIN_REPORT_ERROR_SHADOW_JOB_URL, method = {RequestMethod.PUT, RequestMethod.POST}, + produces = MediaType.APPLICATION_JSON_VALUE) + public Response update(@RequestBody ShadowJobConfigQuery query) { + try { + if (query.getId() == null) { + return Response.fail(TakinWebExceptionEnum.AGENT_UPDATE_SHADOW_JOB_VALIDATE_ERROR.getErrorCode(), + "ID不能为空"); + } + + Map xmlMap = XmlUtil.readStringXml(query.getConfigCode()); + String className = xmlMap.get("className"); + OperationLogContextHolder.operationType(BizOpConstants.OpTypes.UPDATE); + OperationLogContextHolder.addVars(BizOpConstants.Vars.TASK, className); + return shadowJobConfigService.update(query); + } catch (Exception e) { + return Response.fail(TakinWebExceptionEnum.AGENT_UPDATE_SHADOW_JOB_UPDATE_ERROR.getErrorCode(), + e.getMessage(), e); + } + } + + /** + * 更新 应用agentVersion版本 + * + * @return 响应体 + */ + @Deprecated + @GetMapping(value = AgentUrls.AGENT_VERSION, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity appAgentVersionUpdate(@RequestParam("appName") String appName, + @RequestParam(value = "agentVersion") String agentVersion, + @RequestParam(value = "pradarVersion") String pradarVersion) { + try { + if (StringUtils.isBlank(agentVersion) + || StringUtils.isBlank(pradarVersion) + || "null".equalsIgnoreCase(agentVersion) + || "null".equalsIgnoreCase(pradarVersion)) { + return ResponseError.create(1010100102, "更新应用版本异常,参数为空"); + } + confCenterService.updateAppAgentVersion(appName, agentVersion, pradarVersion); + return ResponseOk.create("succeed"); + } catch (Exception e) { + throw new TakinWebException(ExceptionCode.AGENT_INTERFACE_ERROR, "AgentController.appAgentVersionUpdate 更新应用版本异常", e); + } + } + + /** + * trace数据 方法追踪 + */ + @PostMapping(value = AgentUrls.PERFORMANCE_TRACE_URL) + @ApiOperation(value = "agent上传trace信息") + public void uploadTraceInfo(@RequestBody CommandPacket commandPacket) { + traceManageService.uploadTraceInfo(commandPacket); + } + + /** + * 配置数据上报 + * + * @param inputParam 入参 + */ + @PostMapping(value = AgentUrls.AGENT_PUSH_APPLICATION_CONFIG) + @ApiOperation(value = "agent上传配置信息") + public void uploadConfigInfo(@Validated @RequestBody ConfigReportInputParam inputParam) { + reportDetailService.uploadConfigInfo(inputParam); + } +} From 0a37cf3d81d9464a86964f1959bac1b82c9f0c09 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 11:33:10 +0800 Subject: [PATCH 174/318] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E4=B8=BA=E6=A3=80=E6=B5=8B=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index f408d06664..2aa269303a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -137,7 +137,7 @@ private void pushDataSourceCommands(PressureResourceEntity resource) { //更新数据库 PressureResourceEntity update = new PressureResourceEntity(); update.setId(resource.getId()); - update.setStatus(CheckStatusEnum.CHECK_ING.getCode()); + update.setCheckStatus(CheckStatusEnum.CHECK_ING.getCode()); resourceMapper.updateById(update); } From 15bcf12bd7bdf784e87b4bcb1a1adb3340469dc1 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 11:43:46 +0800 Subject: [PATCH 175/318] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E4=B8=BA=E6=A3=80=E6=B5=8B=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index 3276c68871..b406502965 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -517,7 +517,7 @@ private void processShadowDB(String keyName, Long resourceId, Map Date: Wed, 28 Sep 2022 11:47:52 +0800 Subject: [PATCH 176/318] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E4=B8=BA=E6=A3=80=E6=B5=8B=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/shulie/takin/web/biz/job/PressureResourceChangeJob.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index 692f038372..2ba1c1b0ee 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -73,7 +73,7 @@ public void execute(ShardingContext shardingContext) { return; } try { - PressureResourceEntity resource = pressureResourceMapper.selectById(resourceId); + PressureResourceEntity resource = pressureResourceMapper.queryByIdNoTenant(resourceId); if (resource == null) { log.warn("当前资源准备{}状态调整未查询到数据", resourceId); return; From f18cf7603f62a8e56a016e3c3c7fd84a4e32f6ff Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 13:42:38 +0800 Subject: [PATCH 177/318] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E4=B8=BA=E6=A3=80=E6=B5=8B=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/biz/job/PressureResourceChangeJob.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java index 2ba1c1b0ee..ca99970222 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceChangeJob.java @@ -26,7 +26,7 @@ */ @Component @ElasticSchedulerJob(jobName = "PressureResourceChangeJob", - isSharding = true, + isSharding = false, cron = "0/10 * * * * ? *", description = "配置资源修改立即触发") @Slf4j @@ -55,14 +55,7 @@ public void execute(ShardingContext shardingContext) { if (CollectionUtils.isEmpty(resourceIds)) { return; } - // 按配置Id分片 - List filterList = resourceIds.stream().filter(resourceId -> - resourceId % shardingContext.getShardingTotalCount() == shardingContext.getShardingItem()) - .collect(Collectors.toList()); - if (CollectionUtils.isEmpty(filterList)) { - return; - } - filterList.forEach(resourceId -> { + resourceIds.forEach(resourceId -> { String lockKey = JobRedisUtils.getRedisJobResource(1L, "change", resourceId); if (distributedLock.checkLock(lockKey)) { return; From 734f12c6c08d0e1f4c442eb6cd676cc968412bb5 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 13:49:08 +0800 Subject: [PATCH 178/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index d39f1be9f2..2758f9f015 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -428,7 +428,7 @@ public Map progress(Long id) { List appEntityList = pressureResourceRelateAppDAO.queryList(appQueryParam); if (CollectionUtils.isNotEmpty(appEntityList)) { // 判断状态是否都是正常的 - int normal = appEntityList.stream().filter(app -> app.getStatus().intValue() == 0).collect(Collectors.toList()).size(); + int normal = appEntityList.stream().filter(app -> app.getStatus() == 0).collect(Collectors.toList()).size(); if (normal == appEntityList.size()) { statusMap.put("APP", 2); } @@ -443,7 +443,7 @@ public Map progress(Long id) { List dsEntityList = pressureResourceRelateDsDAO.queryByParam(dsQueryParam); if (CollectionUtils.isNotEmpty(dsEntityList)) { // 判断状态是否都是正常的 - int normal = dsEntityList.stream().filter(ds -> ds.getStatus().intValue() == 2).collect(Collectors.toList()).size(); + int normal = dsEntityList.stream().filter(ds -> ds.getStatus() == 2).collect(Collectors.toList()).size(); if (normal == dsEntityList.size()) { statusMap.put("DS", 2); } @@ -478,7 +478,7 @@ public PressureResourceExtInfo appInfo(Long id) { // 总的应用数 extInfo.setTotalSize(appEntityList.size()); // 正常的应用数 - Long normalSize = appEntityList.stream().filter(app -> app.getStatus().equals(0)).count(); + Long normalSize = appEntityList.stream().filter(app -> app.getStatus() == 0).count(); extInfo.setNormalSize(normalSize.intValue()); extInfo.setExceptionSize(appEntityList.size() - normalSize.intValue()); } @@ -516,7 +516,7 @@ public PressureResourceExtInfo dsInfo(Long id) { int normalSize = 0; for (Map.Entry> entry : dsMap.entrySet()) { PressureResourceRelateDsEntity dsEntity = entry.getValue().get(0); - if (dsEntity.getStatus().intValue() != StatusEnum.FAIL.getCode()) { + if (dsEntity.getStatus().intValue() == StatusEnum.SUCCESS.getCode()) { normalSize = normalSize + 1; } } From 11b296003bbd2fa3fdf3e0964e564c8158b5aac4 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 14:10:27 +0800 Subject: [PATCH 179/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 2758f9f015..33980c10af 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -4,17 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Maps; import io.shulie.takin.common.beans.page.PagingList; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceIsolateInput; -import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceQueryRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.*; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.common.StatusEnum; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceDetailVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceExtInfo; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceInfoVO; -import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceVO; +import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; import io.shulie.takin.web.common.util.ActivityUtil; @@ -87,6 +82,9 @@ public class PressureResourceServiceImpl implements PressureResourceService { @Resource private SceneDAO sceneDAO; + @Resource + private PressureResourceAppService pressureResourceAppService; + /** * 新增 * @@ -423,17 +421,18 @@ public Map progress(Long id) { statusMap.put("REMOTECALL", 0); // 查看应用状态 - PressureResourceAppQueryParam appQueryParam = new PressureResourceAppQueryParam(); - appQueryParam.setResourceId(id); - List appEntityList = pressureResourceRelateAppDAO.queryList(appQueryParam); - if (CollectionUtils.isNotEmpty(appEntityList)) { + PressureResourceAppRequest appRequest = new PressureResourceAppRequest(); + appRequest.setResourceId(id); + PagingList pageList = pressureResourceAppService.appCheckList(appRequest); + if (!pageList.isEmpty()) { + List appVOList = pageList.getList(); // 判断状态是否都是正常的 - int normal = appEntityList.stream().filter(app -> app.getStatus() == 0).collect(Collectors.toList()).size(); - if (normal == appEntityList.size()) { + int normal = appVOList.stream().filter(app -> app.getStatus() == 0).collect(Collectors.toList()).size(); + if (normal == appVOList.size()) { statusMap.put("APP", 2); } // 存在正常的,进行中 - if (appEntityList.size() - normal > 0) { + if (appVOList.size() - normal > 0) { statusMap.put("APP", 1); } } @@ -471,16 +470,17 @@ public PressureResourceExtInfo appInfo(Long id) { if (entity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "配置不存在"); } - PressureResourceAppQueryParam queryParam = new PressureResourceAppQueryParam(); - queryParam.setResourceId(id); - List appEntityList = pressureResourceRelateAppDAO.queryList(queryParam); - if (CollectionUtils.isNotEmpty(appEntityList)) { + PressureResourceAppRequest appRequest = new PressureResourceAppRequest(); + appRequest.setResourceId(id); + PagingList pageList = pressureResourceAppService.appCheckList(appRequest); + if (!pageList.isEmpty()) { + List appVOList = pageList.getList(); // 总的应用数 - extInfo.setTotalSize(appEntityList.size()); + extInfo.setTotalSize(appVOList.size()); // 正常的应用数 - Long normalSize = appEntityList.stream().filter(app -> app.getStatus() == 0).count(); + Long normalSize = appVOList.stream().filter(app -> app.getStatus() == 0).count(); extInfo.setNormalSize(normalSize.intValue()); - extInfo.setExceptionSize(appEntityList.size() - normalSize.intValue()); + extInfo.setExceptionSize(appVOList.size() - normalSize.intValue()); } // 检测时间都是一批的 extInfo.setCheckTime(entity.getCheckTime()); @@ -516,7 +516,7 @@ public PressureResourceExtInfo dsInfo(Long id) { int normalSize = 0; for (Map.Entry> entry : dsMap.entrySet()) { PressureResourceRelateDsEntity dsEntity = entry.getValue().get(0); - if (dsEntity.getStatus().intValue() == StatusEnum.SUCCESS.getCode()) { + if (dsEntity.getStatus() == StatusEnum.SUCCESS.getCode()) { normalSize = normalSize + 1; } } From 1d76331a33ff6449b5d4aefcae80c026c0b9f316 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 14:35:08 +0800 Subject: [PATCH 180/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 33980c10af..b582a19f19 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -6,6 +6,7 @@ import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.common.StatusEnum; @@ -22,11 +23,12 @@ import io.shulie.takin.web.data.mapper.mysql.PressureResourceMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateDsMapper; import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateTableMapper; -import io.shulie.takin.web.data.model.mysql.pressureresource.*; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceDetailEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; import io.shulie.takin.web.data.param.linkmanage.SceneCreateParam; -import io.shulie.takin.web.data.param.linkmanage.SceneQueryParam; import io.shulie.takin.web.data.param.linkmanage.SceneUpdateParam; -import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDsQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceQueryParam; @@ -35,7 +37,6 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; -import org.mortbay.util.ajax.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -85,6 +86,9 @@ public class PressureResourceServiceImpl implements PressureResourceService { @Resource private PressureResourceAppService pressureResourceAppService; + @Resource + private PressureResourceDsService pressureResourceDsService; + /** * 新增 * @@ -472,15 +476,18 @@ public PressureResourceExtInfo appInfo(Long id) { } PressureResourceAppRequest appRequest = new PressureResourceAppRequest(); appRequest.setResourceId(id); + appRequest.setPageSize(500); PagingList pageList = pressureResourceAppService.appCheckList(appRequest); if (!pageList.isEmpty()) { List appVOList = pageList.getList(); - // 总的应用数 - extInfo.setTotalSize(appVOList.size()); - // 正常的应用数 - Long normalSize = appVOList.stream().filter(app -> app.getStatus() == 0).count(); - extInfo.setNormalSize(normalSize.intValue()); - extInfo.setExceptionSize(appVOList.size() - normalSize.intValue()); + if (CollectionUtils.isNotEmpty(appVOList)) { + // 总的应用数 + extInfo.setTotalSize(appVOList.size()); + // 正常的应用数 + Long normalSize = appVOList.stream().filter(app -> app.getStatus() == 0).count(); + extInfo.setNormalSize(normalSize.intValue()); + extInfo.setExceptionSize(appVOList.size() - normalSize.intValue()); + } } // 检测时间都是一批的 extInfo.setCheckTime(entity.getCheckTime()); @@ -505,23 +512,18 @@ public PressureResourceExtInfo dsInfo(Long id) { if (entity == null) { throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "配置不存在"); } - PressureResourceDsQueryParam dsQueryParam = new PressureResourceDsQueryParam(); - dsQueryParam.setResourceId(id); - List dsEntityList = pressureResourceRelateDsDAO.queryByParam(dsQueryParam); - - if (CollectionUtils.isNotEmpty(dsEntityList)) { - // 分组一下 - Map> dsMap = dsEntityList.stream().collect(Collectors.groupingBy(ds -> ds.getUniqueKey())); - extInfo.setTotalSize(dsMap.size()); - int normalSize = 0; - for (Map.Entry> entry : dsMap.entrySet()) { - PressureResourceRelateDsEntity dsEntity = entry.getValue().get(0); - if (dsEntity.getStatus() == StatusEnum.SUCCESS.getCode()) { - normalSize = normalSize + 1; - } + PressureResourceRelateDsRequest dsRequest = new PressureResourceRelateDsRequest(); + dsRequest.setResourceId(id); + dsRequest.setPageSize(2000); + PagingList pageList = pressureResourceDsService.listByDs(dsRequest); + if (!pageList.isEmpty()) { + List resourceRelateDsVOS = pageList.getList(); + if (CollectionUtils.isNotEmpty(resourceRelateDsVOS)) { + extInfo.setTotalSize(resourceRelateDsVOS.size()); + Long normalSize = resourceRelateDsVOS.stream().filter(ds -> ds.getStatus() == 2).count(); + extInfo.setNormalSize(normalSize.intValue()); + extInfo.setExceptionSize(extInfo.getTotalSize() - extInfo.getNormalSize()); } - extInfo.setNormalSize(normalSize); - extInfo.setExceptionSize(extInfo.getTotalSize() - extInfo.getNormalSize()); } // 检测时间都是一批的 extInfo.setCheckTime(entity.getCheckTime()); From 4d0d6b4d830aa63f2952def9e7502a203f2f8fa1 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 16:21:09 +0800 Subject: [PATCH 181/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 3cbb31e05c..8a2b4bb9a7 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -125,8 +125,7 @@ public PagingList appCheckList(PressureResourceAppR Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : 1); + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } From f5d9b7b9aff7a486fb093706ca1c5ce746c6a094 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 16:24:54 +0800 Subject: [PATCH 182/318] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceCommandServiceImpl.java | 2 -- .../impl/PressureResourceCommonServiceImpl.java | 2 -- .../pressureresource/impl/PressureResourceServiceImpl.java | 1 - 3 files changed, 5 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java index 2aa269303a..3ca8cc4489 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommandServiceImpl.java @@ -13,7 +13,6 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceCommandService; import io.shulie.takin.web.biz.service.pressureresource.common.*; import io.shulie.takin.web.biz.service.pressureresource.vo.agent.command.*; -import io.shulie.takin.web.common.enums.ContextSourceEnum; import io.shulie.takin.web.common.enums.application.AppRemoteCallConfigEnum; import io.shulie.takin.web.common.vo.agent.AgentRemoteCallVO; import io.shulie.takin.web.data.dao.application.InterfaceTypeMainDAO; @@ -29,7 +28,6 @@ import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateDsEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateRemoteCallEntity; import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateTableEntity; -import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; import io.shulie.takin.web.ext.entity.tenant.TenantInfoExt; import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 2c21072236..b97b583cfe 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -15,7 +15,6 @@ import io.shulie.takin.web.amdb.bean.common.EntranceTypeEnum; import io.shulie.takin.web.amdb.bean.query.application.ApplicationRemoteCallQueryDTO; import io.shulie.takin.web.amdb.bean.result.application.ApplicationRemoteCallDTO; -import io.shulie.takin.web.biz.pojo.openapi.response.application.ApplicationListResponse; import io.shulie.takin.web.biz.pojo.request.activity.ActivityInfoQueryRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationEntranceTopologyQueryRequest; import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowPageQueryRequest; @@ -65,7 +64,6 @@ import javax.annotation.Resource; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index b582a19f19..8af1c3f368 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -9,7 +9,6 @@ import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; -import io.shulie.takin.web.biz.service.pressureresource.common.StatusEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.*; import io.shulie.takin.web.common.exception.TakinWebException; import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; From adf19ba711289334561905a2fcecd4287b718f45 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 17:37:42 +0800 Subject: [PATCH 183/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceTableServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index adc949c107..414397db4a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -89,6 +89,7 @@ public void update(PressureResourceRelateTableInput updateInput) { } PressureResourceRelateTableRequest tableRequest = new PressureResourceRelateTableRequest(); tableRequest.setBusinessTableName(updateInput.getBusinessTable()); + tableRequest.setDsId(updateInput.getDsId()); PagingList pageList = this.pageList(tableRequest); if (!pageList.isEmpty()) { List list = pageList.getList(); From 5879e396ccb76064a2b3c2331ea3a0870862570c Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 19:44:15 +0800 Subject: [PATCH 184/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceAppServiceImpl.java | 3 + .../PressureResourceCommonServiceImpl.java | 116 +++++++++--------- .../vo/PressureResourceRelateAppVO.java | 3 + 3 files changed, 65 insertions(+), 57 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 8a2b4bb9a7..b33fa4a82c 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -116,6 +116,7 @@ public PagingList appCheckList(PressureResourceAppR vo.setIsolateType(resourceEntity.getIsolateType()); // 默认是0 vo.setAgentNodeNum(0); + vo.setNodeNum(0); // 默认不正常 vo.setStatus(1); vo.setId(String.valueOf(configDto.getId())); @@ -125,8 +126,10 @@ public PagingList appCheckList(PressureResourceAppR Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); + vo.setNodeNum(applicationVo.getNodeNum()); vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); + vo.setRemark(applicationVo.getExceptionInfo()); } } return vo; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index b97b583cfe..11004c60a9 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -371,8 +371,7 @@ public List getResourceIdsFormRedis() { Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); - // 默认等于探针在线节点数 - appEntity.setNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); + appEntity.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); } } @@ -385,61 +384,63 @@ public List getResourceIdsFormRedis() { // 保存关联应用 pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); } - List edgeDTOList = applicationEntrancesTopology.getEdges(); - // 获取所有的数据库操作信息 - List dbEdgeList = edgeDTOList.stream().filter(edge -> { - if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { - return true; - } - return false; - }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(dbEdgeList)) { - // 按照URL分组 - Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); - - for (Map.Entry> entry : serviceMap.entrySet()) { - String key = entry.getKey(); - String appName = key.split("#")[0]; - String database = key.split("#")[1]; - if ("null".equals(appName)) { - // TODO 暂时打印下日志 - logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue()); - continue; - } - String dbName = DbNameUtil.getDbName(database); - if (PtUtils.isShadow(dbName)) { - continue; - } - PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); - dsEntity.setResourceId(resourceId); - dsEntity.setDetailId(detailEntity.getId()); - dsEntity.setAppName(appName); - // 从任意的边里面获取数据源详情信息 - LinkEdgeDTO edgeDTO = entry.getValue().get(0); - List dsList = edgeDTO.getDsList(); - if (CollectionUtils.isEmpty(dsList)) { - logger.warn("应用数据源未梳理完成,{}", database); - } else { - AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); - dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); - dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); - dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); + + // 隔离方案未设置,暂时不处理 + if (!(isolateType == IsolateTypeEnum.DEFAULT.getCode())) { + List edgeDTOList = applicationEntrancesTopology.getEdges(); + // 获取所有的数据库操作信息 + List dbEdgeList = edgeDTOList.stream().filter(edge -> { + if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { + return true; } - dsEntity.setBusinessDatabase(database); - dsEntity.setTenantId(WebPluginUtils.traceTenantId()); - dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - dsEntity.setStatus(StatusEnum.NO.getCode()); - dsEntity.setType(SourceTypeEnum.AUTO.getCode()); - dsEntity.setGmtCreate(new Date()); - // 生成唯一key,按应用区分 - dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); - // 这里生成的dskey是关联表的,表里面是不区分应用的 - String dsKey = DataSourceUtil.generateDsKey(resourceId, database); - dsEntityList.add(dsEntity); - - List value = entry.getValue(); - // 没有设置隔离类型的话,暂时不处理关联表信息,减少没必要的数据梳理 - if (!isolateType.equals(IsolateTypeEnum.DEFAULT.getCode())) { + return false; + }).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(dbEdgeList)) { + // 按照URL分组 + Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); + + for (Map.Entry> entry : serviceMap.entrySet()) { + String key = entry.getKey(); + String appName = key.split("#")[0]; + String database = key.split("#")[1]; + if ("null".equals(appName)) { + // TODO 暂时打印下日志 + logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue()); + continue; + } + String dbName = DbNameUtil.getDbName(database); + if (PtUtils.isShadow(dbName)) { + continue; + } + PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); + dsEntity.setResourceId(resourceId); + dsEntity.setDetailId(detailEntity.getId()); + dsEntity.setAppName(appName); + // 从任意的边里面获取数据源详情信息 + LinkEdgeDTO edgeDTO = entry.getValue().get(0); + List dsList = edgeDTO.getDsList(); + if (CollectionUtils.isEmpty(dsList)) { + logger.warn("应用数据源未梳理完成,{}", database); + } else { + AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); + dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); + dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); + dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); + } + dsEntity.setBusinessDatabase(database); + dsEntity.setTenantId(WebPluginUtils.traceTenantId()); + dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + dsEntity.setStatus(StatusEnum.NO.getCode()); + dsEntity.setType(SourceTypeEnum.AUTO.getCode()); + dsEntity.setGmtCreate(new Date()); + // 生成唯一key,按应用区分 + dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); + // 这里生成的dskey是关联表的,表里面是不区分应用的 + String dsKey = DataSourceUtil.generateDsKey(resourceId, database); + dsEntityList.add(dsEntity); + + List value = entry.getValue(); + // 没有设置隔离类型的话,暂时不处理关联表信息,减少没必要的数据梳理 if (CollectionUtils.isNotEmpty(value)) { for (int k = 0; k < value.size(); k++) { // 存在逗号分割的数据 @@ -461,6 +462,8 @@ public List getResourceIdsFormRedis() { PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); tableEntity.setResourceId(resourceId); tableEntity.setBusinessTable(tableName); + // 系统自动处理影子表 + tableEntity.setShadowTable("PT_" + tableName); tableEntity.setDsKey(dsKey); tableEntity.setGmtCreate(new Date()); tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); @@ -474,7 +477,6 @@ public List getResourceIdsFormRedis() { } } } - } } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java index 99638339bb..29be5087be 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java @@ -51,4 +51,7 @@ public class PressureResourceRelateAppVO extends TenantBaseEntity { @ApiModelProperty("更新时间") private Date gmtModified; + + @ApiModelProperty("异常备注") + private String remark; } From 062e4a645e9fa5dd642d2c56bc5a60f4a762fe5a Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 19:45:57 +0800 Subject: [PATCH 185/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index b33fa4a82c..1f32166e38 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -126,7 +126,7 @@ public PagingList appCheckList(PressureResourceAppR Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); if (voResponse.getSuccess()) { ApplicationVo applicationVo = voResponse.getData(); - vo.setNodeNum(applicationVo.getNodeNum()); + vo.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); vo.setRemark(applicationVo.getExceptionInfo()); From 020f30c3a99036108efbc7695412facef599ac86 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 28 Sep 2022 19:49:40 +0800 Subject: [PATCH 186/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceDsServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java index b406502965..9365a6aace 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceDsServiceImpl.java @@ -407,7 +407,7 @@ private void exportShadowTable(HttpServletResponse response, PressureResourceEnt shadowTableSheet.setSheetNum(1); sheets.add(shadowTableSheet); try { - ExcelUtils.exportExcelManySheet(response, resource.getName() + "_隔离方案", sheets); + ExcelUtils.exportExcelManySheet(response, resource.getName() + "_隔离配置", sheets); } catch (Exception e) { logger.error("配置导出错误: {}", ExceptionUtils.getStackTrace(e)); } From f49d3268aabceb150cc5e500ed904bdfd7bdb3c2 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 29 Sep 2022 10:00:43 +0800 Subject: [PATCH 187/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/PressureResourceDsService.java | 2 +- .../web/biz/service/pressureresource/common/PtUtils.java | 7 +++++++ .../impl/PressureResourceCommonServiceImpl.java | 2 +- .../pressureresource/impl/PressureResourceServiceImpl.java | 3 --- .../impl/PressureResourceTableServiceImpl.java | 1 + .../data/mapper/mysql/PressureResourceRelateAppMapper.java | 3 +++ 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java index 1500b4bcdb..5c1184ef07 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceDsService.java @@ -22,7 +22,7 @@ public interface PressureResourceDsService { void add(PressureResourceRelateDsInput input); /** - * 数据源新增 + * 通过数据源Id获取dsKey */ String getDsKey(Long dsId); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PtUtils.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PtUtils.java index 84d712866f..e272a6edd6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PtUtils.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/common/PtUtils.java @@ -17,4 +17,11 @@ public static boolean isShadow(String var) { } return false; } + + public static String shadowTable(String table) { + if (StringUtils.isBlank(table)) { + return table; + } + return String.format("PT_%s", table); + } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index 11004c60a9..a8b2a142f3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -463,7 +463,7 @@ public List getResourceIdsFormRedis() { tableEntity.setResourceId(resourceId); tableEntity.setBusinessTable(tableName); // 系统自动处理影子表 - tableEntity.setShadowTable("PT_" + tableName); + tableEntity.setShadowTable(PtUtils.shadowTable(tableName)); tableEntity.setDsKey(dsKey); tableEntity.setGmtCreate(new Date()); tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 8af1c3f368..61d8cf04a6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -246,7 +246,6 @@ public void update(PressureResourceInput input) { updateResourceEntity.setUserId(input.getUserId()); pressureResourceMapper.updateById(updateResourceEntity); - // 使用原始名字去查询 SceneResult sceneResult = sceneDAO.getSceneDetail(entity.getSourceId()); if (sceneResult != null && !sceneResult.getSceneName().equals(input.getName())) { SceneUpdateParam updateParam = new SceneUpdateParam(); @@ -306,8 +305,6 @@ public void update(PressureResourceInput input) { pressureResourceDetailMapper.deleteBatchIds(deleteIds); } } - // 修改的 - } private String fetchKey(PressureResourceDetailEntity ele) { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java index 414397db4a..9ba3136072 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceTableServiceImpl.java @@ -54,6 +54,7 @@ public void save(PressureResourceRelateTableInput input) { // 判断业务表是否存在 PressureResourceTableQueryParam queryParam = new PressureResourceTableQueryParam(); queryParam.setBusinessTableName(input.getBusinessTable()); + // 通过数据源ID的主键是由应用名+业务数据源+resouceId生成,这里需要转换下 String dsKey = pressureResourceDsService.getDsKey(input.getDsId()); queryParam.setDsKey(dsKey); List tableList = pressureResourceRelateTableDAO.queryList(queryParam); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java index 6c3f4f0062..1c862b8dfe 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateAppMapper.java @@ -20,6 +20,9 @@ public interface PressureResourceRelateAppMapper "" + " ,status = values(status)" + "" + + "" + + " ,node_num = values(node_num)" + + "" + "") void saveOrUpdate(@Param("item") PressureResourceRelateAppEntity item); } From 5d4137b43ce45276e9b61ca53764176d63e2f7ea Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 29 Sep 2022 10:26:01 +0800 Subject: [PATCH 188/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pressureresource/impl/PressureResourceAppServiceImpl.java | 1 + .../pressureresource/vo/PressureResourceRelateAppVO.java | 3 +++ 2 files changed, 4 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 1f32166e38..78b7e62153 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -132,6 +132,7 @@ public PagingList appCheckList(PressureResourceAppR vo.setRemark(applicationVo.getExceptionInfo()); } } + vo.setApplicationId(String.valueOf(appId)); return vo; }).collect(Collectors.toList()); return PagingList.of(returnList, pageList.getTotal()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java index 29be5087be..858b9e9733 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceRelateAppVO.java @@ -30,6 +30,9 @@ public class PressureResourceRelateAppVO extends TenantBaseEntity { @ApiModelProperty("应用名称") private String appName; + @ApiModelProperty("应用Id") + private String applicationId; + @ApiModelProperty("状态 0-正常 1-不正常") @Column(name = "`status`") private Integer status; From 7456bd71bd213f25676f365764b73c6d48585156 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Thu, 29 Sep 2022 16:51:40 +0800 Subject: [PATCH 189/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/app/conf/ThreadPoolConfig.java | 18 ++ .../web/biz/job/AppRemoteApiFilterJob.java | 6 +- .../web/biz/job/MavenNewVersionPullJob.java | 157 ++++++++---------- .../service/impl/ApplicationServiceImpl.java | 12 +- .../takin/web/common/constant/AgentUrls.java | 5 - .../controller/agent/AgentPushController.java | 1 - 6 files changed, 93 insertions(+), 106 deletions(-) diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java index f10d7c06a9..9a4a1cb483 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java @@ -34,6 +34,24 @@ */ @Configuration public class ThreadPoolConfig { + /** + * 用于定时任务 + * + * @return 线程池 + */ + @Bean(name = "syncAppStatusThreadPool") + public ThreadPoolExecutor syncAppStatusThreadPool() { + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("syncAppStatusThread-%d").build(); + return new ThreadPoolExecutor(10, 20, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, + new ThreadPoolExecutor.AbortPolicy()); + } + + @Bean(name = "appRemoteApiFilterThreadPool") + public ThreadPoolExecutor appRemoteApiFilterThreadPool() { + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("appRemoteApiFilterThread-%d").build(); + return new ThreadPoolExecutor(10, 20, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, + new ThreadPoolExecutor.AbortPolicy()); + } /** * 用于定时任务 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppRemoteApiFilterJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppRemoteApiFilterJob.java index fdec4b827d..c30504c3ad 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppRemoteApiFilterJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/AppRemoteApiFilterJob.java @@ -54,8 +54,8 @@ public class AppRemoteApiFilterJob implements SimpleJob { @Resource private ApplicationApiService apiService; @Resource - @Qualifier("remoteApiThreadPool") - private ThreadPoolExecutor remoteApiThreadPool; + @Qualifier("appRemoteApiFilterThreadPool") + private ThreadPoolExecutor appRemoteApiFilterThreadPool; @Resource private DistributedLock distributedLock; @@ -81,7 +81,7 @@ public void execute(ShardingContext shardingContext) { if (distributedLock.checkLock(lockKey)) { continue; } - remoteApiThreadPool.execute(() -> { + appRemoteApiFilterThreadPool.execute(() -> { boolean tryLock = distributedLock.tryLock(lockKey, 0L, 1L, TimeUnit.MINUTES); if (!tryLock) { return; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/MavenNewVersionPullJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/MavenNewVersionPullJob.java index dbe97e9b90..9e64129172 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/MavenNewVersionPullJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/MavenNewVersionPullJob.java @@ -29,6 +29,7 @@ import io.shulie.takin.web.data.model.mysql.MiddlewareSummaryEntity; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** @@ -37,8 +38,7 @@ * @author liqiyu */ @Component -@ElasticSchedulerJob(jobName = "MavenNewVersionPullJob", cron = "0 0 3 * * ? *", - description = "定时查询阿里云maven仓库是否有新的maven版本") +@ElasticSchedulerJob(jobName = "MavenNewVersionPullJob", cron = "0 0 3 * * ? *", description = "定时查询阿里云maven仓库是否有新的maven版本") @Slf4j public class MavenNewVersionPullJob implements SimpleJob { @@ -48,103 +48,84 @@ public class MavenNewVersionPullJob implements SimpleJob { @Autowired private MiddlewareSummaryService middlewareSummaryService; - private static final String ALIYUN_MAVEN_URL - = "https://maven.aliyun.com/artifact/aliyunMaven/searchArtifactByGav?groupId=%s" - + "&artifactId=%s&version=&repoId=all&_input_charset=utf-8"; + private static final String ALIYUN_MAVEN_URL = "https://maven.aliyun.com/artifact/aliyunMaven/searchArtifactByGav?groupId=%s" + "&artifactId=%s&version=&repoId=all&_input_charset=utf-8"; - private static final String SEARCH_MAVEN_URL_ORG - = "https://search.maven.org/solrsearch/select?q=g:%s+AND+a:%s&core=gav&start=0&rows=99999"; + private static final String SEARCH_MAVEN_URL_ORG = "https://search.maven.org/solrsearch/select?q=g:%s+AND+a:%s&core=gav&start=0&rows=99999"; + + @Value("${maven.pull.job.enable:true}") + private boolean mavenenable; @Override public void execute(ShardingContext shardingContext) { + if (!mavenenable) { + return; + } final List middlewareSummaryEntityList = middlewareSummaryService.list(); - middlewareSummaryEntityList.stream() - .map(middlewareSummaryEntity -> { - String url = ""; - final long start = System.currentTimeMillis(); + middlewareSummaryEntityList.stream().map(middlewareSummaryEntity -> { + String url = ""; + final long start = System.currentTimeMillis(); + try { + url = String.format(SEARCH_MAVEN_URL_ORG, middlewareSummaryEntity.getGroupId(), middlewareSummaryEntity.getArtifactId()); + final String httpResponseStr = HttpUtil.get(url, 60 * 1000); + OrgMavenResponse httpResponse; try { - url = String - .format(SEARCH_MAVEN_URL_ORG, middlewareSummaryEntity.getGroupId(), - middlewareSummaryEntity.getArtifactId()); - final String httpResponseStr = HttpUtil.get(url, 60 * 1000); - OrgMavenResponse httpResponse; - try { - httpResponse = JSONObject.parseObject(httpResponseStr, OrgMavenResponse.class, - Feature.IgnoreNotMatch); - } catch (Exception e) { - log.error(String.format("响应信息解析失败。response:%s,groupId:%s,artifactId:%s", httpResponseStr, - middlewareSummaryEntity.getGroupId(), middlewareSummaryEntity.getArtifactId()), e); - return null; - } - if (httpResponse.getResponse().getNumFound() > 0) { - final List collect = httpResponse.getResponse().getDocs().parallelStream().filter( - jarInfo -> "jar".equals(jarInfo.getP())) - .filter(jarInfo -> !"unknown".equalsIgnoreCase(jarInfo.getV())) - .collect(Collectors.collectingAndThen( - Collectors.toCollection(() -> new TreeSet<>( - Comparator.comparing(o -> CommonUtil.joinAgv(o.getA(), - o.getG(), o.getV())))), - ArrayList::new)); - if (collect.size() == middlewareSummaryEntity.getTotalNum()) { - return null; - } else { - return new Object[] {middlewareSummaryEntity, collect}; - } - } else { - log.warn("请求数量为0,url:" + url); - } + httpResponse = JSONObject.parseObject(httpResponseStr, OrgMavenResponse.class, Feature.IgnoreNotMatch); } catch (Exception e) { - log.error(String.format("请求出错,耗时:%d 秒,url:%s", (System.currentTimeMillis() - start) / 1000, url), e); + log.error(String.format("响应信息解析失败。response:%s,groupId:%s,artifactId:%s", httpResponseStr, middlewareSummaryEntity.getGroupId(), middlewareSummaryEntity.getArtifactId()), e); + return null; } - return null; - }) - .filter(Objects::nonNull) - .collect(Collectors.toList()) - .forEach(objects -> { - MiddlewareSummaryEntity middlewareSummaryEntity = (MiddlewareSummaryEntity)objects[0]; - List jarInfoList = (List)objects[1]; - - final QueryWrapper queryWrapper = new QueryWrapper<>(); - final LambdaQueryWrapper lambda = queryWrapper.lambda(); - lambda.eq(MiddlewareJarEntity::getArtifactId, middlewareSummaryEntity.getArtifactId()); - lambda.eq(MiddlewareJarEntity::getGroupId, middlewareSummaryEntity.getGroupId()); - final List middlewareJarEntityList = middlewareJarService.list(queryWrapper); - final Map versionMap = middlewareJarEntityList.parallelStream().collect( - Collectors.toMap(MiddlewareJarEntity::getVersion, - Function.identity())); - final List collect = jarInfoList.parallelStream().map(jarInfo -> { - final String agv = CommonUtil.joinAgv(middlewareSummaryEntity.getArtifactId(), - middlewareSummaryEntity.getGroupId(), - jarInfo.getV() - ); - // 查到了的就不用管了 - if (versionMap.containsKey(jarInfo.getV())) { + if (httpResponse.getResponse().getNumFound() > 0) { + final List collect = httpResponse.getResponse().getDocs().parallelStream().filter(jarInfo -> "jar".equals(jarInfo.getP())).filter(jarInfo -> !"unknown".equalsIgnoreCase(jarInfo.getV())).collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> CommonUtil.joinAgv(o.getA(), o.getG(), o.getV())))), ArrayList::new)); + if (collect.size() == middlewareSummaryEntity.getTotalNum()) { return null; - } - final MiddlewareJarEntity middlewareJarEntity = new MiddlewareJarEntity(); - middlewareJarEntity.setArtifactId(jarInfo.getA()); - middlewareJarEntity.setGroupId(jarInfo.getG()); - middlewareJarEntity.setVersion(jarInfo.getV()); - middlewareJarEntity.setAgv(agv); - middlewareJarEntity.setGmtCreate(new Date()); - middlewareJarEntity.setGmtUpdate(new Date()); - middlewareJarEntity.setName(middlewareSummaryEntity.getName()); - middlewareJarEntity.setType(middlewareSummaryEntity.getType()); - // 如果汇总信息是已支持。则新增的设置为 不支持,其它的状态的设置的同汇总信息一致 - if (ApplicationMiddlewareStatusEnum.SUPPORTED.getCode().equals( - middlewareSummaryEntity.getStatus())) { - middlewareJarEntity.setStatus(ApplicationMiddlewareStatusEnum.NOT_SUPPORTED.getCode()); } else { - middlewareJarEntity.setStatus(middlewareSummaryEntity.getStatus()); + return new Object[]{middlewareSummaryEntity, collect}; } - return middlewareJarEntity; - }).filter(Objects::nonNull).collect(Collectors.toList()); - middlewareJarService.saveBatch(collect); - middlewareJarService.reCompute(middlewareSummaryEntity); - middlewareSummaryService.updateById(middlewareSummaryEntity); - log.info(String.format("中间件:groupId:%s artifactId:%s 发现新版本 %d个", middlewareSummaryEntity.getGroupId(), - middlewareSummaryEntity.getArtifactId(), collect.size())); - }); + } else { + log.warn("请求数量为0,url:" + url); + } + } catch (Exception e) { + log.error(String.format("请求出错,耗时:%d 秒,url:%s", (System.currentTimeMillis() - start) / 1000, url), e); + } + return null; + }).filter(Objects::nonNull).collect(Collectors.toList()).forEach(objects -> { + MiddlewareSummaryEntity middlewareSummaryEntity = (MiddlewareSummaryEntity) objects[0]; + List jarInfoList = (List) objects[1]; + + final QueryWrapper queryWrapper = new QueryWrapper<>(); + final LambdaQueryWrapper lambda = queryWrapper.lambda(); + lambda.eq(MiddlewareJarEntity::getArtifactId, middlewareSummaryEntity.getArtifactId()); + lambda.eq(MiddlewareJarEntity::getGroupId, middlewareSummaryEntity.getGroupId()); + final List middlewareJarEntityList = middlewareJarService.list(queryWrapper); + final Map versionMap = middlewareJarEntityList.parallelStream().collect(Collectors.toMap(MiddlewareJarEntity::getVersion, Function.identity())); + final List collect = jarInfoList.parallelStream().map(jarInfo -> { + final String agv = CommonUtil.joinAgv(middlewareSummaryEntity.getArtifactId(), middlewareSummaryEntity.getGroupId(), jarInfo.getV()); + // 查到了的就不用管了 + if (versionMap.containsKey(jarInfo.getV())) { + return null; + } + final MiddlewareJarEntity middlewareJarEntity = new MiddlewareJarEntity(); + middlewareJarEntity.setArtifactId(jarInfo.getA()); + middlewareJarEntity.setGroupId(jarInfo.getG()); + middlewareJarEntity.setVersion(jarInfo.getV()); + middlewareJarEntity.setAgv(agv); + middlewareJarEntity.setGmtCreate(new Date()); + middlewareJarEntity.setGmtUpdate(new Date()); + middlewareJarEntity.setName(middlewareSummaryEntity.getName()); + middlewareJarEntity.setType(middlewareSummaryEntity.getType()); + // 如果汇总信息是已支持。则新增的设置为 不支持,其它的状态的设置的同汇总信息一致 + if (ApplicationMiddlewareStatusEnum.SUPPORTED.getCode().equals(middlewareSummaryEntity.getStatus())) { + middlewareJarEntity.setStatus(ApplicationMiddlewareStatusEnum.NOT_SUPPORTED.getCode()); + } else { + middlewareJarEntity.setStatus(middlewareSummaryEntity.getStatus()); + } + return middlewareJarEntity; + }).filter(Objects::nonNull).collect(Collectors.toList()); + middlewareJarService.saveBatch(collect); + middlewareJarService.reCompute(middlewareSummaryEntity); + middlewareSummaryService.updateById(middlewareSummaryEntity); + log.info(String.format("中间件:groupId:%s artifactId:%s 发现新版本 %d个", middlewareSummaryEntity.getGroupId(), middlewareSummaryEntity.getArtifactId(), collect.size())); + }); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index 2f28079c45..c3ed69f6c1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -402,15 +402,9 @@ public Response> getApplicationList(ApplicationQueryRequest @Override public Long getAccessErrorNum() { - try { - ApplicationQueryRequestV2 requestV2 = new ApplicationQueryRequestV2(); - requestV2.setAccessStatus(3); - Long total = this.pageApplication(requestV2).getTotal(); - return total; - } catch (Throwable e) { - log.error(ExceptionUtils.getStackTrace(e)); - } - return 0L; + ApplicationQueryRequestV2 requestV2 = new ApplicationQueryRequestV2(); + requestV2.setAccessStatus(3); + return this.pageApplication(requestV2).getTotal(); } // @Override diff --git a/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java b/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java index 5bf3e79a20..f31a9218d1 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java +++ b/takin-web-common/src/main/java/io/shulie/takin/web/common/constant/AgentUrls.java @@ -155,9 +155,4 @@ public class AgentUrls { * agent 上报应用配置 */ public static final String AGENT_PUSH_APPLICATION_CONFIG = "/agent/push/application/config"; - - /** - * agent 上报数据源信息 - */ - public static final String AGENT_PUSH_APPLICATION_DATA_BASE = "/agent/push/application/database"; } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java index c16c4e7189..a527745b7a 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/agent/AgentPushController.java @@ -30,7 +30,6 @@ import io.shulie.takin.web.common.context.OperationLogContextHolder; import io.shulie.takin.web.biz.service.simplify.ShadowJobConfigService; import io.shulie.takin.web.biz.service.linkmanage.ApplicationApiService; -import io.shulie.takin.web.data.param.application.AppDatabaseInputParam; import io.shulie.takin.web.data.param.application.ConfigReportInputParam; import io.shulie.takin.web.biz.service.perfomanceanaly.TraceManageService; import io.shulie.takin.web.biz.service.perfomanceanaly.ReportDetailService; From f9d008dcd0866cf18432b7c897153af69f7586a3 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Mon, 10 Oct 2022 17:39:55 +0800 Subject: [PATCH 190/318] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- takin-web-amdb-accessor/pom.xml | 2 +- takin-web-app/pom.xml | 2 +- takin-web-biz-service/pom.xml | 2 +- takin-web-bom/pom.xml | 4 ++-- takin-web-common/pom.xml | 2 +- takin-web-data/pom.xml | 2 +- takin-web-entrypoint/pom.xml | 2 +- takin-web-eventcenter/pom.xml | 2 +- takin-web-ext/pom.xml | 4 ++-- takin-web-ext/takin-web-ext-api/pom.xml | 4 ++-- takin-web-ext/takin-web-ext-jmeter/pom.xml | 4 ++-- takin-web-service-adapters/pom.xml | 2 +- takin-web-service-adapters/takin-web-adapter/pom.xml | 2 +- .../takin-web-adapter/takin-web-adapter-api/pom.xml | 2 +- .../takin-web-adapter/takin-web-adapter-cloud/pom.xml | 2 +- takin-web-service-adapters/takin-web-config/pom.xml | 2 +- .../takin-web-config/takin-web-config-common/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-api/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-http/pom.xml | 2 +- .../takin-web-config-sync-http-common/pom.xml | 2 +- .../takin-web-config-sync-http-impl/pom.xml | 2 +- .../takin-web-config/takin-web-config-sync-zk/pom.xml | 2 +- .../takin-web-config-sync-zk-common/pom.xml | 2 +- .../takin-web-config-sync-zk-impl/pom.xml | 2 +- takin-web-service-adapters/takin-web-diff/pom.xml | 2 +- .../takin-web-diff/takin-web-diff-api/pom.xml | 2 +- .../takin-web-diff/takin-web-diff-cloud/pom.xml | 2 +- 28 files changed, 33 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index c6b89f9049..8385bc40db 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.10.1 + takin-web-5.10.1.1 pom https://github.com/shulieTech/Takin-web.git @@ -41,7 +41,7 @@ 3.8.0 yyyyMMddHHmmss - takin-web-5.10.1 + takin-web-5.10.1.1 common-2.0.2-SNAPSHOT common-2.0.0-SNAPSHOT 2.0.6.2 diff --git a/takin-web-amdb-accessor/pom.xml b/takin-web-amdb-accessor/pom.xml index 0ab13e45a2..6d1014eb2c 100644 --- a/takin-web-amdb-accessor/pom.xml +++ b/takin-web-amdb-accessor/pom.xml @@ -20,7 +20,7 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-app/pom.xml b/takin-web-app/pom.xml index 1ceff0c9b8..1ee566b1ec 100644 --- a/takin-web-app/pom.xml +++ b/takin-web-app/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml takin-web-app diff --git a/takin-web-biz-service/pom.xml b/takin-web-biz-service/pom.xml index 2ef6bd0cda..75a28628c0 100644 --- a/takin-web-biz-service/pom.xml +++ b/takin-web-biz-service/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-bom/pom.xml b/takin-web-bom/pom.xml index 3b7236e293..4eb36583d2 100644 --- a/takin-web-bom/pom.xml +++ b/takin-web-bom/pom.xml @@ -5,11 +5,11 @@ 4.0.0 io.shulie.takin takin-web-bom - takin-web-5.10.1 + takin-web-5.10.1.1 pom - takin-web-5.10.1 + takin-web-5.10.1.1 1.0.3 diff --git a/takin-web-common/pom.xml b/takin-web-common/pom.xml index 63e9a38bbe..dafb2c0b53 100644 --- a/takin-web-common/pom.xml +++ b/takin-web-common/pom.xml @@ -19,7 +19,7 @@ io.shulie.takin takin-web - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml takin-web-common diff --git a/takin-web-data/pom.xml b/takin-web-data/pom.xml index de1822b903..7214a567be 100644 --- a/takin-web-data/pom.xml +++ b/takin-web-data/pom.xml @@ -21,7 +21,7 @@ io.shulie.takin takin-web - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml takin-web-data diff --git a/takin-web-entrypoint/pom.xml b/takin-web-entrypoint/pom.xml index 5a26fc94f8..f9c3f5f87f 100644 --- a/takin-web-entrypoint/pom.xml +++ b/takin-web-entrypoint/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-eventcenter/pom.xml b/takin-web-eventcenter/pom.xml index 2105c55b84..ffa332e999 100644 --- a/takin-web-eventcenter/pom.xml +++ b/takin-web-eventcenter/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-ext/pom.xml b/takin-web-ext/pom.xml index 6b40d1ad8c..d9f2863a71 100644 --- a/takin-web-ext/pom.xml +++ b/takin-web-ext/pom.xml @@ -5,12 +5,12 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 takin-web-ext - takin-web-5.10.1 + takin-web-5.10.1.1 pom takin-web-ext-api diff --git a/takin-web-ext/takin-web-ext-api/pom.xml b/takin-web-ext/takin-web-ext-api/pom.xml index d86e9916fa..0fdac9c787 100644 --- a/takin-web-ext/takin-web-ext-api/pom.xml +++ b/takin-web-ext/takin-web-ext-api/pom.xml @@ -5,14 +5,14 @@ takin-web-ext io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 takin-web-ext-api - takin-web-5.10.1 + takin-web-5.10.1.1 diff --git a/takin-web-ext/takin-web-ext-jmeter/pom.xml b/takin-web-ext/takin-web-ext-jmeter/pom.xml index 30e6c5ff30..abec8a08dc 100644 --- a/takin-web-ext/takin-web-ext-jmeter/pom.xml +++ b/takin-web-ext/takin-web-ext-jmeter/pom.xml @@ -5,13 +5,13 @@ takin-web-ext io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 takin-web-ext-jmeter - takin-web-5.10.1 + takin-web-5.10.1.1 UTF-8 diff --git a/takin-web-service-adapters/pom.xml b/takin-web-service-adapters/pom.xml index f1218b1408..09684d6440 100644 --- a/takin-web-service-adapters/pom.xml +++ b/takin-web-service-adapters/pom.xml @@ -20,7 +20,7 @@ takin-web io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/pom.xml b/takin-web-service-adapters/takin-web-adapter/pom.xml index 830965fabb..fe880308a3 100644 --- a/takin-web-service-adapters/takin-web-adapter/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/pom.xml @@ -5,7 +5,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml index d72e5fa71c..9aa047631d 100644 --- a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-api/pom.xml @@ -5,7 +5,7 @@ takin-web-adapter io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml index d4f83ddfe8..08e10a9303 100644 --- a/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml +++ b/takin-web-service-adapters/takin-web-adapter/takin-web-adapter-cloud/pom.xml @@ -5,7 +5,7 @@ takin-web-adapter io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/pom.xml b/takin-web-service-adapters/takin-web-config/pom.xml index 82a504081a..c366c26279 100644 --- a/takin-web-service-adapters/takin-web-config/pom.xml +++ b/takin-web-service-adapters/takin-web-config/pom.xml @@ -20,7 +20,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml index d997864492..03bd057f8e 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-common/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml index 69d7bfb26c..cae03f5b5a 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-api/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml index e41795c29d..1a4414df7b 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/pom.xml @@ -20,7 +20,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml index f2825ca264..3428c15679 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-common/pom.xml @@ -20,7 +20,7 @@ takin-web-config-sync-http io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml index 4b33b23bfb..bf93b2404b 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-http/takin-web-config-sync-http-impl/pom.xml @@ -5,7 +5,7 @@ takin-web-config-sync-http io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml index 8fd3432943..47b9443340 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/pom.xml @@ -20,7 +20,7 @@ takin-web-config io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 takin-web-config-sync-zk diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml index 186e0daca1..e65d4bc3cb 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-common/pom.xml @@ -5,7 +5,7 @@ takin-web-config-sync-zk io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml index 67d6699b3f..acf569a0a6 100644 --- a/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml +++ b/takin-web-service-adapters/takin-web-config/takin-web-config-sync-zk/takin-web-config-sync-zk-impl/pom.xml @@ -20,7 +20,7 @@ takin-web-config-sync-zk io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 ../pom.xml 4.0.0 diff --git a/takin-web-service-adapters/takin-web-diff/pom.xml b/takin-web-service-adapters/takin-web-diff/pom.xml index 184acfd92f..66092e3a3c 100644 --- a/takin-web-service-adapters/takin-web-diff/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/pom.xml @@ -5,7 +5,7 @@ takin-web-service-adapters io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 pom diff --git a/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml b/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml index 06da92de7a..309377dc9c 100644 --- a/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/takin-web-diff-api/pom.xml @@ -20,7 +20,7 @@ takin-web-diff io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 diff --git a/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml b/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml index 4b73cf890c..4c3c005a62 100644 --- a/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml +++ b/takin-web-service-adapters/takin-web-diff/takin-web-diff-cloud/pom.xml @@ -20,7 +20,7 @@ takin-web-diff io.shulie.takin - takin-web-5.10.1 + takin-web-5.10.1.1 4.0.0 takin-web-diff-cloud From f4fc92269334eeb5615d30dbbace2b6c9f271bd5 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 12 Oct 2022 15:37:39 +0800 Subject: [PATCH 191/318] =?UTF-8?q?=E5=BD=B1=E5=AD=90=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E8=80=85=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- .../biz/job/PressureResourceRelateJob.java | 1 - .../ShadowConsumerCreateInput.java | 4 + .../pressureresource/MqConsumerFeature.java | 21 + ...PressureResourceMqConsumerCreateInput.java | 49 ++ ...ressureResourceMqConsumerQueryRequest.java | 28 ++ .../PressureResourceMqConsumerService.java | 51 +++ .../PressureResourceCommonServiceImpl.java | 429 ++++++++++++------ ...PressureResourceMqConsumerServiceImpl.java | 187 ++++++++ .../vo/PressureResourceMqComsumerVO.java | 71 +++ .../PressureResourceRelateMqComsumerDAO.java | 44 ++ ...essureResourceRelateMqComsumerDAOImpl.java | 102 +++++ ...ressureResourceRelateMqConsumerMapper.java | 23 + .../PressureResourceAppDataSourceEntity.java | 38 +- .../PressureResourceDetailEntity.java | 30 +- .../PressureResourceEntity.java | 28 +- .../PressureResourceRelateAppEntity.java | 26 +- .../PressureResourceRelateDsEntity.java | 42 +- ...ressureResourceRelateMqConsumerEntity.java | 107 +++++ ...ressureResourceRelateRemoteCallEntity.java | 48 +- .../PressureResourceRelateTableEntity.java | 30 +- .../PressureResourceMqConsumerQueryParam.java | 31 ++ .../PressureResourceShadowMqController.java | 70 +++ 23 files changed, 1211 insertions(+), 253 deletions(-) create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MqConsumerFeature.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerCreateInput.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceMqConsumerService.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceMqConsumerServiceImpl.java create mode 100644 takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceMqComsumerVO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateMqComsumerDAO.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateMqConsumerMapper.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateMqConsumerEntity.java create mode 100644 takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java create mode 100644 takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceShadowMqController.java diff --git a/.gitignore b/.gitignore index 77e5f422d4..7adc4b799d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ ### Jrebel File ### *rebel.xml.bak *rebel.xml - +*.idx ### Common ### target @@ -28,4 +28,4 @@ ig** application-local.* .DS_Store -public/ \ No newline at end of file +public/!/extensions.idx diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java index 667b42a44a..7fb7a212ae 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/job/PressureResourceRelateJob.java @@ -74,7 +74,6 @@ public void execute(ShardingContext shardingContext) { } finally { distributedLock.unLockSafely(lockKey); } - }); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/input/application/ShadowConsumerCreateInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/input/application/ShadowConsumerCreateInput.java index 09599b6c22..2ff669fcd3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/input/application/ShadowConsumerCreateInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/input/application/ShadowConsumerCreateInput.java @@ -36,4 +36,8 @@ public class ShadowConsumerCreateInput { */ private String shadowconsumerEnable; + /** + * 来源标识 + */ + private Integer manualTag; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MqConsumerFeature.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MqConsumerFeature.java new file mode 100644 index 0000000000..3850c1bd26 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/MqConsumerFeature.java @@ -0,0 +1,21 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/10/11 11:16 AM + */ +@Data +public class MqConsumerFeature { + @ApiModelProperty("集群名称") + private String clusterName; + + @ApiModelProperty("集群地址") + private String clusterAddr; + + @ApiModelProperty("生产或消费的线程数") + private Integer threadCount; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerCreateInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerCreateInput.java new file mode 100644 index 0000000000..84f345d0f8 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerCreateInput.java @@ -0,0 +1,49 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author shiyajian + * create: 2021-02-05 + */ +@Data +public class PressureResourceMqConsumerCreateInput { + @ApiModelProperty(value = "Id") + private Long id; + + @ApiModelProperty(value = "topic#消费组") + private String topicGroup; + + @ApiModelProperty(value = "resourceId") + private Long resourceId; + + @ApiModelProperty(value = "消费者类型RABBITMQ/ROCKETMQ/KAFKA") + private String mqType; + + private Long applicationId; + + /** + * 是否消费(0-消费 1-不消费) + */ + private Integer consumerTag; + + @ApiModelProperty("是否影子集群(0-是 1否)") + private Integer isCluster; + + @ApiModelProperty("生产或消费(0-生产,1-消费)") + private Integer comsumerType; + + /** + * 来源标识 + */ + private Integer type; + + @ApiModelProperty("kafka的时候的集群信息") + private MqConsumerFeature mqConsumerFeature; + + @ApiModelProperty("批量Id") + private List ids; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java new file mode 100644 index 0000000000..2bff91e9d1 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java @@ -0,0 +1,28 @@ +package io.shulie.takin.web.biz.pojo.request.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author XINGCHEN + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +public class PressureResourceMqConsumerQueryRequest extends PageBaseDTO { + @ApiModelProperty("消费组") + private String queryTopicGroup; + + @ApiModelProperty("resourceId") + private Long resourceId; + + @ApiModelProperty("applicationName") + private String applicationName; + + @ApiModelProperty("mqType") + private String mqType; + + @ApiModelProperty("consumerTag") + private Integer consumerTag; +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceMqConsumerService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceMqConsumerService.java new file mode 100644 index 0000000000..0c89d69eb9 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceMqConsumerService.java @@ -0,0 +1,51 @@ +package io.shulie.takin.web.biz.service.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerCreateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceMqComsumerVO; + +/** + * 压测资源配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +public interface PressureResourceMqConsumerService { + /** + * 分页 + * + * @param request + * @return + */ + PagingList list(PressureResourceMqConsumerQueryRequest request); + + /** + * 创建影子消费者 + * + * @param input + */ + void create(PressureResourceMqConsumerCreateInput input); + + /** + * 创建影子消费者 + * + * @param input + */ + void update(PressureResourceMqConsumerCreateInput input); + + /** + * 创建影子消费者 + * + * @param input + */ + void processConsumerTag(PressureResourceMqConsumerCreateInput input); + + /** + * 删除 + * + * @param id + */ + void delete(Long id); +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java index a8b2a142f3..320edfe4d1 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceCommonServiceImpl.java @@ -1,23 +1,28 @@ package io.shulie.takin.web.biz.service.pressureresource.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.pamirs.pradar.Pradar; import com.pamirs.takin.entity.domain.vo.ApplicationVo; import com.pamirs.takin.entity.domain.vo.TDictionaryVo; import io.shulie.amdb.common.dto.link.topology.AppShadowDatabaseDTO; import io.shulie.amdb.common.dto.link.topology.LinkEdgeDTO; import io.shulie.amdb.common.dto.link.topology.LinkNodeDTO; import io.shulie.amdb.common.dto.link.topology.LinkTopologyDTO; +import io.shulie.amdb.common.enums.EdgeTypeEnum; import io.shulie.amdb.common.enums.EdgeTypeGroupEnum; import io.shulie.amdb.common.enums.NodeTypeEnum; import io.shulie.takin.common.beans.page.PagingList; import io.shulie.takin.web.amdb.api.ApplicationClient; import io.shulie.takin.web.amdb.api.ApplicationEntranceClient; +import io.shulie.takin.web.amdb.api.NotifyClient; import io.shulie.takin.web.amdb.bean.common.EntranceTypeEnum; import io.shulie.takin.web.amdb.bean.query.application.ApplicationRemoteCallQueryDTO; import io.shulie.takin.web.amdb.bean.result.application.ApplicationRemoteCallDTO; import io.shulie.takin.web.biz.pojo.request.activity.ActivityInfoQueryRequest; import io.shulie.takin.web.biz.pojo.request.application.ApplicationEntranceTopologyQueryRequest; import io.shulie.takin.web.biz.pojo.request.linkmanage.BusinessFlowPageQueryRequest; +import io.shulie.takin.web.biz.pojo.request.pressureresource.MqConsumerFeature; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceDetailInput; import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceInput; import io.shulie.takin.web.biz.pojo.response.activity.ActivityResponse; @@ -64,6 +69,9 @@ import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -84,6 +92,9 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Resource private PressureResourceRelateRemoteCallDAO pressureResourceRelateRemoteCallDAO; + @Resource + private PressureResourceRelateMqComsumerDAO pressureResourceRelateMqComsumerDAO; + @Resource private PressureResourceRelateDsDAO pressureResourceRelateDsDAO; @@ -111,6 +122,9 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Resource private ApplicationEntranceClient applicationEntranceClient; + @Resource + private NotifyClient notifyClient; + @Resource private ApplicationClient applicationClient; @@ -138,6 +152,10 @@ public class PressureResourceCommonServiceImpl implements PressureResourceCommon @Value("${takin.job.resource.interval:2}") private int takinResourceInterval; + private static final Pattern pattern = Pattern.compile("[0-9]"); + + private static final String UNKNOWN = "UNKNOWN"; + /** * 自动处理压测资源准备任务 */ @@ -217,6 +235,9 @@ public void processAutoPressureResource() { } if (CollectionUtils.isNotEmpty(detailInputs)) { pressureResourceInput.setDetailInputs(detailInputs); + + // 通知AMDB构建链路拓扑图 + CompletableFuture.runAsync(() -> processNotify(detailInputs)); } } @@ -229,6 +250,22 @@ public void processAutoPressureResource() { }); } + /** + * 通知AMDB构建链路拓扑 + * + * @param detailInputs + */ + private void processNotify(List detailInputs) { + detailInputs.stream().forEach(detail -> { + notifyClient.startApplicationEntrancesCalculate( + detail.getAppName(), + detail.getEntranceUrl(), + detail.getMethod(), + String.valueOf(detail.getType()), + detail.getExtend()); + }); + } + /** * 自动梳理关联信息 */ @@ -241,10 +278,7 @@ public void processAutoPressureResourceRelate(PressureResourceEntity resource) { for (int i = 0; i < detailEntityList.size(); i++) { // 获取入口 PressureResourceDetailEntity detailEntity = detailEntityList.get(i); - Pair, List> pair = processDsAndTable(detailEntity, resource.getIsolateType()); - // 保存 - pressureResourceRelateDsDAO.saveOrUpdate(pair.getLeft()); - pressureResourceRelateTableDAO.saveOrUpdate(pair.getRight()); + processRelate(detailEntity, resource.getIsolateType()); } } catch (Throwable e) { logger.error(ExceptionUtils.getStackTrace(e)); @@ -321,12 +355,7 @@ public List getResourceIdsFormRedis() { * @param detailEntity * @return */ - private Pair, List> - processDsAndTable(PressureResourceDetailEntity detailEntity, Integer isolateType) { - // 需要新增的数据源列表 - List dsEntityList = Lists.newArrayList(); - // 需要新增的表信息 - List tableEntityList = Lists.newArrayList(); + private void processRelate(PressureResourceDetailEntity detailEntity, Integer isolateType) { Long resourceId = detailEntity.getResourceId(); // 链路拓扑图查询 ApplicationEntranceTopologyQueryRequest request = new ApplicationEntranceTopologyQueryRequest(); @@ -345,136 +374,278 @@ public List getResourceIdsFormRedis() { if (applicationEntrancesTopology != null) { // 获取应用节点 List nodeDTOList = applicationEntrancesTopology.getNodes(); - List appNodeList = nodeDTOList.stream() - .filter(node -> { - if (node.getNodeType().equals(NodeTypeEnum.APP.getType()) && !"UNKNOWN".equals(node.getNodeName())) { - return true; - } - return false; - }).collect(Collectors.toList()); - List appEntityList = Lists.newArrayList(); - if (CollectionUtils.isNotEmpty(appNodeList)) { - appEntityList = appNodeList.stream().map(appNode -> { - PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); - appEntity.setAppName(appNode.getNodeName()); - appEntity.setResourceId(resourceId); - appEntity.setDetailId(detailEntity.getId()); - appEntity.setTenantId(WebPluginUtils.traceTenantId()); - appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - // 节点数默认为0 - appEntity.setNodeNum(0); - // 默认不正常 - appEntity.setStatus(1); - // 通过应用去查询状态 - Long appId = applicationService.queryApplicationIdByAppName(appEntity.getAppName()); - if (appId != null) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - appEntity.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); - appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); - } - } - appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); - appEntity.setType(SourceTypeEnum.AUTO.getCode()); - return appEntity; - }).collect(Collectors.toList()); - } - if (CollectionUtils.isNotEmpty(appEntityList)) { - // 保存关联应用 - pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); - } + // 处理关联应用 + List appEntityList = handleRelateApp(detailEntity, resourceId, nodeDTOList); + // 保存关联应用 + pressureResourceRelateAppDAO.saveOrUpdate(appEntityList); // 隔离方案未设置,暂时不处理 if (!(isolateType == IsolateTypeEnum.DEFAULT.getCode())) { + // 获取边集合 List edgeDTOList = applicationEntrancesTopology.getEdges(); - // 获取所有的数据库操作信息 - List dbEdgeList = edgeDTOList.stream().filter(edge -> { - if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { + if (CollectionUtils.isEmpty(edgeDTOList)) { + return; + } + Pair, List> pair = handleDsAndTable(resourceId, edgeDTOList, detailEntity); + // 保存 + pressureResourceRelateDsDAO.saveOrUpdate(pair.getLeft()); + pressureResourceRelateTableDAO.saveOrUpdate(pair.getRight()); + + // 处理影子消费者 + List mqComsuerList = handleMqConsumer(resourceId, edgeDTOList, detailEntity); + pressureResourceRelateMqComsumerDAO.saveOrUpdate(mqComsuerList); + } + } + } + + /** + * 处理关联应用 + * + * @param detailEntity + * @param resourceId + * @param nodeDTOList + * @return + */ + private List handleRelateApp(PressureResourceDetailEntity detailEntity, + Long resourceId, + List nodeDTOList) { + if (CollectionUtils.isEmpty(nodeDTOList)) { + return Collections.EMPTY_LIST; + } + List appNodeList = nodeDTOList.stream() + .filter(node -> { + if (node.getNodeType().equals(NodeTypeEnum.APP.getType()) && + !NodeTypeEnum.UNKNOWN.getType().equals(node.getNodeName())) { return true; } return false; }).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(dbEdgeList)) { - // 按照URL分组 - Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); - - for (Map.Entry> entry : serviceMap.entrySet()) { - String key = entry.getKey(); - String appName = key.split("#")[0]; - String database = key.split("#")[1]; - if ("null".equals(appName)) { - // TODO 暂时打印下日志 - logger.error("关联数据源名称为空 key,{} value,{}", entry.getValue()); - continue; - } - String dbName = DbNameUtil.getDbName(database); - if (PtUtils.isShadow(dbName)) { + List appEntityList = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(appNodeList)) { + appEntityList = appNodeList.stream().map(appNode -> { + PressureResourceRelateAppEntity appEntity = new PressureResourceRelateAppEntity(); + appEntity.setAppName(appNode.getNodeName()); + appEntity.setResourceId(resourceId); + appEntity.setDetailId(detailEntity.getId()); + appEntity.setTenantId(WebPluginUtils.traceTenantId()); + appEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + // 节点数默认为0 + appEntity.setNodeNum(0); + // 默认不正常 + appEntity.setStatus(1); + // 通过应用去查询状态 + Long appId = applicationService.queryApplicationIdByAppName(appEntity.getAppName()); + if (appId != null) { + Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); + if (voResponse.getSuccess()) { + ApplicationVo applicationVo = voResponse.getData(); + appEntity.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); + appEntity.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); + } + } + appEntity.setJoinPressure(JoinFlagEnum.YES.getCode()); + appEntity.setType(SourceTypeEnum.AUTO.getCode()); + return appEntity; + }).collect(Collectors.toList()); + } + return appEntityList; + } + + /** + * 处理影子消费者 + * + * @param resourceId + * @param edgeDTOList + * @param detailEntity + * @return + */ + private List handleMqConsumer(Long resourceId, + List edgeDTOList, + PressureResourceDetailEntity detailEntity) { + // 只要Mq消费的 + List mqEdgeList = edgeDTOList.stream().filter(edge -> { + // 目前只处理rabbitmq,rocketMq,kafka + if (edge.getEagleType().equals(EdgeTypeEnum.ROCKETMQ.getType()) + || edge.getEagleType().equals(EdgeTypeEnum.KAFKA.getType()) + || edge.getEagleType().equals(EdgeTypeEnum.RABBITMQ.getType())) { + return true; + } + return false; + }).collect(Collectors.toList()); + // 需要新增的影子消费者信息 + List mqConsumerEntityList = Lists.newArrayList(); + if (CollectionUtils.isEmpty(mqEdgeList)) { + return mqConsumerEntityList; + } + for (int i = 0; i < mqEdgeList.size(); i++) { + LinkEdgeDTO edge = mqEdgeList.get(i); + if (EdgeTypeEnum.UNKNOWN.getType().equals(edge.getAppName())) { + continue; + } + // 不是kafka的话,不处理客户端 + if (!edge.getEagleType().equals(EdgeTypeEnum.KAFKA.getType())) { + if (edge.getLogType().equals(String.valueOf(Pradar.LOG_TYPE_INVOKE_CLIENT))) { + continue; + } + } + // 影子Topic过滤掉 + String topic = edge.getService(); + if (PtUtils.isShadow(topic)) { + continue; + } + // 重试队列的也过滤掉 + if (topic.startsWith("%RETRY%")) { + continue; + } + PressureResourceRelateMqConsumerEntity mqEntity = new PressureResourceRelateMqConsumerEntity(); + mqEntity.setResourceId(resourceId); + mqEntity.setDetailId(detailEntity.getId()); + // 消费者 + mqEntity.setComsumerType(1); + mqEntity.setApplicationName(edge.getAppName()); + mqEntity.setIsCluster(1); + mqEntity.setMqType(edge.getEagleType()); + if (edge.getEagleType().equals(EdgeTypeEnum.KAFKA.getType())) { + // apache-kafka172.16.32.74:9092,172.16.32.137:9092,172.16.32.67:9092 + String serverAppName = ""; + if (edge.getLogType().equals(String.valueOf(Pradar.LOG_TYPE_INVOKE_CLIENT))) { + mqEntity.setComsumerType(0); + serverAppName = edge.getAppName(); + mqEntity.setApplicationName(edge.getServerAppName()); + } else if (edge.getLogType().equals(String.valueOf(Pradar.LOG_TYPE_INVOKE_SERVER))) { + // 消费 + mqEntity.setComsumerType(1); + // 判断下服务端是否是集群 + serverAppName = edge.getServerAppName(); + } else { + // 其他不处理 + continue; + } + if (serverAppName.contains(",")) { + // 是否集群 + mqEntity.setIsCluster(0); + // 集群地址解析出来 + MqConsumerFeature feature = new MqConsumerFeature(); + // 匹配第一个数字开头的,截取下ip地址 + Matcher matcher = pattern.matcher(serverAppName); + if (matcher.find()) { + String tmpServerAddr = serverAppName.substring(matcher.start()); + feature.setClusterAddr(tmpServerAddr); + // 设置的扩展字段中 + mqEntity.setFeature(JSON.toJSONString(feature)); + } + } + } + String group = edge.getMethod(); + mqEntity.setTopicGroup(String.format("%s#%s", topic, group)); + mqEntity.setType(SourceTypeEnum.AUTO.getCode()); + mqEntity.setTenantId(WebPluginUtils.traceTenantId()); + mqEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + mqEntity.setGmtCreate(new Date()); + mqEntity.setConsumerTag(1); + mqConsumerEntityList.add(mqEntity); + } + return mqConsumerEntityList; + } + + /** + * 处理关联的数据源和table + * + * @param resourceId + * @param edgeDTOList + * @param detailEntity + * @return + */ + private Pair, List> handleDsAndTable(Long resourceId, List edgeDTOList, PressureResourceDetailEntity detailEntity) { + // 获取所有的数据库操作信息 + List dbEdgeList = edgeDTOList.stream().filter(edge -> { + if (edge.getEagleTypeGroup().equals(EdgeTypeGroupEnum.DB.getType())) { + return true; + } + return false; + }).collect(Collectors.toList()); + + // 需要新增的数据源列表 + List dsEntityList = Lists.newArrayList(); + // 需要新增的表信息 + List tableEntityList = Lists.newArrayList(); + + if (CollectionUtils.isNotEmpty(dbEdgeList)) { + // 按照URL分组 + Map> serviceMap = dbEdgeList.stream().collect(Collectors.groupingBy(dbEdge -> fetchKey(dbEdge))); + + for (Map.Entry> entry : serviceMap.entrySet()) { + String key = entry.getKey(); + String appName = key.split("#")[0]; + String database = key.split("#")[1]; + if ("null".equals(appName)) { + continue; + } + String dbName = DbNameUtil.getDbName(database); + if (PtUtils.isShadow(dbName)) { + continue; + } + PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); + dsEntity.setResourceId(resourceId); + dsEntity.setDetailId(detailEntity.getId()); + dsEntity.setAppName(appName); + // 从任意的边里面获取数据源详情信息 + LinkEdgeDTO edgeDTO = entry.getValue().get(0); + List dsList = edgeDTO.getDsList(); + if (CollectionUtils.isEmpty(dsList)) { + logger.warn("应用数据源未梳理完成,{}", database); + } else { + AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); + dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); + dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); + dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); + } + dsEntity.setBusinessDatabase(database); + dsEntity.setTenantId(WebPluginUtils.traceTenantId()); + dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + dsEntity.setStatus(StatusEnum.NO.getCode()); + dsEntity.setType(SourceTypeEnum.AUTO.getCode()); + dsEntity.setGmtCreate(new Date()); + // 生成唯一key,按应用区分 + dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); + // 这里生成的dskey是关联表的,表里面是不区分应用的 + String dsKey = DataSourceUtil.generateDsKey(resourceId, database); + dsEntityList.add(dsEntity); + + List value = entry.getValue(); + // 没有设置隔离类型的话,暂时不处理关联表信息,减少没必要的数据梳理 + if (CollectionUtils.isNotEmpty(value)) { + for (int k = 0; k < value.size(); k++) { + // 存在逗号分割的数据 + String method = value.get(k).getMethod(); + if (StringUtils.isBlank(method)) { continue; } - PressureResourceRelateDsEntity dsEntity = new PressureResourceRelateDsEntity(); - dsEntity.setResourceId(resourceId); - dsEntity.setDetailId(detailEntity.getId()); - dsEntity.setAppName(appName); - // 从任意的边里面获取数据源详情信息 - LinkEdgeDTO edgeDTO = entry.getValue().get(0); - List dsList = edgeDTO.getDsList(); - if (CollectionUtils.isEmpty(dsList)) { - logger.warn("应用数据源未梳理完成,{}", database); - } else { - AppShadowDatabaseDTO appShadowDatabaseDTO = dsList.get(0); - dsEntity.setBusinessUserName(appShadowDatabaseDTO.getTableUser()); - dsEntity.setMiddlewareName(appShadowDatabaseDTO.getConnectionPool()); - dsEntity.setMiddlewareType(appShadowDatabaseDTO.getMiddlewareType()); - } - dsEntity.setBusinessDatabase(database); - dsEntity.setTenantId(WebPluginUtils.traceTenantId()); - dsEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - dsEntity.setStatus(StatusEnum.NO.getCode()); - dsEntity.setType(SourceTypeEnum.AUTO.getCode()); - dsEntity.setGmtCreate(new Date()); - // 生成唯一key,按应用区分 - dsEntity.setUniqueKey(DataSourceUtil.generateDsUniqueKey(resourceId, appName, database)); - // 这里生成的dskey是关联表的,表里面是不区分应用的 - String dsKey = DataSourceUtil.generateDsKey(resourceId, database); - dsEntityList.add(dsEntity); - - List value = entry.getValue(); - // 没有设置隔离类型的话,暂时不处理关联表信息,减少没必要的数据梳理 - if (CollectionUtils.isNotEmpty(value)) { - for (int k = 0; k < value.size(); k++) { - // 存在逗号分割的数据 - String method = value.get(k).getMethod(); - if (StringUtils.isBlank(method)) { - continue; - } - String[] tables = method.split(","); - for (int j = 0; j < tables.length; j++) { - String tableName = tables[j]; - // 过滤掉影子的表 - if (PtUtils.isShadow(tableName)) { - continue; - } - if (StringUtils.isBlank(tableName)) { - logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); - continue; - } - PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); - tableEntity.setResourceId(resourceId); - tableEntity.setBusinessTable(tableName); - // 系统自动处理影子表 - tableEntity.setShadowTable(PtUtils.shadowTable(tableName)); - tableEntity.setDsKey(dsKey); - tableEntity.setGmtCreate(new Date()); - tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); - tableEntity.setStatus(StatusEnum.NO.getCode()); - tableEntity.setType(SourceTypeEnum.AUTO.getCode()); - tableEntity.setTenantId(WebPluginUtils.traceTenantId()); - tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); - - tableEntityList.add(tableEntity); - } + String[] tables = method.split(","); + for (int j = 0; j < tables.length; j++) { + String tableName = tables[j]; + // 过滤掉影子的表 + if (PtUtils.isShadow(tableName)) { + continue; + } + if (StringUtils.isBlank(tableName)) { + logger.warn("链路梳理结果错误,表信息未梳理 {}", resourceId); + continue; } + PressureResourceRelateTableEntity tableEntity = new PressureResourceRelateTableEntity(); + tableEntity.setResourceId(resourceId); + tableEntity.setBusinessTable(tableName); + // 系统自动处理影子表 + tableEntity.setShadowTable(PtUtils.shadowTable(tableName)); + tableEntity.setDsKey(dsKey); + tableEntity.setGmtCreate(new Date()); + tableEntity.setJoinFlag(JoinFlagEnum.YES.getCode()); + tableEntity.setStatus(StatusEnum.NO.getCode()); + tableEntity.setType(SourceTypeEnum.AUTO.getCode()); + tableEntity.setTenantId(WebPluginUtils.traceTenantId()); + tableEntity.setEnvCode(WebPluginUtils.traceEnvCode()); + + tableEntityList.add(tableEntity); } } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceMqConsumerServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceMqConsumerServiceImpl.java new file mode 100644 index 0000000000..a9c57b3a9f --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceMqConsumerServiceImpl.java @@ -0,0 +1,187 @@ +package io.shulie.takin.web.biz.service.pressureresource.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.biz.pojo.request.pressureresource.MqConsumerFeature; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerCreateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceMqConsumerService; +import io.shulie.takin.web.biz.service.pressureresource.vo.PressureResourceMqComsumerVO; +import io.shulie.takin.web.common.exception.TakinWebException; +import io.shulie.takin.web.common.exception.TakinWebExceptionEnum; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateMqComsumerDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateMqConsumerMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateMqConsumerEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceMqConsumerQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 压测资源配置 + * + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:53 PM + */ +@Service +public class PressureResourceMqConsumerServiceImpl implements PressureResourceMqConsumerService { + private static Logger logger = LoggerFactory.getLogger(PressureResourceMqConsumerServiceImpl.class); + + @Resource + private PressureResourceRelateMqConsumerMapper pressureResourceRelateMqConsumerMapper; + @Resource + private PressureResourceRelateMqComsumerDAO pressureResourceRelateMqComsumerDAO; + + /** + * 分页 + * + * @param request + * @return + */ + @Override + public PagingList list(PressureResourceMqConsumerQueryRequest request) { + PressureResourceMqConsumerQueryParam param = new PressureResourceMqConsumerQueryParam(); + BeanUtils.copyProperties(request, param); + PagingList pageList = pressureResourceRelateMqComsumerDAO.pageList(param); + if (pageList.isEmpty()) { + return PagingList.of(Collections.emptyList(), pageList.getTotal()); + } + //转换下 + List source = pageList.getList(); + List returnList = source.stream().map(configDto -> { + PressureResourceMqComsumerVO vo = new PressureResourceMqComsumerVO(); + BeanUtils.copyProperties(configDto, vo); + vo.setId(String.valueOf(configDto.getId())); + // 转换下feature + if (StringUtils.isNotBlank(vo.getFeature())) { + vo.setMqConsumerFeature(JSON.parseObject(vo.getFeature(), MqConsumerFeature.class)); + } + return vo; + }).collect(Collectors.toList()); + + return PagingList.of(returnList, pageList.getTotal()); + } + + /** + * 创建影子消费者 + * + * @param request + */ + @Override + public void create(PressureResourceMqConsumerCreateInput request) { + if (!request.getTopicGroup().contains("#")) { + throw new RuntimeException("请求参数不正确,Group和Topic以#号拼接"); + } + String[] split = request.getTopicGroup().split("#"); + if (split.length != 2) { + throw new RuntimeException("请求参数不正确,Group和Topic中间包含超过1个# 或者 #两边无数据"); + } + PressureResourceMqConsumerQueryParam queryParam = new PressureResourceMqConsumerQueryParam(); + queryParam.setResourceId(request.getResourceId()); + queryParam.setTopicGroup(request.getTopicGroup()); + queryParam.setMqType(request.getMqType()); + List exists = pressureResourceRelateMqComsumerDAO.queryList(queryParam); + if (CollectionUtils.isNotEmpty(exists)) { + throw new RuntimeException( + String.format("类型为[%s],对应的[%s]已存在", request.getMqType(), request.getTopicGroup())); + } + PressureResourceRelateMqConsumerEntity shadowMqConsumerEntity = convertEntity(request); + shadowMqConsumerEntity.setId(null); + shadowMqConsumerEntity.setGmtCreate(new Date()); + shadowMqConsumerEntity.setGmtModified(new Date()); + pressureResourceRelateMqComsumerDAO.add(shadowMqConsumerEntity); + } + + /** + * 修改 + * + * @param request + */ + @Override + public void update(PressureResourceMqConsumerCreateInput request) { + if (request.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + // 判断是否存在 + PressureResourceRelateMqConsumerEntity entity = pressureResourceRelateMqConsumerMapper.selectById(request.getId()); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_QUERY_ERROR, "未查询到指定数据"); + } + PressureResourceMqConsumerQueryParam queryParam = new PressureResourceMqConsumerQueryParam(); + queryParam.setResourceId(request.getResourceId()); + queryParam.setTopicGroup(request.getTopicGroup()); + queryParam.setMqType(request.getMqType()); + List exists = pressureResourceRelateMqComsumerDAO.queryList(queryParam); + if (CollectionUtils.isNotEmpty(exists)) { + // 判断是否属于同一个Id + PressureResourceRelateMqConsumerEntity mqConsumer = exists.get(0); + if (!mqConsumer.getId().equals(request.getId())) { + throw new RuntimeException( + String.format("类型为[%s],对应的[%s]已存在", request.getMqType(), request.getTopicGroup())); + } + } + // 更新 + PressureResourceRelateMqConsumerEntity updateEntity = convertEntity(request); + updateEntity.setGmtModified(new Date()); + pressureResourceRelateMqConsumerMapper.updateById(updateEntity); + } + + /** + * 处理消费状态 + * + * @param input + */ + @Override + public void processConsumerTag(PressureResourceMqConsumerCreateInput input) { + if (CollectionUtils.isEmpty(input.getIds()) && input.getId() == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数未指定"); + } + PressureResourceRelateMqConsumerEntity updateEntity = new PressureResourceRelateMqConsumerEntity(); + updateEntity.setConsumerTag(input.getConsumerTag()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtils.isNotEmpty(input.getIds())) { + queryWrapper.in("id", input.getIds()); + } + if (input.getId() != null) { + queryWrapper.eq("id", input.getId()); + } + pressureResourceRelateMqConsumerMapper.update(updateEntity, queryWrapper); + } + + @Override + public void delete(Long id) { + if (id == null) { + throw new TakinWebException(TakinWebExceptionEnum.ERROR_COMMON, "参数Id未指定"); + } + pressureResourceRelateMqConsumerMapper.deleteById(id); + } + + private PressureResourceRelateMqConsumerEntity convertEntity(PressureResourceMqConsumerCreateInput request) { + PressureResourceRelateMqConsumerEntity shadowMqConsumerEntity = new PressureResourceRelateMqConsumerEntity(); + shadowMqConsumerEntity.setId(request.getId()); + shadowMqConsumerEntity.setResourceId(request.getResourceId()); + shadowMqConsumerEntity.setTopicGroup(request.getTopicGroup()); + shadowMqConsumerEntity.setMqType(request.getMqType()); + // 是否消费 + shadowMqConsumerEntity.setConsumerTag(request.getConsumerTag()); + shadowMqConsumerEntity.setComsumerType(request.getComsumerType()); + shadowMqConsumerEntity.setIsCluster(request.getIsCluster()); + // 设置来源标识 + shadowMqConsumerEntity.setType(request.getType()); + if (request.getMqConsumerFeature() != null) { + shadowMqConsumerEntity.setFeature(JSON.toJSONString(request.getMqConsumerFeature())); + } + return shadowMqConsumerEntity; + } +} diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceMqComsumerVO.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceMqComsumerVO.java new file mode 100644 index 0000000000..6ea1faff77 --- /dev/null +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/vo/PressureResourceMqComsumerVO.java @@ -0,0 +1,71 @@ +package io.shulie.takin.web.biz.service.pressureresource.vo; + +import io.shulie.takin.web.biz.pojo.request.pressureresource.MqConsumerFeature; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 10:24 AM + */ +@Data +@ToString(callSuper = true) +public class PressureResourceMqComsumerVO { + /** + * 主键id + */ + @ApiModelProperty("ID") + private String id; + + @ApiModelProperty("资源配置Id") + private Long resourceId; + + /** + * topic + */ + private String topicGroup; + + /** + * MQ类型 + */ + private String mqType; + + /** + * 应用id + */ + private Long applicationId; + + private String applicationName; + + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") + private Integer status; + + @ApiModelProperty("是否消费(0-消费 1-不消费 )") + private Integer consumerTag; + + /** + * 是否删除,0正常,1删除 + */ + private Integer deleted; + + /** + * 拓展字段 + */ + private String feature; + + @ApiModelProperty("remark") + private String remark; + + @ApiModelProperty("来源类型(0-手工,1-自动)") + private Integer type; + + @ApiModelProperty("是否影子集群(0-是 1否)") + private Integer isCluster; + + @ApiModelProperty("生产或消费(0-生产,1-消费)") + private Integer comsumerType; + + private MqConsumerFeature mqConsumerFeature; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateMqComsumerDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateMqComsumerDAO.java new file mode 100644 index 0000000000..7403caa780 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/PressureResourceRelateMqComsumerDAO.java @@ -0,0 +1,44 @@ +package io.shulie.takin.web.data.dao.pressureresource; + +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateMqConsumerEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceMqConsumerQueryParam; + +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +public interface PressureResourceRelateMqComsumerDAO { + /** + * 列表分页查询 + * + * @param param + * @return + */ + PagingList pageList(PressureResourceMqConsumerQueryParam param); + + /** + * 新增 + * + * @param mqConsumerEntity + */ + void add(PressureResourceRelateMqConsumerEntity mqConsumerEntity); + + /** + * 内部条件查询 + * + * @param param + * @return + */ + List queryList(PressureResourceMqConsumerQueryParam param); + + /** + * 批量操作 + * + * @param mqConsumerEntityList + */ + void saveOrUpdate(List mqConsumerEntityList); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java new file mode 100644 index 0000000000..3c60b2a59c --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java @@ -0,0 +1,102 @@ +package io.shulie.takin.web.data.dao.pressureresource.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.shulie.takin.common.beans.page.PagingList; +import io.shulie.takin.web.data.dao.pressureresource.PressureResourceRelateMqComsumerDAO; +import io.shulie.takin.web.data.mapper.mysql.PressureResourceRelateMqConsumerMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateMqConsumerEntity; +import io.shulie.takin.web.data.param.pressureresource.PressureResourceMqConsumerQueryParam; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @author xingchen + * @description: TODO + * @date 2022/8/30 2:54 PM + */ +@Service +public class PressureResourceRelateMqComsumerDAOImpl implements PressureResourceRelateMqComsumerDAO { + @Resource + private PressureResourceRelateMqConsumerMapper pressureResourceRelateMqConsumerMapper; + + @Override + public PagingList pageList(PressureResourceMqConsumerQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + Page page = new Page<>(param.getCurrent() + 1, param.getPageSize()); + queryWrapper.orderByDesc("gmt_modified"); + IPage pageList = pressureResourceRelateMqConsumerMapper.selectPage(page, queryWrapper); + if (pageList.getRecords().isEmpty()) { + return PagingList.empty(); + } + return PagingList.of(pageList.getRecords(), pageList.getTotal()); + } + + /** + * 新增 + * + * @param mqConsumerEntity + */ + @Override + public void add(PressureResourceRelateMqConsumerEntity mqConsumerEntity) { + pressureResourceRelateMqConsumerMapper.insert(mqConsumerEntity); + } + + @Override + public List queryList(PressureResourceMqConsumerQueryParam param) { + QueryWrapper queryWrapper = this.getWrapper(param); + List resultLists = pressureResourceRelateMqConsumerMapper.selectList(queryWrapper); + if (CollectionUtils.isEmpty(resultLists)) { + return Collections.emptyList(); + } + return resultLists; + } + + /** + * 保存或更新 + * + * @param mqConsumerEntityList + */ + @Override + public void saveOrUpdate(List mqConsumerEntityList) { + if (CollectionUtils.isEmpty(mqConsumerEntityList)) { + return; + } + mqConsumerEntityList.stream().forEach(entity -> { + pressureResourceRelateMqConsumerMapper.saveOrUpdate(entity); + }); + } + + private QueryWrapper getWrapper(PressureResourceMqConsumerQueryParam param) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (param == null) { + return queryWrapper; + } + // 模糊查询 + if (StringUtils.isNotBlank(param.getTopicGroup())) { + queryWrapper.eq("topic_group", param.getTopicGroup()); + } + if (param.getResourceId() != null) { + queryWrapper.eq("resource_id", param.getResourceId()); + } + if (StringUtils.isNotBlank(param.getMqType())) { + queryWrapper.eq("mq_type", param.getMqType()); + } + if (param.getConsumerTag() != null) { + queryWrapper.eq("consumer_tag", param.getConsumerTag()); + } + if (StringUtils.isNotBlank(param.getQueryTopicGroup())) { + queryWrapper.like("topic_group", param.getQueryTopicGroup()); + } + if (StringUtils.isNotBlank(param.getApplicationName())) { + queryWrapper.like("application_name", param.getApplicationName()); + } + return queryWrapper; + } +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateMqConsumerMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateMqConsumerMapper.java new file mode 100644 index 0000000000..55e6c47cee --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/PressureResourceRelateMqConsumerMapper.java @@ -0,0 +1,23 @@ +package io.shulie.takin.web.data.mapper.mysql; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.shulie.takin.web.data.model.mysql.pressureresource.PressureResourceRelateMqConsumerEntity; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +public interface PressureResourceRelateMqConsumerMapper + extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + @Insert("") + void saveOrUpdate(@Param("item") PressureResourceRelateMqConsumerEntity item); +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java index 73fb466eaf..87b7e12052 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceAppDataSourceEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,67 +20,66 @@ @TableName(value = "t_pressure_resource_app_database") @ToString(callSuper = true) public class PressureResourceAppDataSourceEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("应用名称") - @Column(name = "`app_name`") + @TableField(value = "`app_name`") private String appName; @ApiModelProperty("业务数据源") - @Column(name = "`data_source`") + @TableField(value = "`data_source`") private String dataSource; @ApiModelProperty("影子数据源") - @Column(name = "`shadow_data_source`") + @TableField(value = "`shadow_data_source`") private String shadowDataSource; @ApiModelProperty("数据库类型名称") - @Column(name = "`db_name`") + @TableField(value = "`db_name`") private String dbName; @ApiModelProperty("用户名") - @Column(name = "`table_user`") + @TableField(value = "`table_user`") private String tableUser; @ApiModelProperty("用户密码") - @Column(name = "`password`") + @TableField(value = "`password`") private String password; @ApiModelProperty("中间件类型") - @Column(name = "`middleware_type`") + @TableField(value = "`middleware_type`") private String middlewareType; @ApiModelProperty("连接池名称") - @Column(name = "`connection_pool`") + @TableField(value = "`connection_pool`") private String connectionPool; @ApiModelProperty("附加信息") - @Column(name = "`ext_info`") + @TableField(value = "`ext_info`") private String extInfo; @ApiModelProperty("类型") - @Column(name = "`type`") + @TableField(value = "`type`") private String type; @ApiModelProperty("动态配置") - @Column(name = "`attachment`") + @TableField(value = "`attachment`") private String attachment; @ApiModelProperty("唯一健(md5(app_name,data_source,table_user))") - @Column(name = "`uniqueKey`") + @TableField(value = "`uniqueKey`") private String uniqueKey; - @Column(name = "user_app_key") + @TableField(value = "user_app_key") private String userAppKey; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java index fedf45cfa5..655d790218 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceDetailEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,52 +20,51 @@ @TableName(value = "t_pressure_resource_detail") @ToString(callSuper = true) public class PressureResourceDetailEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置Id") - @Column(name = "`resource_id`") + @TableField(value = "`resource_id`") private Long resourceId; @ApiModelProperty("应用名称") - @Column(name = "`app_name`") + @TableField(value = "`app_name`") private String appName; @ApiModelProperty("入口URL") - @Column(name = "`entrance_url`") + @TableField(value = "`entrance_url`") private String entranceUrl; @ApiModelProperty("入口名称") - @Column(name = "`entrance_name`") + @TableField(value = "`entrance_name`") private String entranceName; @ApiModelProperty("请求方式") - @Column(name = "`method`") + @TableField(value = "`method`") private String method; @ApiModelProperty("rpcType") - @Column(name = "`rpc_type`") + @TableField(value = "`rpc_type`") private String rpcType; @ApiModelProperty("extend") - @Column(name = "`extend`") + @TableField(value = "`extend`") private String extend; @ApiModelProperty("linkId") - @Column(name = "`link_id`") + @TableField(value = "`link_id`") private String linkId; @ApiModelProperty("来源类型(0-手工,1-自动)") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java index 44bee5c7ea..0905a3c359 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,48 +20,47 @@ @TableName(value = "t_pressure_resource") @ToString(callSuper = true) public class PressureResourceEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置名称") - @Column(name = "`name`") + @TableField(value = "`name`") private String name; @ApiModelProperty("来源类型(0-手工,1-自动)") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; @ApiModelProperty("隔离方式(0-未设置 1-影子库 2-影子库/影子表 3-影子表)") - @Column(name = "`isolate_type`") + @TableField(value = "`isolate_type`") private Integer isolateType; @ApiModelProperty("状态(0-未开始 1-已开始)") - @Column(name = "`status`") + @TableField(value = "`status`") private Integer status; @ApiModelProperty("检测状态(0-未检测 1-检测中 2-检测完成)") - @Column(name = "`check_status`") + @TableField(value = "`check_status`") private Integer checkStatus; @ApiModelProperty("来源的Id") - @Column(name = "`source_id`") + @TableField(value = "`source_id`") private Long sourceId; @ApiModelProperty("归属人Id") - @Column(name = "user_id") + @TableField(value = "user_id") private Long userId; - @Column(name = "`check_time`") + @TableField(value = "`check_time`") @ApiModelProperty("检测时间") private Date checkTime; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java index 66daf78af8..9921d8376b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateAppEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,44 +20,43 @@ @TableName(value = "t_pressure_resource_relate_app") @ToString(callSuper = true) public class PressureResourceRelateAppEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置Id") - @Column(name = "`resource_id`") + @TableField(value = "`resource_id`") private Long resourceId; @ApiModelProperty("配置详情Id") - @Column(name = "`detail_id`") + @TableField(value = "`detail_id`") private Long detailId; @ApiModelProperty("应用名称") - @Column(name = "`app_name`") + @TableField(value = "`app_name`") private String appName; @ApiModelProperty("状态(0-正常-1-不正常)") - @Column(name = "`status`") + @TableField(value = "`status`") private Integer status; @ApiModelProperty("节点数") - @Column(name = "`node_num`") + @TableField(value = "`node_num`") private Integer nodeNum; @ApiModelProperty("是否加入压测范围(0-否 1-是)") - @Column(name = "`join_pressure`") + @TableField(value = "`join_pressure`") private Integer joinPressure; @ApiModelProperty("来源类型(0-手工,1-自动)") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java index e65d0784ff..f7a093e981 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateDsEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,76 +20,75 @@ @TableName(value = "t_pressure_resource_relate_ds") @ToString(callSuper = true) public class PressureResourceRelateDsEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置Id") - @Column(name = "`resource_id`") + @TableField(value = "`resource_id`") private Long resourceId; @ApiModelProperty("链路详情Id") - @Column(name = "`detail_id`") + @TableField(value = "`detail_id`") private Long detailId; @ApiModelProperty("应用名称") - @Column(name = "`app_name`") + @TableField(value = "`app_name`") private String appName; @ApiModelProperty("中间件名称 druid, hikari,c3p0等") - @Column(name = "`middleware_name`") + @TableField(value = "`middleware_name`") private String middlewareName; @ApiModelProperty("中间件类型 缓存/连接池") - @Column(name = "`middleware_type`") + @TableField(value = "`middleware_type`") private String middlewareType; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") - @Column(name = "`status`") + @TableField(value = "`status`") private Integer status; @ApiModelProperty("来源类型(0-手工,1-自动)") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; @ApiModelProperty("唯一键") - @Column(name = "`unique_key`") + @TableField(value = "`unique_key`") private String uniqueKey; @ApiModelProperty("业务数据源") - @Column(name = "`business_database`") + @TableField(value = "`business_database`") private String businessDatabase; @ApiModelProperty("业务数据源用户名") - @Column(name = "`business_user_name`") + @TableField(value = "`business_user_name`") private String businessUserName; @ApiModelProperty("影子数据源") - @Column(name = "`shadow_database`") + @TableField(value = "`shadow_database`") private String shadowDatabase; @ApiModelProperty("影子数据源用户名") - @Column(name = "`shadow_user_name`") + @TableField(value = "`shadow_user_name`") private String shadowUserName; @ApiModelProperty("影子数据源密码") - @Column(name = "`shadow_password`") + @TableField(value = "`shadow_password`") private String shadowPassword; @ApiModelProperty("扩展信息") - @Column(name = "`ext_info`") + @TableField(value = "`ext_info`") private String extInfo; @ApiModelProperty("remark") - @Column(name = "`remark`") + @TableField(value = "`remark`") private String remark; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateMqConsumerEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateMqConsumerEntity.java new file mode 100644 index 0000000000..84023ad3c4 --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateMqConsumerEntity.java @@ -0,0 +1,107 @@ +package io.shulie.takin.web.data.model.mysql.pressureresource; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.shulie.takin.web.data.annocation.EnableSign; +import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 影子消费者 + */ +@Data +@TableName(value = "t_pressure_resource_relate_shadow_mq_consumer") +@EnableSign +public class PressureResourceRelateMqConsumerEntity extends TenantBaseEntity { + /** + * 主键id + */ + @TableId(value = "ID", type = IdType.AUTO) + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("资源配置Id") + @TableField(value = "`resource_id`") + private Long resourceId; + + @ApiModelProperty("详情Id") + @TableField(value = "`detail_id`") + private Long detailId; + + /** + * topic + */ + @TableField(value = "topic_group") + private String topicGroup; + + /** + * MQ类型 + */ + @TableField(value = "mq_type") + private String mqType; + + /** + * 应用id + */ + @TableField(value = "application_id") + private Long applicationId; + /** + * 应用id + */ + @TableField(value = "application_name") + private String applicationName; + + @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") + @TableField(value = "status") + private Integer status; + + @ApiModelProperty("是否消费(0-消费 1-不消费 )") + @TableField(value = "consumer_tag") + private Integer consumerTag; + + /** + * 是否删除,0正常,1删除 + */ + @TableField(value = "deleted") + private Integer deleted; + + /** + * 拓展字段 + */ + @TableField(value = "feature") + private String feature; + + @ApiModelProperty("remark") + @TableField(value = "`remark`") + private String remark; + + @ApiModelProperty("来源类型(0-手工,1-自动)") + @TableField(value = "`type`") + private Integer type; + + @ApiModelProperty("是否影子集群(0-是 1否)") + @TableField(value = "is_cluster") + private Integer isCluster; + + @ApiModelProperty("生产或消费(0-生产,1-消费)") + @TableField(value = "comsumer_type") + private Integer comsumerType; + + /** + * 创建时间 + */ + @TableField(value = "gmt_create") + private Date gmtCreate; + + /** + * 更新时间 + */ + @TableField(value = "gmt_modified") + private Date gmtModified; +} diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java index a0c920ec22..c01b5f216f 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateRemoteCallEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,88 +20,87 @@ @TableName(value = "t_pressure_resource_relate_remote_call") @ToString(callSuper = true) public class PressureResourceRelateRemoteCallEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置Id") - @Column(name = "`resource_id`") + @TableField(value = "`resource_id`") private Long resourceId; @ApiModelProperty("detail_id") - @Column(name = "`detail_id`") + @TableField(value = "`detail_id`") private Long detailId; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") - @Column(name = "`status`") + @TableField(value = "`status`") private Integer status; @ApiModelProperty("接口名") - @Column(name = "`interface_name`") + @TableField(value = "`interface_name`") private String interfaceName; @ApiModelProperty("接口类型") - @Column(name = "`interface_type`") + @TableField(value = "`interface_type`") private Integer interfaceType; @ApiModelProperty("服务端应用名") - @Column(name = "`server_app_name`") + @TableField(value = "`server_app_name`") private String serverAppName; @ApiModelProperty("应用名") - @Column(name = "`app_name`") + @TableField(value = "`app_name`") private String appName; @ApiModelProperty("备注") - @Column(name = "`remark`") + @TableField(value = "`remark`") private String remark; @ApiModelProperty("配置类型0:未配置,1:白名单配置,2:返回值mock,3:转发mock") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; @ApiModelProperty("是否放行(0:是 1:否)") - @Column(name = "`pass`") + @TableField(value = "`pass`") private Integer pass; @ApiModelProperty("rpcId") - @Column(name = "`rpc_id`") + @TableField(value = "`rpc_id`") private String rpcId; @ApiModelProperty("mock返回值") - @Column(name = "`mock_return_value`") + @TableField(value = "`mock_return_value`") private String mockReturnValue; @ApiModelProperty("所属用户") - @Column(name = "`user_id`") + @TableField(value = "`user_id`") private Long userId; @ApiModelProperty("是否同步") - @Column(name = "`is_synchronize`") + @TableField(value = "`is_synchronize`") private Integer isSynchronize; @ApiModelProperty("接口子类型") - @Column(name = "`interface_child_type`") + @TableField(value = "`interface_child_type`") private String interfaceChildType; @ApiModelProperty("是否手动录入 0:否;1:是") - @Column(name = "`manual_tag`") + @TableField(value = "`manual_tag`") private Integer manualTag; @ApiModelProperty("应用名,接口名称,接口类型,租户id,环境code求md5") - @Column(name = "`md5`") + @TableField(value = "`md5`") private String md5; @ApiModelProperty("是否有效 0:有效;1:无效") - @Column(name = "`is_deleted`") + @TableField(value = "`is_deleted`") private Integer isDeleted; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java index 7706979311..7f1abe91a3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/pressureresource/PressureResourceRelateTableEntity.java @@ -1,12 +1,13 @@ package io.shulie.takin.web.data.model.mysql.pressureresource; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import io.shulie.surge.data.common.doc.annotation.Id; import io.shulie.takin.web.data.model.mysql.base.TenantBaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; -import org.influxdb.annotation.Column; import java.util.Date; @@ -19,52 +20,51 @@ @TableName(value = "t_pressure_resource_relate_table") @ToString(callSuper = true) public class PressureResourceRelateTableEntity extends TenantBaseEntity { - @Id - @Column(name = "`id`") + @TableId(value = "ID", type = IdType.AUTO) @ApiModelProperty("ID") private Long id; @ApiModelProperty("资源配置Id") - @Column(name = "`resource_id`") + @TableField(value = "`resource_id`") private Long resourceId; @ApiModelProperty("数据源唯一键") - @Column(name = "`ds_key`") + @TableField(value = "`ds_key`") private String dsKey; @ApiModelProperty("状态(0-未检测 1-检测失败 2-检测成功)") - @Column(name = "`status`") + @TableField(value = "`status`") private Integer status; @ApiModelProperty("业务表") - @Column(name = "`business_table`") + @TableField(value = "`business_table`") private String businessTable; @ApiModelProperty("影子表") - @Column(name = "`shadow_table`") + @TableField(value = "`shadow_table`") private String shadowTable; @ApiModelProperty("是否加入(0-加入 1-未加入)") - @Column(name = "`join_flag`") + @TableField(value = "`join_flag`") private Integer joinFlag; @ApiModelProperty("类型(0-手工 1-自动)") - @Column(name = "`type`") + @TableField(value = "`type`") private Integer type; @ApiModelProperty("扩展信息") - @Column(name = "`ext_info`") + @TableField(value = "`ext_info`") private String extInfo; @ApiModelProperty("备注") - @Column(name = "`remark`") + @TableField(value = "`remark`") private String remark; - @Column(name = "`gmt_create`") + @TableField(value = "`gmt_create`") @ApiModelProperty("创建时间") private Date gmtCreate; - @Column(name = "`gmt_modified`") + @TableField(value = "`gmt_modified`") @ApiModelProperty("更新时间") private Date gmtModified; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java new file mode 100644 index 0000000000..f0c1f2172a --- /dev/null +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java @@ -0,0 +1,31 @@ +package io.shulie.takin.web.data.param.pressureresource; + +import io.shulie.takin.web.common.pojo.dto.PageBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author xingchen + * @description: TODO + * @date 2022/5/19 2:56 下午 + */ +@Data +public class PressureResourceMqConsumerQueryParam extends PageBaseDTO { + @ApiModelProperty("topicGroup") + private String topicGroup; + + @ApiModelProperty("资源配置ID") + private Long resourceId; + + @ApiModelProperty("mqType") + private String mqType; + + @ApiModelProperty("模糊查询,消费组") + private String queryTopicGroup; + + @ApiModelProperty("applicationName") + private String applicationName; + + @ApiModelProperty("consumerTag") + private Integer consumerTag; +} diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceShadowMqController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceShadowMqController.java new file mode 100644 index 0000000000..255d86e159 --- /dev/null +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResourceShadowMqController.java @@ -0,0 +1,70 @@ +package io.shulie.takin.web.entrypoint.controller.pressureresource; + +import io.shulie.takin.common.beans.response.ResponseResult; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerCreateInput; +import io.shulie.takin.web.biz.pojo.request.pressureresource.PressureResourceMqConsumerQueryRequest; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceMqConsumerService; +import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; +import io.shulie.takin.web.common.constant.ApiUrls; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author xingchen + * @description: TODO + * @date 2022/10/11 9:46 AM + */ +@RestController +@RequestMapping(value = ApiUrls.TAKIN_API_URL + "/pressureResource/mqconsumer") +@Api(tags = "接口: 关联表") +@Slf4j +public class PressureResourceShadowMqController { + + @Resource + private PressureResourceMqConsumerService pressureResourceMqConsumerService; + + @ApiOperation("链路压测资源-新增影子消费者") + @RequestMapping(value = "/create", method = RequestMethod.POST) + public ResponseResult create(@RequestBody PressureResourceMqConsumerCreateInput request) { + request.setTopicGroup(StringUtils.isBlank(request.getTopicGroup()) ? "" : request.getTopicGroup().trim()); + request.setType(SourceTypeEnum.MANUAL.getCode()); + pressureResourceMqConsumerService.create(request); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-修改影子消费者") + @RequestMapping(value = "/update", method = RequestMethod.POST) + public ResponseResult update(@RequestBody PressureResourceMqConsumerCreateInput request) { + request.setTopicGroup(StringUtils.isBlank(request.getTopicGroup()) ? "" : request.getTopicGroup().trim()); + pressureResourceMqConsumerService.update(request); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-修改影子消费者-开启/关闭消费") + @RequestMapping(value = "/consumerTag", method = RequestMethod.POST) + public ResponseResult consumerTag(@RequestBody PressureResourceMqConsumerCreateInput request) { + pressureResourceMqConsumerService.processConsumerTag(request); + return ResponseResult.success(); + } + + @ApiOperation("链路压测资源-分页") + @RequestMapping(value = "/list", method = RequestMethod.GET) + public ResponseResult list(PressureResourceMqConsumerQueryRequest request) { + return ResponseResult.success(pressureResourceMqConsumerService.list(request)); + } + + @ApiOperation("链路压测资源-删除") + @RequestMapping(value = "/del", method = RequestMethod.GET) + public ResponseResult del(PressureResourceMqConsumerCreateInput input) { + pressureResourceMqConsumerService.delete(input.getId()); + return ResponseResult.success(); + } +} From ef514eececc6509db3f1a4ca5fcb73ba264d43ab Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 12 Oct 2022 16:43:31 +0800 Subject: [PATCH 192/318] =?UTF-8?q?=E5=B9=B6=E8=A1=8C=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../takin/web/app/conf/ThreadPoolConfig.java | 100 ++++++++++-------- .../impl/PressureResourceAppServiceImpl.java | 52 ++++++--- 2 files changed, 90 insertions(+), 62 deletions(-) diff --git a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java index 9a4a1cb483..7bd38d1518 100644 --- a/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java +++ b/takin-web-app/src/main/java/io/shulie/takin/web/app/conf/ThreadPoolConfig.java @@ -34,7 +34,7 @@ */ @Configuration public class ThreadPoolConfig { - /** + /** * 用于定时任务 * * @return 线程池 @@ -62,14 +62,21 @@ public ThreadPoolExecutor appRemoteApiFilterThreadPool() { public ThreadPoolExecutor jobThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-%d").build(); return new ThreadPoolExecutor(20, 40, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "pressureResourceThreadPool") public ThreadPoolExecutor pressureResouceThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("pressureResourceThreadPool-%d").build(); return new ThreadPoolExecutor(20, 40, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); + } + + @Bean(name = "simpleFutureThreadPool") + public ThreadPoolExecutor simpleFutureThreadPool() { + ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("simpleFutureThreadPool-job-%d").build(); + return new ThreadPoolExecutor(5, 10, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, + new ThreadPoolExecutor.AbortPolicy()); } /** @@ -105,7 +112,7 @@ public ThreadPoolExecutor remoteApiThreadPool() { public ThreadPoolExecutor traceManageThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-trace-%d").build(); return new ThreadPoolExecutor(5, 10, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } /** @@ -117,10 +124,10 @@ public ThreadPoolExecutor traceManageThreadPool() { public ThreadPoolExecutor collectDataThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-collect-data-%d").build(); return new ThreadPoolExecutor(5, 10, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } - @Bean(name = "collectDataThreadPool_one") + @Bean(name = "collectDataThreadPool_one") public ThreadPoolExecutor collectDataThreadPool_one() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-collect-data-two-%d").build(); return new ThreadPoolExecutor(10, 50, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, @@ -140,7 +147,7 @@ public ThreadPoolExecutor collectDataThreadPool_three() { return new ThreadPoolExecutor(10, 50, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } - + /** * 漏数验证单独做 * @@ -150,7 +157,7 @@ public ThreadPoolExecutor collectDataThreadPool_three() { public ThreadPoolExecutor showdownVerifyThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-showdown-verify-%d").build(); return new ThreadPoolExecutor(5, 10, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } /** @@ -163,10 +170,10 @@ public ThreadPoolExecutor showdownVerifyThreadPool() { public ThreadPoolExecutor reportSummaryThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-summary-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } - - @Bean(name = "reportSummaryThreadPool_one") + + @Bean(name = "reportSummaryThreadPool_one") public ThreadPoolExecutor reportSummaryThreadPool_one() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-summary_one-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, @@ -186,7 +193,7 @@ public ThreadPoolExecutor reportSummaryThreadPool_three() { return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } - + /** * 四大报告Job分开线程池单独使用 * @@ -197,10 +204,10 @@ public ThreadPoolExecutor reportSummaryThreadPool_three() { public ThreadPoolExecutor reportTpsThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-tps-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } - - @Bean(name = "reportTpsThreadPool_one") + + @Bean(name = "reportTpsThreadPool_one") public ThreadPoolExecutor reportTpsThreadPool_one() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-tps-one-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, @@ -213,7 +220,7 @@ public ThreadPoolExecutor reportTpsThreadPool_two() { return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } - + /** * 四大报告Job分开线程池单独使用 * @@ -224,10 +231,10 @@ public ThreadPoolExecutor reportTpsThreadPool_two() { public ThreadPoolExecutor reportFinishThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-finish-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } - - @Bean(name = "reportFinishThreadPool_one") + + @Bean(name = "reportFinishThreadPool_one") public ThreadPoolExecutor reportFinishThreadPool_one() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-finish-one-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, @@ -240,7 +247,7 @@ public ThreadPoolExecutor reportFinishThreadPool_two() { return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } - + /** * 四大报告Job分开线程池单独使用 * @@ -251,10 +258,10 @@ public ThreadPoolExecutor reportFinishThreadPool_two() { public ThreadPoolExecutor reportMachineThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-machine-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } - - @Bean(name = "reportMachineThreadPool_one") + + @Bean(name = "reportMachineThreadPool_one") public ThreadPoolExecutor reportMachineThreadPool_one() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("job-report-machine-one-%d").build(); return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, @@ -267,7 +274,7 @@ public ThreadPoolExecutor reportMachineThreadPool_two() { return new ThreadPoolExecutor(10, 20, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } - + /** * 仅链路调试用的job * @@ -277,14 +284,14 @@ public ThreadPoolExecutor reportMachineThreadPool_two() { public ThreadPoolExecutor fastDebug() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("fast-debug-%d").build(); return new ThreadPoolExecutor(5, 10, 20L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(2000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "modifyMonitorThreadPool") public ThreadPoolExecutor modifyMonitorExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("modify-monitor-%d").build(); return new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "schedulerPool") @@ -292,7 +299,7 @@ public TaskScheduler scheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(20); ThreadFactory threadFactory = new BasicThreadFactory.Builder().namingPattern("pradar-scheduler-thread-%d") - .daemon(true).build(); + .daemon(true).build(); taskScheduler.setThreadFactory(threadFactory); taskScheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); return taskScheduler; @@ -302,29 +309,29 @@ public TaskScheduler scheduler() { public ThreadPoolExecutor runShellTaskExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("script-thread-%d").build(); return new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "loadDataThreadPool") public ThreadPoolExecutor loadDataTaskExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("loaddata-thread-%d").build(); return new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "agentDataThreadPool") public ThreadPoolExecutor agentDataTaskExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("agentdata-thread-%d").build(); return new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "backgroundMonitorThreadPool") public ThreadPoolExecutor backgroundMonitorThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("background-monitor-thread-%d") - .build(); + .build(); return new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Bean("asyncExecuteScriptThreadPool") @@ -352,7 +359,7 @@ public Executor myAsync() { public ThreadPoolExecutor runOPSShellTaskExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("ops-script-thread-%d").build(); return new ThreadPoolExecutor(1, 5, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Primary @@ -394,7 +401,7 @@ public HttpMessageConverters restFileDownloadSupport() { public ThreadPoolExecutor queryAsyncThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("query-async-thread-%d").build(); return new ThreadPoolExecutor(1, 10, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } @Value("${poolConfig.e2e.coreSize: 50}") @@ -415,7 +422,7 @@ public ThreadPoolExecutor queryAsyncThreadPool() { public ThreadPoolExecutor e2eThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("e2e-job-%d").build(); return new ThreadPoolExecutor(e2eCoreSize, e2eMaxSize, 60L, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(e2eQueueSize), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + new ArrayBlockingQueue<>(e2eQueueSize), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } /** @@ -427,7 +434,7 @@ public ThreadPoolExecutor e2eThreadPool() { public ThreadPoolExecutor agentAggregationThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("agent-aggregation-%d").build(); return new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), - nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } /** @@ -440,7 +447,7 @@ public ThreadPoolExecutor middlewareResolverThreadPool() { final int coreSize = Runtime.getRuntime().availableProcessors(); ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("middleware-resolver-%d").build(); return new ThreadPoolExecutor(coreSize, coreSize * 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), - nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } /** @@ -453,8 +460,8 @@ public ExecutorService agentHeartbeatThreadPool() { final int coreSize = Runtime.getRuntime().availableProcessors(); ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("agent-heartbeat-%d").build(); return TtlExecutors.getTtlExecutorService( - new ThreadPoolExecutor(coreSize, coreSize * 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), - nameThreadFactory, new ThreadPoolExecutor.DiscardPolicy())); + new ThreadPoolExecutor(coreSize, coreSize * 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), + nameThreadFactory, new ThreadPoolExecutor.DiscardPolicy())); } /** @@ -482,7 +489,7 @@ public ThreadPoolTaskExecutor springSessionRedisTaskExecutor() { public ThreadPoolExecutor stopTaskExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("stop-thread-%d").build(); return new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100), nameThreadFactory, - new ThreadPoolExecutor.DiscardOldestPolicy()); + new ThreadPoolExecutor.DiscardOldestPolicy()); } /** @@ -495,7 +502,7 @@ public ThreadPoolExecutor stopTaskExecutor() { public ThreadPoolExecutor bigFileThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("big-file-thread-%d").build(); return new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5000), nameThreadFactory, - new ThreadPoolExecutor.AbortPolicy()); + new ThreadPoolExecutor.AbortPolicy()); } /** @@ -505,15 +512,15 @@ public ThreadPoolExecutor bigFileThreadPool() { public ExecutorService cloudCallbackThreadPool() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("cloud-callback-%d").build(); return TtlExecutors.getTtlExecutorService( - new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, - new SynchronousQueue<>(), nameThreadFactory)); + new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, + new SynchronousQueue<>(), nameThreadFactory)); } @Bean(name = "dataCalibration") public ExecutorService dataCalibrationExecutor() { ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("data-calibration-%d").build(); return TtlExecutors.getTtlExecutorService(new ThreadPoolExecutor(10, 20, 60L, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(1000), nameThreadFactory, new WaitingRejectedExecutionHandler())); + new ArrayBlockingQueue<>(1000), nameThreadFactory, new WaitingRejectedExecutionHandler())); } private static class WaitingRejectedExecutionHandler implements RejectedExecutionHandler { @@ -526,6 +533,7 @@ public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { } } } + /** * webIDE数据入库处理线程池 * @@ -544,7 +552,7 @@ public ThreadPoolExecutor performanceDebugThreadPool() { final int coreSize = Runtime.getRuntime().availableProcessors(); ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("performance-debug-%d").build(); return new ThreadPoolExecutor(coreSize, coreSize * 2, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100), - nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } @Bean(name = "fileFailedPool") @@ -552,6 +560,6 @@ public ThreadPoolExecutor fileFailed() { int coreSize = Runtime.getRuntime().availableProcessors(); ThreadFactory nameThreadFactory = new ThreadFactoryBuilder().setNameFormat("file-failed-%d").build(); return new ThreadPoolExecutor(coreSize, coreSize * 2, 0, - TimeUnit.SECONDS, new LinkedBlockingQueue<>(400), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + TimeUnit.SECONDS, new LinkedBlockingQueue<>(400), nameThreadFactory, new ThreadPoolExecutor.AbortPolicy()); } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java index 78b7e62153..1f0bbf4758 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceAppServiceImpl.java @@ -27,19 +27,20 @@ import io.shulie.takin.web.data.param.pressureresource.PressureResourceAppQueryParam; import io.shulie.takin.web.data.param.pressureresource.PressureResourceDetailQueryParam; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author xingchen @@ -74,6 +75,10 @@ public class PressureResourceAppServiceImpl implements PressureResourceAppServic @Resource private SceneExcludedApplicationDAO sceneExcludedApplicationDAO; + @Resource + @Qualifier("simpleFutureThreadPool") + private ThreadPoolExecutor simpleFutureThreadPool; + /** * 应用检查列表 * @@ -109,6 +114,27 @@ public PagingList appCheckList(PressureResourceAppR } //转换下 List source = pageList.getList(); + // 批量下应用状态 + List> futureList = Lists.newArrayList(); + source.stream().forEach(config -> { + Long appId = applicationService.queryApplicationIdByAppName(config.getAppName()); + if (appId == null) { + return; + } + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + // 这里接口比较慢,并行去查 + Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); + if (voResponse.getSuccess()) { + return voResponse.getData(); + } + return new ApplicationVo(); + }, simpleFutureThreadPool); + futureList.add(future); + }); + List applicationVos = Stream.of(futureList.toArray(new CompletableFuture[futureList.size()])) + .map(CompletableFuture::join) + .collect(Collectors.toList()); + final Map> appMap = applicationVos.stream().collect(Collectors.groupingBy(ApplicationVo::getApplicationName)); List returnList = source.stream().map(configDto -> { PressureResourceRelateAppVO vo = new PressureResourceRelateAppVO(); BeanUtils.copyProperties(configDto, vo); @@ -121,18 +147,12 @@ public PagingList appCheckList(PressureResourceAppR vo.setStatus(1); vo.setId(String.valueOf(configDto.getId())); // 获取应用信息 - Long appId = applicationService.queryApplicationIdByAppName(vo.getAppName()); - if (appId != null) { - Response voResponse = applicationService.getApplicationInfo(String.valueOf(appId)); - if (voResponse.getSuccess()) { - ApplicationVo applicationVo = voResponse.getData(); - vo.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); - vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); - vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); - vo.setRemark(applicationVo.getExceptionInfo()); - } - } - vo.setApplicationId(String.valueOf(appId)); + ApplicationVo applicationVo = appMap.get(vo.getAppName()).stream().findFirst().get(); + vo.setNodeNum(applicationVo.getNodeNum() == null ? 0 : applicationVo.getNodeNum()); + vo.setAgentNodeNum(applicationVo.getOnlineNodeNum() == null ? 0 : applicationVo.getOnlineNodeNum()); + vo.setStatus("0".equals(String.valueOf(applicationVo.getAccessStatus())) ? 0 : 1); + vo.setRemark(applicationVo.getExceptionInfo()); + vo.setApplicationId(String.valueOf(applicationVo.getId())); return vo; }).collect(Collectors.toList()); return PagingList.of(returnList, pageList.getTotal()); From 6b664bd995bfc0165d5980bd20fcba7638640621 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 12 Oct 2022 17:03:41 +0800 Subject: [PATCH 193/318] =?UTF-8?q?=E5=B9=B6=E8=A1=8C=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceService.java | 7 ++++ .../impl/PressureResourceServiceImpl.java | 40 +++++++++++++++++++ .../PressureResoureController.java | 6 +++ 3 files changed, 53 insertions(+) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java index 7026d3e8ea..8e0142ce10 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/PressureResourceService.java @@ -84,4 +84,11 @@ public interface PressureResourceService { * @return */ PressureResourceExtInfo dsInfo(Long id); + + /** + * 处理汇总信息-影子消费者 + * + * @return + */ + PressureResourceExtInfo mqInfo(Long id); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index 61d8cf04a6..aa79be1ae4 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -7,6 +7,7 @@ import io.shulie.takin.web.biz.pojo.request.pressureresource.*; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceAppService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceDsService; +import io.shulie.takin.web.biz.service.pressureresource.PressureResourceMqConsumerService; import io.shulie.takin.web.biz.service.pressureresource.PressureResourceService; import io.shulie.takin.web.biz.service.pressureresource.common.SourceTypeEnum; import io.shulie.takin.web.biz.service.pressureresource.vo.*; @@ -88,6 +89,9 @@ public class PressureResourceServiceImpl implements PressureResourceService { @Resource private PressureResourceDsService pressureResourceDsService; + @Resource + private PressureResourceMqConsumerService pressureResourceMqConsumerService; + /** * 新增 * @@ -526,4 +530,40 @@ public PressureResourceExtInfo dsInfo(Long id) { extInfo.setUserName(WebPluginUtils.getUserName(entity.getUserId(), WebPluginUtils.getUserMapByIds(Arrays.asList(entity.getUserId())))); return extInfo; } + + /** + * 汇总信息-影子消费者 + * + * @param id + * @return + */ + @Override + public PressureResourceExtInfo mqInfo(Long id) { + PressureResourceExtInfo extInfo = new PressureResourceExtInfo(); + extInfo.setTotalSize(0); + extInfo.setExceptionSize(0); + extInfo.setNormalSize(0); + + PressureResourceEntity entity = pressureResourceMapper.selectById(id); + if (entity == null) { + throw new TakinWebException(TakinWebExceptionEnum.PRESSURE_RESOURCE_OP_ERROR, "配置不存在"); + } + PressureResourceMqConsumerQueryRequest mqRequest = new PressureResourceMqConsumerQueryRequest(); + mqRequest.setResourceId(id); + mqRequest.setPageSize(2000); + PagingList pageList = pressureResourceMqConsumerService.list(mqRequest); + if (!pageList.isEmpty()) { + List resourceRelateDsVOS = pageList.getList(); + if (CollectionUtils.isNotEmpty(resourceRelateDsVOS)) { + extInfo.setTotalSize(resourceRelateDsVOS.size()); + Long normalSize = resourceRelateDsVOS.stream().filter(ds -> ds.getStatus() == 2).count(); + extInfo.setNormalSize(normalSize.intValue()); + extInfo.setExceptionSize(extInfo.getTotalSize() - extInfo.getNormalSize()); + } + } + // 检测时间都是一批的 + extInfo.setCheckTime(entity.getCheckTime()); + extInfo.setUserName(WebPluginUtils.getUserName(entity.getUserId(), WebPluginUtils.getUserMapByIds(Arrays.asList(entity.getUserId())))); + return extInfo; + } } diff --git a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java index 7fb285463b..ccc3beb58d 100644 --- a/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java +++ b/takin-web-entrypoint/src/main/java/io/shulie/takin/web/entrypoint/controller/pressureresource/PressureResoureController.java @@ -95,6 +95,12 @@ public ResponseResult dsInfo(PressureResourceQueryRequest request) { return ResponseResult.success(pressureResourceService.dsInfo(request.getId())); } + @ApiOperation("链路压测资源查询-汇总数据-mq信息") + @RequestMapping(value = "/mqInfo", method = RequestMethod.GET) + public ResponseResult mqInfo(PressureResourceQueryRequest request) { + return ResponseResult.success(pressureResourceService.mqInfo(request.getId())); + } + //@ApiModelProperty("类型(1-应用检查,2-影子隔离 3-远程调用 )") //@ApiModelProperty("状态(0-未开始 1-进行中 2-完成)") @ApiOperation("链路压测资源查询-汇总数据-进度") From 026c85994ab9199134ec74961ce9a34bafe3b2d3 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 12 Oct 2022 17:14:12 +0800 Subject: [PATCH 194/318] =?UTF-8?q?=E5=B9=B6=E8=A1=8C=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PressureResourceMqConsumerQueryRequest.java | 4 ++-- .../impl/PressureResourceRelateMqComsumerDAOImpl.java | 4 ++-- .../PressureResourceMqConsumerQueryParam.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java index 2bff91e9d1..3a3dfa4469 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/pressureresource/PressureResourceMqConsumerQueryRequest.java @@ -17,8 +17,8 @@ public class PressureResourceMqConsumerQueryRequest extends PageBaseDTO { @ApiModelProperty("resourceId") private Long resourceId; - @ApiModelProperty("applicationName") - private String applicationName; + @ApiModelProperty("queryApplicationName") + private String queryApplicationName; @ApiModelProperty("mqType") private String mqType; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java index 3c60b2a59c..3e2356f23b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/pressureresource/impl/PressureResourceRelateMqComsumerDAOImpl.java @@ -94,8 +94,8 @@ private QueryWrapper getWrapper(Pressure if (StringUtils.isNotBlank(param.getQueryTopicGroup())) { queryWrapper.like("topic_group", param.getQueryTopicGroup()); } - if (StringUtils.isNotBlank(param.getApplicationName())) { - queryWrapper.like("application_name", param.getApplicationName()); + if (StringUtils.isNotBlank(param.getQueryApplicationName())) { + queryWrapper.like("application_name", param.getQueryApplicationName()); } return queryWrapper; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java index f0c1f2172a..b7dc1f32fe 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/pressureresource/PressureResourceMqConsumerQueryParam.java @@ -23,8 +23,8 @@ public class PressureResourceMqConsumerQueryParam extends PageBaseDTO { @ApiModelProperty("模糊查询,消费组") private String queryTopicGroup; - @ApiModelProperty("applicationName") - private String applicationName; + @ApiModelProperty("queryApplicationName") + private String queryApplicationName; @ApiModelProperty("consumerTag") private Integer consumerTag; From 678c56f801aa28da40dc3035877674471427b827 Mon Sep 17 00:00:00 2001 From: zhouyuan Date: Wed, 12 Oct 2022 17:24:31 +0800 Subject: [PATCH 195/318] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PressureResourceServiceImpl.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java index aa79be1ae4..8012e45a71 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/pressureresource/impl/PressureResourceServiceImpl.java @@ -423,6 +423,7 @@ public Map progress(Long id) { statusMap.put("APP", 0); statusMap.put("DS", 0); statusMap.put("REMOTECALL", 0); + statusMap.put("MQ", 0); // 查看应用状态 PressureResourceAppRequest appRequest = new PressureResourceAppRequest(); @@ -440,7 +441,7 @@ public Map progress(Long id) { statusMap.put("APP", 1); } } - // 影子资源检查 + // 影子MQ检查 PressureResourceDsQueryParam dsQueryParam = new PressureResourceDsQueryParam(); dsQueryParam.setResourceId(id); List dsEntityList = pressureResourceRelateDsDAO.queryByParam(dsQueryParam); @@ -455,6 +456,24 @@ public Map progress(Long id) { statusMap.put("DS", 1); } } + + // 影子资源检查 + PressureResourceMqConsumerQueryRequest mqRequest = new PressureResourceMqConsumerQueryRequest(); + mqRequest.setResourceId(id); + mqRequest.setPageSize(2000); + PagingList mqPageList = pressureResourceMqConsumerService.list(mqRequest); + if (!mqPageList.isEmpty()) { + List appVOList = mqPageList.getList(); + // 判断状态是否都是正常的 + int normal = appVOList.stream().filter(app -> app.getStatus() == 0).collect(Collectors.toList()).size(); + if (normal == appVOList.size()) { + statusMap.put("MQ", 2); + } + // 存在正常的,进行中 + if (appVOList.size() - normal > 0) { + statusMap.put("MQ", 1); + } + } return statusMap; } From 4f65550ac983980a948e159d55b491647a7e8ddf Mon Sep 17 00:00:00 2001 From: zhaoyong Date: Wed, 12 Oct 2022 20:37:40 +0800 Subject: [PATCH 196/318] =?UTF-8?q?=E6=9D=83=E9=99=90=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- takin-web-amdb-accessor/pom.xml | 2 +- takin-web-app/pom.xml | 2 +- takin-web-biz-service/pom.xml | 2 +- .../scenemanage/SceneManageQueryInput.java | 6 + .../scenemanage/SceneManageWrapperInput.java | 2 + .../scene/manage/SceneManageListOutput.java | 3 + .../manage/SceneManageWrapperOutput.java | 2 + .../impl/CloudSceneManageServiceImpl.java | 3 + .../scenetask/CloudSceneTaskServiceImpl.java | 1 + .../activity/ActivityQueryRequest.java | 3 + .../ApplicationQueryRequestV2.java | 3 + .../datasource/DataSourceQueryRequest.java | 2 + .../BusinessFlowPageQueryRequest.java | 3 + .../ScriptManageDeployPageQueryRequest.java | 2 + .../ApplicationListByUpgradeResponse.java | 2 + .../ApplicationListResponseV2.java | 3 +- .../web/biz/service/ApplicationService.java | 7 +- .../web/biz/service/ConfCenterService.java | 69 +++----- .../impl/AgentConfigServiceImpl.java | 6 +- .../biz/service/impl/ActivityServiceImpl.java | 2 + .../service/impl/ApplicationServiceImpl.java | 15 +- .../service/impl/DataSourceServiceImpl.java | 27 +++- .../impl/OpsScriptManageServiceImpl.java | 3 +- .../impl/ShadowConsumerServiceImpl.java | 6 - .../impl/PerformanceConfigServiceImpl.java | 9 +- .../impl/AppRemoteCallServiceImpl.java | 44 +++-- .../impl/ApplicationApiServiceImpl.java | 25 ++- .../linkmanage/impl/LinkGuardServiceImpl.java | 6 +- .../impl/LinkManageServiceImpl.java | 6 +- .../linkmanage/impl/WhiteListServiceImpl.java | 19 +-- .../report/impl/ReportServiceImpl.java | 14 +- .../service/scene/impl/SceneServiceImpl.java | 2 + .../scriptmanage/ScriptManageServiceImpl.java | 12 +- .../ShellScriptManageServiceImpl.java | 19 +-- .../simplify/ShadowJobConfigService.java | 15 +- takin-web-bom/pom.xml | 4 +- takin-web-common/pom.xml | 2 +- .../scenemanage/SceneManageQueryBean.java | 6 + takin-web-data/pom.xml | 2 +- .../domain/dto/report/CloudReportDTO.java | 2 + .../entity/dao/confcenter/TBListMntDao.java | 2 +- .../scenemanage/SceneManageWrapperDTO.java | 1 + .../takin/entity/domain/entity/TBList.java | 9 ++ .../vo/entracemanage/EntranceApiVo.java | 2 + .../domain/vo/report/ReportQueryParam.java | 3 + .../vo/scenemanage/SceneManageQueryVO.java | 6 + .../cloud/data/dao/report/ReportDaoImpl.java | 2 + .../scene/manage/impl/SceneManageDAOImpl.java | 17 +- .../SceneManageCreateOrUpdateParam.java | 2 + .../dao/activity/impl/ActivityDAOImpl.java | 9 ++ .../dao/application/ApplicationApiDAO.java | 3 +- .../application/ApplicationApiDAOImpl.java | 5 +- .../data/dao/application/ApplicationDAO.java | 4 +- .../dao/application/ApplicationDAOImpl.java | 37 +++-- .../data/dao/blacklist/BlackListDAOImpl.java | 2 + .../dao/datasource/DataSourceDAOImpl.java | 11 +- .../web/data/dao/linkmanage/SceneDAOImpl.java | 6 + .../impl/ScriptManageDAOImpl.java | 8 + .../mysql/ApplicationApiManageMapper.java | 3 +- .../mapper/mysql/ApplicationMntMapper.java | 2 +- .../mysql/ApplicationApiManageEntity.java | 3 + .../model/mysql/ApplicationMntEntity.java | 6 + .../web/data/model/mysql/BlackListEntity.java | 3 + .../mysql/BusinessLinkManageTableEntity.java | 6 + .../InterfacePerformanceConfigEntity.java | 3 + .../web/data/model/mysql/SceneEntity.java | 6 + .../data/model/mysql/ScriptManageEntity.java | 5 + .../model/mysql/TakinDbresourceEntity.java | 3 + .../param/activity/ActivityQueryParam.java | 5 + .../ApplicationApiCreateParam.java | 2 + .../application/ApplicationApiQueryParam.java | 2 + .../QueryApplicationByUpgradeParam.java | 1 + .../application/QueryApplicationParam.java | 4 + .../datasource/DataSourceCreateParam.java | 5 + .../datasource/DataSourceQueryParam.java | 5 + .../PerformanceConfigQueryParam.java | 2 + .../param/linkmanage/SceneCreateParam.java | 4 + .../data/param/scene/ScenePageQueryParam.java | 2 + .../ScriptManageDeployPageQueryParam.java | 4 + .../result/activity/ActivityListResult.java | 5 + .../application/ApplicationListResult.java | 2 + .../ApplicationListResultByUpgrade.java | 1 + .../result/datasource/DataSourceResult.java | 5 + .../mapper/cloud/report/TReportMapper.xml | 15 ++ .../mapper/confcenter/tBListMntMapper.xml | 9 +- .../mappers/ApplicationApiManageMapper.xml | 12 +- .../mappers/ApplicationMntMapper.xml | 28 +++- takin-web-entrypoint/pom.xml | 2 +- .../application/MiddlewareJarController.java | 11 -- .../MiddlewareSummaryController.java | 8 - .../businessflow/BusinessFlowController.java | 3 +- .../PerformanceConfigController.java | 2 +- .../linkmanage/ApplicationApiController.java | 3 +- .../scenemanage/SceneManageController.java | 7 +- takin-web-eventcenter/pom.xml | 2 +- takin-web-ext/pom.xml | 4 +- takin-web-ext/takin-web-ext-api/pom.xml | 4 +- .../web/ext/api/auth/WebDataAuthExtApi.java | 51 +++--- .../takin/web/ext/api/user/WebUserExtApi.java | 6 + .../ext/entity/AuthQueryParamCommonExt.java | 6 + .../entity/AuthQueryResponseCommonExt.java | 3 + .../takin/web/ext/entity/UserCommonExt.java | 6 + .../takin/web/ext/util/WebPluginUtils.java | 150 +++++++++++++++--- takin-web-ext/takin-web-ext-jmeter/pom.xml | 4 +- takin-web-service-adapters/pom.xml | 2 +- .../takin-web-adapter/pom.xml | 2 +- .../takin-web-adapter-api/pom.xml | 2 +- .../model/request/report/ReportQueryReq.java | 7 + .../scenemanage/SceneManageQueryReq.java | 7 + .../api/model/response/report/ReportResp.java | 2 + .../scenemanage/SceneManageListResp.java | 2 + .../scenemanage/SceneManageWrapperResp.java | 2 + .../takin-web-adapter-cloud/pom.xml | 2 +- .../scene/manage/CloudSceneManageApiImpl.java | 5 + .../takin-web-config/pom.xml | 2 +- .../takin-web-config-common/pom.xml | 2 +- .../takin-web-config-sync-api/pom.xml | 2 +- .../takin-web-config-sync-http/pom.xml | 2 +- .../takin-web-config-sync-http-common/pom.xml | 2 +- .../takin-web-config-sync-http-impl/pom.xml | 2 +- .../takin-web-config-sync-zk/pom.xml | 2 +- .../takin-web-config-sync-zk-common/pom.xml | 2 +- .../takin-web-config-sync-zk-impl/pom.xml | 2 +- .../takin-web-diff/pom.xml | 2 +- .../takin-web-diff/takin-web-diff-api/pom.xml | 2 +- .../takin-web-diff-cloud/pom.xml | 2 +- 127 files changed, 661 insertions(+), 317 deletions(-) diff --git a/pom.xml b/pom.xml index 55bcb95e88..2a060c0721 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.2 pom https://github.com/shulieTech/Takin-web.git @@ -41,7 +41,7 @@ 3.8.0 yyyyMMddHHmmss - takin-web-5.9.0 + takin-web-5.10.2 common-2.0.2-SNAPSHOT common-2.0.0-SNAPSHOT 2.0.6.2 diff --git a/takin-web-amdb-accessor/pom.xml b/takin-web-amdb-accessor/pom.xml index 6404a4a4b5..aa2d908b2e 100644 --- a/takin-web-amdb-accessor/pom.xml +++ b/takin-web-amdb-accessor/pom.xml @@ -20,7 +20,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.2 4.0.0 diff --git a/takin-web-app/pom.xml b/takin-web-app/pom.xml index d0fa560016..5aa44caf1b 100644 --- a/takin-web-app/pom.xml +++ b/takin-web-app/pom.xml @@ -4,7 +4,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.2 ../pom.xml takin-web-app diff --git a/takin-web-biz-service/pom.xml b/takin-web-biz-service/pom.xml index f61bd4e413..854089c7a8 100644 --- a/takin-web-biz-service/pom.xml +++ b/takin-web-biz-service/pom.xml @@ -5,7 +5,7 @@ takin-web io.shulie.takin - takin-web-5.9.0 + takin-web-5.10.2 4.0.0 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageQueryInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageQueryInput.java index 677872201f..daf2f0c6ab 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageQueryInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageQueryInput.java @@ -32,4 +32,10 @@ public class SceneManageQueryInput extends PagingContextExt { private String lastPtEndTime; private Integer isArchive; + + private Long deptId; + + private List userIdList; + + private List deptIdList; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageWrapperInput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageWrapperInput.java index 20ecd8f742..1d0d393cc6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageWrapperInput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/input/scenemanage/SceneManageWrapperInput.java @@ -97,6 +97,8 @@ public class SceneManageWrapperInput extends ContextExt { private Long operateId; + private Long deptId; + private String operateName; private String machineId; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageListOutput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageListOutput.java index 33566ac6f0..125601e926 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageListOutput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageListOutput.java @@ -46,4 +46,7 @@ public class SceneManageListOutput extends ContextExt { @ApiModelProperty(value = "脚本解析结果") private String scriptAnalysisResult; + + @ApiModelProperty(value = "部门id") + private Long deptId; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageWrapperOutput.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageWrapperOutput.java index 8cac0b6cea..9835937584 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageWrapperOutput.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/output/scene/manage/SceneManageWrapperOutput.java @@ -145,6 +145,8 @@ public class SceneManageWrapperOutput extends ContextExt { private String machineId; private Integer machineType; + private Long deptId; + @Data @EqualsAndHashCode(callSuper = true) public static class SceneBusinessActivityRefOutput extends SceneBusinessActivityRefBean { diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scene/impl/CloudSceneManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scene/impl/CloudSceneManageServiceImpl.java index 6ef6c091c8..025bf2539a 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scene/impl/CloudSceneManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scene/impl/CloudSceneManageServiceImpl.java @@ -392,6 +392,7 @@ public PageInfo queryPageList(SceneManageQueryInput query setTenantId(t.getTenantId()); setUserId(t.getUserId()); setUserName(null); + setDeptId(t.getDeptId()); setScriptAnalysisResult(t.getScriptAnalysisResult()); }}).collect(Collectors.toList()); Map threadNum = new HashMap<>(1); @@ -1092,6 +1093,7 @@ private void fillBase(SceneManageWrapperOutput wrapperOutput, SceneManageEntity wrapperOutput.setFeatures(sceneManageResult.getFeatures()); wrapperOutput.setScriptAnalysisResult(sceneManageResult.getScriptAnalysisResult()); wrapperOutput.setPtConfig(sceneManageResult.getPtConfig()); + wrapperOutput.setDeptId(sceneManageResult.getDeptId()); } /** @@ -1208,6 +1210,7 @@ private SceneManageCreateOrUpdateParam buildSceneManage(SceneManageWrapperInput param.setType(wrapperVO.getType() == null ? 0 : wrapperVO.getType()); param.setFeatures(wrapperVO.getFeatures()); param.setUserId(wrapperVO.getUserId()); + param.setDeptId(wrapperVO.getDeptId()); param.setTenantId(wrapperVO.getTenantId()); param.setEnvCode(wrapperVO.getEnvCode()); return param; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scenetask/CloudSceneTaskServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scenetask/CloudSceneTaskServiceImpl.java index 63e1202166..3fb4d6808e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scenetask/CloudSceneTaskServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/cloud/biz/service/scenetask/CloudSceneTaskServiceImpl.java @@ -1163,6 +1163,7 @@ public ReportEntity initReport(SceneManageWrapperOutput scene, SceneTaskStartInp //负责人默认启动人 report.setUserId(CloudPluginUtils.getUserId()); report.setSceneName(scene.getPressureTestSceneName()); + report.setDeptId(scene.getDeptId()); if (StringUtils.isNotBlank(scene.getFeatures())) { JSONObject features = JsonUtil.parse(scene.getFeatures()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/activity/ActivityQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/activity/ActivityQueryRequest.java index 6cbf55f710..61bf3922f6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/activity/ActivityQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/activity/ActivityQueryRequest.java @@ -31,4 +31,7 @@ public class ActivityQueryRequest extends PagingDevice { @ApiModelProperty(name= "type",value = "正常、虚拟:0:正常:1虚拟") private Integer type; + + @ApiModelProperty("部门id") + private Long deptId; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java index b7fac93fd7..279638dc6d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/application/ApplicationQueryRequestV2.java @@ -28,4 +28,7 @@ public class ApplicationQueryRequestV2 extends PageBaseDTO { @ApiModelProperty("更新时间结束") private String updateEndTime; + + @ApiModelProperty("部门id") + private Long deptId; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/datasource/DataSourceQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/datasource/DataSourceQueryRequest.java index ef7834e0fc..ddc2adde55 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/datasource/DataSourceQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/datasource/DataSourceQueryRequest.java @@ -31,4 +31,6 @@ public class DataSourceQueryRequest extends PagingDevice { @ApiModelProperty("数据源地址") @Size(max = 100) private String jdbcUrl; + + private Long deptId; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java index 95781e160a..82b1c36f52 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/linkmanage/BusinessFlowPageQueryRequest.java @@ -11,4 +11,7 @@ public class BusinessFlowPageQueryRequest extends PagingDevice { @ApiModelProperty("业务流程名称") private String businessFlowName; + + @ApiModelProperty("部门id") + private Long deptId; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployPageQueryRequest.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployPageQueryRequest.java index f841acd01a..4bfa03ac0d 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployPageQueryRequest.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/request/scriptmanage/ScriptManageDeployPageQueryRequest.java @@ -45,4 +45,6 @@ public class ScriptManageDeployPageQueryRequest extends PagingDevice { @JsonProperty("businessFlow") private String businessFlowId; + private Long deptId; + } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListByUpgradeResponse.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListByUpgradeResponse.java index cdacdbf2dc..6024fbeb80 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListByUpgradeResponse.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListByUpgradeResponse.java @@ -21,4 +21,6 @@ public class ApplicationListByUpgradeResponse { private Date gmtUpdate; + private Long deptId; + } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListResponseV2.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListResponseV2.java index b4caa18905..7847f85ee3 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListResponseV2.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/pojo/response/application/ApplicationListResponseV2.java @@ -3,6 +3,7 @@ import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import io.shulie.takin.web.ext.entity.AuthQueryResponseCommonExt; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -11,7 +12,7 @@ * @date 2021/12/8 4:02 下午 */ @Data -public class ApplicationListResponseV2 { +public class ApplicationListResponseV2 extends AuthQueryResponseCommonExt { /** * 不是表id diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ApplicationService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ApplicationService.java index 87ce247119..81fa5d8248 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ApplicationService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ApplicationService.java @@ -38,7 +38,7 @@ public interface ApplicationService { * @param userIdList * @return */ - List getApplicationsByUserIdList(List userIdList); + List getApplicationsByUserIdList(List userIdList, List deptIdList); /** * 带租户 @@ -298,6 +298,11 @@ public interface ApplicationService { */ PagingList pageApplication(ApplicationQueryRequestV2 request); + /** + * ee中调用 + * @param request + * @return + */ PagingList listApplicationByUpgrade(ApplicationListByUpgradeRequest request); Response operateCheck(List appIds, String operate); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ConfCenterService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ConfCenterService.java index ef0cb9b7ad..950fceb6b5 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ConfCenterService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/ConfCenterService.java @@ -257,7 +257,7 @@ private void addApplication(ApplicationCreateParam tApplicationMnt) { tApplicationMnt.setApplicationId(snowflake.next()); tApplicationMnt.setCacheExpTime( StringUtils.isEmpty(tApplicationMnt.getCacheExpTime()) ? "0" : tApplicationMnt.getCacheExpTime()); - + tApplicationMnt.setDeptId(WebPluginUtils.traceDeptId()); applicationDAO.insert(tApplicationMnt); try { @@ -730,41 +730,6 @@ public List queryBlackListByIds(List blistIds) { return tBListMntDao.queryBListByIds(blistIdList); } - /** - * 说明: 查询黑名单列表 - * - * @param bListQueryParam redis的key和负责人工号 - * @return 黑名单列表集合 - * @author shulie - */ - public Response queryBlackList(BListQueryParam bListQueryParam) { - Map paramMap = new HashMap<>(); - paramMap.put("pageNum", bListQueryParam.getCurrentPage()); - paramMap.put("pageSize", bListQueryParam.getPageSize()); - String redisKey = bListQueryParam.getRedisKey(); - PageHelper.startPage(PageInfo.getPageNum(paramMap), PageInfo.getPageSize(paramMap)); - List queryBlackList = tBListMntDao.queryBList(redisKey, "", WebPluginUtils.getQueryAllowUserIdList()); - if (CollectionUtils.isNotEmpty(queryBlackList)) { - for (TBList tbList : queryBlackList) { - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList)) { - tbList.setCanEdit(allowUpdateUserIdList.contains(tbList.getUserId())); - } - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowDeleteUserIdList)) { - tbList.setCanRemove(allowDeleteUserIdList.contains(tbList.getUserId())); - } - List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { - tbList.setCanEnableDisable(allowEnableDisableUserIdList.contains(tbList.getUserId())); - } - } - } - PageInfo pageInfo = new PageInfo<>(queryBlackList.isEmpty() ? Lists.newArrayList() : queryBlackList); - Response response = Response.success(pageInfo.getList(), - CollectionUtils.isEmpty(pageInfo.getList()) ? 0 : pageInfo.getTotal()); - return response; - } /** * 说明: 查询白名单列表,只供agent拦截使用,只选择USE_YN=1的白名单 @@ -2023,20 +1988,32 @@ public Response queryBList(BListQueryParam bListQueryParam) { paramMap.put("pageSize", bListQueryParam.getPageSize()); String redisKey = bListQueryParam.getRedisKey(); PageHelper.startPage(PageInfo.getPageNum(paramMap), PageInfo.getPageSize(paramMap)); - List queryBList = tBListMntDao.queryBList(redisKey, "", WebPluginUtils.getQueryAllowUserIdList()); + List queryBList = tBListMntDao.queryBList(redisKey, "", WebPluginUtils.queryAllowUserIdList(), WebPluginUtils.queryAllowDeptIdList()); if (CollectionUtils.isNotEmpty(queryBList)) { for (TBList tbList : queryBList) { - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList)) { - tbList.setCanEdit(allowUpdateUserIdList.contains(tbList.getUserId())); + List allowUpdateUserIdList = WebPluginUtils.updateAllowUserIdList(); + List allowUpdateDeptIdList = WebPluginUtils.updateAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowUpdateUserIdList) && !allowUpdateUserIdList.contains(tbList.getUserId())) { + tbList.setCanEdit(false); + } + if (CollectionUtils.isNotEmpty(allowUpdateDeptIdList) && !allowUpdateDeptIdList.contains(tbList.getDeptId())) { + tbList.setCanEdit(false); + } + List allowDeleteUserIdList = WebPluginUtils.deleteAllowUserIdList(); + List allowDeleteDeptIdList = WebPluginUtils.deleteAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowDeleteUserIdList) && !allowDeleteUserIdList.contains(tbList.getUserId())) { + tbList.setCanRemove(false); + } + if (CollectionUtils.isNotEmpty(allowDeleteDeptIdList) && !allowDeleteDeptIdList.contains(tbList.getDeptId())) { + tbList.setCanRemove(false); } - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowDeleteUserIdList)) { - tbList.setCanRemove(allowDeleteUserIdList.contains(tbList.getUserId())); + List allowEnableDisableUserIdList = WebPluginUtils.enableDisableAllowUserIdList(); + List allowEnableDisableDeptIdList = WebPluginUtils.enableDisableAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList) && !allowEnableDisableUserIdList.contains(tbList.getUserId())) { + tbList.setCanEnableDisable(false); } - List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { - tbList.setCanEnableDisable(allowEnableDisableUserIdList.contains(tbList.getUserId())); + if (CollectionUtils.isNotEmpty(allowEnableDisableDeptIdList) && !allowEnableDisableDeptIdList.contains(tbList.getDeptId())) { + tbList.setCanEnableDisable(false); } } } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/fastagentaccess/impl/AgentConfigServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/fastagentaccess/impl/AgentConfigServiceImpl.java index 24dcbbd113..349fdaa4e7 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/fastagentaccess/impl/AgentConfigServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/fastagentaccess/impl/AgentConfigServiceImpl.java @@ -130,10 +130,10 @@ public List> getAllGlobalKey() { @Override public List getAllApplication(String keyword) { - List userIdList = WebPluginUtils.getQueryAllowUserIdList(); + List userIdList = WebPluginUtils.queryAllowUserIdList(); + List deptIdList = WebPluginUtils.queryAllowDeptIdList(); List applicationMntList = applicationDAO.getApplicationMntByUserIdsAndKeyword( - userIdList, - keyword); + userIdList, deptIdList, keyword); return applicationMntList.stream().map(ApplicationDetailResult::getApplicationName).collect( Collectors.toList()); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ActivityServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ActivityServiceImpl.java index a3b9586e46..68fe2904f2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ActivityServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ActivityServiceImpl.java @@ -532,6 +532,7 @@ public PagingList pageActivities(ActivityQueryRequest requ param.setCurrent(request.getCurrent()); param.setPageSize(request.getPageSize()); param.setType(request.getType()); + param.setDeptId(request.getDeptId()); WebPluginUtils.fillQueryParam(param); PagingList activityListResultPagingList = activityDAO.pageActivities(param); @@ -553,6 +554,7 @@ public PagingList pageActivities(ActivityQueryRequest requ response.setCanDelete(result.getCanDelete()); response.setBusinessDomain(result.getBusinessDomain()); response.setActivityLevel(result.getActivityLevel()); + response.setDeptId(result.getDeptId()); WebPluginUtils.fillQueryResponse(response); return response; }).collect(Collectors.toList()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java index 085cc4c27c..d0964e7fa2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ApplicationServiceImpl.java @@ -306,8 +306,8 @@ public void init() { } @Override - public List getApplicationsByUserIdList(List userIdList) { - return applicationDAO.getApplicationListByUserIds(userIdList); + public List getApplicationsByUserIdList(List userIdList, List deptIdList) { + return applicationDAO.getApplicationListByUserIds(userIdList, deptIdList); } //3.添加定时任务 @@ -973,9 +973,10 @@ public String getUserSwitchStatusForVo() { @Override public List getApplicationName() { - List userIdList = WebPluginUtils.getQueryAllowUserIdList(); + List userIdList = WebPluginUtils.queryAllowUserIdList(); + List deptIdList = WebPluginUtils.queryAllowDeptIdList(); List applicationDetailResultList = applicationDAO.getApplicationListByUserIds( - userIdList); + userIdList, deptIdList); if (CollectionUtils.isEmpty(applicationDetailResultList)) { return Lists.newArrayList(); } @@ -1378,7 +1379,8 @@ public PagingList pageApplication(ApplicationQueryReq QueryApplicationParam queryApplicationParam = BeanUtil.copyProperties(request, QueryApplicationParam.class); queryApplicationParam.setTenantId(WebPluginUtils.traceTenantId()); queryApplicationParam.setEnvCode(WebPluginUtils.traceEnvCode()); - queryApplicationParam.setUserIds(WebPluginUtils.getQueryAllowUserIdList()); + queryApplicationParam.setUserIds(WebPluginUtils.queryAllowUserIdList()); + queryApplicationParam.setDeptIds(WebPluginUtils.queryAllowDeptIdList()); queryApplicationParam.setUpdateStartTime(request.getUpdateStartTime()); queryApplicationParam.setUpdateEndTime(request.getUpdateEndTime()); IPage applicationListResultPage = applicationDAO.pageByParam(queryApplicationParam); @@ -1408,7 +1410,8 @@ public PagingList listApplicationByUpgrade(App QueryApplicationByUpgradeParam param = BeanUtil.copyProperties(request, QueryApplicationByUpgradeParam.class); param.setTenantId(WebPluginUtils.traceTenantId()); param.setEnvCode(WebPluginUtils.traceEnvCode()); - param.setUserIds(WebPluginUtils.getQueryAllowUserIdList()); + param.setUserIds(WebPluginUtils.queryAllowUserIdList()); + param.setDeptIds(WebPluginUtils.queryAllowDeptIdList()); IPage applicationList = applicationDAO.getApplicationList(param); if (applicationList.getTotal() == 0) { return PagingList.empty(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/DataSourceServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/DataSourceServiceImpl.java index b72f697616..9ba2d1f7ef 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/DataSourceServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/DataSourceServiceImpl.java @@ -112,6 +112,7 @@ public void createDatasource(DataSourceCreateRequest createRequest) { createParam.setUsername(username); // 4、密码加密(AES128) createParam.setPassword(AESUtil.encrypt(password)); + createParam.setDeptId(WebPluginUtils.traceDeptId()); dataSourceDAO.insert(createParam); } @@ -136,7 +137,7 @@ public void updateDatasource(DataSourceUpdateRequest updateRequest) { throw new TakinWebException(ExceptionCode.DATASOURCE_UPDATE_ERROR, "不支持的数据源类型"); } // 3、判断当前登录用户是否有更新权限 - if (!checkUpdatePermission(idResult.getUserId())) { + if (!checkUpdatePermission(idResult.getUserId(),idResult.getDeptId())) { throw new TakinWebException(ExceptionCode.DATASOURCE_UPDATE_ERROR, "更新权限不足"); } // 4、除过本id外,检查名称是否重复 @@ -174,8 +175,9 @@ public void deleteDatasource(List datasourceIds) { if (CollectionUtils.isNotEmpty(dataSourceResultList)) { List userIdList = dataSourceResultList.stream().map(DataSourceResult::getUserId).collect( Collectors.toList()); + List deptIdList = dataSourceResultList.stream().map(DataSourceResult::getDeptId).collect(Collectors.toList()); // 判断数据源的权限、状态等情况; - if (!checkDeletePermission(userIdList)) { + if (!checkDeletePermission(userIdList,deptIdList)) { throw new TakinWebException(ExceptionCode.DATASOURCE_DELETE_ERROR, "数据权限不足"); } // 删除数据源 @@ -239,6 +241,7 @@ public PagingList listDatasource(DataSourceQueryRequest } queryParam.setName(name); queryParam.setJdbcUrl(jdbcUrl); + queryParam.setDeptId(queryParam.getDeptId()); if (CollectionUtils.isNotEmpty(filterDataSourceIdList)) { queryParam.setDataSourceIdList(filterDataSourceIdList); } @@ -463,21 +466,29 @@ private Boolean checkIsExistDataSource(Long id) { return Boolean.FALSE; } - private Boolean checkUpdatePermission(Long userId) { - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList) - && !allowUpdateUserIdList.contains(userId)) { + private Boolean checkUpdatePermission(Long userId, Long deptId) { + List allowUpdateUserIdList = WebPluginUtils.updateAllowUserIdList(); + List allowUpdateDeptIdList = WebPluginUtils.updateAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowUpdateUserIdList) && !allowUpdateUserIdList.contains(userId)) { + return Boolean.FALSE; + } + if (CollectionUtils.isNotEmpty(allowUpdateDeptIdList) && !allowUpdateDeptIdList.contains(deptId)){ return Boolean.FALSE; } return Boolean.TRUE; } - private Boolean checkDeletePermission(List userIdList) { - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); + private Boolean checkDeletePermission(List userIdList, List deptIdList) { + List allowDeleteUserIdList = WebPluginUtils.deleteAllowUserIdList(); + List allowDeleteDeptIdList = WebPluginUtils.deleteAllowDeptIdList(); if (CollectionUtils.isNotEmpty(allowDeleteUserIdList) && !allowDeleteUserIdList.containsAll(userIdList)) { return Boolean.FALSE; } + if (CollectionUtils.isNotEmpty(allowDeleteDeptIdList) + && !allowDeleteDeptIdList.containsAll(deptIdList)) { + return Boolean.FALSE; + } return Boolean.TRUE; } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/OpsScriptManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/OpsScriptManageServiceImpl.java index 8470739ae1..0a895c22e6 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/OpsScriptManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/OpsScriptManageServiceImpl.java @@ -121,9 +121,8 @@ public void init() { @Override public PagingList page(OpsScriptParam param) { PageUtils.clearPageHelper(); - List userIdList = WebPluginUtils.getQueryAllowUserIdList(); + //运维脚本已不使用,不做权限改造 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(!CollectionUtils.isEmpty(userIdList), OpsScriptManageEntity::getUserId, userIdList); wrapper.orderByDesc(OpsScriptManageEntity::getGmtCreate); IPage listPage = opsScriptManageDAO.findListPage(param, wrapper); List opsScriptVOList = Lists.newArrayList(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ShadowConsumerServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ShadowConsumerServiceImpl.java index 6381118ef4..7826c49a34 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ShadowConsumerServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/impl/ShadowConsumerServiceImpl.java @@ -150,9 +150,6 @@ public PagingList pageMqConsumers(ShadowConsumerQueryInput lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getStatus, request.getEnabled() ? ShadowConsumerConstants.ENABLE : ShadowConsumerConstants.DISABLE); } - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - lambdaQueryWrapper.in(ShadowMqConsumerEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); - } List totalResult; lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getApplicationId, request.getApplicationId()); lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getDeleted, ShadowConsumerConstants.LIVED); @@ -664,9 +661,6 @@ public PagingList pageMqConsumersV2(ShadowConsumerQueryInp // if (StringUtils.isNotBlank(request.getShadowConsumerEnable())) { // lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getStatus, request.getShadowConsumerEnable()); // } - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - lambdaQueryWrapper.in(ShadowMqConsumerEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); - } List totalResult; lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getApplicationId, request.getApplicationId()); lambdaQueryWrapper.eq(ShadowMqConsumerEntity::getDeleted, ShadowConsumerConstants.LIVED); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/interfaceperformance/impl/PerformanceConfigServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/interfaceperformance/impl/PerformanceConfigServiceImpl.java index 03b4610a93..0c7f3d3c87 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/interfaceperformance/impl/PerformanceConfigServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/interfaceperformance/impl/PerformanceConfigServiceImpl.java @@ -99,6 +99,7 @@ public Long add(PerformanceConfigCreateInput input) { insertConfigEntity.setGmtModified(new Date()); // 设置归属人未当前创建人 insertConfigEntity.setUserId(WebPluginUtils.traceUserId()); + insertConfigEntity.setDeptId(WebPluginUtils.traceDeptId()); // 新增配置信息 Long returnObj = performanceConfigDAO.add(insertConfigEntity); /** @@ -186,7 +187,13 @@ public PagingList query(PerformanceConfigQueryRequest reque BeanUtils.copyProperties(request, param); AuthQueryParamCommonExt ext = new AuthQueryParamCommonExt(); WebPluginUtils.fillQueryParam(ext); - param.setUserIdList(ext.getUserIdList()); + if (CollectionUtils.isNotEmpty(ext.getUserIdList())){ + param.setUserIdList(ext.getUserIdList()); + } + if (CollectionUtils.isNotEmpty(ext.getDeptIdList())){ + param.setDeptIdList(ext.getDeptIdList()); + } + PagingList dtoPagingList = performanceConfigDAO.pageList(param); //转换下 List source = dtoPagingList.getList(); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/AppRemoteCallServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/AppRemoteCallServiceImpl.java index 44d6228260..be7f0378ab 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/AppRemoteCallServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/AppRemoteCallServiceImpl.java @@ -198,11 +198,7 @@ public void update(AppRemoteCallUpdateInput input) { @Override public void batchConfig(AppRemoteCallConfigRequest request) { - if (WebPluginUtils.validateAdmin()) { - appRemoteCallDAO.updateListSelective(request.getType(), request.getAppIds(), null); - } else { - appRemoteCallDAO.updateListSelective(request.getType(), request.getAppIds(), WebPluginUtils.getUpdateAllowUserIdList()); - } + appRemoteCallDAO.updateListSelective(request.getType(), request.getAppIds(), null); } @Override @@ -382,27 +378,27 @@ private PagingList getDbPagingList(AppRemoteCallQueryInput } /** - * 权限填充 用应用权限来控制 + * 权限填充 用应用权限来控制, 应用内部不再做一次权限控制 */ private void fillInPermissions(AppRemoteCallListVO listVO, ApplicationDetailResult detailResult) { - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isEmpty(allowUpdateUserIdList)) { - //管理员 - listVO.setCanEdit(true); - } else { - //普通用户 - listVO.setCanEdit(allowUpdateUserIdList.contains(detailResult.getUserId())); - } - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - if (CollectionUtils.isEmpty(allowDeleteUserIdList)) { - listVO.setCanRemove(true); - } else { - listVO.setCanRemove(allowDeleteUserIdList.contains(detailResult.getUserId())); - } - List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { - listVO.setCanEnableDisable(allowEnableDisableUserIdList.contains(detailResult.getUserId())); - } +// List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); +// if (CollectionUtils.isEmpty(allowUpdateUserIdList)) { +// //管理员 +// listVO.setCanEdit(true); +// } else { +// //普通用户 +// listVO.setCanEdit(allowUpdateUserIdList.contains(detailResult.getUserId())); +// } +// List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); +// if (CollectionUtils.isEmpty(allowDeleteUserIdList)) { +// listVO.setCanRemove(true); +// } else { +// listVO.setCanRemove(allowDeleteUserIdList.contains(detailResult.getUserId())); +// } +// List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); +// if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { +// listVO.setCanEnableDisable(allowEnableDisableUserIdList.contains(detailResult.getUserId())); +// } } @Override diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/ApplicationApiServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/ApplicationApiServiceImpl.java index 840b6bce24..db1c63210b 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/ApplicationApiServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/ApplicationApiServiceImpl.java @@ -229,8 +229,8 @@ public Response query(EntranceApiVo vo) { ApplicationApiQueryParam manage = new ApplicationApiQueryParam(); manage.setApplicationName(vo.getApplicationName()); manage.setApi(vo.getApi()); - - List dataList = applicationApiDAO.selectBySelective(manage, WebPluginUtils.getQueryAllowUserIdList()); + manage.setDeptId(vo.getDeptId()); + List dataList = applicationApiDAO.selectBySelective(manage, WebPluginUtils.queryAllowUserIdList(), WebPluginUtils.queryAllowDeptIdList() ); dataList.sort(Comparator.comparing(ApplicationApiManageResult::getCreateTime).reversed()); List pageData = @@ -240,13 +240,21 @@ public Response query(EntranceApiVo vo) { ApplicationApiManageVO dto = new ApplicationApiManageVO(); BeanUtils.copyProperties(data, dto); dto.setRequestMethod(data.getMethod()); - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList)) { - dto.setCanEdit(allowUpdateUserIdList.contains(data.getUserId())); + List allowUpdateUserIdList = WebPluginUtils.updateAllowUserIdList(); + List allowUpdateDeptIdList = WebPluginUtils.updateAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowUpdateUserIdList) && !allowUpdateUserIdList.contains(data.getUserId())) { + dto.setCanEdit(false); + } + if (CollectionUtils.isNotEmpty(allowUpdateDeptIdList) && !allowUpdateDeptIdList.contains(data.getDeptId())) { + dto.setCanEdit(false); + } + List allowDeleteUserIdList = WebPluginUtils.deleteAllowUserIdList(); + List allowDeleteDeptIdList = WebPluginUtils.deleteAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(allowDeleteUserIdList) && !allowDeleteUserIdList.contains(data.getUserId())) { + dto.setCanRemove(false); } - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowDeleteUserIdList)) { - dto.setCanRemove(allowDeleteUserIdList.contains(data.getUserId())); + if (CollectionUtils.isNotEmpty(allowDeleteDeptIdList) && !allowDeleteDeptIdList.contains(data.getDeptId())) { + dto.setCanRemove(false); } dtoList.add(dto); }); @@ -304,6 +312,7 @@ public Response create(ApiCreateVo vo) { createParam.setIsDeleted((byte) 0); createParam.setEnvCode(WebPluginUtils.traceEnvCode()); createParam.setTenantId(WebPluginUtils.traceTenantId()); + createParam.setDeptId(WebPluginUtils.traceDeptId()); boolean status = applicationApiDAO.check(vo.getApplicationName(), DictionaryCache.getObjectByParam(HTTP_METHOD_TYPE, Integer.parseInt(vo.getMethod())).getLabel(), vo.getApi()); if (status) return Response.fail("重复添加"); // 把旧的记录删除了,新的再添加 diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkGuardServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkGuardServiceImpl.java index 92d8851904..28628286e2 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkGuardServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkGuardServiceImpl.java @@ -75,7 +75,7 @@ public Response addGuard(LinkGuardVo vo) { if (vo.getApplicationId() != null && !vo.getApplicationId().isEmpty()) { param.setAppId(Long.valueOf(vo.getApplicationId())); } - List dbList = tLinkGuardMapper.selectByExample(param, WebPluginUtils.getQueryAllowUserIdList()); + List dbList = tLinkGuardMapper.selectByExample(param, null); if (dbList != null && dbList.size() > 0) { return Response.fail(FALSE_CORE, "同一个methodInfo只能设置一个挡板"); } @@ -167,7 +167,7 @@ public Response> selectByExample(LinkGuardQueryParam param) { } } } - list = tLinkGuardMapper.selectByExample(param, WebPluginUtils.getQueryAllowUserIdList()); + list = tLinkGuardMapper.selectByExample(param, null); if (null != list && list.size() > 0) { if (param.getCurrentPage() == null || param.getPageSize() == null) { @@ -198,7 +198,7 @@ public Response> selectAll() { try { LinkGuardQueryParam param = new LinkGuardQueryParam(); param.setIsEnable(true); - list = tLinkGuardMapper.selectByExample(param, WebPluginUtils.getQueryAllowUserIdList()); + list = tLinkGuardMapper.selectByExample(param,null); } catch (Exception e) { log.error(e.getMessage(), e); return Response.fail(FALSE_CORE, "查询挡板失败", null); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java index 2c2acba759..b810e5bb00 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/LinkManageServiceImpl.java @@ -355,7 +355,8 @@ public Response getBussisnessLinks(BusinessQueryVo vo) { queryVo.setIsChange(vo.getIschange()); queryVo.setSystemProcessName(vo.getTechLinkName()); queryVo.setDomain(vo.getDomain()); - List queryResult = tBusinessLinkManageTableMapper.selectBussinessLinkListBySelective2(queryVo, WebPluginUtils.getQueryAllowUserIdList()); + //老版本接口已经使用了 + List queryResult = tBusinessLinkManageTableMapper.selectBussinessLinkListBySelective2(queryVo, null); //用户ids List userIds = queryResult.stream() .map(BusinessLinkDto::getUserId) @@ -558,7 +559,7 @@ private void enableBusinessActiveCanDelte(List businessLinkIds) { @Override public Response> getScenes(SceneQueryVo vo) { - List sceneDtos = tSceneMapper.selectByRelatedQuery(vo, WebPluginUtils.getQueryAllowUserIdList()); + List sceneDtos = tSceneMapper.selectByRelatedQuery(vo, null); List pageData = PageUtils.getPage(true, vo.getCurrentPage(), vo.getPageSize(), sceneDtos); if (CollectionUtils.isEmpty(sceneDtos)) { return Response.success(pageData, 0); @@ -936,6 +937,7 @@ private Long addScene(BusinessFlowVo vo) { param.setIsCore(Integer.parseInt(vo.getIsCore())); param.setIsChanged(0); param.setIsDeleted(0); + param.setDeptId(WebPluginUtils.traceDeptId()); sceneDAO.insert(param); return param.getId(); } diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/WhiteListServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/WhiteListServiceImpl.java index ef2eb45dea..a0b517afd5 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/WhiteListServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/linkmanage/impl/WhiteListServiceImpl.java @@ -568,16 +568,9 @@ public PageInfo queryWhitelist(WhiteListQueryVO vo) { // 重名白名单 List existWhite = getExistWhite(armdString, Lists.newArrayList()); + //去掉白名单中的权限限制,只留手工和非手工的 for (WhiteListVO dto : resList) { - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); if (dto.getIsDbValue()) { - if (CollectionUtils.isEmpty(allowUpdateUserIdList)) { - //管理员 - dto.setCanEdit(true); - } else { - //普通用户 - dto.setCanEdit(allowUpdateUserIdList.contains(dto.getUserId())); - } //手动新增的白名单才能编辑 if (dto.getIsHandwork() == null) { dto.setIsHandwork(true); @@ -594,13 +587,7 @@ public PageInfo queryWhitelist(WhiteListQueryVO vo) { // 补充标签 dto.setTags(getTags(existWhite, dto)); - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); if (dto.getIsDbValue()) { - if (CollectionUtils.isEmpty(allowDeleteUserIdList)) { - dto.setCanRemove(true); - } else { - dto.setCanRemove(allowDeleteUserIdList.contains(dto.getUserId())); - } // 非手工,不允许编辑 if (!dto.getIsHandwork()) { dto.setCanEdit(false); @@ -609,10 +596,6 @@ public PageInfo queryWhitelist(WhiteListQueryVO vo) { dto.setCanRemove(false); } - List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { - dto.setCanEnableDisable(allowEnableDisableUserIdList.contains(dto.getUserId())); - } } PageInfo whiteListDtoPageInfo = new PageInfo<>(resList); whiteListDtoPageInfo.setTotal(totalResult.size()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/report/impl/ReportServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/report/impl/ReportServiceImpl.java index a3dbf4567f..e84dce73bc 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/report/impl/ReportServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/report/impl/ReportServiceImpl.java @@ -103,9 +103,12 @@ public ResponseResult> listReport(ReportQueryParam param) { ResponseResult> reportResponseList = cloudReportApi.listReport(new ReportQueryReq() {{ setSceneId(param.getSceneId()); setReportId(param.getReportId()); + setDeptId(param.getDeptId()); setSceneName(param.getSceneName()); setStartTime(param.getStartTime()); setEndTime(param.getEndTime()); + setUserIds(WebPluginUtils.queryAllowUserIdList()); + setDeptIds(WebPluginUtils.queryAllowDeptIdList()); setPageSize(param.getPageSize()); setPageNumber(param.getCurrentPage() + 1); setFilterSql(String.join(",", userIdList)); @@ -193,17 +196,6 @@ public ReportDetailTempOutput tempReportDetail(Long sceneId) { ReportDetailTempOutput output = new ReportDetailTempOutput(); BeanUtils.copyProperties(result, output); - List allowStartStopUserIdList = WebPluginUtils.getStartStopAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowStartStopUserIdList)) { - Long userId = output.getUserId(); - if (userId == null || !allowStartStopUserIdList.contains(userId)) { - output.setCanStartStop(Boolean.FALSE); - } else { - output.setCanStartStop(Boolean.TRUE); - } - } else { - output.setCanStartStop(Boolean.TRUE); - } fillExecuteMan(output); return output; diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java index 4c569d57f3..a57a8d2e22 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scene/impl/SceneServiceImpl.java @@ -310,6 +310,7 @@ public SceneCreateParam saveBusinessFlow(Integer source, String testName, List getBusinessFlowList(BusinessFlowPage queryParam.setSceneName(flowName == null ? null : flowName.replace("%", "\\%").replace("-", "\\-").replace("_", "\\_")); queryParam.setCurrent(queryRequest.getCurrent()); queryParam.setPageSize(queryRequest.getPageSize()); + queryParam.setDeptId(queryRequest.getDeptId()); WebPluginUtils.fillQueryParam(queryParam); queryParam.setIgnoreType(SceneTypeEnum.PERFORMANCE_AUTO_SCENE.getType()); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ScriptManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ScriptManageServiceImpl.java index 5fbd0cc082..fdcf79bbde 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ScriptManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ScriptManageServiceImpl.java @@ -1349,10 +1349,15 @@ public PagingList pageQueryScriptManage( scriptManageDeployPageQueryParam.setCurrent(scriptManageDeployPageQueryRequest.getCurrent()); scriptManageDeployPageQueryParam.setPageSize(scriptManageDeployPageQueryRequest.getPageSize()); scriptManageDeployPageQueryParam.setScriptType(0); - List userIdList = WebPluginUtils.getQueryAllowUserIdList(); + List userIdList = WebPluginUtils.queryAllowUserIdList(); if (CollectionUtils.isNotEmpty(userIdList)) { scriptManageDeployPageQueryParam.setUserIdList(userIdList); } + List deptIdList = WebPluginUtils.queryAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(deptIdList)){ + scriptManageDeployPageQueryParam.setDeptIdList(deptIdList); + } + scriptManageDeployPageQueryParam.setDeptId(scriptManageDeployPageQueryRequest.getDeptId()); PagingList scriptManageDeployResults = scriptManageDAO .pageQueryRecentScriptManageDeploy( scriptManageDeployPageQueryParam); @@ -1365,9 +1370,6 @@ public PagingList pageQueryScriptManage( .collect(Collectors.toList()); //用户信息Map key:userId value:user对象 Map userMap = WebPluginUtils.getUserMapByIds(userIds); - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - List allowDownloadUserIdList = WebPluginUtils.getDownloadAllowUserIdList(); List scriptManageDeployResponses = scriptManageDeployResults.getList().stream() .map(scriptManageDeployResult -> { ScriptManageDeployResponse scriptManageDeployResponse = new ScriptManageDeployResponse(); @@ -1378,8 +1380,6 @@ public PagingList pageQueryScriptManage( .map(UserExt::getName).orElse(""); scriptManageDeployResponse.setUserName(userName); - WebPluginUtils.fillQueryResponse(scriptManageDeployResponse); - //m1版本不能在脚本管理页面进行编辑和删除操作 if (ScriptMVersionEnum.isM_1(scriptManageDeployResult.getMVersion())) { scriptManageDeployResponse.setCanEdit(false); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ShellScriptManageServiceImpl.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ShellScriptManageServiceImpl.java index 873e9d9503..0b7911c01e 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ShellScriptManageServiceImpl.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/scriptmanage/ShellScriptManageServiceImpl.java @@ -345,10 +345,14 @@ public PagingList pageQueryScriptManage(ShellScriptMana queryParam.setPageSize(input.getPageSize()); // 脚本类型 queryParam.setScriptType(1); - List userIdList = WebPluginUtils.getQueryAllowUserIdList(); + List userIdList = WebPluginUtils.queryAllowUserIdList(); if (CollectionUtils.isNotEmpty(userIdList)) { queryParam.setUserIdList(userIdList); } + List deptIdList = WebPluginUtils.queryAllowDeptIdList(); + if (CollectionUtils.isNotEmpty(deptIdList)) { + queryParam.setDeptIdList(deptIdList); + } PagingList scriptManageDeployResults = scriptManageDAO .pageQueryRecentScriptManageDeploy(queryParam); if (CollectionUtils.isEmpty(scriptManageDeployResults.getList())) { @@ -359,23 +363,13 @@ public PagingList pageQueryScriptManage(ShellScriptMana ScriptManageDeployResult::getUserId).collect(Collectors.toList()); //用户信息Map key:userId value:user对象 Map userMap = WebPluginUtils.getUserMapByIds(userIds); - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); + List outputs = scriptManageDeployResults.getList().stream().map( scriptManageDeployResult -> { ShellScriptManageOutput shellScriptManageOutput = new ShellScriptManageOutput(); BeanUtils.copyProperties(scriptManageDeployResult, shellScriptManageOutput); shellScriptManageOutput.setScripDeployId(scriptManageDeployResult.getId()); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList)) { - shellScriptManageOutput.setCanEdit( - allowUpdateUserIdList.contains(scriptManageDeployResult.getUserId())); - } - if (CollectionUtils.isNotEmpty(allowDeleteUserIdList)) { - shellScriptManageOutput.setCanRemove( - allowDeleteUserIdList.contains(scriptManageDeployResult.getUserId())); - } - //负责人id shellScriptManageOutput.setUserId(scriptManageDeployResult.getUserId()); //负责人名称 @@ -383,6 +377,7 @@ public PagingList pageQueryScriptManage(ShellScriptMana .map(UserExt::getName) .orElse(""); shellScriptManageOutput.setUserName(userName); + WebPluginUtils.fillQueryResponse(shellScriptManageOutput); return shellScriptManageOutput; }).collect(Collectors.toList()); setTagList(outputs); diff --git a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/simplify/ShadowJobConfigService.java b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/simplify/ShadowJobConfigService.java index ebd1c9123e..485ca27590 100644 --- a/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/simplify/ShadowJobConfigService.java +++ b/takin-web-biz-service/src/main/java/io/shulie/takin/web/biz/service/simplify/ShadowJobConfigService.java @@ -212,7 +212,6 @@ public Response queryByPage(ShadowJobConfigQuery query) { if (StringUtils.isBlank(query.getOrderBy())) { query.setOrderBy("id desc"); } - query.setUserIds(WebPluginUtils.getQueryAllowUserIdList()); List tShadowJobConfigs = tShadowJobConfigMapper.selectList(query); PageInfo pageInfo = new PageInfo<>(tShadowJobConfigs); List configVos = new ArrayList<>(); @@ -229,18 +228,7 @@ public Response queryByPage(ShadowJobConfigQuery query) { vo.setActive(tShadowJobConfig.getActive()); vo.setUpdateTime(tShadowJobConfig.getUpdateTime()); vo.setRemark(tShadowJobConfig.getRemark()); - List allowUpdateUserIdList = WebPluginUtils.getUpdateAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowUpdateUserIdList)) { - vo.setCanEdit(allowUpdateUserIdList.contains(tShadowJobConfig.getUserId())); - } - List allowDeleteUserIdList = WebPluginUtils.getDeleteAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowDeleteUserIdList)) { - vo.setCanRemove(allowDeleteUserIdList.contains(tShadowJobConfig.getUserId())); - } - List allowEnableDisableUserIdList = WebPluginUtils.getEnableDisableAllowUserIdList(); - if (CollectionUtils.isNotEmpty(allowEnableDisableUserIdList)) { - vo.setCanEnableDisable(allowEnableDisableUserIdList.contains(tShadowJobConfig.getUserId())); - } + vo.setUserId(tShadowJobConfig.getUserId()); WebPluginUtils.fillQueryResponse(vo); configVos.add(vo); @@ -260,7 +248,6 @@ public List queryByAppName(String appName) { query.setOrderBy("id desc"); } query.setApplicationId(tApplicationMnt.getApplicationId()); - query.setUserIds(WebPluginUtils.getQueryAllowUserIdList()); List tShadowJobConfigs = tShadowJobConfigMapper.selectList(query); try { for (TShadowJobConfig tShadowJobConfig : tShadowJobConfigs) { diff --git a/takin-web-bom/pom.xml b/takin-web-bom/pom.xml index 12f39863ed..1778fcbbfc 100644 --- a/takin-web-bom/pom.xml +++ b/takin-web-bom/pom.xml @@ -5,11 +5,11 @@ 4.0.0 io.shulie.takin takin-web-bom - takin-web-5.9.0 + takin-web-5.10.2 pom - takin-web-5.9.0 + takin-web-5.10.2 1.0.3 diff --git a/takin-web-common/pom.xml b/takin-web-common/pom.xml index 4eeab85547..83a06ceb63 100644 --- a/takin-web-common/pom.xml +++ b/takin-web-common/pom.xml @@ -19,7 +19,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.2 ../pom.xml takin-web-common diff --git a/takin-web-common/src/main/java/io/shulie/takin/cloud/common/bean/scenemanage/SceneManageQueryBean.java b/takin-web-common/src/main/java/io/shulie/takin/cloud/common/bean/scenemanage/SceneManageQueryBean.java index b324b7fc98..5b13f0c039 100644 --- a/takin-web-common/src/main/java/io/shulie/takin/cloud/common/bean/scenemanage/SceneManageQueryBean.java +++ b/takin-web-common/src/main/java/io/shulie/takin/cloud/common/bean/scenemanage/SceneManageQueryBean.java @@ -41,4 +41,10 @@ public class SceneManageQueryBean extends ContextExt { private Integer isArchive; private List statusList; + + private Long deptId; + + private List userIdList; + + private List deptIdList; } diff --git a/takin-web-data/pom.xml b/takin-web-data/pom.xml index f2ec98e079..94bd1702ed 100644 --- a/takin-web-data/pom.xml +++ b/takin-web-data/pom.xml @@ -21,7 +21,7 @@ io.shulie.takin takin-web - takin-web-5.9.0 + takin-web-5.10.2 ../pom.xml takin-web-data diff --git a/takin-web-data/src/main/java/com/pamirs/takin/cloud/entity/domain/dto/report/CloudReportDTO.java b/takin-web-data/src/main/java/com/pamirs/takin/cloud/entity/domain/dto/report/CloudReportDTO.java index 5378c5a080..d8e8564630 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/cloud/entity/domain/dto/report/CloudReportDTO.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/cloud/entity/domain/dto/report/CloudReportDTO.java @@ -46,4 +46,6 @@ public class CloudReportDTO extends ContextExt { @ApiModelProperty(value = "压测不通过的原因") private String errorMsg; + private Long deptId; + } diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/dao/confcenter/TBListMntDao.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/dao/confcenter/TBListMntDao.java index df8f7ff42a..ba380d013b 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/dao/confcenter/TBListMntDao.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/dao/confcenter/TBListMntDao.java @@ -43,7 +43,7 @@ public interface TBListMntDao { * @author shulie */ List queryBList(@Param("redisKey") String redisKey, - @Param("principalNo") String principalNo,@Param("userIds") List userIds); + @Param("principalNo") String principalNo,@Param("userIds") List userIds, @Param("deptIds") List deptIds); /** * 说明: 根据id查询黑名单信息 diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/dto/scenemanage/SceneManageWrapperDTO.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/dto/scenemanage/SceneManageWrapperDTO.java index a724ae9040..2e140a8bff 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/dto/scenemanage/SceneManageWrapperDTO.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/dto/scenemanage/SceneManageWrapperDTO.java @@ -82,6 +82,7 @@ public class SceneManageWrapperDTO implements Serializable { @ApiModelProperty(name = "scheduleInterval", value = "漏数时间间隔") private Integer scheduleInterval; + private Long deptId; /** * 是否是绝对脚本路径 */ diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/entity/TBList.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/entity/TBList.java index 8a0a03e8f5..f440083656 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/entity/TBList.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/entity/TBList.java @@ -25,6 +25,7 @@ public class TBList extends BaseEntity { @ApiModelProperty(name = "useYn", value = "是否启用:1启用 0禁用") private String useYn; + private Long deptId; private Boolean canEdit = true; @@ -126,6 +127,14 @@ public void setCanEnableDisable(Boolean canEnableDisable) { this.canEnableDisable = canEnableDisable; } + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + /** * 2018年5月17日 * diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/entracemanage/EntranceApiVo.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/entracemanage/EntranceApiVo.java index 8f395dc3cf..047e722306 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/entracemanage/EntranceApiVo.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/entracemanage/EntranceApiVo.java @@ -17,4 +17,6 @@ public class EntranceApiVo extends PagingDevice { private String applicationName; @ApiModelProperty(name = "api", value = "入口地址") private String api; + @ApiModelProperty(name = "deptId", value = "部门id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/report/ReportQueryParam.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/report/ReportQueryParam.java index e5d02dbd2c..57f277c084 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/report/ReportQueryParam.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/report/ReportQueryParam.java @@ -59,4 +59,7 @@ public class ReportQueryParam extends PagingDevice implements Serializable { */ @ApiModelProperty(value = "报告结束时间") private String reportEndTime; + + @ApiModelProperty(value = "部门id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/scenemanage/SceneManageQueryVO.java b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/scenemanage/SceneManageQueryVO.java index 33a17bd480..070711bfc2 100644 --- a/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/scenemanage/SceneManageQueryVO.java +++ b/takin-web-data/src/main/java/com/pamirs/takin/entity/domain/vo/scenemanage/SceneManageQueryVO.java @@ -41,4 +41,10 @@ public class SceneManageQueryVO extends PagingContextExt { private Long configId; + private Long deptId; + + private List userIdList; + + private List deptIdList; + } diff --git a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/report/ReportDaoImpl.java b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/report/ReportDaoImpl.java index 7a2734523b..53ced08a6e 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/report/ReportDaoImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/report/ReportDaoImpl.java @@ -28,6 +28,7 @@ import io.shulie.takin.cloud.ext.content.enums.NodeTypeEnum; import io.shulie.takin.cloud.ext.content.script.ScriptNode; import io.shulie.takin.web.common.util.RedisClientUtil; +import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -58,6 +59,7 @@ public int insert(ReportInsertParam param) { entity.setGmtCreate(insertDate); entity.setGmtUpdate(insertDate); entity.setStartTime(insertDate); + entity.setDeptId(WebPluginUtils.traceDeptId()); return reportMapper.insert(entity); } return 0; diff --git a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/scene/manage/impl/SceneManageDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/scene/manage/impl/SceneManageDAOImpl.java index fca53f1b30..6bf9fd9770 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/scene/manage/impl/SceneManageDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/dao/scene/manage/impl/SceneManageDAOImpl.java @@ -63,18 +63,7 @@ public SceneManageEntity getSceneById(Long id) { @Override public List getPageList(SceneManageQueryBean queryBean) { - // 补充用户过滤信息信息 - String userIds = ""; - if (StrUtil.isNotBlank(CloudPluginUtils.getContext().getFilterSql())) { - userIds = CloudPluginUtils.getContext().getFilterSql(); - // 去除左右的括号 - if (userIds.lastIndexOf("(") == 0 - && userIds.lastIndexOf(")") == userIds.length() - 1) { - userIds = userIds.substring(1, userIds.length() - 1); - } - } - List userIdList = Arrays.stream(userIds.split(",")) - .filter(StrUtil::isNotBlank).collect(Collectors.toList()); + // 组装查询条件 LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(SceneManageEntity.class) .eq(!Objects.isNull(queryBean.getSceneId()), SceneManageEntity::getId, queryBean.getSceneId()) @@ -87,7 +76,9 @@ public List getPageList(SceneManageQueryBean queryBean) { .eq(Objects.nonNull(queryBean.getIsArchive()), SceneManageEntity::getIsArchive, queryBean.getIsArchive()) .eq(SceneManageEntity::getTenantId, CloudPluginUtils.getContext().getTenantId()) .eq(SceneManageEntity::getEnvCode, CloudPluginUtils.getContext().getEnvCode()) - .in(userIdList.size() > 0, SceneManageEntity::getUserId, userIdList) + .eq(!Objects.isNull(queryBean.getDeptId()),SceneManageEntity::getDeptId, queryBean.getDeptId()) + .in(!CollectionUtils.isEmpty(queryBean.getUserIdList()), SceneManageEntity::getUserId, queryBean.getUserIdList()) + .in(!CollectionUtils.isEmpty(queryBean.getDeptIdList()), SceneManageEntity::getDeptId, queryBean.getDeptIdList()) .orderByDesc(SceneManageEntity::getLastPtTime) .orderByDesc(SceneManageEntity::getId); return this.baseMapper.selectList(wrapper); diff --git a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/param/scenemanage/SceneManageCreateOrUpdateParam.java b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/param/scenemanage/SceneManageCreateOrUpdateParam.java index 143fda335a..22c29fe91e 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/cloud/data/param/scenemanage/SceneManageCreateOrUpdateParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/cloud/data/param/scenemanage/SceneManageCreateOrUpdateParam.java @@ -40,4 +40,6 @@ public class SceneManageCreateOrUpdateParam extends ContextExt { private String ptConfig; + private Long deptId; + } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/activity/impl/ActivityDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/activity/impl/ActivityDAOImpl.java index 78c2b2bf91..5da0fea0c6 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/activity/impl/ActivityDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/activity/impl/ActivityDAOImpl.java @@ -152,6 +152,7 @@ public Long createActivityNew(ActivityCreateParam param) { businessLinkManageTableEntity.setBindBusinessId(param.getBindBusinessId()); } businessLinkManageTableEntity.setPersistence(param.isPersistence()); + businessLinkManageTableEntity.setDeptId(WebPluginUtils.traceDeptId()); businessLinkManageTableMapper.insert(businessLinkManageTableEntity); param.setLinkId(businessLinkManageTableEntity.getLinkId()); return businessLinkManageTableEntity.getLinkId(); @@ -321,6 +322,9 @@ public PagingList pageActivities(ActivityQueryParam param) { page.setOrders(Lists.newArrayList(OrderItem.desc("CREATE_TIME"))); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (param.getDeptId() != null){ + lambdaQueryWrapper.eq(BusinessLinkManageTableEntity::getDeptId, param.getDeptId()); + } if (StringUtils.isNotBlank(param.getActivityName())) { lambdaQueryWrapper.like(BusinessLinkManageTableEntity::getLinkName, param.getActivityName()); } @@ -336,6 +340,9 @@ public PagingList pageActivities(ActivityQueryParam param) { if (CollectionUtils.isNotEmpty(param.getUserIdList())) { lambdaQueryWrapper.in(BusinessLinkManageTableEntity::getUserId, param.getUserIdList()); } + if (CollectionUtils.isNotEmpty(param.getDeptIdList())) { + lambdaQueryWrapper.in(BusinessLinkManageTableEntity::getDeptId, param.getDeptIdList()); + } if(param.getType() != null) { lambdaQueryWrapper.eq(BusinessLinkManageTableEntity::getType, param.getType()); } @@ -376,6 +383,7 @@ public PagingList pageActivities(ActivityQueryParam param) { result.setCreateTime(entity.getCreateTime()); result.setUpdateTime(entity.getUpdateTime()); result.setBusinessDomain(entity.getBusinessDomain()); + result.setDeptId(entity.getDeptId()); result.setCanDelete(entity.getCanDelete()); if (entity.getRelatedTechLink() != null) { LinkManageTableEntity linkManageTableEntity = linkMap.get( @@ -469,6 +477,7 @@ private ActivityListResult toListResult(BusinessLinkManageTableEntity entity) { r.setIsDeleted(entity.getIsDeleted()); r.setEntrace(entity.getEntrace()); r.setUserId(entity.getUserId()); + r.setDeptId(entity.getDeptId()); r.setCreateTime(entity.getCreateTime()); r.setUpdateTime(entity.getUpdateTime()); r.setBusinessDomain(entity.getBusinessDomain()); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAO.java index 7005360c58..03d6318f15 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAO.java @@ -101,7 +101,8 @@ public interface ApplicationApiDAO { * @param userIds 用户主键 * @return 数据项 */ - List selectBySelective(@Param("record") ApplicationApiQueryParam record, @Param("userIds") List userIds); + List selectBySelective(@Param("record") ApplicationApiQueryParam record, + @Param("userIds") List userIds, @Param("deptIds") List deptIds); /** * 批量新增 diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAOImpl.java index dcc4e623ac..258d77e653 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationApiDAOImpl.java @@ -45,6 +45,7 @@ public int insert(ApplicationApiCreateParam param) { entity.setTenantId(param.getTenantId()); entity.setUserId(param.getUserId()); entity.setIsAgentRegiste(param.getIsAgentRegiste()); + entity.setDeptId(param.getDeptId()); return apiManageMapper.insert(entity); } @@ -137,8 +138,8 @@ public List querySimpleWithTenant(ApplicationApiPara } @Override - public List selectBySelective(ApplicationApiQueryParam record, List userIds) { - List query = apiManageMapper.selectBySelective(record, userIds); + public List selectBySelective(ApplicationApiQueryParam record, List userIds, List deptIds) { + List query = apiManageMapper.selectBySelective(record, userIds, deptIds); if (CollectionUtils.isEmpty(query)) { return Lists.newArrayList(); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAO.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAO.java index 37511d998b..538809b336 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAO.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAO.java @@ -80,7 +80,7 @@ public interface ApplicationDAO { * @param userIdList * @return */ - List getApplicationListByUserIds(List userIdList); + List getApplicationListByUserIds(List userIdList, List deptIdList); /** * 获取应用 @@ -268,7 +268,7 @@ public interface ApplicationDAO { * @param keyword * @return */ - List getApplicationMntByUserIdsAndKeyword(List userIds, String keyword); + List getApplicationMntByUserIdsAndKeyword(List userIds, List deptIdList, String keyword); /** * 判断是否存在 diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAOImpl.java index 459191eaa7..877ff34ffd 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/application/ApplicationDAOImpl.java @@ -254,12 +254,15 @@ private List toAppResult(List applicationR } @Override - public List getApplicationListByUserIds(List userIdList) { + public List getApplicationListByUserIds(List userIdList, List deptIdList) { List applicationDetailResultList = Lists.newArrayList(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (!CollectionUtils.isEmpty(userIdList)) { wrapper.in(ApplicationMntEntity::getUserId, userIdList); } + if (!CollectionUtils.isEmpty(deptIdList)) { + wrapper.in(ApplicationMntEntity::getDeptId, deptIdList); + } List entityList = applicationMntMapper.selectList(wrapper); if (CollectionUtils.isEmpty(entityList)) { return applicationDetailResultList; @@ -312,8 +315,11 @@ public List getApplicationList(ApplicationQueryParam pa public List getAllApplicationName(ApplicationQueryParam param) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.select(ApplicationMntEntity::getApplicationName); - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - wrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowUserIdList())) { + wrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.queryAllowUserIdList()); + } + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowDeptIdList())) { + wrapper.in(ApplicationMntEntity::getDeptId, WebPluginUtils.queryAllowDeptIdList()); } List entities = applicationMntMapper.selectList(wrapper); return entities.stream() @@ -521,8 +527,11 @@ public List getDashboardAppData() { queryWrapper.select(ApplicationMntEntity::getApplicationId, ApplicationMntEntity::getApplicationName, ApplicationMntEntity::getNodeNum, ApplicationMntEntity::getAgentVersion); - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowUserIdList())) { + queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.queryAllowUserIdList()); + } + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowDeptIdList())) { + queryWrapper.in(ApplicationMntEntity::getDeptId, WebPluginUtils.queryAllowDeptIdList()); } List applicationMntEntities = applicationMntMapper.selectList(queryWrapper); if (CollectionUtils.isEmpty(applicationMntEntities)) { @@ -541,10 +550,10 @@ public List getAllApplicationByStatus(List sta } @Override - public List getApplicationMntByUserIdsAndKeyword(List userIds, String keyword) { + public List getApplicationMntByUserIdsAndKeyword(List userIds, List deptIdList, String keyword) { List allApplications = applicationMntMapper.getApplicationMntByUserIdsAndKeyword(userIds, - keyword); + deptIdList, keyword); if (CollectionUtils.isEmpty(allApplications)) { return Lists.newArrayList(); } @@ -565,8 +574,11 @@ public PagingList queryApplicationList(ApplicationQuery if (CollectionUtils.isNotEmpty(queryParam.getApplicationIds())) { queryWrapper.in(ApplicationMntEntity::getApplicationId, queryParam.getApplicationIds()); } - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowUserIdList())) { + queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.queryAllowUserIdList()); + } + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowDeptIdList())) { + queryWrapper.in(ApplicationMntEntity::getDeptId, WebPluginUtils.queryAllowDeptIdList()); } queryWrapper.orderByDesc(ApplicationMntEntity::getApplicationId); if (queryParam.getPageSize() > 0) { @@ -644,8 +656,11 @@ public String getIdByName(String applicationName) { @Override public Long getApplicationCount() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowUserIdList())) { + queryWrapper.in(ApplicationMntEntity::getUserId, WebPluginUtils.queryAllowUserIdList()); + } + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowDeptIdList())) { + queryWrapper.in(ApplicationMntEntity::getDeptId, WebPluginUtils.queryAllowDeptIdList()); } return applicationMntMapper.selectCount(queryWrapper); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/blacklist/BlackListDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/blacklist/BlackListDAOImpl.java index 340e485fb6..0c30369268 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/blacklist/BlackListDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/blacklist/BlackListDAOImpl.java @@ -20,6 +20,7 @@ import io.shulie.takin.web.data.param.blacklist.BlacklistUpdateParam; import io.shulie.takin.web.data.result.blacklist.BlacklistResult; import io.shulie.takin.web.ext.entity.tenant.TenantCommonExt; +import io.shulie.takin.web.ext.util.WebPluginUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -45,6 +46,7 @@ public int insert(BlackListCreateParam param) { entity.setUseYn(param.getUseYn()); entity.setGmtCreate(param.getCreateTime()); entity.setGmtModified(param.getUpdateTime()); + entity.setDeptId(WebPluginUtils.traceDeptId()); return blackListMapper.insert(entity); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/datasource/DataSourceDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/datasource/DataSourceDAOImpl.java index a5877568f5..74594d0e89 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/datasource/DataSourceDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/datasource/DataSourceDAOImpl.java @@ -60,9 +60,15 @@ public PagingList selectPage(DataSourceQueryParam queryParam) if (CollectionUtils.isNotEmpty(queryParam.getDataSourceIdList())) { wrapper.in(TakinDbresourceEntity::getId, queryParam.getDataSourceIdList()); } + if (queryParam.getDeptId() != null){ + wrapper.eq(TakinDbresourceEntity::getDeptId, queryParam.getDeptId()); + } // 数据权限 - if (CollectionUtils.isNotEmpty(WebPluginUtils.getQueryAllowUserIdList())) { - wrapper.in(TakinDbresourceEntity::getUserId, WebPluginUtils.getQueryAllowUserIdList()); + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowUserIdList())) { + wrapper.in(TakinDbresourceEntity::getUserId, WebPluginUtils.queryAllowUserIdList()); + } + if (CollectionUtils.isNotEmpty(WebPluginUtils.queryAllowDeptIdList())) { + wrapper.in(TakinDbresourceEntity::getDeptId, WebPluginUtils.queryAllowDeptIdList()); } Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize()); wrapper.orderByDesc(TakinDbresourceEntity::getUpdateTime); @@ -134,6 +140,7 @@ public DataSourceResult selectSingle(DataSourceSingleQueryParam queryParam) { dataSourceResult.setCreateTime(datasourceEntity.getCreateTime()); dataSourceResult.setUpdateTime(datasourceEntity.getUpdateTime()); dataSourceResult.setUserId(datasourceEntity.getUserId()); + dataSourceResult.setDeptId(datasourceEntity.getDeptId()); return dataSourceResult; } return null; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java index 11b13fc801..1bd4e2b400 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/linkmanage/SceneDAOImpl.java @@ -148,9 +148,15 @@ public PagingList selectPageList(ScenePageQueryParam param) { if (!StringUtils.isEmpty(param.getSceneName())) { lambdaQueryWrapper.like(SceneEntity::getSceneName, "\\" + param.getSceneName()); } + if (param.getDeptId() != null){ + lambdaQueryWrapper.eq(SceneEntity::getDeptId, param.getDeptId()); + } if (CollectionUtils.isNotEmpty(param.getUserIdList())) { lambdaQueryWrapper.in(SceneEntity::getUserId, param.getUserIdList()); } + if (CollectionUtils.isNotEmpty(param.getDeptIdList())) { + lambdaQueryWrapper.in(SceneEntity::getDeptId, param.getDeptIdList()); + } if (param.getIgnoreType() != null) { lambdaQueryWrapper.ne(SceneEntity::getType, param.getIgnoreType()); } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/scriptmanage/impl/ScriptManageDAOImpl.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/scriptmanage/impl/ScriptManageDAOImpl.java index 7c737a9143..ac39c77d45 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/scriptmanage/impl/ScriptManageDAOImpl.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/dao/scriptmanage/impl/ScriptManageDAOImpl.java @@ -35,6 +35,7 @@ import io.shulie.takin.web.data.result.scriptmanage.ScriptExecuteResult; import io.shulie.takin.web.data.result.scriptmanage.ScriptManageDeployResult; import io.shulie.takin.web.data.result.scriptmanage.ScriptManageResult; +import io.shulie.takin.web.ext.util.WebPluginUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -114,6 +115,7 @@ public ScriptManageDeployResult createScriptManageDeploy(ScriptManageDeployCreat scriptManageEntity.setScriptVersion(scriptManageDeployCreateParam.getScriptVersion()); scriptManageEntity.setFeature(scriptManageDeployCreateParam.getFeature()); scriptManageEntity.setMVersion(scriptManageDeployCreateParam.getMVersion()); + scriptManageEntity.setDeptId(WebPluginUtils.traceDeptId()); scriptManageMapper.insert(scriptManageEntity); scriptManageDeployCreateParam.setScriptId(scriptManageEntity.getId()); } @@ -247,6 +249,12 @@ public PagingList pageQueryRecentScriptManageDeploy( if (CollectionUtils.isNotEmpty(param.getUserIdList())) { wrapper.in(ScriptManageEntity::getUserId, param.getUserIdList()); } + if (CollectionUtils.isNotEmpty(param.getDeptIdList())) { + wrapper.in(ScriptManageEntity::getDeptId, param.getDeptIdList()); + } + if (param.getDeptId() != null){ + wrapper.eq(ScriptManageEntity::getDeptId, param.getDeptId()); + } Page scriptManageEntityPage = scriptManageMapper.selectPage(page, wrapper); if (scriptManageEntityPage == null) { return PagingList.empty(); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationApiManageMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationApiManageMapper.java index de77179679..2ed3f7f916 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationApiManageMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationApiManageMapper.java @@ -28,7 +28,8 @@ public interface ApplicationApiManageMapper extends BaseMapper querySimpleWithTenant(ApplicationApiParam apiParam); - List selectBySelective(@Param("record") ApplicationApiQueryParam record, @Param("userIds") List userIds); + List selectBySelective(@Param("record") ApplicationApiQueryParam record, + @Param("userIds") List userIds, @Param("deptIds") List deptIds); int insertBatch(@Param("list") List list); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationMntMapper.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationMntMapper.java index 5ceecda850..14d6850dc3 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationMntMapper.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/mapper/mysql/ApplicationMntMapper.java @@ -58,7 +58,7 @@ void updateAppNodeNum(@Param("param") NodeNumParam param, @Param("envCode") Stri List getAllApplicationByStatus(@Param("statusList") List statusList); List getApplicationMntByUserIdsAndKeyword(@Param("userIds") List userIds, - @Param("keyword") String keyword); + @Param("deptIds") List deptIds,@Param("keyword") String keyword); List getAllApplications(); diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationApiManageEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationApiManageEntity.java index 1072d99a0e..4c090cff86 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationApiManageEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationApiManageEntity.java @@ -69,4 +69,7 @@ public class ApplicationApiManageEntity extends UserBaseEntity { @TableField(value = "is_agent_registe") private Integer isAgentRegiste; + + @TableField(value = "dept_id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationMntEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationMntEntity.java index d9ee325048..e0019089b8 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationMntEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ApplicationMntEntity.java @@ -142,4 +142,10 @@ public class ApplicationMntEntity extends UserBaseEntity { @TableField(value = "PRADAR_VERSION") private String pradarVersion; + /** + * 部门id + */ + @TableField(value = "dept_id") + private Long deptId; + } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BlackListEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BlackListEntity.java index 4b18c9e31d..fa298f4d28 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BlackListEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BlackListEntity.java @@ -77,4 +77,7 @@ public class BlackListEntity extends UserBaseEntity { private String principalNo; private String value; + + @TableField(value = "dept_id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BusinessLinkManageTableEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BusinessLinkManageTableEntity.java index 8ee612b422..151f857056 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BusinessLinkManageTableEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/BusinessLinkManageTableEntity.java @@ -128,4 +128,10 @@ public class BusinessLinkManageTableEntity extends UserBaseEntity { @TableField(value = "persistence") private boolean persistence = true; + + /** + * 部门id + */ + @TableField(value = "dept_id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/InterfacePerformanceConfigEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/InterfacePerformanceConfigEntity.java index c4b644da57..73dc4681ed 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/InterfacePerformanceConfigEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/InterfacePerformanceConfigEntity.java @@ -121,6 +121,9 @@ public class InterfacePerformanceConfigEntity extends TenantBaseEntity { @TableField(value = "user_id") private Long userId; + @TableField(value = "dept_id") + private Long deptId; + /** * 修改人 */ diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/SceneEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/SceneEntity.java index 89a75441b1..3b3eecfda1 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/SceneEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/SceneEntity.java @@ -103,4 +103,10 @@ public class SceneEntity extends UserBaseEntity { @TableField(value = "features") private String features; + + /** + * 部门id + */ + @TableField(value = "dept_id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ScriptManageEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ScriptManageEntity.java index 8e98aaf558..f6331e6d5b 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ScriptManageEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/ScriptManageEntity.java @@ -60,4 +60,9 @@ public class ScriptManageEntity extends UserBaseEntity { @TableField(value = "sign",fill = FieldFill.INSERT) private String sign; + /** + * 部门id + */ + @TableField(value = "dept_id") + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/TakinDbresourceEntity.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/TakinDbresourceEntity.java index 08d37fb2c0..15d8d916d0 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/TakinDbresourceEntity.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/model/mysql/TakinDbresourceEntity.java @@ -71,6 +71,9 @@ public class TakinDbresourceEntity extends UserBaseEntity { @TableField(value = "is_deleted") private Boolean isDeleted; + @TableField(value = "dept_id") + private Long deptId; + public static final String COL_ID = "id"; public static final String COL_TYPE = "type"; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/activity/ActivityQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/activity/ActivityQueryParam.java index 14b0969e2e..c53fbe2256 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/activity/ActivityQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/activity/ActivityQueryParam.java @@ -46,4 +46,9 @@ public class ActivityQueryParam extends AuthQueryParamCommonExt { * 类型 */ private Integer type; + + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiCreateParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiCreateParam.java index 29184ecd53..d8508ab32e 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiCreateParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiCreateParam.java @@ -44,6 +44,8 @@ public class ApplicationApiCreateParam extends TenantCommonExt { */ private Long userId; + private Long deptId; + /** * 是否有效 0:有效;1:无效 */ diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiQueryParam.java index 9a5241909c..471e1f20ce 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/ApplicationApiQueryParam.java @@ -52,4 +52,6 @@ public class ApplicationApiQueryParam extends TenantCommonExt { private String method; private Integer isAgentRegiste; + + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationByUpgradeParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationByUpgradeParam.java index 785e3fd4b4..6c6f791bfb 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationByUpgradeParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationByUpgradeParam.java @@ -24,6 +24,7 @@ public class QueryApplicationByUpgradeParam extends PageBaseDTO { private List appIds; private List userIds; + private List deptIds; private Long tenantId; private String envCode; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationParam.java index 30899c9175..0ca7702b80 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/application/QueryApplicationParam.java @@ -26,6 +26,10 @@ public class QueryApplicationParam extends PageBaseDTO { private List userIds; + private List deptIds; + + private Long deptId; + private Long tenantId; private String envCode; diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceCreateParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceCreateParam.java index 9cccaccfab..9f979b9064 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceCreateParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceCreateParam.java @@ -32,4 +32,9 @@ public class DataSourceCreateParam { * 数据源密码 */ private String password; + + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceQueryParam.java index d107538a6c..8dec6f2ba4 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/datasource/DataSourceQueryParam.java @@ -30,4 +30,9 @@ public class DataSourceQueryParam extends PagingDevice { * 数据源id集合 */ private List dataSourceIdList; + + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/interfaceperformance/PerformanceConfigQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/interfaceperformance/PerformanceConfigQueryParam.java index 32f30f7995..919c94d45a 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/interfaceperformance/PerformanceConfigQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/interfaceperformance/PerformanceConfigQueryParam.java @@ -15,4 +15,6 @@ public class PerformanceConfigQueryParam extends PageBaseDTO { private String queryName; private List userIdList; + + private List deptIdList; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java index 0d8f495cbc..3031356f25 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/linkmanage/SceneCreateParam.java @@ -76,4 +76,8 @@ public class SceneCreateParam extends ContextExt { */ private Integer totalNodeNum; + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java index 6b678b918e..3b20ca3790 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scene/ScenePageQueryParam.java @@ -12,4 +12,6 @@ public class ScenePageQueryParam extends AuthQueryParamCommonExt { private String sceneName; private Integer ignoreType; + + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scriptmanage/ScriptManageDeployPageQueryParam.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scriptmanage/ScriptManageDeployPageQueryParam.java index c5332121d9..ad38a97999 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scriptmanage/ScriptManageDeployPageQueryParam.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/param/scriptmanage/ScriptManageDeployPageQueryParam.java @@ -45,6 +45,10 @@ public class ScriptManageDeployPageQueryParam extends PagingDevice { */ private List userIdList; + private List deptIdList; + + private Long deptId; + /** * 脚本类型 */ diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/activity/ActivityListResult.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/activity/ActivityListResult.java index 03eb450547..e06fbf96ab 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/activity/ActivityListResult.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/activity/ActivityListResult.java @@ -101,4 +101,9 @@ public class ActivityListResult { * 应用名 */ private String applicationName; + + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResult.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResult.java index 9844a02f80..93cf584ee9 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResult.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResult.java @@ -22,6 +22,8 @@ public class ApplicationListResult { private Date updateTime; + private Long deptId; + private Integer accessStatus; /** diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResultByUpgrade.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResultByUpgrade.java index 06394138f9..1635e08204 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResultByUpgrade.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/application/ApplicationListResultByUpgrade.java @@ -20,4 +20,5 @@ public class ApplicationListResultByUpgrade { private Integer nodeNum; + private Long deptId; } diff --git a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/datasource/DataSourceResult.java b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/datasource/DataSourceResult.java index 34b0895765..ffc0d952e2 100644 --- a/takin-web-data/src/main/java/io/shulie/takin/web/data/result/datasource/DataSourceResult.java +++ b/takin-web-data/src/main/java/io/shulie/takin/web/data/result/datasource/DataSourceResult.java @@ -68,4 +68,9 @@ public class DataSourceResult extends TenantCommonExt { * 是否有效 0:有效;1:无效 */ private Boolean isDeleted; + + /** + * 部门id + */ + private Long deptId; } diff --git a/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/cloud/report/TReportMapper.xml b/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/cloud/report/TReportMapper.xml index 033b332e93..007a68af9d 100644 --- a/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/cloud/report/TReportMapper.xml +++ b/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/cloud/report/TReportMapper.xml @@ -122,9 +122,24 @@ and `tenant_id` = #{param.tenantId} + + and `dept_id` = #{param.deptId} + and `env_code` = #{param.envCode} + + AND user_id IN + + #{userId} + + + + AND dept_id IN + + #{deptId} + + order by id desc diff --git a/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/confcenter/tBListMntMapper.xml b/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/confcenter/tBListMntMapper.xml index ace105878b..eb56a40687 100644 --- a/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/confcenter/tBListMntMapper.xml +++ b/takin-web-data/src/main/resources/com/pamirs/takin/entity/mapper/confcenter/tBListMntMapper.xml @@ -35,7 +35,8 @@ CREATE_TIME, UPDATE_TIME, tenant_id, - USER_ID + USER_ID, + dept_id from t_black_list @@ -48,6 +49,12 @@ #{userId} + + AND dept_id IN + + #{deptId} + + order by UPDATE_TIME desc diff --git a/takin-web-data/src/main/resources/mappers/ApplicationApiManageMapper.xml b/takin-web-data/src/main/resources/mappers/ApplicationApiManageMapper.xml index d141111bf7..ac632ac4de 100644 --- a/takin-web-data/src/main/resources/mappers/ApplicationApiManageMapper.xml +++ b/takin-web-data/src/main/resources/mappers/ApplicationApiManageMapper.xml @@ -13,11 +13,12 @@ + ID, APPLICATION_ID, APPLICATION_NAME, CREATE_TIME, UPDATE_TIME, IS_DELETED, api, - `method`,USER_ID,TENANT_ID,ENV_CODE + `method`,USER_ID,TENANT_ID,ENV_CODE,dept_id diff --git a/takin-web-data/src/main/resources/mappers/ApplicationMntMapper.xml b/takin-web-data/src/main/resources/mappers/ApplicationMntMapper.xml index 518ce896c0..9f7f0f4040 100644 --- a/takin-web-data/src/main/resources/mappers/ApplicationMntMapper.xml +++ b/takin-web-data/src/main/resources/mappers/ApplicationMntMapper.xml @@ -71,6 +71,12 @@ #{item,jdbcType=BIGINT} + + AND dept_id in + + #{item,jdbcType=BIGINT} + + AND APPLICATION_NAME LIKE CONCAT('%',#{keyword,jdbcType=VARCHAR},'%') @@ -371,7 +377,7 @@