pom-sharding-升级

This commit is contained in:
khalil
2024-11-29 22:12:59 +08:00
parent d614b3e502
commit 376450e972
19 changed files with 230 additions and 922 deletions

View File

@@ -20,7 +20,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.shardingsphere</groupId> <groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId> <artifactId>shardingsphere-jdbc-core</artifactId>
<version>${sharding-jdbc-core.version}</version> <version>${sharding-jdbc-core.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -1,268 +0,0 @@
package com.accompany.sharding.config;
import com.accompany.common.utils.ResourceUtil;
import com.accompany.sharding.shardingalgorithm.*;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.ShardingStrategyConfiguration;
import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* {这里添加描述}
*
* @author fangchengyan
* @date 2019-08-23 10:08
*/
@EnableTransactionManagement
@Configuration
@MapperScan(value = {"com.accompany.sharding.mapper"}, sqlSessionFactoryRef = "shardingSqlSessionFactory")
public class ShardingJdbcConfig {
@Autowired
private DataSource dataSource;
@Autowired
private BillRecordShardingAlgorithm billRecordShardingAlgorithm;
@Autowired
private BillRecordRangeShardingAlgorithm billRecordRangeShardingAlgorithm;
@Autowired
private DynamicCommentShardingAlgorithm dynamicCommentShardingAlgorithm;
@Autowired
private UserInOutRoomRecordShardingAlgorithm userInOutRoomRecordShardingAlgorithm;
@Autowired
private UserInOutRoomRecordRangeShardingAlgorithm userInOutRoomRecordRangeShardingAlgorithm;
@Autowired
private UserChatMsgRecordShardingAlgorithm userChatMsgRecordShardingAlgorithm;
@Autowired
private UserChatMsgRecordRangeShardingAlgorithm userChatMsgRecordRangeShardingAlgorithm;
@Autowired
private FamilyMemberRoomMicRecordShardingAlgorithm familyMemberRoomMicRecordShardingAlgorithm;
@Autowired
private FamilyMemberRoomMicRecordRangeShardingAlgorithm familyMemberRoomMicRecordRangeShardingAlgorithm;
@Autowired
private GameGoldLogShardingAlgorithm gameGoldLogShardingAlgorithm;
@Autowired
private GameGoldLogRangeShardingAlgorithm gameGoldLogRangeShardingAlgorithm;
@Autowired
private Lucky24RecordShardingAlgorithm lucky24RecordShardingAlgorithm;
@Autowired
private Lucky24RecordRangeShardingAlgorithm lucky24RecordRangeShardingAlgorithm;
@Autowired
private GiftSendRecordShardingAlgorithm giftSendRecordShardingAlgorithm;
@Autowired
private GiftSendRecordRangeShardingAlgorithm giftSendRecordRangeShardingAlgorithm;
@Bean("shardingDataSource")
public DataSource shardingDataSource() throws SQLException {
ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
Collection<TableRuleConfiguration> tableRuleConfigs = shardingRuleConfig.getTableRuleConfigs();
// 账单按月分表
tableRuleConfigs.add(getBillRecordShardingTableRuleConfiguration());
// 动态评论按动态id分表
tableRuleConfigs.add(getDynamicCommentTableRuleConfiguration());
// 进出房间按月分表
tableRuleConfigs.add(getUserInOutRoomRecordShardingTableRuleConfiguration());
//私聊按月分表
tableRuleConfigs.add(getUserChatMsgRecordShardingTableRuleConfiguration());
// 家族成员上下麦位记录
tableRuleConfigs.add(getFamilyMemberRoomMicRecordShardingTableRuleConfiguration());
//游戏日志
tableRuleConfigs.add(getGameLogShardingTableRuleConfiguration());
//
tableRuleConfigs.add(getLucky24RecordShardingTableRuleConfiguration());
tableRuleConfigs.add(getGiftSendRecordShardingTableRuleConfiguration());
//属性配置
Properties props = new Properties();
//是否打印执行的sql语句
props.setProperty("sql.show", "false");
Map<String, DataSource> dataSourceMap = new HashMap<>(4);
dataSourceMap.put("ds", dataSource);
dataSourceMap.put("ds-1", dataSource);
return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);
}
@Bean("shardingSqlSessionFactory")
@DependsOn({"shardingDataSource", "pageInterceptor", "paginationInterceptor"})
public MybatisSqlSessionFactoryBean sqlSessionFactoryBean(DataSource shardingDataSource,
Interceptor pageInterceptor, PaginationInterceptor paginationInterceptor) throws IOException {
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(shardingDataSource);
String mapperLocations = "classpath*:/sharding/sqlmappers/*.xml";
sqlSessionFactoryBean.setMapperLocations(ResourceUtil.getPathMatchingResource(mapperLocations));
sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageInterceptor, paginationInterceptor});
return sqlSessionFactoryBean;
}
@Bean("shardingTransactionManager")
@DependsOn({"shardingDataSource"})
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("shardingDataSource") DataSource shardingDataSource) {
return new DataSourceTransactionManager(shardingDataSource);
}
/**
* =====账单表分表策略=====
**/
private TableRuleConfiguration getBillRecordShardingTableRuleConfiguration() {
String logicTable = "bill_record";
String actualDataNodes = "ds.bill_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getBillRecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getBillRecordShardingStrategy() {
String shardingColumn = "create_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
billRecordShardingAlgorithm, billRecordRangeShardingAlgorithm);
}
/**
* =======动态评论表分表策略===========
**/
private TableRuleConfiguration getDynamicCommentTableRuleConfiguration() {
String logicTable = "community_dynamic_comment";
String actualDataNodes = "ds.community_dynamic_comment_${0..9}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getDynamicCommentShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getDynamicCommentShardingStrategy() {
String shardingColumn = "dynamic_id";
return new StandardShardingStrategyConfiguration(shardingColumn, dynamicCommentShardingAlgorithm);
}
/**
* =====进出房记录表分表策略=====
**/
private TableRuleConfiguration getUserInOutRoomRecordShardingTableRuleConfiguration() {
String logicTable = "user_in_out_room_record";
String actualDataNodes = "ds.user_in_out_room_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getUserInOutRoomRecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getUserInOutRoomRecordShardingStrategy() {
String shardingColumn = "in_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
userInOutRoomRecordShardingAlgorithm, userInOutRoomRecordRangeShardingAlgorithm);
}
/**
* =====私聊消息表分表策略=====
**/
private TableRuleConfiguration getUserChatMsgRecordShardingTableRuleConfiguration() {
String logicTable = "user_chat_msg_record";
String actualDataNodes = "ds.user_chat_msg_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getUserChatMsgRecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getUserChatMsgRecordShardingStrategy() {
String shardingColumn = "create_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
userChatMsgRecordShardingAlgorithm, userChatMsgRecordRangeShardingAlgorithm);
}
/**
* =====进出房记录表分表策略=====
**/
private TableRuleConfiguration getFamilyMemberRoomMicRecordShardingTableRuleConfiguration() {
String logicTable = "family_member_room_mic_record";
String actualDataNodes = "ds.family_member_room_mic_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getFamilyMemberRoomMicRecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getFamilyMemberRoomMicRecordShardingStrategy() {
String shardingColumn = "up_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
familyMemberRoomMicRecordShardingAlgorithm, familyMemberRoomMicRecordRangeShardingAlgorithm);
}
/**
* =====游戏记录=====
**/
private TableRuleConfiguration getGameLogShardingTableRuleConfiguration() {
String logicTable = "game_gold_log";
String actualDataNodes = "ds.game_gold_log_${2024..2025}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getGameLogShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getGameLogShardingStrategy() {
String shardingColumn = "create_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
gameGoldLogShardingAlgorithm, gameGoldLogRangeShardingAlgorithm);
}
private TableRuleConfiguration getLucky24RecordShardingTableRuleConfiguration() {
String logicTable = "lucky_24_record";
String actualDataNodes = "ds.lucky_24_record_$->{20240914..20241231}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getLucky24RecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getLucky24RecordShardingStrategy() {
String shardingColumn = "create_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
lucky24RecordShardingAlgorithm, lucky24RecordRangeShardingAlgorithm);
}
private TableRuleConfiguration getGiftSendRecordShardingTableRuleConfiguration() {
String logicTable = "gift_send_record";
String actualDataNodes = "ds.gift_send_record_$->{20240423..20241231}";
TableRuleConfiguration result = new TableRuleConfiguration(logicTable, actualDataNodes);
result.setTableShardingStrategyConfig(getGiftSendRecordShardingStrategy());
return result;
}
private ShardingStrategyConfiguration getGiftSendRecordShardingStrategy() {
String shardingColumn = "create_time";
return new StandardShardingStrategyConfiguration(shardingColumn,
giftSendRecordShardingAlgorithm, giftSendRecordRangeShardingAlgorithm);
}
}

