增加配置增删改查 增加查询数据库名和表名 完善字段查询
parent
b3d0a758b7
commit
a5aeb3cc31
|
@ -2,11 +2,14 @@ package com.muyu.common.domain;
|
||||||
|
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author:张腾
|
* @Author:张腾
|
||||||
* @Package:com.muyu.common.domain
|
* @Package:com.muyu.common.domain
|
||||||
|
@ -21,21 +24,35 @@ import lombok.experimental.SuperBuilder;
|
||||||
public class Connect extends BaseEntity {
|
public class Connect extends BaseEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 连接源
|
* id
|
||||||
*/
|
*/
|
||||||
private String driver = "com.mysql.cj.jdbc.Driver";
|
private Integer id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接入源名称
|
||||||
|
*/
|
||||||
|
private String accSourName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据来源系统名称
|
||||||
|
*/
|
||||||
|
private String dataSourSystemName;
|
||||||
|
|
||||||
//jdbc:mysql://127.0.0.1:3306/test
|
|
||||||
/**
|
/**
|
||||||
* 表名
|
* 表名
|
||||||
*/
|
*/
|
||||||
private String tableName;
|
private String tableName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ip地址+端口号
|
* ip地址
|
||||||
*/
|
*/
|
||||||
private String ipAddress;
|
private String ipAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 端口号地址
|
||||||
|
*/
|
||||||
|
private String port;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据库名称
|
* 数据库名称
|
||||||
*/
|
*/
|
||||||
|
@ -52,9 +69,63 @@ public class Connect extends BaseEntity {
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户想要的字段可以进行选择
|
* 是否初始化
|
||||||
*/
|
*/
|
||||||
private String[] like;
|
private String initialization;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String notes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据连接参数
|
||||||
|
*/
|
||||||
|
private String dataConnParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始连接数量
|
||||||
|
*/
|
||||||
|
private Integer initSize;
|
||||||
|
/**
|
||||||
|
* 最大连接数量
|
||||||
|
*/
|
||||||
|
private Integer maxNumConn;
|
||||||
|
/**
|
||||||
|
* 最大等待时间
|
||||||
|
*/
|
||||||
|
private Integer maxWaitTime;
|
||||||
|
/**
|
||||||
|
* 最大等待次数
|
||||||
|
*/
|
||||||
|
private Integer maxWaitTimes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户最近5条支付单
|
||||||
|
*/
|
||||||
|
private List<Connect> connectList;
|
||||||
|
|
||||||
|
public static Connect connectBuild(Connect connect1, Supplier<List<Connect>> function) {
|
||||||
|
return Connect.builder()
|
||||||
|
.id(connect1.getId())
|
||||||
|
.accSourName(connect1.getAccSourName())
|
||||||
|
.dataSourSystemName(connect1.getDataSourSystemName())
|
||||||
|
.tableName(connect1.getTableName())
|
||||||
|
.ipAddress(connect1.getIpAddress())
|
||||||
|
.port(connect1.getPort())
|
||||||
|
.databaseName(connect1.getDatabaseName())
|
||||||
|
.userName(connect1.getUserName())
|
||||||
|
.password(connect1.getPassword())
|
||||||
|
.initialization(connect1.getInitialization())
|
||||||
|
.notes(connect1.getNotes())
|
||||||
|
.dataConnParam(connect1.getDataConnParam())
|
||||||
|
.initSize(connect1.getInitSize())
|
||||||
|
.maxNumConn(connect1.getMaxNumConn())
|
||||||
|
.maxWaitTime(connect1.getMaxWaitTime())
|
||||||
|
.maxWaitTimes(connect1.getMaxWaitTimes())
|
||||||
|
.connectList(function.get())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
package com.muyu.common.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.common.domain 元数据字段查询表
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:TableField
|
||||||
|
* @Date:2024/8/23 11:39
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@TableName("TableFie")
|
||||||
|
public class TableFie extends BaseEntity {
|
||||||
|
|
||||||
|
private Integer id;
|
||||||
|
@TableField(value = "field")
|
||||||
|
private String fieId;
|
||||||
|
private String type;
|
||||||
|
private String collation;
|
||||||
|
private String nullable;
|
||||||
|
@TableField(value = "primarys")
|
||||||
|
private String primary;
|
||||||
|
private String annotation;
|
||||||
|
|
||||||
|
public static TableFie customerBuild(TableFie tableFie, Supplier<TableFie> function) {
|
||||||
|
return com.muyu.common.domain.TableFie.builder()
|
||||||
|
.fieId(tableFie.getFieId())
|
||||||
|
.type(tableFie.getType())
|
||||||
|
.collation(tableFie.getCollation())
|
||||||
|
.nullable(tableFie.getNullable())
|
||||||
|
.primary(tableFie.getPrimary())
|
||||||
|
.annotation(tableFie.getAnnotation())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加spring流
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static TableFie addBuild(TableFie req) {
|
||||||
|
return com.muyu.common.domain.TableFie.builder()
|
||||||
|
.type(req.getType())
|
||||||
|
.collation(req.getCollation())
|
||||||
|
.nullable(req.getNullable())
|
||||||
|
.primary(req.getPrimary())
|
||||||
|
.annotation(req.getAnnotation())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改spring流
|
||||||
|
* @param req
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static TableFie updBuild(TableFie req, Supplier<String> idSupplier) {
|
||||||
|
return com.muyu.common.domain.TableFie.builder()
|
||||||
|
.fieId(idSupplier.get())
|
||||||
|
.type(req.getType())
|
||||||
|
.collation(req.getCollation())
|
||||||
|
.nullable(req.getNullable())
|
||||||
|
.primary(req.getPrimary())
|
||||||
|
.annotation(req.getAnnotation())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public TableFie buildTableField() {
|
||||||
|
return com.muyu.common.domain.TableFie.builder()
|
||||||
|
.fieId(this.getFieId())
|
||||||
|
.type(this.getType())
|
||||||
|
.collation(this.getCollation())
|
||||||
|
.nullable(this.getNullable())
|
||||||
|
.primary(this.getPrimary())
|
||||||
|
.annotation(this.getAnnotation())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,85 +0,0 @@
|
||||||
package com.muyu.common.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import com.muyu.common.core.enums.SysPayType;
|
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
|
||||||
import lombok.*;
|
|
||||||
import lombok.experimental.SuperBuilder;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author:yang
|
|
||||||
* @Package:com.muyu.common.domain 元数据字段查询表
|
|
||||||
* @Project:cloud-property
|
|
||||||
* @name:TableField
|
|
||||||
* @Date:2024/8/23 11:39
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@SuperBuilder
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
@TableName("TableField")
|
|
||||||
public class TableField extends BaseEntity {
|
|
||||||
|
|
||||||
private Long fieId;
|
|
||||||
private String type;
|
|
||||||
private String collation;
|
|
||||||
private String Null;
|
|
||||||
private String key;
|
|
||||||
private String comment;
|
|
||||||
|
|
||||||
public static TableField customerBuild(TableField tableField, Supplier<TableField> function) {
|
|
||||||
return TableField.builder()
|
|
||||||
.fieId(tableField.getFieId())
|
|
||||||
.type(tableField.getType())
|
|
||||||
.collation(tableField.getCollation())
|
|
||||||
.Null(tableField.getNull())
|
|
||||||
.key(tableField.getKey())
|
|
||||||
.comment(tableField.getComment())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加spring流
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static TableField addBuild(TableField req) {
|
|
||||||
return TableField.builder()
|
|
||||||
.type(req.getType())
|
|
||||||
.collation(req.getCollation())
|
|
||||||
.Null(req.getNull())
|
|
||||||
.key(req.getKey())
|
|
||||||
.comment(req.getComment())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改spring流
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static TableField updBuild(TableField req, Supplier<Long> idSupplier) {
|
|
||||||
return TableField.builder()
|
|
||||||
.fieId(idSupplier.get())
|
|
||||||
.type(req.getType())
|
|
||||||
.collation(req.getCollation())
|
|
||||||
.Null(req.getNull())
|
|
||||||
.key(req.getKey())
|
|
||||||
.comment(req.getComment())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public TableField buildTableField() {
|
|
||||||
return TableField.builder()
|
|
||||||
.fieId(this.getFieId())
|
|
||||||
.type(this.getType())
|
|
||||||
.collation(this.getCollation())
|
|
||||||
.Null(this.getNull())
|
|
||||||
.key(this.getKey())
|
|
||||||
.comment(this.getComment())
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.muyu.common.domain;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.common.domain
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:TableName
|
||||||
|
* @Date:2024/8/25 15:12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@com.baomidou.mybatisplus.annotation.TableName("TableNames")
|
||||||
|
public class TableNames extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表名称
|
||||||
|
*/
|
||||||
|
private String[] tableName;
|
||||||
|
/**
|
||||||
|
* 数据库名称
|
||||||
|
*/
|
||||||
|
private String[] dataName;
|
||||||
|
}
|
|
@ -21,18 +21,12 @@ public class ConnectReq {
|
||||||
/**
|
/**
|
||||||
* 连接源
|
* 连接源
|
||||||
*/
|
*/
|
||||||
private String driver = "com.mysql.cj.jdbc.Driver";
|
private String DRIVER = "com.mysql.cj.jdbc.Driver";
|
||||||
|
|
||||||
//jdbc:mysql://127.0.0.1:3306/test
|
//jdbc:mysql://127.0.0.1:3306/test
|
||||||
/**
|
/**
|
||||||
* 连接地址
|
* 连接地址
|
||||||
*/
|
*/
|
||||||
private final String url = "jdbc:mysql://";
|
private final String URL = "jdbc:mysql://";
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 表名
|
|
||||||
*/
|
|
||||||
private String tableName = "/";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.muyu.common.domain.req;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:张腾
|
||||||
|
* @Package:com.muyu.common.domain
|
||||||
|
* @Project:cloud-integration
|
||||||
|
* @name:Connection
|
||||||
|
* @Date:2024/8/21 1:00
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ConnectResp extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接入源名称
|
||||||
|
*/
|
||||||
|
private String accSourName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据来源系统名称
|
||||||
|
*/
|
||||||
|
private String dataSourSystemName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据接入类型
|
||||||
|
*/
|
||||||
|
private String clazzName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ip地址
|
||||||
|
*/
|
||||||
|
private String ipAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 端口号地址
|
||||||
|
*/
|
||||||
|
private String port;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库名称
|
||||||
|
*/
|
||||||
|
private String databaseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否初始化
|
||||||
|
*/
|
||||||
|
private Integer initialization;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String notes;
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
package com.muyu.server.controller;
|
||||||
|
|
||||||
|
import com.muyu.common.core.domain.Result;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
import com.muyu.server.service.ConnectService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.controller
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:ConnectReqController
|
||||||
|
* @Date:2024/8/25 16:12
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/connect")
|
||||||
|
@Tag(name = "查询数据",description = "从配置表查询数据")
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ConnectController {
|
||||||
|
|
||||||
|
private final ConnectService connectService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询配置表
|
||||||
|
* @param connect 配置列表请求参数
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
@PostMapping("/selectConnect")
|
||||||
|
@Operation(summary = "查询数据",description = "查询数据")
|
||||||
|
public Result<List<Connect>> selectConnect(
|
||||||
|
@Validated @RequestBody Connect connect
|
||||||
|
){
|
||||||
|
return Result.success(connectService.selectConnect(connect));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加方法
|
||||||
|
* @param connect 响应配置信息
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@PostMapping("/add")
|
||||||
|
@Operation(summary = "添加配置表",description = "添加配置信息,添加添加成功之后才可以使用配置类的产品")
|
||||||
|
public Result<Integer> save(
|
||||||
|
@Validated @RequestBody Connect connect
|
||||||
|
){
|
||||||
|
return connectService.save(connect)
|
||||||
|
?Result.success(200,"添加成功")
|
||||||
|
:Result.error(500,"添加失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改方法
|
||||||
|
* @param connect 响应配置信息
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@PutMapping("/upd")
|
||||||
|
@Operation(summary = "修改方法",description = "根据ID进行修改配置信息")
|
||||||
|
public Result<Integer> update(
|
||||||
|
@Schema(title = "配置ID",type = "Integer",defaultValue = "1",description = "修改配置需要唯一条件")
|
||||||
|
@Validated @RequestBody Connect connect
|
||||||
|
){
|
||||||
|
return connectService.updateById(connect)
|
||||||
|
?Result.success(200,"修改成功")
|
||||||
|
:Result.error(500,"修改失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除配置信息
|
||||||
|
* @param id 请求ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@DeleteMapping("/del/{id}")
|
||||||
|
@Operation(summary = "客户信息删除",description = "通过ID删除客户信息")
|
||||||
|
public Result<Integer> delete(@PathVariable("id") Integer id){
|
||||||
|
return connectService.removeById(id)
|
||||||
|
?Result.success(200,"删除成功")
|
||||||
|
:Result.error(500,"删除失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将可以被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/updInit/{id}")
|
||||||
|
@Operation(summary = "通过ID改变初始化状态",description = "通过ID改变初始化后,将可以被初始化")
|
||||||
|
public Result<Integer> updInitDisable(
|
||||||
|
@PathVariable Integer id){
|
||||||
|
|
||||||
|
return connectService.updInitDisable(id)
|
||||||
|
?Result.success(200,"更改成功")
|
||||||
|
:Result.error(500,"更改失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将不再被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@GetMapping("/updInit/{id}")
|
||||||
|
@Operation(summary = "通过ID改变初始化状态",description = "通过ID改变初始化后,将不再被初始化")
|
||||||
|
public Result<Integer> updInitEnable(
|
||||||
|
@PathVariable Integer id){
|
||||||
|
|
||||||
|
return connectService.updInitEnable(id)
|
||||||
|
?Result.success(200,"更改成功")
|
||||||
|
:Result.error(500,"更改失败");
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,17 +3,16 @@ package com.muyu.server.controller;
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.common.domain.Connect;
|
import com.muyu.common.domain.Connect;
|
||||||
import com.muyu.common.domain.DataSourceList;
|
import com.muyu.common.domain.DataSourceList;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
import com.muyu.server.service.DataSourceService;
|
import com.muyu.server.service.DataSourceService;
|
||||||
import com.muyu.server.service.TableFieldService;
|
import com.muyu.server.service.TableFieldService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,31 +50,45 @@ public class DataSourceController {
|
||||||
*/
|
*/
|
||||||
@PostMapping("/tableField")
|
@PostMapping("/tableField")
|
||||||
@Operation(summary = "抽取结构",description = "从数据源中抽取结构")
|
@Operation(summary = "抽取结构",description = "从数据源中抽取结构")
|
||||||
public Result<String> extractTableField(@RequestBody Connect connect){
|
public Result<List<TableFie>> extractTableField(@RequestBody Connect connect){
|
||||||
List<TableField> tableFields = dataSourceService.extractTableField(connect);
|
List<TableFie> tableFIES = dataSourceService.extractTableField(connect);
|
||||||
if (CollectionUtils.isEmpty(tableFields)){
|
if (CollectionUtils.isEmpty(tableFIES)){
|
||||||
return Result.success(null,"未查询到结构,请检查数据库");
|
return Result.success(null,"未查询到结构,请检查数据来源");
|
||||||
}
|
}
|
||||||
for (TableField tableField : tableFields) {
|
for (TableFie tableFie : tableFIES) {
|
||||||
tableFieldService.save(tableField);
|
tableFieldService.save(tableFie);
|
||||||
}
|
}
|
||||||
return Result.success(null,"您的数据已成功获取");
|
return Result.success(tableFIES,"您的数据已成功获取");
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 修改结构
|
* 获取数据库名
|
||||||
// * @param id 实体类
|
* @param connect 实体类
|
||||||
// * @return 修改结果
|
* @return 返回试图
|
||||||
// */
|
*/
|
||||||
// @PutMapping("/update/{id}")
|
@PostMapping("/dataName")
|
||||||
// @Operation(summary = "数据源信息修改",description = "通过ID修改数据源中修改数据")
|
@Operation(summary = "获取数据库名",description = "从数据库中抽取数据库名称")
|
||||||
// public Result<String> update(
|
public Result<String[]> extractDataName(@RequestBody Connect connect){
|
||||||
// @Schema(title = "元数据Id",type = "Long",defaultValue = "1",description = "修改元数据信息需要依据的唯一条件")
|
String[] tableName = dataSourceService.extractDataName(connect);
|
||||||
// @PathVariable("id") Long id,
|
if (StringUtils.isEmpty(tableName)){
|
||||||
// @RequestBody DataSourceList dataSourceList){
|
return Result.success(null,"未查询到结构,请检查数据来源");
|
||||||
//
|
}
|
||||||
// dataSourceService.updateById(DataSourceList.updBuild(dataSourceList,()->id));
|
return Result.success(tableName,"您的数据已成功获取");
|
||||||
// return Result.success(null,"您的数据已成功获取");
|
}
|
||||||
// }
|
|
||||||
|
/**
|
||||||
|
* 获取数据库表名
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
@PostMapping("/tableName")
|
||||||
|
@Operation(summary = "获取数据库表名",description = "从数据库中抽取数据库表名称")
|
||||||
|
public Result<String[]> extractTableName(@RequestBody Connect connect){
|
||||||
|
String[] tableFIES = dataSourceService.extractTableName(connect);
|
||||||
|
if (StringUtils.isEmpty(tableFIES)){
|
||||||
|
return Result.success(null,"未查询到结构,请检查数据来源");
|
||||||
|
}
|
||||||
|
return Result.success(tableFIES,"您的数据已成功获取");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.muyu.server.controller;
|
package com.muyu.server.controller;
|
||||||
|
|
||||||
import com.muyu.common.core.domain.Result;
|
import com.muyu.common.core.domain.Result;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
import com.muyu.server.service.TableFieldService;
|
import com.muyu.server.service.TableFieldService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
@ -29,33 +29,33 @@ public class TableFieldController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询所有数据字段
|
* 查询所有数据字段
|
||||||
* @param tableField 所有数据字段列表请求参数
|
* @param tableFie 所有数据字段列表请求参数
|
||||||
* @return 数据字段列表
|
* @return 数据字段列表
|
||||||
*/
|
*/
|
||||||
@RequestMapping(path = "/list" ,method = RequestMethod.POST)
|
@RequestMapping(path = "/list" ,method = RequestMethod.POST)
|
||||||
@Operation(summary = "抽取数据字段",description = "所有数据字段列表请求参数")
|
@Operation(summary = "抽取数据字段",description = "所有数据字段列表请求参数")
|
||||||
public Result<List<TableField>> selectList(
|
public Result<List<TableFie>> selectList(
|
||||||
@Validated @RequestBody TableField tableField){
|
@Validated @RequestBody TableFie tableFie){
|
||||||
return Result.success(
|
return Result.success(
|
||||||
tableFieldService.selectList(tableField)
|
tableFieldService.selectList(tableFie)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加方法
|
* 添加方法
|
||||||
* @param tableField
|
* @param tableFie
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
@Operation(summary = "数据字段添加",description = "添加数据字段信息,添加成功之后才可以使用数据字段")
|
@Operation(summary = "数据字段添加",description = "添加数据字段信息,添加成功之后才可以使用数据字段")
|
||||||
public Result<String> save(@Validated @RequestBody TableField tableField){
|
public Result<String> save(@Validated @RequestBody TableFie tableFie){
|
||||||
tableFieldService.save(TableField.addBuild(tableField));
|
tableFieldService.save(com.muyu.common.domain.TableFie.addBuild(tableFie));
|
||||||
return Result.success(null,"操作成功");
|
return Result.success(null,"操作成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改方法
|
* 修改方法
|
||||||
* @param tableField 修改方法请求信息
|
* @param tableFie 修改方法请求信息
|
||||||
* @return 修改结果
|
* @return 修改结果
|
||||||
*/
|
*/
|
||||||
@PutMapping("/update/{fieId}")
|
@PutMapping("/update/{fieId}")
|
||||||
|
@ -63,8 +63,8 @@ public class TableFieldController {
|
||||||
public Result<String> update(
|
public Result<String> update(
|
||||||
@Schema(title = "数据字段ID",type = "Long",defaultValue = "1",description = "修改数据字段信息需要依据的唯一条件")
|
@Schema(title = "数据字段ID",type = "Long",defaultValue = "1",description = "修改数据字段信息需要依据的唯一条件")
|
||||||
@PathVariable("fieId") Long fieId,
|
@PathVariable("fieId") Long fieId,
|
||||||
@RequestBody @Validated TableField tableField){
|
@RequestBody @Validated TableFie tableFie){
|
||||||
tableFieldService.updateById(TableField.updBuild(tableField,()->fieId));
|
tableFieldService.updateById(TableFie.updBuild(tableFie,()-> String.valueOf(fieId)));
|
||||||
return Result.success(null,"操作成功");
|
return Result.success(null,"操作成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.muyu.server.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.mapper
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:ConnectReqMapper
|
||||||
|
* @Date:2024/8/25 16:16
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ConnectMapper extends BaseMapper<Connect> {
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.muyu.server.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.mapper
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:OrderConnectMapper
|
||||||
|
* @Date:2024/8/25 19:04
|
||||||
|
*/
|
||||||
|
public interface OrderConnectMapper extends BaseMapper<Connect> {
|
||||||
|
}
|
|
@ -1,12 +1,9 @@
|
||||||
package com.muyu.server.mapper;
|
package com.muyu.server.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.muyu.common.domain.TableFie;
|
||||||
import com.muyu.common.domain.TableField;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author:yang
|
* @Author:yang
|
||||||
* @Package:com.muyu.server.service
|
* @Package:com.muyu.server.service
|
||||||
|
@ -15,5 +12,5 @@ import java.util.ArrayList;
|
||||||
* @Date:2024/8/23 14:00
|
* @Date:2024/8/23 14:00
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface TableFieldMapper extends BaseMapper<TableField> {
|
public interface TableFieldMapper extends BaseMapper<TableFie> {
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
package com.muyu.server.mapper;
|
package com.muyu.server.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
import jdk.jfr.MemoryAddress;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,5 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
* @Date:2024/8/23 20:18
|
* @Date:2024/8/23 20:18
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface TableFieldMapperlimt extends BaseMapper<TableField> {
|
public interface TableFieldMapperlimt extends BaseMapper<TableFie> {
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.muyu.server.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.service
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:ConnectReqService
|
||||||
|
* @Date:2024/8/25 16:14
|
||||||
|
*/
|
||||||
|
public interface ConnectService extends IService<Connect> {
|
||||||
|
/**
|
||||||
|
* 查询配置表
|
||||||
|
* @param connect 配置列表请求参数
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
List<Connect> selectConnect(Connect connect);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将可以被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
boolean updInitDisable(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将不再被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
boolean updInitEnable(Integer id);
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ package com.muyu.server.service;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.muyu.common.domain.Connect;
|
import com.muyu.common.domain.Connect;
|
||||||
import com.muyu.common.domain.DataSourceList;
|
import com.muyu.common.domain.DataSourceList;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -21,6 +21,24 @@ public interface DataSourceService extends IService<DataSourceList> {
|
||||||
|
|
||||||
void detailData(List<DataSourceList> dataSourceLists);
|
void detailData(List<DataSourceList> dataSourceLists);
|
||||||
|
|
||||||
List<TableField> extractTableField(Connect connect);
|
/**
|
||||||
|
* 抽取结构
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
List<TableFie> extractTableField(Connect connect);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库名
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
String[] extractDataName(Connect connect);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库表名
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
String[] extractTableName(Connect connect);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.muyu.server.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.service
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:orderConnectService
|
||||||
|
* @Date:2024/8/25 19:01
|
||||||
|
*/
|
||||||
|
public interface OrderConnectService extends IService<Connect> {
|
||||||
|
List<Connect> selectConnectByAppCodeAndLimit(Integer id, int limit);
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
package com.muyu.server.service;
|
package com.muyu.server.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -13,11 +12,11 @@ import java.util.List;
|
||||||
* @name:TableFieldService
|
* @name:TableFieldService
|
||||||
* @Date:2024/8/23 14:00
|
* @Date:2024/8/23 14:00
|
||||||
*/
|
*/
|
||||||
public interface TableFieldService extends IService<TableField> {
|
public interface TableFieldService extends IService<TableFie> {
|
||||||
/**
|
/**
|
||||||
* 查询所有数据字段
|
* 查询所有数据字段
|
||||||
* @param tableField 所有数据字段列表请求参数
|
* @param tableFie 所有数据字段列表请求参数
|
||||||
* @return 数据字段列表
|
* @return 数据字段列表
|
||||||
*/
|
*/
|
||||||
List<TableField> selectList(TableField tableField);
|
List<TableFie> selectList(TableFie tableFie);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
package com.muyu.server.service;
|
package com.muyu.server.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author:yang
|
* @Author:yang
|
||||||
|
@ -13,12 +12,12 @@ import java.util.Optional;
|
||||||
* @name:TableFieldServicelimt
|
* @name:TableFieldServicelimt
|
||||||
* @Date:2024/8/23 20:16
|
* @Date:2024/8/23 20:16
|
||||||
*/
|
*/
|
||||||
public interface TableFieldServicelimt extends IService<TableField> {
|
public interface TableFieldServicelimt extends IService<TableFie> {
|
||||||
/**
|
/**
|
||||||
* 根据客户code和分页限制,查询结果
|
* 根据客户code和分页限制,查询结果
|
||||||
* @param fieId 客户code
|
* @param fieId 客户code
|
||||||
* @param limit 分页限制
|
* @param limit 分页限制
|
||||||
* @return 支付结果记录
|
* @return 支付结果记录
|
||||||
*/
|
*/
|
||||||
List<TableField> selectOrderPayByAppCodeAndLimit(Long fieId, int limit);
|
List<TableFie> selectOrderPayByAppCodeAndLimit(String fieId, int limit);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
package com.muyu.server.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.common.core.enums.SystemYesNo;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
import com.muyu.server.mapper.ConnectMapper;
|
||||||
|
import com.muyu.server.service.ConnectService;
|
||||||
|
import com.muyu.server.service.OrderConnectService;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.service.impl
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:ConnectReqServiceImpl
|
||||||
|
* @Date:2024/8/25 16:15
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ConnectServiceImpl
|
||||||
|
extends ServiceImpl<ConnectMapper, Connect>
|
||||||
|
implements ConnectService {
|
||||||
|
|
||||||
|
private final OrderConnectService orderConnectService;
|
||||||
|
private final ConnectService connectService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询配置表
|
||||||
|
* @param connect 配置列表请求参数
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Connect> selectConnect(Connect connect) {
|
||||||
|
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(
|
||||||
|
StringUtils.isNotEmpty(connect.getAccSourName()),
|
||||||
|
Connect::getAccSourName, connect.getAccSourName()
|
||||||
|
);
|
||||||
|
queryWrapper.eq(
|
||||||
|
StringUtils.isNotEmpty(connect.getDataSourSystemName()),
|
||||||
|
Connect::getDataSourSystemName, connect.getDataSourSystemName()
|
||||||
|
);
|
||||||
|
queryWrapper.eq(
|
||||||
|
StringUtils.isNotEmpty(connect.getDatabaseName()),
|
||||||
|
Connect::getDatabaseName, connect.getDatabaseName()
|
||||||
|
);
|
||||||
|
List<Connect> connects = this.list(queryWrapper);
|
||||||
|
return connects.stream()
|
||||||
|
.map(connect1 -> Connect.connectBuild(connect1, () ->
|
||||||
|
orderConnectService.selectConnectByAppCodeAndLimit(connect1.getId(),5)
|
||||||
|
.stream()
|
||||||
|
.toList()
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将可以被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean updInitDisable(Integer id) {
|
||||||
|
return this.settingStatus(id, SystemYesNo.YES.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ID改变初始化状态 将不再被初始化
|
||||||
|
* @param id 响应ID
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean updInitEnable(Integer id) {
|
||||||
|
return this.settingStatus(id, SystemYesNo.YES.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean settingStatus(Integer id, String initialization) {
|
||||||
|
return this.updateById(
|
||||||
|
Connect.builder()
|
||||||
|
.id(id)
|
||||||
|
.initialization(initialization)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,21 +1,21 @@
|
||||||
package com.muyu.server.service.impl;
|
package com.muyu.server.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import com.alibaba.druid.pool.DruidPooledConnection;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.muyu.common.core.utils.StringUtils;
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
import com.muyu.common.domain.Connect;
|
import com.muyu.common.domain.Connect;
|
||||||
import com.muyu.common.domain.DataSourceList;
|
import com.muyu.common.domain.DataSourceList;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
|
import com.muyu.common.domain.TableNames;
|
||||||
import com.muyu.server.mapper.DataSourceMapper;
|
import com.muyu.server.mapper.DataSourceMapper;
|
||||||
import com.muyu.server.service.DataSourceService;
|
import com.muyu.server.service.DataSourceService;
|
||||||
import com.muyu.server.service.TableFieldService;
|
import com.muyu.server.service.TableFieldService;
|
||||||
import com.muyu.server.util.JdbcHelper;
|
import com.muyu.server.util.JdbcHelper;
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -62,16 +62,16 @@ public class DataSourceServiceImpl
|
||||||
try {
|
try {
|
||||||
|
|
||||||
String sql = null;
|
String sql = null;
|
||||||
Connection conn = JdbcHelper.getConn(connect);
|
DruidDataSource conn = JdbcHelper.getConn(connect);
|
||||||
String like = "";
|
String like = "";
|
||||||
for (String s : connect.getLike()) {
|
// for (String s : connect.getLike()) {
|
||||||
if (s.equals("Name") || s.equals("name")){
|
// if (s.equals("Name") || s.equals("name")){
|
||||||
like += ",dashuju." + "`\uFEFFName`";
|
// like += ",dashuju." + "`\uFEFFName`";
|
||||||
}else{
|
// }else{
|
||||||
like += "," + s;
|
// like += "," + s;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
String substring = like.substring(1);
|
String substring = like.substring(1);
|
||||||
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
||||||
sql = "select " + substring + " from " + connect.getTableName() +" LIMIT "+i+","+size;
|
sql = "select " + substring + " from " + connect.getTableName() +" LIMIT "+i+","+size;
|
||||||
|
@ -79,7 +79,8 @@ public class DataSourceServiceImpl
|
||||||
count=count+size;
|
count=count+size;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(sql);
|
DruidPooledConnection connection = conn.getConnection();
|
||||||
|
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
@ -105,7 +106,7 @@ public class DataSourceServiceImpl
|
||||||
if (!rs.next()){
|
if (!rs.next()){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
JdbcHelper.close(conn, preparedStatement, rs);
|
JdbcHelper.close(connection, preparedStatement, rs);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
@ -124,8 +125,13 @@ public class DataSourceServiceImpl
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 抽取结构
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<TableField> extractTableField(Connect connect) {
|
public List<TableFie> extractTableField(Connect connect) {
|
||||||
|
|
||||||
|
|
||||||
if (StringUtils.isEmpty(connect.getIpAddress())){
|
if (StringUtils.isEmpty(connect.getIpAddress())){
|
||||||
|
@ -139,34 +145,129 @@ public class DataSourceServiceImpl
|
||||||
if (StringUtils.isEmpty(connect.getPassword())){
|
if (StringUtils.isEmpty(connect.getPassword())){
|
||||||
throw new RuntimeException("请输入数据库密码");
|
throw new RuntimeException("请输入数据库密码");
|
||||||
}
|
}
|
||||||
int count = 2;
|
|
||||||
for (int i = 1; i < count; i++) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
String sql = null;
|
String sql = null;
|
||||||
Connection conn = JdbcHelper.getConn(connect);
|
DruidDataSource druidDataSource = JdbcHelper.getConn(connect);
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
||||||
sql = "SHOW FULL FIELDS FROM " + connect.getTableName();
|
sql = "SHOW FULL FIELDS FROM " + connect.getTableName();
|
||||||
}
|
}
|
||||||
|
try (Connection conn = druidDataSource.getConnection()) {
|
||||||
|
// 在这里执行你的数据库操作
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(sql);
|
PreparedStatement preparedStatement = conn.prepareStatement(sql);
|
||||||
ResultSet rs = preparedStatement.executeQuery();
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
ArrayList<TableField> tableFields = new ArrayList<>();
|
ArrayList<TableFie> tableFIES = new ArrayList<>();
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
TableField build = TableField.builder()
|
String fieldId = rs.getString("Field"); // 使用正确的列名 Field
|
||||||
.fieId(rs.getLong("fieId"))
|
TableFie tableFie = TableFie.builder()
|
||||||
.type(rs.getString("type"))
|
.fieId(fieldId) // 假设你修改了字段名为 fieldId,以符合常规命名规范
|
||||||
.collation(rs.getString("collation"))
|
.type(rs.getString("Type"))
|
||||||
.Null(rs.getString("Null"))
|
.collation(rs.getString("Collation"))
|
||||||
.key(rs.getString("key"))
|
.nullable(rs.getString("Null")) // 转换为布尔值,假设你想要这个字段
|
||||||
.comment(rs.getString("comment"))
|
.primary(rs.getString("Key"))
|
||||||
|
.annotation(rs.getString("Comment"))
|
||||||
.build();
|
.build();
|
||||||
tableFields.add(build);
|
tableFIES.add(tableFie);
|
||||||
}
|
}
|
||||||
return tableFields;
|
JdbcHelper.close(conn,preparedStatement,rs);
|
||||||
}catch (Exception e){}
|
return tableFIES;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库名
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String[] extractDataName(Connect connect) {
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(connect.getIpAddress())){
|
||||||
|
throw new RuntimeException("请输入ip地址+端口号! 格式:127.0.0.1:3306");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(connect.getUserName())){
|
||||||
|
throw new RuntimeException("请输入数据库用户名!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(connect.getPassword())){
|
||||||
|
throw new RuntimeException("请输入数据库密码");
|
||||||
|
}
|
||||||
|
|
||||||
|
String sql = null;
|
||||||
|
DruidDataSource druidDataSource = JdbcHelper.getConn(connect);
|
||||||
|
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
||||||
|
sql = "SHOW DATABASES;";
|
||||||
|
}
|
||||||
|
try (Connection conn = druidDataSource.getConnection()) {
|
||||||
|
// 在这里执行你的数据库操作
|
||||||
|
PreparedStatement preparedStatement = conn.prepareStatement(sql);
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
TableNames tableNames = new TableNames();
|
||||||
|
int count = 0;
|
||||||
|
while (rs.next()) {
|
||||||
|
String database = rs.getString("Database");
|
||||||
|
|
||||||
|
tableNames.getDataName()[count] = database;
|
||||||
|
count++;
|
||||||
|
System.out.println(tableNames);
|
||||||
|
}
|
||||||
|
JdbcHelper.close(conn,preparedStatement,rs);
|
||||||
|
return tableNames.getDataName();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库表名
|
||||||
|
* @param connect 实体类
|
||||||
|
* @return 返回试图
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String[] extractTableName(Connect connect) {
|
||||||
|
if (StringUtils.isEmpty(connect.getIpAddress())){
|
||||||
|
throw new RuntimeException("请输入ip地址+端口号! 格式:127.0.0.1:3306");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(connect.getUserName())){
|
||||||
|
throw new RuntimeException("请输入数据库用户名!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(connect.getPassword())){
|
||||||
|
throw new RuntimeException("请输入数据库密码");
|
||||||
|
}
|
||||||
|
|
||||||
|
String sql = null;
|
||||||
|
DruidDataSource druidDataSource = JdbcHelper.getConn(connect);
|
||||||
|
if (StringUtils.isNotEmpty(connect.getTableName())) {
|
||||||
|
sql = "SHOW tables;";
|
||||||
|
}
|
||||||
|
try (Connection conn = druidDataSource.getConnection()) {
|
||||||
|
// 在这里执行你的数据库操作
|
||||||
|
PreparedStatement preparedStatement = conn.prepareStatement(sql);
|
||||||
|
ResultSet rs = preparedStatement.executeQuery();
|
||||||
|
TableNames tableNames = new TableNames();
|
||||||
|
int count = 0;
|
||||||
|
while (rs.next()) {
|
||||||
|
String tables = rs.getString("Tables_in_core_data_warehouse");
|
||||||
|
|
||||||
|
tableNames.getTableName()[count] = tables;
|
||||||
|
count++;
|
||||||
|
System.out.println(tableNames);
|
||||||
|
}
|
||||||
|
JdbcHelper.close(conn,preparedStatement,rs);
|
||||||
|
return tableNames.getTableName();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.muyu.server.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.muyu.common.domain.Connect;
|
||||||
|
import com.muyu.server.mapper.OrderConnectMapper;
|
||||||
|
import com.muyu.server.service.OrderConnectService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.service.impl
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:OrderConnectServiceImpl
|
||||||
|
* @Date:2024/8/25 19:03
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class OrderConnectServiceImpl extends ServiceImpl<OrderConnectMapper, Connect> implements OrderConnectService {
|
||||||
|
@Override
|
||||||
|
public List<Connect> selectConnectByAppCodeAndLimit(Integer id, int limit) {
|
||||||
|
|
||||||
|
LambdaQueryWrapper<Connect> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(Connect::getId,id);
|
||||||
|
queryWrapper.orderBy(true,false,Connect::getCreateTime);
|
||||||
|
queryWrapper.last("limit "+limit);
|
||||||
|
return this.list(queryWrapper);
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,7 @@ package com.muyu.server.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
import com.muyu.server.mapper.TableFieldMapper;
|
import com.muyu.server.mapper.TableFieldMapper;
|
||||||
import com.muyu.server.service.TableFieldService;
|
import com.muyu.server.service.TableFieldService;
|
||||||
import com.muyu.server.service.TableFieldServicelimt;
|
import com.muyu.server.service.TableFieldServicelimt;
|
||||||
|
@ -21,7 +21,7 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class TableFieldServiceImpl
|
public class TableFieldServiceImpl
|
||||||
extends ServiceImpl<TableFieldMapper,TableField>
|
extends ServiceImpl<TableFieldMapper, TableFie>
|
||||||
implements TableFieldService {
|
implements TableFieldService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -29,23 +29,23 @@ public class TableFieldServiceImpl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询所有数据字段
|
* 查询所有数据字段
|
||||||
* @param tableField 所有数据字段列表请求参数
|
* @param tableFie 所有数据字段列表请求参数
|
||||||
* @return 数据字段列表
|
* @return 数据字段列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<TableField> selectList(TableField tableField) {
|
public List<TableFie> selectList(TableFie tableFie) {
|
||||||
LambdaQueryWrapper<TableField> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<TableFie> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.like(
|
queryWrapper.like(
|
||||||
StringUtils.isNotEmpty(tableField.getType()),
|
StringUtils.isNotEmpty(tableFie.getType()),
|
||||||
TableField::getType,tableField.getType()
|
com.muyu.common.domain.TableFie::getType, tableFie.getType()
|
||||||
);
|
);
|
||||||
List<TableField> tableFieldList = this.list(queryWrapper);
|
List<TableFie> tableFieList = this.list(queryWrapper);
|
||||||
return tableFieldList.stream()
|
return tableFieList.stream()
|
||||||
.map(orderPaytableField -> TableField.customerBuild(
|
.map(orderPaytableField -> com.muyu.common.domain.TableFie.customerBuild(
|
||||||
orderPaytableField,
|
orderPaytableField,
|
||||||
() -> (TableField) tableFieldServicelimt.selectOrderPayByAppCodeAndLimit(orderPaytableField.getFieId(),5)
|
() -> (TableFie) tableFieldServicelimt.selectOrderPayByAppCodeAndLimit(orderPaytableField.getFieId(),5)
|
||||||
.stream()
|
.stream()
|
||||||
.map(TableField::buildTableField)
|
.map(com.muyu.common.domain.TableFie::buildTableField)
|
||||||
.toList()
|
.toList()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
package com.muyu.server.service.impl;
|
package com.muyu.server.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.muyu.common.domain.TableField;
|
import com.muyu.common.domain.TableFie;
|
||||||
import com.muyu.server.mapper.TableFieldMapperlimt;
|
import com.muyu.server.mapper.TableFieldMapperlimt;
|
||||||
import com.muyu.server.service.TableFieldServicelimt;
|
import com.muyu.server.service.TableFieldServicelimt;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -19,15 +18,15 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class TableFieldServicelimtImpl
|
public class TableFieldServicelimtImpl
|
||||||
extends ServiceImpl<TableFieldMapperlimt, TableField>
|
extends ServiceImpl<TableFieldMapperlimt, TableFie>
|
||||||
implements TableFieldServicelimt {
|
implements TableFieldServicelimt {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableField> selectOrderPayByAppCodeAndLimit(Long fieId, int limit) {
|
public List<TableFie> selectOrderPayByAppCodeAndLimit(String fieId, int limit) {
|
||||||
|
|
||||||
LambdaQueryWrapper<TableField> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<TableFie> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
objectLambdaQueryWrapper.eq(TableField::getFieId, fieId);
|
objectLambdaQueryWrapper.eq(com.muyu.common.domain.TableFie::getFieId, fieId);
|
||||||
objectLambdaQueryWrapper.orderBy(true,false,TableField::getFieId);
|
objectLambdaQueryWrapper.orderBy(true,false,TableFie::getFieId);
|
||||||
objectLambdaQueryWrapper.last("limit "+limit);
|
objectLambdaQueryWrapper.last("limit "+limit);
|
||||||
|
|
||||||
return this.list(objectLambdaQueryWrapper);
|
return this.list(objectLambdaQueryWrapper);
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package com.muyu.server.util;
|
package com.muyu.server.util;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
import com.muyu.common.domain.Connect;
|
import com.muyu.common.domain.Connect;
|
||||||
import com.muyu.common.domain.req.ConnectReq;
|
import com.muyu.common.domain.req.ConnectReq;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
|
@ -14,12 +16,31 @@ import java.sql.*;
|
||||||
* @Date:2024/8/20 21:45
|
* @Date:2024/8/20 21:45
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
|
@Log4j2
|
||||||
public class JdbcHelper {
|
public class JdbcHelper {
|
||||||
|
|
||||||
|
|
||||||
public static Connection getConn( Connect connect) throws SQLException, ClassNotFoundException {
|
public static DruidDataSource getConn( Connect connect) {
|
||||||
Class.forName(new ConnectReq().getDriver());
|
while (0<connect.getMaxWaitTimes()){
|
||||||
return DriverManager.getConnection(new ConnectReq().getUrl()+connect.getIpAddress()+"/"+connect.getDatabaseName(),connect.getUserName(),connect.getPassword());
|
try {
|
||||||
|
DruidDataSource druidDataSource = new DruidDataSource();
|
||||||
|
String dcp = connect.getDataConnParam();
|
||||||
|
druidDataSource.setUrl(new ConnectReq().getURL()+connect.getIpAddress()+":"+connect.getPort()+"/"+connect.getDatabaseName() + (dcp != null && !dcp.isEmpty()? "?" + dcp : ""));
|
||||||
|
druidDataSource.setUsername(connect.getUserName());
|
||||||
|
druidDataSource.setPassword(connect.getPassword());
|
||||||
|
//"com.mysql.cj.jdbc.Driver"
|
||||||
|
druidDataSource.setDriverClassName(new ConnectReq().getDRIVER());
|
||||||
|
druidDataSource.setInitialSize(connect.getInitSize());
|
||||||
|
druidDataSource.setMaxActive(connect.getMaxNumConn());
|
||||||
|
druidDataSource.setMaxWait(connect.getMaxWaitTime());
|
||||||
|
|
||||||
|
return druidDataSource;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("异常为:{}"+e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) throws SQLException {
|
public static void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) throws SQLException {
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package com.muyu.server.util;
|
||||||
|
|
||||||
|
import jakarta.servlet.ServletContextEvent;
|
||||||
|
import jakarta.servlet.ServletContextListener;
|
||||||
|
import jakarta.servlet.annotation.WebListener;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:yang
|
||||||
|
* @Package:com.muyu.server.util
|
||||||
|
* @Project:cloud-property
|
||||||
|
* @name:Thread
|
||||||
|
* @Date:2024/8/24 21:01
|
||||||
|
*/
|
||||||
|
@WebListener
|
||||||
|
public class Thread {
|
||||||
|
@WebListener
|
||||||
|
public class ThreadManagerListener implements ServletContextListener {
|
||||||
|
|
||||||
|
private ExecutorService executorService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void contextInitialized(ServletContextEvent sce) {
|
||||||
|
// 初始化并启动线程
|
||||||
|
executorService = Executors.newSingleThreadExecutor();
|
||||||
|
executorService.submit(() -> {
|
||||||
|
// 你的线程任务
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void contextDestroyed(ServletContextEvent sce) {
|
||||||
|
// 停止线程
|
||||||
|
executorService.shutdownNow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,7 +15,7 @@ spring:
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
application:
|
application:
|
||||||
# 应用名称
|
# 应用名称
|
||||||
name: cloud-integration
|
name: cloud-property
|
||||||
profiles:
|
profiles:
|
||||||
# 环境配置
|
# 环境配置
|
||||||
active: dev
|
active: dev
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue