添加默认文件客户端.

This commit is contained in:
lijiahang
2023-07-14 11:17:55 +08:00
parent d8b7123d8b
commit e0fc9171b6
8 changed files with 95 additions and 13 deletions

View File

@@ -4,11 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.builder.CustomFile; import com.baomidou.mybatisplus.generator.config.builder.CustomFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery; import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.orion.lang.constant.Const; import com.orion.lang.constant.Const;
import com.orion.lang.utils.ext.yml.YmlExt; import com.orion.lang.utils.ext.yml.YmlExt;
@@ -19,6 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.File; import java.io.File;
import java.sql.Types;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -164,16 +163,13 @@ public class CodeGenerator {
private static DataSourceConfig getDataSourceConfig(String url, String username, String password) { private static DataSourceConfig getDataSourceConfig(String url, String username, String password) {
DataSourceConfig dsConfig = new DataSourceConfig.Builder(url, username, password) DataSourceConfig dsConfig = new DataSourceConfig.Builder(url, username, password)
// 转换器 // 转换器
.typeConvert(new MySqlTypeConvert() { .typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
@Override switch (metaInfo.getJdbcType().TYPE_CODE) {
public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) { case Types.BIT:
if (fieldType.toLowerCase().contains("bit")) { case Types.TINYINT:
return DbColumnType.INTEGER; return DbColumnType.INTEGER;
} default:
if (fieldType.toLowerCase().contains("tinyint")) { return typeRegistry.getColumnType(metaInfo);
return DbColumnType.INTEGER;
}
return super.processTypeConvert(globalConfig, fieldType);
} }
}) })
// 查询器 // 查询器

View File

@@ -2,6 +2,7 @@ package com.orion.ops.framework.storage.config;
import com.orion.ops.framework.common.constant.AutoConfigureOrderConst; import com.orion.ops.framework.common.constant.AutoConfigureOrderConst;
import com.orion.ops.framework.storage.core.client.FileClient; import com.orion.ops.framework.storage.core.client.FileClient;
import com.orion.ops.framework.storage.core.client.PrimaryFileClient;
import com.orion.ops.framework.storage.core.client.local.LocalFileClient; import com.orion.ops.framework.storage.core.client.local.LocalFileClient;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.AutoConfigureOrder;
@@ -30,10 +31,18 @@ public class OrionStorageAutoConfiguration {
private StorageConfig config; private StorageConfig config;
/** /**
* 本地文件客户端 * 默认文件客户端
*/ */
@Bean @Bean
@Primary @Primary
public FileClient primaryFileClient() {
return new PrimaryFileClient();
}
/**
* 本地文件客户端
*/
@Bean
@ConditionalOnProperty(value = "orion.storage.local.enabled", havingValue = "true") @ConditionalOnProperty(value = "orion.storage.local.enabled", havingValue = "true")
public FileClient localFileClient() { public FileClient localFileClient() {
return new LocalFileClient(config.getLocal()); return new LocalFileClient(config.getLocal());

View File

@@ -20,6 +20,10 @@ public abstract class AbstractFileClient<Config extends FileClientConfig> implem
public AbstractFileClient(Config config) { public AbstractFileClient(Config config) {
this.config = config; this.config = config;
// 设置默认文件客户端
if (config.isPrimary()) {
PrimaryFileClient.delegate = this;
}
} }
@Override @Override

View File

@@ -12,6 +12,11 @@ import lombok.Data;
@Data @Data
public class FileClientConfig { public class FileClientConfig {
/**
* 是否为默认客户端
*/
protected boolean primary;
/** /**
* 是否启用 * 是否启用
*/ */

View File

@@ -0,0 +1,61 @@
package com.orion.ops.framework.storage.core.client;
import java.io.InputStream;
/**
* 默认文件客户端
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023/7/14 11:01
*/
public class PrimaryFileClient implements FileClient {
protected static FileClient delegate;
@Override
public String upload(String path, byte[] content) throws Exception {
return delegate.upload(path, content);
}
@Override
public String upload(String path, byte[] content, boolean overrideIfExist) throws Exception {
return delegate.upload(path, content, overrideIfExist);
}
@Override
public String upload(String path, InputStream in) throws Exception {
return delegate.upload(path, in);
}
@Override
public String upload(String path, InputStream in, boolean autoClose) throws Exception {
return delegate.upload(path, in, autoClose);
}
@Override
public String upload(String path, InputStream in, boolean autoClose, boolean overrideIfExist) throws Exception {
return delegate.upload(path, in, autoClose, overrideIfExist);
}
@Override
public boolean isExists(String path) {
return delegate.isExists(path);
}
@Override
public boolean delete(String path) throws Exception {
return delegate.delete(path);
}
@Override
public byte[] getContent(String path) throws Exception {
return delegate.getContent(path);
}
@Override
public InputStream getContentInputStream(String path) throws Exception {
return delegate.getContentInputStream(path);
}
}

View File

@@ -12,6 +12,12 @@
} }
], ],
"properties": [ "properties": [
{
"name": "orion.storage.local.primary",
"type": "java.lang.Boolean",
"description": "是否为默认客户端.",
"defaultValue": false
},
{ {
"name": "orion.storage.local.enabled", "name": "orion.storage.local.enabled",
"type": "java.lang.Boolean", "type": "java.lang.Boolean",

View File

@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/server/bootstrap") @RequestMapping("/server/bootstrap")
public class BootstrapController { public class BootstrapController {
@Operation(summary = "检测心跳") @Operation(summary = "健康检测")
@GetMapping("/health") @GetMapping("/health")
public String health() { public String health() {
return "server ok"; return "server ok";

View File

@@ -165,6 +165,7 @@ orion:
storage: storage:
# 本地文件存储 # 本地文件存储
local: local:
primary: true
enabled: true enabled: true
name-append-trace-id: true name-append-trace-id: true
storage-path: ${user.home} storage-path: ${user.home}