diff --git a/pom.xml b/pom.xml index 9003ee4..48cbdf3 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ srt-cloud-gateway srt-data-development srt-cloud-data-governance + srt-cloud-data-service srt-cloud-data-server diff --git a/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java b/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java index 65f1dee..4284f79 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java @@ -18,6 +18,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; public class GovernanceApplication { public static void main(String[] args) { SpringApplication.run(GovernanceApplication.class, args); + System.out.println("原神启动!!!!!!!!!!!!!"); } } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityConfigController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityConfigController.java index 1bc216a..ffc1fdb 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityConfigController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityConfigController.java @@ -7,7 +7,7 @@ import net.srt.framework.common.page.PageResult; import net.srt.framework.common.utils.Result; import net.srt.query.QualityConfigQuery; import net.srt.service.QualityConfigService; -import net.srt.vo.QualityConfigVo; +import net.srt.vo.QualityConfigVO; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -28,26 +28,26 @@ public class QualityConfigController { @GetMapping("page") @Operation(summary = "分页") - public Result> page(@Valid QualityConfigQuery query){ - PageResult page= qualityConfigService.page(query); + public Result> page(@Valid QualityConfigQuery query){ + PageResult page= qualityConfigService.page(query); return Result.ok(page); } @GetMapping("{id}") @Operation(summary = "信息") - public Result get(@PathVariable("id") Long id){ + public Result get(@PathVariable("id") Long id){ return Result.ok(qualityConfigService.get(id)); } @PostMapping @Operation(summary = "保存") - public Result save(@RequestBody QualityConfigVo vo){ + public Result save(@RequestBody QualityConfigVO vo){ qualityConfigService.save(vo); return Result.ok(); } @PutMapping @Operation(summary = "修改") - public Result update(@RequestBody @Valid QualityConfigVo vo){ + public Result update(@RequestBody @Valid QualityConfigVO vo){ qualityConfigService.update(vo); return Result.ok(); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java index 20ae5b2..2c9b45d 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java @@ -2,6 +2,10 @@ package net.srt.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import net.srt.convert.StandardConvert; +import net.srt.entity.DatastandardEntity; +import net.srt.entity.StandardEntity; +import net.srt.framework.common.utils.BeanUtil; import net.srt.framework.common.utils.Result; import net.srt.framework.common.utils.TreeNodeVo; import net.srt.service.StandardService; @@ -9,6 +13,8 @@ import net.srt.vo.StandardManagementVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; /** @@ -30,6 +36,13 @@ public class StandardController { return Result.ok(standardService.listTree()); } + @GetMapping("{id}") + @Operation(summary = "信息") + public Result get(@PathVariable("id") Long id){ + StandardEntity entity = standardService.getById(id); + + return Result.ok(StandardConvert.INSTANCE.convert(entity)); + } @PostMapping @Operation(summary = "保存") @@ -45,9 +58,9 @@ public class StandardController { return Result.ok(); } - @DeleteMapping + @DeleteMapping("/{id}") @Operation(summary = "删除") - public Result delete(Long id) { + public Result delete(@PathVariable Long id) { standardService.delete(id); return Result.ok(); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityConfigConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityConfigConvert.java index 9e07e73..6e4456d 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityConfigConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityConfigConvert.java @@ -1,7 +1,7 @@ package net.srt.convert; import net.srt.entity.QualityConfigEntity; -import net.srt.vo.QualityConfigVo; +import net.srt.vo.QualityConfigVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -17,9 +17,9 @@ import java.util.List; public interface QualityConfigConvert { QualityConfigConvert INSTANCE = Mappers.getMapper(QualityConfigConvert.class); - QualityConfigVo convert(QualityConfigEntity entity); + QualityConfigVO convert(QualityConfigEntity entity); - QualityConfigEntity convert(QualityConfigVo vo); + QualityConfigEntity convert(QualityConfigVO vo); - List convertList(List list); + List convertList(List list); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java index adc6acc..b2dcb0f 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java @@ -12,5 +12,4 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface StandardDao extends BaseMapper { - } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java index 947e95a..cf0c336 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java @@ -25,10 +25,10 @@ public class BusinessInitializer implements ApplicationRunner { * init task monitor */ private void initScheduleMonitor() { - //处理没执行完的采集任务 - metadataCollectRecordService.dealNotFinished(); - //处理没执行完的质量检测任务 - qualityTaskService.dealNotFinished(); +// //处理没执行完的采集任务 +// metadataCollectRecordService.dealNotFinished(); +// //处理没执行完的质量检测任务 +// qualityTaskService.dealNotFinished(); } } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java index a171909..b414aa5 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java @@ -8,25 +8,31 @@ import net.srt.vo.MetadataVO; import java.util.List; +/** + * @BelongsProject: srt_cloud + * @BelongsPackage: net.srt.service + * @Author: jpz + * @CreateTime: 2023/12/24 14:35 + */ + public interface MetadataService extends BaseService { - List listByParentId(Long parentId); + List listByPatenId(Long parentId); List listFloder(); List listDb(); - List listByKeyword(String keyword); + List listKeyword(String keyword); MetadataVO get(Long id); void save(MetadataVO vo); - void update(MetadataVO vo); void delete(Long id); - void upNeo4jInfo(Neo4jInfo neo4jInfo); + void updateNeo4j(Neo4jInfo neo4jInfo); - Neo4jInfo getNeo4jInfo(); + Neo4jInfo getNeo4j(); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/QualityConfigService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/QualityConfigService.java index 553e11e..3d89e28 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/QualityConfigService.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/QualityConfigService.java @@ -4,7 +4,7 @@ import net.srt.entity.QualityConfigEntity; import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.BaseService; import net.srt.query.QualityConfigQuery; -import net.srt.vo.QualityConfigVo; +import net.srt.vo.QualityConfigVO; import java.util.List; @@ -15,13 +15,13 @@ import java.util.List; * @CreateTime: 2023/12/24 19:33 */ public interface QualityConfigService extends BaseService { - PageResult page(QualityConfigQuery query); + PageResult page(QualityConfigQuery query); - QualityConfigVo get(Long id); + QualityConfigVO get(Long id); - void save(QualityConfigVo vo); + void save(QualityConfigVO vo); - void update(QualityConfigVo vo); + void update(QualityConfigVO vo); void online(Long id); diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java index 9dd5d33..e07adbb 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java @@ -38,7 +38,7 @@ public class MetadataServiceImpl extends BaseServiceImpl listByParentId(Long parentId) { + public List listByPatenId(Long parentId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MetadataEntity::getParentId,parentId) .orderByAsc(MetadataEntity::getOrderNo); @@ -93,9 +93,9 @@ public class MetadataServiceImpl extends BaseServiceImpl listByKeyword(String keyword) { + public List listKeyword(String keyword) { if(StringUtil.isBlank(keyword)){ - return listByParentId(0L); + return listByPatenId(0L); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(MetadataEntity::getName,keyword) @@ -171,12 +171,12 @@ public class MetadataServiceImpl extends BaseServiceImpl page(QualityConfigQuery query) { + public PageResult page(QualityConfigQuery query) { IPage page=baseMapper.selectPage(getPage(query),getWrapper(query)); return new PageResult<>(QualityConfigConvert.INSTANCE.convertList(page.getRecords()),page.getTotal()); } @Override - public QualityConfigVo get(Long id) { - QualityConfigVo qualityConfigvo= QualityConfigConvert.INSTANCE.convert(baseMapper.selectById(id)); - List metadataIds=qualityConfigvo.getMetadataIds(); + public QualityConfigVO get(Long id) { + QualityConfigVO QualityConfigVO= QualityConfigConvert.INSTANCE.convert(baseMapper.selectById(id)); + List metadataIds=QualityConfigVO.getMetadataIds(); LambdaQueryWrapper metadataWrapper= Wrappers.lambdaQuery(); metadataWrapper.in(MetadataEntity::getId,metadataIds); List metadataEntities=metadataDao.selectList(metadataWrapper); if (CollectionUtils.isEmpty(metadataEntities)){ - qualityConfigvo.setMetadataStrs("检测字段已删除,请检查数据信息"); + QualityConfigVO.setMetadataStrs("检测字段已删除,请检查数据信息"); }else { - qualityConfigvo.setMetadataStrs(metadataEntities.stream().map(MetadataEntity::getPath).collect(Collectors.joining(";"))); + QualityConfigVO.setMetadataStrs(metadataEntities.stream().map(MetadataEntity::getPath).collect(Collectors.joining(";"))); } - if (BuiltInQualityRule.ASSOCIATION_CONSISTENCY.getId().equals(qualityConfigvo.getRuleId())){ - QualityConfigParam param = qualityConfigvo.getParam(); + if (BuiltInQualityRule.ASSOCIATION_CONSISTENCY.getId().equals(QualityConfigVO.getRuleId())){ + QualityConfigParam param = QualityConfigVO.getParam(); Integer columnMetaId = param.getColumnMetaId(); MetadataEntity entity = metadataDao.selectById(columnMetaId); if (entity!= null){ - qualityConfigvo.setRelMetadataStr(entity.getPath()); + QualityConfigVO.setRelMetadataStr(entity.getPath()); }else { - qualityConfigvo.setMetadataStrs("关联字段已被删除,请检查元数据信息"); + QualityConfigVO.setMetadataStrs("关联字段已被删除,请检查元数据信息"); } } - return qualityConfigvo; + return QualityConfigVO; } @Override - public void save(QualityConfigVo vo) { + public void save(QualityConfigVO vo) { QualityConfigEntity entity=QualityConfigConvert.INSTANCE.convert(vo); entity.setProjectId(getProjectId()); if (!BuiltInQualityRule.UNIQUENESS.getId().equals(entity.getRuleId())&&!BuiltInQualityRule.LENGTH_CHECK.getId().equals(entity.getRuleId())&& !BuiltInQualityRule.ASSOCIATION_CONSISTENCY.getId().equals(entity.getRuleId())&&!BuiltInQualityRule.TIMELINESS.getId().equals(entity.getRuleId())){ @@ -81,7 +79,7 @@ public class QualityConfigServiceimpl extends BaseServiceImpl> page(@Valid ApiConfigQuery query) { - PageResult page = apiConfigService.page(query); // 调用service层方法获取分页结果 - return Result.ok(page); // 封装返回结果并返回 - } + PageResult page = apiConfigService.page(query); - /** - * 根据resourceId分页获取接口配置列表 - * @param query 查询条件 - * @return 符合条件的接口配置列表的分页结果 - */ + return Result.ok(page); + } @GetMapping("page-resource") - @Operation(summary = "根据resourceId分页获取接口配置列表") + @Operation(summary = "根据resourceId分页获取") public Result> pageResource(@Valid ApiConfigQuery query){ - PageResult page = apiConfigService.pageResource(query); // 调用service层方法根据resourceId分页获取接口配置列表 - return Result.ok(page); // 封装返回结果并返回 + PageResult page = apiConfigService.pageResource(query); + + return Result.ok(page); } - /** - * 根据id获取接口配置信息 - * @param id 接口配置id - * @return 对应id的接口配置信息 - */ + @GetMapping("page-auth") + @Operation(summary = "根据resourceId分页获取") + public Result> pageAuth(@Valid ApiConfigQuery query) { + PageResult page = apiConfigService.page(query); + + return Result.ok(page); + } + + @GetMapping("{id}") - @Operation(summary = "根据id获取接口配置信息") + @Operation(summary = "信息") @PreAuthorize("hasAnyAuthority('data-service:api-config:info')") public Result get(@PathVariable("id") Long id){ - ApiConfigEntity entity=apiConfigService.getById(id); // 根据id获取接口配置实体对象 - return Result.ok(ApiConfigConvert.INSTANCE.convert(entity)); // 封装返回结果并返回 + ApiConfigEntity entity=apiConfigService.getById(id); + return Result.ok(ApiConfigConvert.INSTANCE.convert(entity)); } - /** - * 保存接口配置信息 - * @param vo 接口配置信息 - * @return 保存结果 - */ @PostMapping - @Operation(summary = "保存接口配置信息") + @Operation(summary = "保存") @PreAuthorize("hasAnyAuthority('data-service:api-config:save')") public Result save(@RequestBody ApiConfigVo vo) { - apiConfigService.save(vo); // 调用service层方法保存接口配置信息 - return Result.ok(); // 封装返回结果并返回 + apiConfigService.save(vo); + return Result.ok(); } - - /** - * 修改接口配置信息 - * @param vo 接口配置信息 - * @return 修改结果 - */ @PutMapping - @Operation(summary = "修改接口配置信息") + @Operation(summary = "修改") @PreAuthorize("hasAnyAuthority('data-service:api-config:update')") public Result update(@RequestBody ApiConfigVo vo){ - apiConfigService.update(vo); // 调用service层方法修改接口配置信息 - return Result.ok(); // 封装返回结果并返回 + apiConfigService.update(vo); + return Result.ok(); } - - /** - * 删除接口配置信息 - * @param idList 待删除的接口配置id列表 - * @return 删除结果 - */ @DeleteMapping - @Operation(summary = "删除接口配置信息") + @Operation(summary = "删除") @PreAuthorize("hasAnyAuthority('data-service:api-config:delete')") public Result delete(@RequestBody List idList){ - apiConfigService.delete(idList); // 调用service层方法删除接口配置信息 - return Result.ok(); // 封装返回结果并返回 + apiConfigService.delete(idList); + return Result.ok(); } - - /** - * 获取服务的IP和端口号 - * @return IP和端口号 - */ @GetMapping("getIpPort") - @Operation(summary = "获取服务的IP和端口号") public Result getIpPort() { - return Result.ok(apiConfigService.getIpPort()); // 封装返回结果并返回 + return Result.ok(apiConfigService.getIpPort()); } - - /** - * 获取服务的IP和端口号 - * @return IP和端口号 - */ + @Operation(summary = "获取服务的ip和端口号") @GetMapping("/ip-port") - @Operation(summary = "获取服务的IP和端口号") public Result ipPort() { - return Result.ok(apiConfigService.ipPort()); // 封装返回结果并返回 + return Result.ok(apiConfigService.ipPort()); } - - /** - * 上线指定id的接口配置 - * @param id 待上线的接口配置id - * @return 上线结果 - */ - @PutMapping("/{id}/online") - @Operation(summary = "上线指定id的接口配置") + @Operation(summary = "上线") @PreAuthorize("hasAnyAuthority('data-service:api-config:online')") + @PutMapping("/{id}/online") public Result online(@PathVariable Long id) { - apiConfigService.online(id); // 调用service层方法上线指定id的接口配置 - return Result.ok(); // 封装返回结果并返回 + apiConfigService.online(id); + return Result.ok(); } - - /** - * 下线指定id的接口配置 - * @param id 待下线的接口配置id - * @return 下线结果 - */ - @PutMapping("/{id}/offline") - @Operation(summary = "下线指定id的接口配置") + @Operation(summary = "下线") @PreAuthorize("hasAnyAuthority('data-service:api-config:offline')") + @PutMapping("/{id}/offline") public Result offline(@PathVariable Long id){ - apiConfigService.offline(id); // 调用service层方法下线指定id的接口配置 - return Result.ok(); // 封装返回结果并返回 + apiConfigService.offline(id); + return Result.ok(); } - /** - * 执行SQL查询 - * @param dto SQL查询参数 - * @return SQL查询结果 - */ + @Operation(summary = "执行sql") @PostMapping("/sql/execute") - @Operation(summary = "执行SQL查询") public Result sqlExecute(@RequestBody SqlDto dto) { - return Result.ok(apiConfigService.sqlExecute(dto)); // 封装返回结果并返回 + return Result.ok(apiConfigService.sqlExecute(dto)); } - /** - * 导出指定id列表对应的API文档 - * @param ids 待导出API文档的id列表 - * @param response HTTP响应对象 - */ + @Operation(summary = "导出 api 文档") @PostMapping(value = "/export-docs") - @Operation(summary = "导出API文档") public void exportDocs(@RequestBody List ids, HttpServletResponse response) { - apiConfigService.exportDocs(ids, response); // 调用service层方法导出API文档 + apiConfigService.exportDocs(ids, response); } + } diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java index 1d4b9ab..28675b8 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java +++ b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java @@ -28,66 +28,42 @@ import java.util.List; @AllArgsConstructor public class ApiGroupController { private final ApiGroupService apiGroupService; - /** - * 查询文件分组树 - * @return 文件分组树的列表结果 - */ - @GetMapping("api-group") + @GetMapping @Operation(summary = "查询文件分组树") public Result> listTree() { - return Result.ok(apiGroupService.listTree()); // 调用service层方法查询文件分组树并返回结果 + return Result.ok(apiGroupService.listTree()); } - /** - * 根据id获取文件分组信息 - * @param id 文件分组id - * @return 对应id的文件分组信息 - */ @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("hasAuthority('data-service:api-group:info')") public Result get(@PathVariable("id") Long id){ - ApiGroupEntity entity = apiGroupService.getById(id); // 根据id获取文件分组实体对象 - return Result.ok(ApiGroupConvert.INSTANCE.convert(entity)); // 封装返回结果并返回 + ApiGroupEntity entity = apiGroupService.getById(id); + + return Result.ok(ApiGroupConvert.INSTANCE.convert(entity)); } - /** - * 保存文件分组信息 - * @param vo 文件分组信息 - * @return 保存结果 - */ @PostMapping @Operation(summary = "保存") @PreAuthorize("hasAuthority('data-service:api-group:save')") public Result save(@RequestBody ApiGroupVo vo) { - apiGroupService.save(vo); // 调用service层方法保存文件分组信息 - return Result.ok(); // 封装返回结果并返回 + apiGroupService.save(vo); + return Result.ok(); } - /** - * 修改文件分组信息 - * @param vo 文件分组信息 - * @return 修改结果 - */ @PutMapping @Operation(summary = "修改") @PreAuthorize("hasAuthority('data-service:api-group:update')") public Result update(@RequestBody @Valid ApiGroupVo vo) { - apiGroupService.update(vo); // 调用service层方法修改文件分组信息 - return Result.ok(); // 封装返回结果并返回 + apiGroupService.update(vo); + return Result.ok(); } - /** - * 删除文件分组信息 - * @param id 待删除的文件分组id - * @return 删除结果 - */ @DeleteMapping("/{id}") @Operation(summary = "删除") @PreAuthorize("hasAuthority('data-service:api-group:delete')") public Result delete(@PathVariable Long id) { - apiGroupService.delete(id); // 调用service层方法删除文件分组信息 - return Result.ok(); // 封装返回结果并返回 + apiGroupService.delete(id); + return Result.ok(); } - } diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java new file mode 100644 index 0000000..75da63c --- /dev/null +++ b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java @@ -0,0 +1,29 @@ +package net.srt.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import net.srt.dao.DataServiceAppDao; +import net.srt.framework.common.utils.Result; +import net.srt.service.DataServiceAppService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * @ClassName : DataServiceApiController + * @Description : + * @Author : FJJ + * @Date: 2023-12-26 20:38 + */ +@RestController +@RequestMapping("api") +@Tag(name = "api") +@AllArgsConstructor +public class DataServiceApiController { + private final DataServiceAppService dataServiceAppService; + @GetMapping("/token/generate") + public Result tokenGenerate(@RequestParam String appKey, @RequestParam String appSecret) { + return Result.ok(dataServiceAppService.tokenGenerate(appKey, appSecret)); + } +} diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java index 7dbdce9..f77f39d 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java +++ b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java @@ -8,7 +8,9 @@ import net.srt.framework.common.page.PageResult; import net.srt.framework.common.utils.Result; import net.srt.query.DataServiceAppQuery; import net.srt.service.DataServiceAppService; +import net.srt.vo.DataServiceApiAuthVo; import net.srt.vo.DataServiceAppVo; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -61,16 +63,18 @@ public class DataServiceAppController { return Result.ok(); } + + @PostMapping("/auth") @Operation(summary = "添加授权") - public Result addAuth(@RequestBody DataServiceAppVo authVO){ + public Result addAuth(@RequestBody DataServiceApiAuthVo authVO){ dataServiceAppService.addAuth(authVO); return Result.ok(); } @PutMapping("/auth") @Operation(summary = "修改授权") - public Result upAuth(@RequestBody DataServiceAppVo authVO){ + public Result upAuth(@RequestBody DataServiceApiAuthVo authVO){ dataServiceAppService.upAuth(authVO); return Result.ok(); } diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java index fb9bfb4..8e88916 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java +++ b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java @@ -1,10 +1,26 @@ package net.srt.convert; +import net.srt.entity.DataServiceApiAuthEntity; +import net.srt.vo.DataServiceApiAuthVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + /** * @ClassName : DataServiceApiAuthConvert * @Description : * @Author : FJJ - * @Date: 2023-12-26 15:23 + * @Date: 2023-12-26 19:45 */ +@Mapper public interface DataServiceApiAuthConvert { + DataServiceApiAuthConvert INSTANCE = Mappers.getMapper(DataServiceApiAuthConvert.class); + + + DataServiceApiAuthEntity convert(DataServiceApiAuthVo vo); + + DataServiceApiAuthVo convert(DataServiceApiAuthEntity entity); + + List convertList(List list); } diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java index 3abbab9..2c975e2 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java +++ b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java @@ -19,6 +19,7 @@ public interface DataServiceAppConvert { DataServiceAppEntity convert(DataServiceAppVo vo); + DataServiceAppVo convert(DataServiceAppEntity entity); List convertList(List list); diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java index d225d1f..970b446 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java @@ -3,6 +3,7 @@ package net.srt.dao; import net.srt.entity.ApiConfigEntity; import net.srt.framework.mybatis.dao.BaseDao; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -12,4 +13,8 @@ public interface ApiConfigDao extends BaseDao { List getResourceList(Map params); ApiConfigEntity getById(Long id); + + void updateById(@Param("apiId") Long apiId, @Param("id") Long id); + + List getAuthList(Map params); } diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java index 2d09eb4..a8d5b16 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java @@ -1,10 +1,15 @@ package net.srt.dao; +import net.srt.entity.DataServiceApiAuthEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; + /** * @ClassName : DataServiceApiAuthDao * @Description : * @Author : FJJ * @Date: 2023-12-26 15:23 */ -public interface DataServiceApiAuthDao { +@Mapper +public interface DataServiceApiAuthDao extends BaseDao { } diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java index f93a261..1ef713e 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java @@ -13,5 +13,5 @@ import org.apache.ibatis.annotations.Param; */ @Mapper public interface DataServiceAppDao extends BaseDao { - DataServiceAppEntity selectByApplyId(@Param("applyId") Long applyId); +// DataServiceAppEntity selectByApplyId(@Param("applyId") Long applyId); } diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java b/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java index 7807009..638f19d 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java @@ -12,164 +12,37 @@ import java.util.Date; @Data public class ApiConfigDto implements Serializable { private static final long serialVersionUID = 1L; - /** - * 数据库主键id - */ private Long id; - - /** - * 文件分组id - */ private Long groupId; - - /** - * 文件路径 - */ private String path; - - /** - * 文件类型,如:sql、http等 - */ private String type; - - /** - * 文件名称 - */ private String name; - - /** - * 文件备注 - */ private String note; - - /** - * SQL语句内容 - */ private String sqlText; - - /** - * SQL语句分隔符 - */ private String sqlSeparator; - - /** - * SQL最大行数 - */ private Integer sqlMaxRow; - - /** - * SQL语句参数 - */ private String sqlParam; - - /** - * JSON参数 - */ private String jsonParam; - - /** - * HTTP响应结果 - */ private String responseResult; - - /** - * 内容类型 - */ private String contentType; - - /** - * 状态,1启用,0禁用 - */ private Integer status; - - /** - * 发布时间 - */ private Date releaseTime; - - /** - * 发布用户id - */ private Long releaseUserId; - - /** - * 数据库类型 - */ private Integer sqlDbType; - - /** - * 数据库id - */ private Long databaseId; - - /** - * 是否私有文件,1是,0否 - */ private Integer privates; - - /** - * 开启事务,1是,0否 - */ private Integer openTrans; - - /** - * 项目id - */ private Long projectId; - - /** - * 版本号 - */ private Integer version; - - /** - * 是否删除,1是,0否 - */ private Integer deleted; - - /** - * 创建者id - */ private Long creator; - - /** - * 创建时间 - */ private Date createTime; - - /** - * 更新者id - */ private Long updater; - - /** - * 更新时间 - */ private Date updateTime; - - /** - * 请求次数 - */ private Integer requestedTimes; - - /** - * 请求成功次数 - */ private Integer requestedSuccessTimes; - - /** - * 请求失败次数 - */ private Integer requestedFailedTimes; - - /** - * 授权id - */ private Long authId; - - /** - * 分组名 - */ private String group; } diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java b/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java index e3ed399..335ef90 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java @@ -10,24 +10,8 @@ import java.io.Serializable; @AllArgsConstructor @NoArgsConstructor public class AppToken implements Serializable { - /** - * 应用id - */ private Long appId; - - /** - * 应用密钥 - */ private String appKey; - - /** - * 访问令牌 - */ private String token; - - /** - * 过期时间戳 - */ private Long expireAt; - } diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java b/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java index 6c7c7e0..599ea55 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java +++ b/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java @@ -4,44 +4,12 @@ import lombok.Data; @Data public class SqlDto { - /** - * 数据库类型 - */ private Integer sqlDbType; - - /** - * 项目id - */ private Long projectId; - - /** - * SQL语句 - */ private String statement; - - /** - * SQL语句分隔符 - */ private String sqlSeparator; - - /** - * 数据库id - */ private Long databaseId; - - /** - * 是否开启事务,1是,0否 - */ private Integer openTrans; - - /** - * JSON参数 - */ private String jsonParams; - - /** - * SQL最大行数 - */ private Integer sqlMaxRow; - } diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java deleted file mode 100644 index 852114f..0000000 --- a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java +++ /dev/null @@ -1,70 +0,0 @@ -//package net.srt.entity; -// -//import com.baomidou.mybatisplus.annotation.FieldFill; -//import com.baomidou.mybatisplus.annotation.FieldStrategy; -//import com.baomidou.mybatisplus.annotation.TableField; -//import com.baomidou.mybatisplus.annotation.TableName; -//import lombok.Data; -//import lombok.EqualsAndHashCode; -//import net.srt.framework.mybatis.entity.BaseEntity; -// -//import java.util.Date; -// -///** -// * @ClassName : DataServiceApiAuthEnitiy -// * @Description : -// * @Author : FJJ -// * @Date: 2023-12-24 11:30 -// */ -//@EqualsAndHashCode(callSuper=false) -//@Data -//@TableName("data_service_api_auth1") -//public class DataServiceApiAuthEnitiy extends BaseEntity { -// -// /** -// * app的id -// */ -// private Long appId; -// -// /** -// * 分组id -// */ -// private Long groupId; -// -// /** -// * api的id -// */ -// private Long apiId; -// -// /** -// * 调用次数 不限次数为-1 -// */ -// private Integer requestTimes; -// -// @TableField(updateStrategy = FieldStrategy.IGNORED) -// private Date startTime; -// @TableField(updateStrategy = FieldStrategy.IGNORED) -// private Date endTime; -// -// /** -// * 已调用次数 -// */ -// @TableField(updateStrategy = FieldStrategy.NEVER) -// private Integer requestedTimes; -// @TableField(updateStrategy = FieldStrategy.NEVER) -// private Integer requestedSuccessTimes; -// @TableField(updateStrategy = FieldStrategy.NEVER) -// private Integer requestedFailedTimes; -// -// /** -// * 所属项目id -// */ -// private Long projectId; -// -// /** -// * 真删 -// */ -// @TableField(fill = FieldFill.INSERT) -// private Integer deleted; -// -//} diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java index d0c4606..96b0bdc 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java +++ b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java @@ -4,6 +4,7 @@ import net.srt.entity.DataServiceAppEntity; import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.BaseService; import net.srt.query.DataServiceAppQuery; +import net.srt.vo.DataServiceApiAuthVo; import net.srt.vo.DataServiceAppVo; import java.util.List; @@ -23,9 +24,11 @@ public interface DataServiceAppService extends BaseService void delete(List idList); - void addAuth(DataServiceAppVo authVO); + void addAuth(DataServiceApiAuthVo authVO); - void upAuth(DataServiceAppVo authVO); + void upAuth(DataServiceApiAuthVo authVO); void cancelAuth(Long authId); + + String tokenGenerate(String appKey, String appSecret); } diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java index cf710c0..65d63b0 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java +++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java @@ -43,10 +43,6 @@ public class ApiConfigServiceImpl extends BaseServiceImpl mappings = new ConcurrentHashMap<>(); - /** - * 获取服务实例的IP和端口 - * @return IP和端口 - */ @Override public String getIpPort() { List instances = discoveryClient.getInstances(ServerNames.GATEWAY_SERVER_NAME); @@ -55,10 +51,7 @@ public class ApiConfigServiceImpl extends BaseServiceImpl instances = discoveryClient.getInstances(ServerNames.GATEWAY_SERVER_NAME); - // 获取第一个网关服务实例的主机和端口,并返回拼接后的字符串 return instances.get(0).getHost() + ":" + instances.get(0).getPort(); } - @Override public JdbcSelectResult sqlExecute(SqlDto dto) { return null; @@ -180,21 +168,18 @@ public class ApiConfigServiceImpl extends BaseServiceImpl page(ApiConfigQuery query) { - // 执行分页查询,并获取分页对象 - IPage page = baseMapper.selectPage(getPage(query), getWrapper(query)); - // 将实体对象列表转换为VO对象列表 - List apiConfigVos = ApiConfigConvert.INSTANCE.convertList(page.getRecords()); - // 返回VO对象列表和总记录数构成的分页结果对象 - return new PageResult<>(apiConfigVos, page.getTotal()); + // 查询参数 + Map params = getParams(query); + // 分页查询 + query.setOrder("dsac.id"); + IPage page = getPage(query); + params.put(Constant.PAGE, page); + // 数据列表 + List list = baseMapper.getAuthList(params); + return new PageResult<>(ApiConfigConvert.INSTANCE.convertList(list), page.getTotal()); } - private LambdaQueryWrapper getWrapper(ApiConfigQuery query) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.like(StringUtil.isNotBlank(query.getName()), ApiConfigEntity::getName, query.getName()); @@ -211,32 +196,17 @@ public class ApiConfigServiceImpl extends BaseServiceImpl pageResource(ApiConfigQuery query) { - // 获取查询参数 + // 查询参数 Map params = getParams(query); - // 获取分页对象 IPage page = getPage(query); params.put(Constant.PAGE, page); - // 查询数据列表 + // 数据列表 List list = baseMapper.getResourceList(params); - // 将数据列表转换为VO对象列表 List apiConfigVos = ApiConfigConvert.INSTANCE.convertList(list); - // 遍历VO对象列表,设置所属组信息 for (ApiConfigVo apiConfigVo : apiConfigVos) { ApiGroupEntity groupEntity = apiGroupDao.selectById(apiConfigVo.getGroupId()); apiConfigVo.setGroup(groupEntity != null ? groupEntity.getPath() : null); } - // 返回VO对象列表和总记录数构成的分页结果对象 return new PageResult<>(apiConfigVos, page.getTotal()); + } - - /** - * 根据组ID获取有效的API配置列表 - * @param id 组ID - * @return API配置列表 - */ @Override public List listActiveByGroupId(Long id) { - // 创建LambdaQueryWrapper对象 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - // 设置查询条件:状态为1(有效),组ID为指定ID,并按照ID降序排序 - wrapper.eq(ApiConfigEntity::getStatus, 1) - .eq(ApiConfigEntity::getGroupId, id) - .orderByDesc(ApiConfigEntity::getId); - // 应用数据范围控制(排除组织ID) + wrapper.eq(ApiConfigEntity::getStatus, 1).eq(ApiConfigEntity::getGroupId, id).orderByDesc(ApiConfigEntity::getId); dataScopeWithoutOrgId(wrapper); - // 执行查询并返回结果列表 return baseMapper.selectList(wrapper); } - private Map getParams(ApiConfigQuery query) { Map params = new HashMap<>(); params.put("ifMarket", query.getIfMarket()); diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java index a4e251c..7f8fab4 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java +++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java @@ -4,8 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; +import net.srt.convert.DataServiceApiAuthConvert; import net.srt.convert.DataServiceAppConvert; +import net.srt.dao.ApiConfigDao; +import net.srt.dao.DataServiceApiAuthDao; import net.srt.dao.DataServiceAppDao; +import net.srt.dto.AppToken; +import net.srt.entity.DataServiceApiAuthEntity; import net.srt.entity.DataServiceAppEntity; import net.srt.framework.common.exception.ServerException; import net.srt.framework.common.page.PageResult; @@ -13,7 +18,9 @@ import net.srt.framework.mybatis.service.impl.BaseServiceImpl; import net.srt.framework.security.user.SecurityUser; import net.srt.query.DataServiceAppQuery; import net.srt.service.DataServiceAppService; +import net.srt.vo.DataServiceApiAuthVo; import net.srt.vo.DataServiceAppVo; +import org.apache.commons.lang.RandomStringUtils; import org.springframework.stereotype.Service; import srt.cloud.framework.dbswitch.common.util.StringUtil; @@ -30,6 +37,8 @@ import java.util.List; @AllArgsConstructor public class DataServiceAppServiceImpl extends BaseServiceImpl implements DataServiceAppService { private final DataServiceAppDao dataServiceAppDao; + private final ApiConfigDao apiConfigDao; + private final DataServiceApiAuthDao dataServiceApiAuthDao; @Override public PageResult page(DataServiceAppQuery query) { IPage page=baseMapper.selectPage(getPage(query),null); @@ -56,14 +65,18 @@ public class DataServiceAppServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(); + wrapper.eq(DataServiceAppEntity::getAppKey,appKey).last("limit 1"); + DataServiceAppEntity dataServiceAppEntity = baseMapper.selectOne(wrapper); + if (dataServiceAppEntity==null){ + throw new RuntimeException("appKey不存在"); + } + if (!appSecret.equals(dataServiceAppEntity.getAppSecret())){ + throw new ServerException("appSecret错误"); + } + //生成token + String token = RandomStringUtils.random(32, true, true); + AppToken appToken = new AppToken(); + appToken.setToken(token); + appToken.setAppKey(appKey); + appToken.setAppId(dataServiceAppEntity.getId()); + if (dataServiceAppEntity.getExpireDuration()==0){ + appToken.setExpireAt(0L); + } else if (dataServiceAppEntity.getExpireDuration()== -1) { + appToken.setExpireAt(-1L); + }else if (dataServiceAppEntity.getExpireDuration()>0){ + long l = System.currentTimeMillis() + dataServiceAppEntity.getExpireDuration() * 1000; + appToken.setExpireAt(l); + } + return appToken.getToken(); + } -// private LambdaQueryWrapper getWrapper(DataServiceAppQuery query) { -// LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); -// wrapper.like(StringUtil.isNotBlank(query.getName()), DataServiceAppEntity::getName, query.getName()) -// .eq(DataServiceAppEntity::getIfMarket, query.getIfMarket() != null ? query.getIfMarket() : 0) -// .eq(query.getIfMarket() != null, DataServiceAppEntity::getCreator, SecurityUser.getUserId()) -// .eq(StringUtil.isNotBlank(query.getAppKey()), DataServiceAppEntity::getAppKey, query.getAppKey()) -// .orderByDesc(DataServiceAppEntity::getCreateTime).orderByDesc(DataServiceAppEntity::getId); -// return wrapper; -// } + + private LambdaQueryWrapper getWrapper(DataServiceAppQuery query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StringUtil.isNotBlank(query.getName()), DataServiceAppEntity::getName, query.getName()) + .eq(DataServiceAppEntity::getIfMarket, query.getIfMarket() != null ? query.getIfMarket() : 0) + .eq(query.getIfMarket() != null, DataServiceAppEntity::getCreator, SecurityUser.getUserId()) + .eq(StringUtil.isNotBlank(query.getAppKey()), DataServiceAppEntity::getAppKey, query.getAppKey()) + .orderByDesc(DataServiceAppEntity::getCreateTime).orderByDesc(DataServiceAppEntity::getId); + return wrapper; + } } diff --git a/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java b/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java new file mode 100644 index 0000000..939f75c --- /dev/null +++ b/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java @@ -0,0 +1,145 @@ +package net.srt.utils; + +import javax.crypto.Cipher; +import java.security.Key; + +/** + * @ClassName : EncrypDES + * @Description : + * @Author : FJJ + * @Date: 2023-12-25 09:31 + */ +public class EncrypDES { + + // 字符串默认键值 + private static String strDefaultKey = "inventec2020@#$%^&"; + + //加密工具 + private Cipher encryptCipher = null; + + // 解密工具 + private Cipher decryptCipher = null; + + /** + * 默认构造方法,使用默认密钥 + */ + public EncrypDES() throws Exception { + this(strDefaultKey); + } + + /** + * 指定密钥构造方法 + * @param strKey 指定的密钥 + * @throws Exception + */ + + public EncrypDES(String strKey) throws Exception { + + // Security.addProvider(new com.sun.crypto.provider.SunJCE()); + Key key = getKey(strKey.getBytes()); + encryptCipher = Cipher.getInstance("DES"); + encryptCipher.init(Cipher.ENCRYPT_MODE, key); + decryptCipher = Cipher.getInstance("DES"); + decryptCipher.init(Cipher.DECRYPT_MODE, key); + } + + /** + * 将byte数组转换为表示16进制值的字符串, 如:byte[]{8,18}转换为:0813,和public static byte[] + * + * hexStr2ByteArr(String strIn) 互为可逆的转换过程 + * + * @param arrB 需要转换的byte数组 + * @return 转换后的字符串 + * @throws Exception 本方法不处理任何异常,所有异常全部抛出 + */ + public static String byteArr2HexStr(byte[] arrB) throws Exception { + int iLen = arrB.length; + // 每个byte用2个字符才能表示,所以字符串的长度是数组长度的2倍 + StringBuffer sb = new StringBuffer(iLen * 2); + for (int i = 0; i < iLen; i++) { + int intTmp = arrB[i]; + // 把负数转换为正数 + while (intTmp < 0) { + intTmp = intTmp + 256; + } + // 小于0F的数需要在前面补0 + if (intTmp < 16) { + sb.append("0"); + } + sb.append(Integer.toString(intTmp, 16)); + } + return sb.toString(); + } + + /** + * 将表示16进制值的字符串转换为byte数组,和public static String byteArr2HexStr(byte[] arrB) + * 互为可逆的转换过程 + * @param strIn 需要转换的字符串 + * @return 转换后的byte数组 + */ + public static byte[] hexStr2ByteArr(String strIn) throws Exception { + byte[] arrB = strIn.getBytes(); + int iLen = arrB.length; + // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2 + byte[] arrOut = new byte[iLen / 2]; + for (int i = 0; i < iLen; i = i + 2) { + String strTmp = new String(arrB, i, 2); + arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16); + } + return arrOut; + } + + /** + * + * 加密字节数组 + * @param arrB 需加密的字节数组 + * @return 加密后的字节数组 + */ + public byte[] encrypt(byte[] arrB) throws Exception { + return encryptCipher.doFinal(arrB); + } + + /** + * 加密字符串 + * @param strIn 需加密的字符串 + * @return 加密后的字符串 + */ + public String encrypt(String strIn) throws Exception { + return byteArr2HexStr(encrypt(strIn.getBytes())); + } + + /** + * 解密字节数组 + * @param arrB 需解密的字节数组 + * @return 解密后的字节数组 + */ + public byte[] decrypt(byte[] arrB) throws Exception { + return decryptCipher.doFinal(arrB); + } + + /** + * 解密字符串 + * @param strIn 需解密的字符串 + * @return 解密后的字符串 + */ + public String decrypt(String strIn) throws Exception { + return new String(decrypt(hexStr2ByteArr(strIn))); + } + + /** + * 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位 + * @param arrBTmp 构成该字符串的字节数组 + * @return 生成的密钥 + */ + private Key getKey(byte[] arrBTmp) throws Exception { + // 创建一个空的8位字节数组(默认值为0) + byte[] arrB = new byte[8]; + // 将原始字节数组转换为8位 + for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) { + arrB[i] = arrBTmp[i]; + } + // 生成密钥 + Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); + return key; + } +} diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java index bd53d79..fbd3372 100644 --- a/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java +++ b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java @@ -42,6 +42,8 @@ public class DataServiceApiAuthVo implements Serializable { @Schema(description = "所属项目id") private Long projectId; + private Long authId; + @Schema(description = "版本号") private Integer version; diff --git a/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml b/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml index c76f98e..5b1c065 100644 --- a/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml +++ b/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml @@ -2,6 +2,9 @@ + + update data_service_api_config set auth_id=#{apiId} where id=#{id} + SELECT * FROM data_service_api_config WHERE id = #{id} + diff --git a/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml b/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml index 6271392..9a6fdde 100644 --- a/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml +++ b/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml @@ -5,7 +5,7 @@ - + + + diff --git a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar index e9979b7..fc67dac 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar and b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar differ diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar index bc7b2a0..9513186 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar differ diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar index 724cdbd..843a7df 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar differ diff --git a/srt-cloud-gateway/src/main/resources/bootstrap.yml b/srt-cloud-gateway/src/main/resources/bootstrap.yml index 79d8278..c7daaeb 100644 --- a/srt-cloud-gateway/src/main/resources/bootstrap.yml +++ b/srt-cloud-gateway/src/main/resources/bootstrap.yml @@ -84,18 +84,12 @@ spring: - Path=/srt-cloud-datax-service/** # Adjust the path as needed filters: - StripPrefix=1 - - id: srt-data-development # New Gateway - uri: lb://srt-data-development # Update with the correct URI for your new service - predicates: - - Path=/data-development/** # Adjust the path as needed - filters: - - StripPrefix=1 nacos: discovery: server-addr: 101.34.77.101:8848 # 命名空间,默认:public - namespace: 7e34f104-f333-4828-b36a-02146e521c9a + namespace: 9de208a6-cb30-41ae-a880-78196c99c050 service: ${spring.application.name} group: srt2.0 diff --git a/srt-cloud-module/srt-cloud-quartz/pom.xml b/srt-cloud-module/srt-cloud-quartz/pom.xml index 63bf9b5..06c139a 100644 --- a/srt-cloud-module/srt-cloud-quartz/pom.xml +++ b/srt-cloud-module/srt-cloud-quartz/pom.xml @@ -9,11 +9,6 @@ jar - - net.srt - srt-cloud-api - 2.0.0 - net.srt diff --git a/srt-data-development/src/main/java/net/srt/DevelopmentApp.java b/srt-data-development/src/main/java/net/srt/DevelopmentApp.java index cd75f8b..32aa03f 100644 --- a/srt-data-development/src/main/java/net/srt/DevelopmentApp.java +++ b/srt-data-development/src/main/java/net/srt/DevelopmentApp.java @@ -9,6 +9,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import java.util.List; @@ -16,6 +17,8 @@ import static com.alibaba.druid.sql.SQLUtils.toSQLString; @EnableDiscoveryClient @SpringBootApplication +@EnableFeignClients + @MapperScan("net.srt.Fink.mapper") @MapperScan("net.srt.Hadoop.mapper") @MapperScan("net.srt.disposition.mapper") diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java new file mode 100644 index 0000000..d3c33ea --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java @@ -0,0 +1,24 @@ +package net.srt.disposition.controller; + +import lombok.AllArgsConstructor; +import net.srt.disposition.dto.DataCheckSqlDto; +import net.srt.disposition.entity.DataCheckSqlEntity; +import net.srt.disposition.service.DataCheckSqlService; +import net.srt.disposition.vo.DataCheckSqlVo; +import net.srt.framework.common.utils.Result; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@AllArgsConstructor +@RequestMapping("/task") +public class DataCheckSqlController { + + private DataCheckSqlService dataCheckSqlService; + + @PostMapping("/explain-sql") + public Result explainSql(DataCheckSqlDto dataCheckSqlDto) { + return Result.ok(dataCheckSqlService.explainSql(dataCheckSqlDto)); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java index 4d40d05..b29b296 100644 --- a/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java +++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java @@ -20,13 +20,13 @@ public class DataProductionTreeController { private DataProductionService dataProductionService; @GetMapping - public Result> listResult(){ + public Result> listResult(@RequestParam String t){ List dispositionVos=dataProductionService.dataTreeList(); return Result.ok(dispositionVos); } @PostMapping - public Result add(@RequestBody DataProductionTreeDto dataProductionTreeDto){ + public Result add(@RequestBody DataProductionTreeDto dataProductionTreeDto){ dataProductionService.add(dataProductionTreeDto); return Result.ok(); } diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java new file mode 100644 index 0000000..8934867 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java @@ -0,0 +1,22 @@ +package net.srt.disposition.controller; + +import lombok.AllArgsConstructor; +import net.srt.disposition.dto.DataSqlSaveDto; +import net.srt.disposition.service.DataSaveService; +import net.srt.framework.common.utils.Result; +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 +@AllArgsConstructor +@RequestMapping("/task") +public class DataSaveController { + private DataSaveService dataSaveService; + @PostMapping + public Result addSave(@RequestBody DataSqlSaveDto dataSqlSaveDto){ + dataSaveService.dataSaver(dataSqlSaveDto); + return Result.ok(); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java b/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java new file mode 100644 index 0000000..74481d1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java @@ -0,0 +1,14 @@ +package net.srt.disposition.convert; + +import net.srt.disposition.dto.DataSqlSaveDto; +import net.srt.disposition.dto.DispositionDto; +import net.srt.disposition.entity.DataSqlSaveEntity; +import net.srt.disposition.entity.DispositionEntity; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DataSqlSaveConvert { + DataSqlSaveConvert INSTANCE = Mappers.getMapper(DataSqlSaveConvert.class); + DataSqlSaveEntity convert(DataSqlSaveDto vo); +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java new file mode 100644 index 0000000..0de6ddc --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java @@ -0,0 +1,56 @@ +package net.srt.disposition.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +@Data +public class DataCheckSqlDto { + private Long alertGroupId; + private String alias; + private boolean batchModel; + private Long catalogueId; + private Integer checkPoint; + private String clusterConfigurationId; + private Long clusterId; + private String configJson; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private Integer databaseId; + private Integer deleted; + private Integer dialect; + private boolean enabled; + private Integer envId; + private boolean fragment; + private Integer id; + private Integer jarId; + private String jobName; + private Integer maxRowNum; + private String name; + private String note; + private Integer openTrans; + private Integer parallelism; + private boolean processEnd; + private Integer projectId; + private Integer pvdataNum; + private String savePointPath; + private String savePointStrategy; + private Integer sqlDbType; + private String statement; + private boolean statementSet; + private Integer step; + private String type; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + private Integer updater; + private boolean useAutoCancel; + private boolean useChangeLog; + private boolean usrResult; + private Integer version; + private Integer versionId; +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java new file mode 100644 index 0000000..5eb25f4 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java @@ -0,0 +1,23 @@ +package net.srt.disposition.dto; + +import lombok.Data; +import net.srt.disposition.entity.DataDatabaseDevEntity; + +import java.util.List; + +@Data +public class DataSqlSaveDto { + private String alias; + private Integer catalogueId; + private Integer databaseId; + private List databaseList; + private Integer dialect; + private Integer id; + private String name; + private Integer openTrans; + private boolean processEnd; + private Integer pvdataNum; + private Integer sqlDbType; + private String statement; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java new file mode 100644 index 0000000..c049b8d --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java @@ -0,0 +1,26 @@ +package net.srt.disposition.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@TableName("data_check_sql") +public class DataCheckSqlEntity { + @TableId("id") + private Integer id; + private String type; + private String sql; + private String parse; + private String explain; + private String error; + private String parseTrue; + private String explainTrue; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date explainTime; +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java new file mode 100644 index 0000000..7596cbf --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java @@ -0,0 +1,40 @@ +package net.srt.disposition.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.srt.framework.mybatis.entity.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DataDatabaseDevEntity { + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String creator; + private String databaseDocument; + private String databaseIndex; + private String databaseIp; + private String databaseKafka; + private String databaseName; + private String databasePort; + private Integer databaseType; + private Integer deleted; + private Integer id; + private String isJdbc; + private String name; + private String noReReason; + private String password; + private Integer projectId; + private Integer status; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date updateTime; + private String updater; + private String userName; + private Integer version; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java new file mode 100644 index 0000000..097666f --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java @@ -0,0 +1,61 @@ +package net.srt.disposition.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import net.srt.framework.mybatis.entity.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +@Data +@TableName("data_sql_save") +public class DataSqlSaveEntity { + @TableId("id") + private Long id; + private Long catalogueId; + private String name; + private Long projectId; + private String alias; + private Integer dialect; + private Integer type; + private Integer checkPoint; + private Integer savePointStrategy; + private String savePointPath; + private Integer parallelism; + private boolean fragment; + private boolean statementSet; + private boolean batchModel; + private Long clusterId; + private Long clusterConfigurationId; + private Integer sqlDbType; + private Long databaseId; + private Integer openTrans; + private Long jarId; + private Long envId; + private Long alertGroupId; + private String configJson; + private String note; + private Integer step; + private Long jobInstanceId; + private boolean useAutoCancel; + private boolean useChangeLog; + private boolean useResult; + private Integer pvdataNum; + private boolean enabled; + private Long versionId; + private Integer version; + private Integer deleted; + private Long creator; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private Long updater; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + private String statement; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java new file mode 100644 index 0000000..d7b04e1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java @@ -0,0 +1,9 @@ +package net.srt.disposition.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import net.srt.disposition.entity.DataCheckSqlEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DataCheckSqlMapper extends BaseMapper { +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java index 15c512c..0b1c1b8 100644 --- a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java @@ -2,6 +2,8 @@ package net.srt.disposition.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import net.srt.disposition.entity.DataProductionTreeEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface DataProductionMapper extends BaseMapper { } diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java new file mode 100644 index 0000000..e201ad0 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java @@ -0,0 +1,9 @@ +package net.srt.disposition.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import net.srt.disposition.entity.DataSqlSaveEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DataSaveServiceMapper extends BaseMapper { +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java index cc3cb28..d7cf138 100644 --- a/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java @@ -2,6 +2,8 @@ package net.srt.disposition.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import net.srt.disposition.entity.DispositionEntity; +import org.apache.ibatis.annotations.Mapper; +@Mapper public interface DispositionMapper extends BaseMapper { } diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java new file mode 100644 index 0000000..fb08166 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java @@ -0,0 +1,10 @@ +package net.srt.disposition.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import net.srt.disposition.dto.DataCheckSqlDto; +import net.srt.disposition.entity.DataCheckSqlEntity; +import net.srt.disposition.vo.DataCheckSqlVo; + +public interface DataCheckSqlService extends IService { + DataCheckSqlVo explainSql(DataCheckSqlDto dataCheckSqlDto); +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java new file mode 100644 index 0000000..e58c953 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java @@ -0,0 +1,10 @@ +package net.srt.disposition.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import net.srt.disposition.dto.DataSqlSaveDto; +import net.srt.disposition.entity.DataSqlSaveEntity; + +public interface DataSaveService extends IService { + void dataSaver(DataSqlSaveDto dataSqlSaveDto); + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java new file mode 100644 index 0000000..7e7a5c1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java @@ -0,0 +1,48 @@ +package net.srt.disposition.service.impl; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.parser.SQLParserUtils; +import com.alibaba.druid.sql.parser.SQLStatementParser; +import jdk.nashorn.internal.runtime.ParserException; +import lombok.AllArgsConstructor; +import net.srt.disposition.dto.DataCheckSqlDto; +import net.srt.disposition.entity.DataCheckSqlEntity; +import net.srt.disposition.mapper.DataCheckSqlMapper; +import net.srt.disposition.service.DataCheckSqlService; +import net.srt.disposition.vo.DataCheckSqlVo; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import org.apache.ibatis.annotations.Select; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +import static com.alibaba.druid.sql.SQLUtils.toSQLString; + +@Service +@AllArgsConstructor +public class DataCheckSqlServiceImpl extends BaseServiceImpl implements DataCheckSqlService { + @Override + public DataCheckSqlVo explainSql(DataCheckSqlDto dataCheckSqlDto) { + DataCheckSqlVo dataCheckSqlVo = new DataCheckSqlVo(); + try { + SQLStatementParser mysql = SQLParserUtils.createSQLStatementParser(dataCheckSqlDto.getStatement(), "mysql"); + SQLStatement sqlStatement = mysql.parseStatement(); + if (sqlStatement instanceof Select) { + dataCheckSqlVo.setType("SQLSelectStatement"); + } + dataCheckSqlVo.setSql(dataCheckSqlDto.getStatement()); + dataCheckSqlVo.setParseTrue(true); + dataCheckSqlVo.setExplainTrue(true); + dataCheckSqlVo.setExplainTime(new Date()); + } catch (ParserException e) { + System.out.println("SQL转换中发生了错误:"+e.getMessage()); + dataCheckSqlVo.setSql(dataCheckSqlDto.getStatement()); + dataCheckSqlVo.setError(e.getMessage()); + dataCheckSqlVo.setParseTrue(false); + dataCheckSqlVo.setExplainTrue(false); + dataCheckSqlVo.setExplainTime(new Date()); + } + return dataCheckSqlVo; + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java new file mode 100644 index 0000000..e0afb74 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java @@ -0,0 +1,24 @@ +package net.srt.disposition.service.impl; + +import lombok.AllArgsConstructor; +import net.srt.disposition.convert.DataSqlSaveConvert; +import net.srt.disposition.dto.DataSqlSaveDto; +import net.srt.disposition.entity.DataSqlSaveEntity; +import net.srt.disposition.mapper.DataSaveServiceMapper; +import net.srt.disposition.service.DataSaveService; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Date; + +@Service +@AllArgsConstructor +public class DataSaveServiceImpl extends BaseServiceImpl implements DataSaveService { + + @Override + public void dataSaver(DataSqlSaveDto dataSqlSaveDto) { + DataSqlSaveEntity convert = DataSqlSaveConvert.INSTANCE.convert(dataSqlSaveDto); + convert.setCreateTime(new Date()); + baseMapper.insert(convert); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java b/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java new file mode 100644 index 0000000..e55ca87 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java @@ -0,0 +1,23 @@ +package net.srt.disposition.vo; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DataCheckSqlVo { + private Integer index; + private String type; + private String sql; + private String parse; + private String explain; + private String error; + private boolean parseTrue; + private boolean explainTrue; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date explainTime; +} diff --git a/srt-data-development/src/main/resources/auth.yml b/srt-data-development/src/main/resources/auth.yml index 0e6a006..2d05014 100644 --- a/srt-data-development/src/main/resources/auth.yml +++ b/srt-data-development/src/main/resources/auth.yml @@ -1,7 +1,3 @@ auth: ignore_urls: - - /auth/captcha - - /auth/login - - /auth/send/code - - /auth/mobile - - /upload/** \ No newline at end of file + - /data-development/** diff --git a/srt-data-development/src/main/resources/bootstrap.yml b/srt-data-development/src/main/resources/bootstrap.yml index d03d7f4..65f34da 100644 --- a/srt-data-development/src/main/resources/bootstrap.yml +++ b/srt-data-development/src/main/resources/bootstrap.yml @@ -2,11 +2,22 @@ server: port: 8094 spring: + datasource: + druid: + stat-view-servlet: + enabled: true + loginUsername: bwie + loginPassword: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://101.34.77.101:3306/12.5yk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: cbx@123 + type: com.alibaba.druid.pool.DruidDataSource mvc: servlet: load-on-startup: 1 application: - name: srt-data-development + name: srt-cloud-data-development profiles: active: dev cloud: @@ -14,9 +25,9 @@ spring: discovery: server-addr: 101.34.77.101:8848 # 命名空间,默认:public - namespace: c5d32e76-b83c-4254-8176-1c6a2cee8e3b + namespace: 9de208a6-cb30-41ae-a880-78196c99c050 service: ${spring.application.name} - group: srt2.1 + group: srt2.0 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} namespace: ${spring.cloud.nacos.discovery.namespace} @@ -25,19 +36,4 @@ spring: extension-configs: - data-id: datasource.yaml refresh: true - servlet: - multipart: - max-request-size: 100MB - max-file-size: 1024MB -storage: - enabled: true - config: - # 存储类型:local、aliyun - type: local - # 访问域名 - domain: http://localhost:8082/sys - # 配置访问前缀 - prefix: - local: - # 本地上传路径 - path: D://upload + diff --git a/srt-data-development/src/test/java/com/text/dome/a.java b/srt-data-development/src/test/java/com/text/dome/a.java new file mode 100644 index 0000000..96e796c --- /dev/null +++ b/srt-data-development/src/test/java/com/text/dome/a.java @@ -0,0 +1,32 @@ +package com.text.dome; + + +import com.alibaba.druid.sql.ast.SQLObject; +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.parser.SQLParserUtils; +import com.alibaba.druid.sql.parser.SQLStatementParser; +import jdk.nashorn.internal.runtime.ParserException; + +import java.util.List; + +import static com.alibaba.druid.sql.SQLUtils.toSQLString; + +public class a { + public static void main(String[] args) { + String str = "create table `tb_user` (\n" + + " `id` varchar(22) not null COMMENT '主键id',\n" + + " `usercode` varchar(11) DEFAULT null COMMENT '手机号',\n" + + " `name` varchar(10) DEFAULT nu"; + System.out.println("格式化之前:"); + System.out.println(str); + System.out.println("格式化之后:"); + try { + SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(str, "mysql"); + List statementList = parser.parseStatementList(); + str = toSQLString((SQLObject) statementList, "mysql"); + System.out.println(str); + } catch (ParserException e) { + System.out.println("SQL转换中发生了错误:"+e.getMessage()); + } + } +}