View File

@@ -0,0 +1,227 @@
package com.accompany.sharding.config;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.common.utils.ResourceUtil;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryConfiguration;
import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.SQLException;
import java.util.*;
/**
* {这里添加描述}
*
* @author fangchengyan
* @date 2019-08-23 10:08
*/
@EnableTransactionManagement
@Configuration
@MapperScan(value = {"com.accompany.sharding.mapper"}, sqlSessionFactoryRef = "shardingSqlSessionFactory")
public class ShardingSphereConfig {
@Autowired
private DataSource dataSource;
@Bean("shardingDataSource")
public DataSource shardingDataSource() throws SQLException {
List<RuleConfiguration> ruleConfigs = new ArrayList<>();
ruleConfigs.add(getRuleConfig());
Map<String, DataSource> dataSourceMap = new HashMap<>(4);
dataSourceMap.put("ds", dataSource);
ModeConfiguration modeConfig = new ModeConfiguration("Standalone", new StandalonePersistRepositoryConfiguration("JDBC", new Properties()));
//是否打印执行的sql语句
Properties properties = new Properties();
properties.setProperty("sql-show", "false");
return ShardingSphereDataSourceFactory.createDataSource(modeConfig, dataSourceMap, ruleConfigs, properties);
}
@Bean("shardingSqlSessionFactory")
@DependsOn({"shardingDataSource", "pageInterceptor", "paginationInterceptor"})
public MybatisSqlSessionFactoryBean sqlSessionFactoryBean(DataSource shardingDataSource,
Interceptor pageInterceptor, PaginationInterceptor paginationInterceptor) throws IOException {
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(shardingDataSource);
String mapperLocations = "classpath*:/sharding/sqlmappers/*.xml";
sqlSessionFactoryBean.setMapperLocations(ResourceUtil.getPathMatchingResource(mapperLocations));
sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageInterceptor, paginationInterceptor});
return sqlSessionFactoryBean;
}
@Bean("shardingTransactionManager")
@DependsOn({"shardingDataSource"})
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("shardingDataSource") DataSource shardingDataSource) {
return new DataSourceTransactionManager(shardingDataSource);
}
private ShardingRuleConfiguration getRuleConfig() {
//table和分表策略分开
Collection<ShardingAutoTableRuleConfiguration> autoTableConfigs = new ArrayList<>();
// 动态评论按动态id分表 .community_dynamic_comment_${0..9}
autoTableConfigs.add(getShardingAutoTableRuleConfiguration("community_dynamic_comment",
"ds",
"dynamic_id", "communityDynamicCommentStrategy"));
//table和分表策略分开
Collection<ShardingTableRuleConfiguration> tableConfigs = new ArrayList<>();
// 账单按月分表
tableConfigs.add(getShardingTableRuleConfiguration("bill_record",
"ds.bill_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}",
"create_time", "billRecordStrategy"));
// 进出房间按月分表
tableConfigs.add(getShardingTableRuleConfiguration("user_in_out_room_record",
"ds.user_in_out_room_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}",
"in_time", "userInOutRoomRecordStrategy"));
//私聊按月分表
tableConfigs.add(getShardingTableRuleConfiguration("user_chat_msg_record",
"ds.user_chat_msg_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}",
"create_time", "userChatMsgRecordStrategy"));
//家族成员上下麦按月分表
tableConfigs.add(getShardingTableRuleConfiguration("family_member_room_mic_record",
"ds.family_member_room_mic_record_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}",
"up_time", "familyMemberRoomMicRecordStrategy"));
tableConfigs.add(getShardingTableRuleConfiguration("game_gold_log",
"ds.game_gold_log_${2024}${['01','02','03', '04','05','06', '07','08','09', '10','11','12']}",
"create_time", "gameGoldLogStrategy"));
tableConfigs.add(getShardingTableRuleConfiguration("gift_send_record",
"ds.gift_send_record_$->{20240914..20241231}",
"create_time", "giftSendRecordStrategy"));
tableConfigs.add(getShardingTableRuleConfiguration("lucky_24_record",
"ds.lucky_24_record_$->{20240914..20241231}",
"create_time", "lucky24RecordStrategy"));
Map<String, AlgorithmConfiguration> algorithmsConfigs = new HashMap<>();
// 账单按月分表
AlgorithmConfiguration billRecordShardingAlgorithm = getBillRecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("billRecordStrategy", billRecordShardingAlgorithm);
// 动态评论按动态id分表
AlgorithmConfiguration communityDynamicCommentShardingAlgorithm = getCommunityDynamicCommentShardingAlgorithmConfiguration();
algorithmsConfigs.put("communityDynamicCommentStrategy", communityDynamicCommentShardingAlgorithm);
// 进出房间按月分表
AlgorithmConfiguration userInOutRoomRecordShardingAlgorithm = getUserInOutRoomRecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("userInOutRoomRecordStrategy", userInOutRoomRecordShardingAlgorithm);
//私聊按月分表
AlgorithmConfiguration userChatMsgRecordShardingAlgorithm = getUserChatMsgRecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("userChatMsgRecordStrategy", userChatMsgRecordShardingAlgorithm);
// 家族成员上下麦位记录
AlgorithmConfiguration familyMemberRoomMicRecordShardingAlgorithm = getFamilyMemberRoomMicRecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("familyMemberRoomMicRecordStrategy", familyMemberRoomMicRecordShardingAlgorithm);
//游戏日志
AlgorithmConfiguration gameGoldLogShardingAlgorithm = getGameGoldLogShardingAlgorithmConfiguration();
algorithmsConfigs.put("gameGoldLogStrategy", gameGoldLogShardingAlgorithm);
//
AlgorithmConfiguration giftSendRecordShardingAlgorithm = getGiftSendRecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("giftSendRecordStrategy", giftSendRecordShardingAlgorithm);
//
AlgorithmConfiguration lucky24RecordShardingAlgorithm = getLucky24RecordShardingAlgorithmConfiguration();
algorithmsConfigs.put("lucky24RecordStrategy", lucky24RecordShardingAlgorithm);
ShardingRuleConfiguration config = new ShardingRuleConfiguration();
config.setTables(tableConfigs);
config.setAutoTables(autoTableConfigs);
config.setShardingAlgorithms(algorithmsConfigs);
return config;
}
private AlgorithmConfiguration getLucky24RecordShardingAlgorithmConfiguration() {
return getGiftSendRecordShardingAlgorithmConfiguration();
}
private AlgorithmConfiguration getGiftSendRecordShardingAlgorithmConfiguration() {
Properties properties = new Properties();
properties.setProperty("datetime-pattern", DateTimeUtil.DEFAULT_DATETIME_PATTERN);
properties.setProperty("datetime-lower", "2024-04-23 00:00:00");
properties.setProperty("datetime-upper", "2024-12-31 23:59:59");
properties.setProperty("sharding-suffix-pattern", DateTimeUtil.DEFAULT_DATE_PATTERN_);
properties.setProperty("datetime-interval-amount", "1");
properties.setProperty("datetime-interval-unit", "DAYS");
return new AlgorithmConfiguration("INTERVAL", properties);
}
private AlgorithmConfiguration getGameGoldLogShardingAlgorithmConfiguration() {
return getBillRecordShardingAlgorithmConfiguration();
}
private AlgorithmConfiguration getFamilyMemberRoomMicRecordShardingAlgorithmConfiguration() {
return getBillRecordShardingAlgorithmConfiguration();
}
/**
* =====私聊消息表分表策略=====
**/
private AlgorithmConfiguration getUserChatMsgRecordShardingAlgorithmConfiguration() {
return getBillRecordShardingAlgorithmConfiguration();
}
private ShardingTableRuleConfiguration getShardingTableRuleConfiguration(String table, String nodes, String col, String strategyName) {
ShardingTableRuleConfiguration tableRuleConfiguration = new ShardingTableRuleConfiguration(table, nodes);
tableRuleConfiguration.setTableShardingStrategy(new StandardShardingStrategyConfiguration(col, strategyName));
return tableRuleConfiguration;
}
private ShardingAutoTableRuleConfiguration getShardingAutoTableRuleConfiguration(String table, String nodes, String col, String strategyName) {
ShardingAutoTableRuleConfiguration tableRuleConfiguration = new ShardingAutoTableRuleConfiguration(table, nodes);
tableRuleConfiguration.setShardingStrategy(new StandardShardingStrategyConfiguration(col, strategyName));
return tableRuleConfiguration;
}
/**
* =====账单表分表策略=====
**/
private AlgorithmConfiguration getBillRecordShardingAlgorithmConfiguration() {
Properties properties = new Properties();
properties.setProperty("datetime-pattern", DateTimeUtil.DEFAULT_DATETIME_PATTERN);
properties.setProperty("datetime-lower", "2024-04-23 00:00:00");
properties.setProperty("datetime-upper", "2024-12-31 23:59:59");
properties.setProperty("sharding-suffix-pattern", DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
properties.setProperty("datetime-interval-amount", "1");
properties.setProperty("datetime-interval-unit", "MONTHS");
return new AlgorithmConfiguration("INTERVAL", properties);
}
/**
* =======动态评论表分表策略===========
**/
private AlgorithmConfiguration getCommunityDynamicCommentShardingAlgorithmConfiguration() {
Properties properties = new Properties();
properties.setProperty("sharding-count", "10");
return new AlgorithmConfiguration("MOD", properties);
}
/**
* =====进出房记录表分表策略=====
**/
private AlgorithmConfiguration getUserInOutRoomRecordShardingAlgorithmConfiguration() {
return getBillRecordShardingAlgorithmConfiguration();
}
}

