diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/Result.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/Result.java index 70faa40..112fb29 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/Result.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/Result.java @@ -46,6 +46,9 @@ public class Result implements Serializable { public static Result success (T data) { return restResult(data, SUCCESS, null); } + public static Result success (String msg) { + return restResult(null, SUCCESS, msg); + } public static Result success (T data, String msg) { return restResult(data, SUCCESS, msg); diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java new file mode 100644 index 0000000..35f459c --- /dev/null +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java @@ -0,0 +1,65 @@ +package com.muyu.common.core.utils; + +import org.apache.commons.lang3.ObjectUtils; + +import java.math.BigDecimal; + +/** + * @author DongZl + * @description: 对象工具类 + * @Date 2023-10-9 下午 04:56 + */ +public class ObjUtils { + + /** + * 兼容 + * CharSequence: 如果长度为零,则认为为空。 + * Array: 如果长度为零,则认为为空。 + * Collection: 如果元素为零,则认为为空。 + * Map: 如果键值映射为零,则认为为空。 + * @param o 对象 + * @return 如果对象具有受支持的类型并且为空或null,则为true,否则为false + */ + public static boolean notNull(Object o){ + return ObjectUtils.isNotEmpty(o); + } + + /** + * 判断long类型不为0 + * @param val 值 + * @return 返回值不为0 + */ + public static boolean notNull(Long val){ + return ObjectUtils.isNotEmpty(val) && val != 0; + } + + /** + * 判断Integer类型不为0 + * @param val 值 + * @return 返回值不为0 + */ + public static boolean notNull(Integer val){ + return ObjectUtils.isNotEmpty(val) && val != 0; + } + /** + * 判断BigDecimal类型不为0 + * @param val 值 + * @return 返回值不为0 + */ + public static boolean notNull(BigDecimal val){ + return ObjectUtils.isNotEmpty(val) && val.doubleValue() == 0.00; + } + /** + * 判断BigDecimal类型不为0 + * @param val 值 + * @return 返回值不为0 + */ + public static boolean notChildNull(Object[] val){ + for (Object o : val) { + if (!notNull(o)){ + return false; + } + } + return true; + } +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml new file mode 100644 index 0000000..7932e1b --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + com.muyu + muyu-data-source + 3.6.3 + + + muyu-data-source-common + + + 17 + 17 + UTF-8 + + + + + + com.muyu + muyu-common-core + + + com.muyu + muyu-common-security + + + diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AccessType.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AccessType.java new file mode 100644 index 0000000..2025bd1 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/AccessType.java @@ -0,0 +1,41 @@ +package com.muyu.data.source.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 接入类型对象 AccessType + * + * @author DeKangLiu + * on 2024/4/21 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("access_type") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "AccessType", description = "接入类型") +public class AccessType extends BaseEntity{ + private static final long serialVersionUID = 1L; + + /** 接入类型id */ + @TableId(value = "id",type = IdType.AUTO) + @ApiModelProperty(name = "接入类型id", value = "接入类型id") + private Long id; + + /** 接入源名称 */ + @Excel(name = "接入类型名称") + @ApiModelProperty(name = "接入类型名称", value = "接入类型名称") + private String accessName; +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceEditReq.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceEditReq.java new file mode 100644 index 0000000..eaf0607 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceEditReq.java @@ -0,0 +1,80 @@ +package com.muyu.data.source.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 数据源对象 data_source + * + * @author muyu + * @date 2024-04-21 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "DataSourceEditReq", description = "数据源") +public class DataSourceEditReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 接入源名称 */ + @ApiModelProperty(name = "接入源名称", value = "接入源名称") + private String accessSourceName; + + /** 数据来源系统名称 */ + @ApiModelProperty(name = "数据来源系统名称", value = "数据来源系统名称") + private String dataSourceSystemName; + + /** 主机地址 */ + @ApiModelProperty(name = "主机地址", value = "主机地址") + private String hostAddress; + + /** 主机端口 */ + @ApiModelProperty(name = "主机端口", value = "主机端口") + private String hostPort; + + /** 数据连接类型ID */ + @ApiModelProperty(name = "数据连接类型ID", value = "数据连接类型ID") + private Long dataAccessTypeId; + + /** 数据库名称 */ + @ApiModelProperty(name = "数据库名称", value = "数据库名称") + private String databaseName; + + /** 数据连接参数 */ + @ApiModelProperty(name = "数据连接参数", value = "数据连接参数") + private String dataConnectionParameter; + + /** 初始连接数量 */ + @ApiModelProperty(name = "初始连接数量", value = "初始连接数量") + private String initialQuantity; + + /** 最大连接数量 */ + @ApiModelProperty(name = "最大连接数量", value = "最大连接数量") + private String maximumQuantity; + + /** 最大等待时间 */ + @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") + private Long maximumTime; + + /** 最大等待次数 */ + @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") + private String maximumFrequency; + + /** 数据库用户名 */ + @ApiModelProperty(name = "数据库用户名", value = "数据库用户名") + private String databaseUserName; + + /** 数据库用户密码 */ + @ApiModelProperty(name = "数据库用户密码", value = "数据库用户密码") + private String databaseUserPassword; + +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceQueryReq.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceQueryReq.java new file mode 100644 index 0000000..65c15cf --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceQueryReq.java @@ -0,0 +1,72 @@ +package com.muyu.data.source.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 数据源对象 data_source + * + * @author muyu + * @date 2024-04-21 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "DataSourceQueryReq", description = "数据源") +public class DataSourceQueryReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 接入源名称 */ + @ApiModelProperty(name = "接入源名称", value = "接入源名称") + private String accessSourceName; + + /** 数据来源系统名称 */ + @ApiModelProperty(name = "数据来源系统名称", value = "数据来源系统名称") + private String dataSourceSystemName; + + /** 主机地址 */ + @ApiModelProperty(name = "主机地址", value = "主机地址") + private String hostAddress; + + /** 主机端口 */ + @ApiModelProperty(name = "主机端口", value = "主机端口") + private String hostPort; + + /** 数据连接类型ID */ + @ApiModelProperty(name = "数据连接类型ID", value = "数据连接类型ID") + private Long dataAccessTypeId; + + /** 数据库名称 */ + @ApiModelProperty(name = "数据库名称", value = "数据库名称") + private String databaseName; + + /** 数据连接参数 */ + @ApiModelProperty(name = "数据连接参数", value = "数据连接参数") + private String dataConnectionParameter; + + /** 初始连接数量 */ + @ApiModelProperty(name = "初始连接数量", value = "初始连接数量") + private String initialQuantity; + + /** 最大连接数量 */ + @ApiModelProperty(name = "最大连接数量", value = "最大连接数量") + private String maximumQuantity; + + /** 最大等待时间 */ + @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") + private Long maximumTime; + + /** 最大等待次数 */ + @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") + private String maximumFrequency; + +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceSaveReq.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceSaveReq.java new file mode 100644 index 0000000..aea6476 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/domain/req/DataSourceSaveReq.java @@ -0,0 +1,98 @@ +package com.muyu.data.source.domain.req; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.common.core.annotation.Excel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 数据源对象 data_source + * + * @author muyu + * @date 2024-04-21 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "DataSourceSaveReq", description = "数据源") +public class DataSourceSaveReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 数据管理id */ + + @ApiModelProperty(name = "数据管理id", value = "数据管理id") + private Long id; + + /** 接入源名称 */ + + @ApiModelProperty(name = "接入源名称", value = "接入源名称") + private String accessSourceName; + + /** 数据来源系统名称 */ + + @ApiModelProperty(name = "数据来源系统名称", value = "数据来源系统名称") + private String dataSourceSystemName; + + /** 主机地址 */ + + @ApiModelProperty(name = "主机地址", value = "主机地址") + private String hostAddress; + + /** 主机端口 */ + + @ApiModelProperty(name = "主机端口", value = "主机端口") + private String hostPort; + + /** 数据连接类型ID */ + + @ApiModelProperty(name = "数据连接类型ID", value = "数据连接类型ID") + private Long dataAccessTypeId; + + /** 数据库名称 */ + + @ApiModelProperty(name = "数据库名称", value = "数据库名称") + private String databaseName; + + /** 数据连接参数 */ + + @ApiModelProperty(name = "数据连接参数", value = "数据连接参数") + private String dataConnectionParameter; + + /** 初始连接数量 */ + + @ApiModelProperty(name = "初始连接数量", value = "初始连接数量") + private String initialQuantity; + + /** 最大连接数量 */ + + @ApiModelProperty(name = "最大连接数量", value = "最大连接数量") + private String maximumQuantity; + + /** 最大等待时间 */ + + @ApiModelProperty(name = "最大等待时间", value = "最大等待时间") + private Long maximumTime; + + /** 最大等待次数 */ + + @ApiModelProperty(name = "最大等待次数", value = "最大等待次数") + private String maximumFrequency; + + /** 数据库用户名 */ + @ApiModelProperty(name = "数据库用户名", value = "数据库用户名") + private String databaseUserName; + + /** 数据库用户密码 */ + @ApiModelProperty(name = "数据库用户密码", value = "数据库用户密码") + private String databaseUserPassword; + + +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-remote/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-remote/pom.xml new file mode 100644 index 0000000..d463301 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-remote/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + com.muyu + muyu-data-source + 3.6.3 + + + muyu-data-source-remote + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml new file mode 100644 index 0000000..c482806 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + com.muyu + muyu-data-source + 3.6.3 + + + muyu-data-source-server + + + 17 + 17 + UTF-8 + + + + com.muyu + muyu-data-source-common + 3.6.3 + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datasource + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-log + + + + + com.muyu + muyu-common-swagger + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + + + diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/MuYuDataSourceApplication.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/MuYuDataSourceApplication.java new file mode 100644 index 0000000..4064465 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/MuYuDataSourceApplication.java @@ -0,0 +1,23 @@ +package com.muyu.data.source; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import com.muyu.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * MuYuDataSourceApplication + * + * @author DeKangLiu + * on 2024/4/20 + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class MuYuDataSourceApplication { + public static void main (String[] args) { + SpringApplication.run(MuYuDataSourceApplication.class, args); + } +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java new file mode 100644 index 0000000..fec056b --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/controller/DataSourceController.java @@ -0,0 +1,124 @@ +package com.muyu.data.source.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.muyu.data.source.domain.AccessType; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.data.source.domain.DataSource; +import com.muyu.data.source.domain.req.DataSourceQueryReq; +import com.muyu.data.source.domain.req.DataSourceSaveReq; +import com.muyu.data.source.domain.req.DataSourceEditReq; +import com.muyu.data.source.service.DataSourceService; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 数据源Controller + * + * @author muyu + * @date 2024-04-21 + */ +@Api(tags = "数据源") +@RestController +@RequestMapping("/source") +public class DataSourceController extends BaseController { + @Autowired + private DataSourceService dataSourceService; + + /** + * 查询数据源列表 + */ + @ApiOperation("获取数据源列表") + @RequiresPermissions("dataSource:source:list") + @GetMapping("/list") + public Result> list(DataSourceQueryReq dataSourceQueryReq) { + startPage(); + List list = dataSourceService.list(DataSource.queryBuild(dataSourceQueryReq)); + return getDataTable(list); + } + + /** + * 导出数据源列表 + */ + @ApiOperation("导出数据源列表") + @RequiresPermissions("dataSource:source:export") + @Log(title = "数据源", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, DataSource dataSource) { + List list = dataSourceService.list(dataSource); + ExcelUtil util = new ExcelUtil(DataSource.class); + util.exportExcel(response, list, "数据源数据"); + } + + /** + * 获取数据源详细信息 + */ + @ApiOperation("获取数据源详细信息") + @RequiresPermissions("dataSource:source:query") + @GetMapping(value = "/{id}") + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class) + public Result getInfo(@PathVariable("id") Long id) { + return Result.success(dataSourceService.getById(id)); + } + + /** + * 新增数据源 + */ + @RequiresPermissions("dataSource:source:add") + @Log(title = "数据源", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("新增数据源") + public Result add(@RequestBody DataSourceSaveReq dataSourceSaveReq) { + return toAjax(dataSourceService.save(DataSource.saveBuild(dataSourceSaveReq))); + } + + /** + * 修改数据源 + */ + @RequiresPermissions("dataSource:source:edit") + @Log(title = "数据源", businessType = BusinessType.UPDATE) + @PutMapping("/{id}") + @ApiOperation("修改数据源") + public Result edit(@PathVariable Long id, @RequestBody DataSourceEditReq dataSourceEditReq) { + return toAjax(dataSourceService.updateById(DataSource.editBuild(id,dataSourceEditReq))); + } + + /** + * 删除数据源 + */ + @RequiresPermissions("dataSource:source:remove") + @Log(title = "数据源", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + @ApiOperation("删除数据源") + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") + public Result remove(@PathVariable List ids) { + return toAjax(dataSourceService.removeBatchByIds(ids)); + } + /** + * 查询接入类型列表 + */ + @GetMapping("/findAccessType") + public Result> findAccessType(){ + List accessTypeList=dataSourceService.findAccessType(); + return Result.success(accessTypeList); + } + @PostMapping("/testConnection") + public Result testConnection(@RequestBody DataSourceSaveReq dataSourceSaveReq){ + return dataSourceService.testConnection(dataSourceSaveReq); + } +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java new file mode 100644 index 0000000..747edaf --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/mapper/DataSourceMapper.java @@ -0,0 +1,17 @@ +package com.muyu.data.source.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.DataSource; + +/** + * 数据源Mapper接口 + * + * @author muyu + * @date 2024-04-21 + */ +public interface DataSourceMapper extends BaseMapper { + + List findAccessType(); +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java new file mode 100644 index 0000000..d58bcd6 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/DataSourceService.java @@ -0,0 +1,29 @@ +package com.muyu.data.source.service; + +import java.util.List; + +import com.muyu.common.core.domain.Result; +import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.DataSource; +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.data.source.domain.req.DataSourceSaveReq; + +/** + * 数据源Service接口 + * + * @author muyu + * @date 2024-04-21 + */ +public interface DataSourceService extends IService { + /** + * 查询数据源列表 + * + * @param dataSource 数据源 + * @return 数据源集合 + */ + public List list(DataSource dataSource); + + List findAccessType(); + + Result testConnection(DataSourceSaveReq dataSourceQueryReq); +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java new file mode 100644 index 0000000..6c61a89 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/java/com/muyu/data/source/service/impl/DataSourceServiceImpl.java @@ -0,0 +1,118 @@ +package com.muyu.data.source.service.impl; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.List; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.ObjUtils; +import com.muyu.data.source.domain.AccessType; +import com.muyu.data.source.domain.req.DataSourceSaveReq; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.muyu.data.source.mapper.DataSourceMapper; +import com.muyu.data.source.domain.DataSource; +import com.muyu.data.source.service.DataSourceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +/** + * 数据源Service业务层处理 + * + * @author muyu + * @date 2024-04-21 + */ +@Slf4j +@Service +public class DataSourceServiceImpl extends ServiceImpl implements DataSourceService { + @Autowired + private DataSourceMapper dataSourceMapper; + + /** + * 查询数据源列表 + * + * @param dataSource 数据源 + * @return 数据源 + */ + @Override + public List list(DataSource dataSource) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + + if (ObjUtils.notNull(dataSource.getAccessSourceName())){ + queryWrapper.like(DataSource::getAccessSourceName, dataSource.getAccessSourceName()); + } + + if (ObjUtils.notNull(dataSource.getDataSourceSystemName())){ + queryWrapper.like(DataSource::getDataSourceSystemName, dataSource.getDataSourceSystemName()); + } + + if (ObjUtils.notNull(dataSource.getHostAddress())){ + queryWrapper.eq(DataSource::getHostAddress, dataSource.getHostAddress()); + } + + if (ObjUtils.notNull(dataSource.getHostPort())){ + queryWrapper.eq(DataSource::getHostPort, dataSource.getHostPort()); + } + + if (ObjUtils.notNull(dataSource.getDataAccessTypeId())){ + queryWrapper.eq(DataSource::getDataAccessTypeId, dataSource.getDataAccessTypeId()); + } + + if (ObjUtils.notNull(dataSource.getDatabaseName())){ + queryWrapper.like(DataSource::getDatabaseName, dataSource.getDatabaseName()); + } + + if (ObjUtils.notNull(dataSource.getDataConnectionParameter())){ + queryWrapper.eq(DataSource::getDataConnectionParameter, dataSource.getDataConnectionParameter()); + } + + if (ObjUtils.notNull(dataSource.getInitialQuantity())){ + queryWrapper.eq(DataSource::getInitialQuantity, dataSource.getInitialQuantity()); + } + + if (ObjUtils.notNull(dataSource.getMaximumQuantity())){ + queryWrapper.eq(DataSource::getMaximumQuantity, dataSource.getMaximumQuantity()); + } + + + + if (ObjUtils.notNull(dataSource.getMaximumFrequency())){ + queryWrapper.eq(DataSource::getMaximumFrequency, dataSource.getMaximumFrequency()); + } + + + + + + return list(queryWrapper); + } + + @Override + public List findAccessType() { + return dataSourceMapper.findAccessType(); + } + + @Override + public Result testConnection(DataSourceSaveReq dataSourceQueryReq) { + String user = dataSourceQueryReq.getDatabaseUserName(); + String password = dataSourceQueryReq.getDatabaseUserPassword(); + String jdbcDriver = "com.mysql.cj.jdbc.Driver"; + String url = "jdbc:mysql://"+dataSourceQueryReq.getHostAddress()+":"+dataSourceQueryReq.getHostPort()+"/"+dataSourceQueryReq.getDatabaseName(); + try { + Connection con = DriverManager.getConnection(url, user, password); + if (con!=null){ + return Result.success("连接成功"); + } + Statement stmt = con.createStatement(); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + + return Result.error("连接失败"); + } +} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/banner.txt b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..a8aed47 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9527 + +# Spring +spring: + application: + # 应用名称 + name: muyu-data-source + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 115.159.81.159:8848 + config: + # 配置中心地址 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.data.source.mapper: DEBUG diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/logback.xml b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/logback.xml new file mode 100644 index 0000000..aa340cd --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml new file mode 100644 index 0000000..83fc0c2 --- /dev/null +++ b/muyu-modules/muyu-data-source/muyu-data-source-server/src/main/resources/mapper/dataSource/DataSourceMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, access_source_name, data_source_system_name, host_address, host_port, data_access_type_id, database_name, data_connection_parameter, initial_quantity, maximum_quantity, maximum_time, maximum_frequency, remark, create_by, create_time, update_by, update_time ,database_user_name ,database_user_password from data_source + + + diff --git a/muyu-modules/muyu-data-source/pom.xml b/muyu-modules/muyu-data-source/pom.xml new file mode 100644 index 0000000..b2bb493 --- /dev/null +++ b/muyu-modules/muyu-data-source/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-modules + 3.6.3 + + + muyu-data-source + pom + + muyu-data-source-common + muyu-data-source-remote + muyu-data-source-server + + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml index 846198c..f3df8bf 100644 --- a/muyu-modules/pom.xml +++ b/muyu-modules/pom.xml @@ -13,6 +13,7 @@ muyu-gen muyu-job muyu-file + muyu-data-source muyu-modules diff --git a/pom.xml b/pom.xml index fc97f1d..e448ab4 100644 --- a/pom.xml +++ b/pom.xml @@ -35,12 +35,18 @@ 8.2.2 4.1.2 2.14.3 + 3.3.1 + + com.baomidou + dynamic-datasource-spring-boot-starter + ${baomidou.version} + org.springframework.cloud