diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/pom.xml b/accompany-base/accompany-sharding/accompany-sharding-service/pom.xml
index 3185f86da..a3cd72a23 100644
--- a/accompany-base/accompany-sharding/accompany-sharding-service/pom.xml
+++ b/accompany-base/accompany-sharding/accompany-sharding-service/pom.xml
@@ -20,7 +20,7 @@
org.apache.shardingsphere
- sharding-jdbc-core
+ shardingsphere-jdbc-core
${sharding-jdbc-core.version}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingJdbcConfig.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingJdbcConfig.java
deleted file mode 100644
index 6e9d33fce..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingJdbcConfig.java
+++ /dev/null
@@ -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 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 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);
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java
new file mode 100644
index 000000000..bd87fac52
--- /dev/null
+++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java
@@ -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 ruleConfigs = new ArrayList<>();
+ ruleConfigs.add(getRuleConfig());
+
+ Map 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 autoTableConfigs = new ArrayList<>();
+ // 动态评论按动态id分表 .community_dynamic_comment_${0..9}
+ autoTableConfigs.add(getShardingAutoTableRuleConfiguration("community_dynamic_comment",
+ "ds",
+ "dynamic_id", "communityDynamicCommentStrategy"));
+
+ //table和分表策略分开
+ Collection 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 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();
+ }
+
+}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordRangeShardingAlgorithm.java
deleted file mode 100644
index c2411d14f..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Collection collect = new HashSet<>();
-
- Range 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;
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordShardingAlgorithm.java
deleted file mode 100644
index 64b913ab0..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/BillRecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/DynamicCommentShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/DynamicCommentShardingAlgorithm.java
deleted file mode 100644
index 85c3066df..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/DynamicCommentShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(final Collection availableTargetNames, final PreciseShardingValue shardingValue) {
-
- for (String each : availableTargetNames) {
- if (each.endsWith(shardingValue.getValue() % 10 + "")) {
- return each;
- }
- }
- throw new UnsupportedOperationException();
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordRangeShardingAlgorithm.java
deleted file mode 100644
index e1019ac24..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Collection collect = new HashSet<>();
-
- Range 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;
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordShardingAlgorithm.java
deleted file mode 100644
index 248c4450e..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/FamilyMemberRoomMicRecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogRangeShardingAlgorithm.java
deleted file mode 100644
index de7e1d5b2..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Collection collect = new HashSet<>();
-
- Range 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;
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogShardingAlgorithm.java
deleted file mode 100644
index efbb5acb9..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GameGoldLogShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordRangeShardingAlgorithm.java
deleted file mode 100644
index 45b468d36..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Range 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());
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordShardingAlgorithm.java
deleted file mode 100644
index d0b5bbd6e..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/GiftSendRecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordRangeShardingAlgorithm.java
deleted file mode 100644
index bc9e31e3f..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Range 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());
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordShardingAlgorithm.java
deleted file mode 100644
index 685cefebb..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/Lucky24RecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordRangeShardingAlgorithm.java
deleted file mode 100644
index 9e003522f..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
- @Override
- public Collection doSharding(Collection availableTargetNames, RangeShardingValue shardingValue) {
- Collection collect = new HashSet<>();
- Range 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;
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordShardingAlgorithm.java
deleted file mode 100644
index cab96687a..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserChatMsgRecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
- @Override
- public String doSharding(Collection availableTargetNames, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordRangeShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordRangeShardingAlgorithm.java
deleted file mode 100644
index 37cfeeb7c..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordRangeShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public Collection doSharding(Collection collection, RangeShardingValue rangeShardingValue) {
- Collection collect = new HashSet<>();
-
- Range 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;
- }
-
-}
diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordShardingAlgorithm.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordShardingAlgorithm.java
deleted file mode 100644
index 00209ce98..000000000
--- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/shardingalgorithm/UserInOutRoomRecordShardingAlgorithm.java
+++ /dev/null
@@ -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 {
-
- @Override
- public String doSharding(Collection collection, PreciseShardingValue 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 + "!");
- }
-}
diff --git a/accompany-dependencies/pom.xml b/accompany-dependencies/pom.xml
index 1d101e552..5e21c9df4 100644
--- a/accompany-dependencies/pom.xml
+++ b/accompany-dependencies/pom.xml
@@ -71,7 +71,8 @@
1.5.0
3.7.110.ALL
v3-rev24-1.24.1
- 4.1.1
+ 1.0.12
+ 5.4.1
2.6
3.1.781
5.6.179