View File

@@ -1,57 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class BillRecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Collection<String> collect = new HashSet<>();
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
startTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
endTime = DateTimeUtil.getEndTimeOfMonth(endTime);
for (String each : collection) {
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
if (startTime.getTime() <= tableSuffixDate.getTime() && endTime.getTime() >= tableSuffixDate.getTime()) {
collect.add(each);
}
}
return collect;
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class BillRecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,28 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.util.Collection;
/**
* 动态评论分表策略
* @date 2019-11-27 15:45
* @author fangchengyan
*/
@Component
public final class DynamicCommentShardingAlgorithm implements PreciseShardingAlgorithm<Long> {
@Override
public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<Long> shardingValue) {
for (String each : availableTargetNames) {
if (each.endsWith(shardingValue.getValue() % 10 + "")) {
return each;
}
}
throw new UnsupportedOperationException();
}
}

View File

@@ -1,57 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class FamilyMemberRoomMicRecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Collection<String> collect = new HashSet<>();
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
startTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
endTime = DateTimeUtil.getEndTimeOfMonth(endTime);
for (String each : collection) {
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
if (startTime.getTime() <= tableSuffixDate.getTime() && endTime.getTime() >= tableSuffixDate.getTime()) {
collect.add(each);
}
}
return collect;
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class FamilyMemberRoomMicRecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,57 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class GameGoldLogRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Collection<String> collect = new HashSet<>();
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
startTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
endTime = DateTimeUtil.getEndTimeOfMonth(endTime);
for (String each : collection) {
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
if (startTime.getTime() <= tableSuffixDate.getTime() && endTime.getTime() >= tableSuffixDate.getTime()) {
collect.add(each);
}
}
return collect;
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class GameGoldLogShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,51 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.stream.Collectors;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class GiftSendRecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
Date finalStartTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
Date finalEndTime = DateTimeUtil.getEndTimeOfMonth(endTime);
return collection.parallelStream().filter(each->{
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DEFAULT_DATE_PATTERN_);
return null != tableSuffixDate && finalStartTime.compareTo(tableSuffixDate) <= 0 && finalEndTime.compareTo(tableSuffixDate) >= 0;
}).collect(Collectors.toList());
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class GiftSendRecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DEFAULT_DATE_PATTERN_);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,51 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.stream.Collectors;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class Lucky24RecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
Date finalStartTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
Date finalEndTime = DateTimeUtil.getEndTimeOfMonth(endTime);
return collection.parallelStream().filter(each->{
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DEFAULT_DATE_PATTERN_);
return null != tableSuffixDate && finalStartTime.compareTo(tableSuffixDate) <= 0 && finalEndTime.compareTo(tableSuffixDate) >= 0;
}).collect(Collectors.toList());
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class Lucky24RecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DEFAULT_DATE_PATTERN_);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,48 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import cn.hutool.core.util.StrUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
/**
* @author: liaozetao
* @date: 2023/9/21 16:48
* @description:
*/
@Component
public class UserChatMsgRecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Date> shardingValue) {
Collection<String> collect = new HashSet<>();
Range<Date> valueRange = shardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if (days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH, -3);
startTime = instance.getTime();
}
startTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
endTime = DateTimeUtil.getEndTimeOfMonth(endTime);
for (String each : availableTargetNames) {
String tableSuffix = each.substring(each.lastIndexOf(StrUtil.UNDERLINE) + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
assert tableSuffixDate != null;
if (startTime.getTime() <= tableSuffixDate.getTime() && endTime.getTime() >= tableSuffixDate.getTime()) {
collect.add(each);
}
}
return collect;
}
}

View File

@@ -1,30 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
* @author: liaozetao
* @date: 2023/9/21 16:47
* @description:
*/
@Component
public class UserChatMsgRecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Date> shardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
String suffixTime = formatter.format(shardingValue.getValue());
for (String each : availableTargetNames) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -1,57 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import com.google.common.collect.Range;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
import org.springframework.stereotype.Component;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
/**
*
* 范围分片算法类名称用于BETWEEN可选。该类需实现RangeShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class UserInOutRoomRecordRangeShardingAlgorithm implements RangeShardingAlgorithm<Date> {
@Override
public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) {
Collection<String> collect = new HashSet<>();
Range<Date> valueRange = rangeShardingValue.getValueRange();
Date startTime = valueRange.lowerEndpoint();
Date endTime = valueRange.upperEndpoint();
// 跨度不宜过长
int days = DateTimeUtil.compareDay(endTime, startTime);
if(days > 120) {
//三个月前
Calendar instance = Calendar.getInstance();
instance.add(Calendar.MONTH,-3);
Date threeMonthBefore = instance.getTime();
startTime = threeMonthBefore;
}
startTime = DateTimeUtil.getBeginTimeOfMonth(startTime);
endTime = DateTimeUtil.getEndTimeOfMonth(endTime);
for (String each : collection) {
String tableSuffix = each.substring(each.lastIndexOf("_") + 1);
Date tableSuffixDate = DateTimeUtil.convertStrToDate(tableSuffix, DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
if (startTime.getTime() <= tableSuffixDate.getTime() && endTime.getTime() >= tableSuffixDate.getTime()) {
collect.add(each);
}
}
return collect;
}
}

View File

@@ -1,36 +0,0 @@
package com.accompany.sharding.shardingalgorithm;
import com.accompany.common.utils.DateTimeUtil;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
/**
*
* 精确分片算法类名称,用于=和IN。该类需实现PreciseShardingAlgorithm接口并提供无参数的构造器
*
* @Author yubin
* @Description
* @Date 2019-07-20 00:45
*/
@Component
public class UserInOutRoomRecordShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
@Override
public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) {
SimpleDateFormat formatter = new SimpleDateFormat(DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
String suffixTime = formatter.format(preciseShardingValue.getValue());
for (String each : collection) {
if (each.endsWith(suffixTime)) {
return each;
}
}
throw new IllegalArgumentException("can not find tables end with " + suffixTime + "!");
}
}

View File

@@ -71,7 +71,8 @@
<hippo4j-config-spring-boot-starter.version>1.5.0</hippo4j-config-spring-boot-starter.version> <hippo4j-config-spring-boot-starter.version>1.5.0</hippo4j-config-spring-boot-starter.version>
<alipay-sdk-java.version>3.7.110.ALL</alipay-sdk-java.version> <alipay-sdk-java.version>3.7.110.ALL</alipay-sdk-java.version>
<google-api-services-androidpublisher.version>v3-rev24-1.24.1</google-api-services-androidpublisher.version> <google-api-services-androidpublisher.version>v3-rev24-1.24.1</google-api-services-androidpublisher.version>
<sharding-jdbc-core.version>4.1.1</sharding-jdbc-core.version> <payermax-server.version>1.0.12</payermax-server.version>
<sharding-jdbc-core.version>5.4.1</sharding-jdbc-core.version>
<commons-lang.version>2.6</commons-lang.version> <commons-lang.version>2.6</commons-lang.version>
<tencentcloud-sdk-java.version>3.1.781</tencentcloud-sdk-java.version> <tencentcloud-sdk-java.version>3.1.781</tencentcloud-sdk-java.version>
<tencentcloud-cos-sdk-java.version>5.6.179</tencentcloud-cos-sdk-java.version> <tencentcloud-cos-sdk-java.version>5.6.179</tencentcloud-cos-sdk-java.version>