From 4bd634fa63186bc888fa3a09abd17a36fd80f5ff Mon Sep 17 00:00:00 2001 From: 1iyc <5212514+liycone@user.noreply.gitee.com> Date: Wed, 30 Oct 2024 18:05:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=96=B0=E5=A2=9E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 3 +- .../tool/DataSourceManagerController.java | 4 - .../com/lyr/common/annotation/DataSource.java | 10 ++ .../com/lyr/common/enums/DataSourceType.java | 8 +- .../java/com/lyr/common/utils/AssertUtil.java | 104 ++++++++++++++ .../java/com/lyr/common/utils/SpElUtil.java | 49 +++++++ .../lyr/common/annotation/DataSource.class | Bin 620 -> 670 bytes .../com/lyr/common/enums/DataSourceType.class | Bin 1033 -> 1088 bytes sync-framework/pom.xml | 5 + .../framework/aspectj/DataSourceAspect.java | 36 ++++- .../datasource/DynamicDataSource.java | 45 +++--- .../DynamicDataSourceContextHolder.java | 2 + .../framework/manager/DataSourceManager.java | 130 ++++++++++++++++++ .../manager/DataSourceManagerService.java | 57 -------- .../web/service/SysLoginService.java | 1 - .../framework/aspectj/DataScopeAspect.class | Bin 6789 -> 6895 bytes .../framework/aspectj/DataSourceAspect.class | Bin 2749 -> 4159 bytes .../com/lyr/framework/aspectj/LogAspect.class | Bin 9863 -> 10037 bytes .../framework/aspectj/RateLimiterAspect.class | Bin 4912 -> 4983 bytes .../framework/config/ApplicationConfig.class | Bin 1865 -> 1895 bytes .../lyr/framework/config/DruidConfig$1.class | Bin 2097 -> 2157 bytes .../lyr/framework/config/DruidConfig.class | Bin 4830 -> 4912 bytes .../config/FastJson2JsonRedisSerializer.class | Bin 2696 -> 2748 bytes .../com/lyr/framework/config/I18nConfig.class | Bin 1875 -> 1905 bytes .../lyr/framework/config/RedisConfig.class | Bin 4927 -> 4968 bytes .../framework/config/ResourcesConfig.class | Bin 4055 -> 4096 bytes .../lyr/framework/config/SecurityConfig.class | Bin 11103 -> 11236 bytes .../lyr/framework/config/ServerConfig.class | Bin 1417 -> 1447 bytes .../framework/config/ThreadPoolConfig$1.class | Bin 1280 -> 1337 bytes .../config/properties/DruidProperties.class | Bin 2676 -> 2706 bytes .../properties/PermitAllUrlProperties.class | Bin 5836 -> 5944 bytes .../datasource/DynamicDataSource.class | Bin 3513 -> 2217 bytes .../DynamicDataSourceContextHolder.class | Bin 1286 -> 1316 bytes .../interceptor/RepeatSubmitInterceptor.class | Bin 2069 -> 2122 bytes .../impl/SameUrlDataInterceptor.class | Bin 4533 -> 4601 bytes .../lyr/framework/manager/AsyncManager.class | Bin 1428 -> 1458 bytes .../manager/factory/AsyncFactory$1.class | Bin 3124 -> 3174 bytes .../manager/factory/AsyncFactory$2.class | Bin 1171 -> 1201 bytes .../manager/factory/AsyncFactory.class | Bin 2011 -> 2064 bytes .../context/AuthenticationContextHolder.class | Bin 1158 -> 1188 bytes .../context/PermissionContextHolder.class | Bin 1147 -> 1177 bytes .../filter/JwtAuthenticationTokenFilter.class | Bin 2856 -> 2894 bytes .../handle/AuthenticationEntryPointImpl.class | Bin 1854 -> 1892 bytes .../handle/LogoutSuccessHandlerImpl.class | Bin 2735 -> 2773 bytes .../com/lyr/framework/web/domain/Server.class | Bin 8150 -> 8268 bytes .../lyr/framework/web/domain/server/Cpu.class | Bin 1599 -> 1684 bytes .../lyr/framework/web/domain/server/Jvm.class | Bin 2477 -> 2551 bytes .../lyr/framework/web/domain/server/Mem.class | Bin 1085 -> 1137 bytes .../lyr/framework/web/domain/server/Sys.class | Bin 1347 -> 1421 bytes .../framework/web/domain/server/SysFile.class | Bin 1725 -> 1821 bytes .../exception/GlobalExceptionHandler.class | Bin 7119 -> 7276 bytes .../web/service/PermissionService.class | Bin 3506 -> 3606 bytes .../web/service/SysLoginService.class | Bin 6424 -> 6511 bytes .../web/service/SysPasswordService.class | Bin 3384 -> 3451 bytes .../web/service/SysPermissionService.class | Bin 2831 -> 2872 bytes .../web/service/SysRegisterService.class | Bin 4089 -> 4138 bytes .../framework/web/service/TokenService.class | Bin 7331 -> 7482 bytes .../web/service/UserDetailsServiceImpl.class | Bin 3328 -> 3369 bytes .../DataSourceConfigController.java | 10 ++ .../{vo => model}/DataSourceConfig.java | 2 +- .../lyr/gather/domain/model/TSupplier.java | 108 +++++++++++++++ .../gather/mapper/DataSourceConfigMapper.java | 4 +- .../lyr/gather/mapper/TSupplierMapper.java | 25 ++++ .../service/DataSourceConfigService.java | 4 +- .../impl/DataSourceConfigServiceImpl.java | 25 +++- 65 files changed, 528 insertions(+), 104 deletions(-) create mode 100644 sync-common/src/main/java/com/lyr/common/utils/AssertUtil.java create mode 100644 sync-common/src/main/java/com/lyr/common/utils/SpElUtil.java create mode 100644 sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManager.java delete mode 100644 sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManagerService.java rename sync-gather/src/main/java/com/lyr/gather/domain/{vo => model}/DataSourceConfig.java (97%) create mode 100644 sync-gather/src/main/java/com/lyr/gather/domain/model/TSupplier.java create mode 100644 sync-gather/src/main/java/com/lyr/gather/mapper/TSupplierMapper.java diff --git a/pom.xml b/pom.xml index 479a474..89317cb 100644 --- a/pom.xml +++ b/pom.xml @@ -216,11 +216,12 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + 3.8.1 ${java.version} ${java.version} ${project.build.sourceEncoding} + true diff --git a/sync-admin/src/main/java/com/lyr/web/controller/tool/DataSourceManagerController.java b/sync-admin/src/main/java/com/lyr/web/controller/tool/DataSourceManagerController.java index 0fb2229..e88766d 100644 --- a/sync-admin/src/main/java/com/lyr/web/controller/tool/DataSourceManagerController.java +++ b/sync-admin/src/main/java/com/lyr/web/controller/tool/DataSourceManagerController.java @@ -1,11 +1,7 @@ package com.lyr.web.controller.tool; -import com.lyr.framework.manager.DataSourceManagerService; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; - /** * @author liyc * @date 2024/10/30 diff --git a/sync-common/src/main/java/com/lyr/common/annotation/DataSource.java b/sync-common/src/main/java/com/lyr/common/annotation/DataSource.java index 94468e6..d159fd9 100644 --- a/sync-common/src/main/java/com/lyr/common/annotation/DataSource.java +++ b/sync-common/src/main/java/com/lyr/common/annotation/DataSource.java @@ -16,8 +16,18 @@ import java.lang.annotation.*; @Documented @Inherited public @interface DataSource { + /** * 切换数据源名称 */ DataSourceType value() default DataSourceType.MASTER; + + /** + * 数据源名称 (优先使用这个数据源,否则使用value) + * + * @return + */ + String name() default ""; + + } diff --git a/sync-common/src/main/java/com/lyr/common/enums/DataSourceType.java b/sync-common/src/main/java/com/lyr/common/enums/DataSourceType.java index 5f84803..e4e1cb0 100644 --- a/sync-common/src/main/java/com/lyr/common/enums/DataSourceType.java +++ b/sync-common/src/main/java/com/lyr/common/enums/DataSourceType.java @@ -14,5 +14,11 @@ public enum DataSourceType { /** * 从库 */ - SLAVE + SLAVE, + + /** + * 外部 + */ + EXTERNAL + } diff --git a/sync-common/src/main/java/com/lyr/common/utils/AssertUtil.java b/sync-common/src/main/java/com/lyr/common/utils/AssertUtil.java new file mode 100644 index 0000000..6f1c659 --- /dev/null +++ b/sync-common/src/main/java/com/lyr/common/utils/AssertUtil.java @@ -0,0 +1,104 @@ +package com.lyr.common.utils; + + +import com.lyr.common.exception.ServiceException; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.util.CollectionUtils; + +import java.util.Collection; +import java.util.List; + +/** + * @author Admin + */ +public class AssertUtil { + + + public static void notEmpty(Long val, String s, Integer... codes) throws ServiceException { + if (val == null) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void notEmpty(Collection c, String s, Integer... codes) throws ServiceException { + if (CollectionUtils.isEmpty(c)) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void notEmpty(String val, String s, Integer... codes) throws ServiceException { + if (StringUtils.isEmpty(val)) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void notEmpty(Object val, String s, Integer... codes) throws ServiceException { + if (val == null) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + /** + * 不为空时抛出异常信息 + * + * @param obj + * @param s + */ + public static void empty(Object obj, String s, Integer... codes) { + if (null != obj) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void empty(Object obj, String s, List t, Integer... codes) { + if (null != obj) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void empty(Collection c, String s) { + if (!CollectionUtils.isEmpty(c)) { + throw new ServiceException(s, 500); + } + } + + public static void notEqual(boolean val, String s, Integer... codes) { + if (val) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void equal(boolean val, String s) { + notEqual(!val, s); + } + + + public static void isFalse(boolean b, String s, Integer... codes) { + if (b) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + public static void isTrue(boolean b, String s, Integer... codes) throws ServiceException { + if (!b) { + Integer code = (codes.length == 0) ? 500 : codes[0]; + throw new ServiceException(s, code); + } + } + + + public static void test() { + throw new ServiceException("222"); + } +} + + + diff --git a/sync-common/src/main/java/com/lyr/common/utils/SpElUtil.java b/sync-common/src/main/java/com/lyr/common/utils/SpElUtil.java new file mode 100644 index 0000000..f89c25c --- /dev/null +++ b/sync-common/src/main/java/com/lyr/common/utils/SpElUtil.java @@ -0,0 +1,49 @@ +package com.lyr.common.utils; + +import org.springframework.context.annotation.Bean; +import org.springframework.expression.ExpressionParser; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; + +/** + * spel 工具类 + * + * @author liyc + * @date 2024/10/30 + * @description TODO + **/ +@Component +public class SpElUtil { + + @Resource + public ExpressionParser expressionParser; + + @Bean + public ExpressionParser expressionParser() { + return new SpelExpressionParser(); + } + + + /** + * 解析表达式 + * + * @param method + * @param args + * @param expression + * @return + */ + public String parseExpression(Method method, Object[] args, String expression) { + StandardEvaluationContext context = new StandardEvaluationContext(); + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + Parameter parameter = parameters[i]; + context.setVariable(parameter.getName(), args[i]); + } + return expressionParser.parseExpression(expression).getValue(context, String.class); + } +} diff --git a/sync-common/target/classes/com/lyr/common/annotation/DataSource.class b/sync-common/target/classes/com/lyr/common/annotation/DataSource.class index d35eb2149a55e3fc3eb5c95b6449ea319befab10..e3a497b814379c64d6ed2ff86876bf52a4c89d12 100644 GIT binary patch delta 143 zcmaFEGLKdG)W2Q(7#J8#7^K-5B-j}w*%_oJ3RlXrL&mL=-vB<7{- z2bUCO=A~ORGB9lHn#Rb;G+B{J*pr2kfs=uYfsug?Xbf{P12+Q`0}qhN#K6nI2c$I^ lSQz+$(k#&oOsNb441yp+h(Q=6l*%B&Aj%*HR3*;9002Y|6|DdO delta 108 zcmbQo`i4dL)W2Q(7#J8#7$n#kMA;d{*crqp3RiAiJB87Qk%f_gg@KiUk%0}Uf;E+a zoq>aaiGdTyVPfE7;0DqfKm|NN1uW4FOsNdK416GhpFsd5l*%B;AjBXHR3*Z|005;5 B3-$m2 diff --git a/sync-common/target/classes/com/lyr/common/enums/DataSourceType.class b/sync-common/target/classes/com/lyr/common/enums/DataSourceType.class index f0f26a36626d5569351aef3fbe376b46f95ed869..2c2f0a16da7a09dae105b63059cc9f4535c2cbec 100644 GIT binary patch delta 408 zcmZvXyG{Z@7=^#Rz|JniZ3Te^Z+HO}FDM-rl1OJPM2$3dmX7}@2lbU#qj)Wa5}kvvNCffp`__@5I5|0rN*IVktI!@f~IIjNFlzm@47ju zcaLjE0YMQH6dei?l4TtDl$pn(5`WqCa#ilq!a#{qBTAHpQ*ZrM>Z0q!70_Tom~GaO zS&46)YX5()$Fk{WCGj_?7G-vaEM(XqDkg&fa` zjfGpBGw1*QJ^${9eYDfh@7H(Wl8cCd!OmpjQZ*F6yJ@-com.lyr sync-system + + org.projectlombok + lombok + provided + diff --git a/sync-framework/src/main/java/com/lyr/framework/aspectj/DataSourceAspect.java b/sync-framework/src/main/java/com/lyr/framework/aspectj/DataSourceAspect.java index 2c86407..85c9c35 100644 --- a/sync-framework/src/main/java/com/lyr/framework/aspectj/DataSourceAspect.java +++ b/sync-framework/src/main/java/com/lyr/framework/aspectj/DataSourceAspect.java @@ -1,8 +1,11 @@ package com.lyr.framework.aspectj; import com.lyr.common.annotation.DataSource; +import com.lyr.common.exception.ServiceException; +import com.lyr.common.utils.SpElUtil; import com.lyr.common.utils.StringUtils; import com.lyr.framework.datasource.DynamicDataSourceContextHolder; +import com.lyr.framework.manager.DataSourceManager; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -14,6 +17,8 @@ import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.lang.reflect.Method; import java.util.Objects; /** @@ -27,28 +32,46 @@ import java.util.Objects; public class DataSourceAspect { protected Logger logger = LoggerFactory.getLogger(getClass()); - @Pointcut("@annotation(com.lyr.common.annotation.DataSource)" - + "|| @within(com.lyr.common.annotation.DataSource)") + @Resource + private SpElUtil spElUtil; + @Resource + private DataSourceManager dataSourceManager; + + @Pointcut("@annotation(com.lyr.common.annotation.DataSource)" + "|| @within(com.lyr.common.annotation.DataSource)") public void dsPointCut() { } @Around("dsPointCut()") public Object around(ProceedingJoinPoint point) throws Throwable { + String value = null; DataSource dataSource = getDataSource(point); - if (StringUtils.isNotNull(dataSource)) { - DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().name()); + value = dataSource.value().name(); + String name = dataSource.name(); + if (StringUtils.isNotEmpty(name)) { + // 解析spEl表达式 + Object[] args = point.getArgs(); + MethodSignature signature = (MethodSignature) point.getSignature(); + Method method = signature.getMethod(); + value = spElUtil.parseExpression(method, args, dataSource.name()); + } + DynamicDataSourceContextHolder.setDataSourceType(value); } - try { return point.proceed(); + } catch (Exception e) { + logger.error("数据源切换失败", e); + logger.debug("要切换的数据源:{}", value); + dataSourceManager.print(); + throw new ServiceException("切换数据源到[" + value + "]失败"); } finally { // 销毁数据源 在执行方法之后 DynamicDataSourceContextHolder.clearDataSourceType(); } } + /** * 获取需要切换的数据源 */ @@ -58,7 +81,8 @@ public class DataSourceAspect { if (Objects.nonNull(dataSource)) { return dataSource; } - return AnnotationUtils.findAnnotation(signature.getDeclaringType(), DataSource.class); } + + } diff --git a/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSource.java b/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSource.java index f0f9e6f..1a2f980 100644 --- a/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSource.java +++ b/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSource.java @@ -1,10 +1,9 @@ package com.lyr.framework.datasource; -import com.alibaba.druid.pool.DruidDataSource; import com.lyr.common.utils.spring.SpringUtils; +import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; -import javax.sql.DataSource; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -13,6 +12,7 @@ import java.util.concurrent.ConcurrentHashMap; * * @author ruoyi */ +@Slf4j public class DynamicDataSource extends AbstractRoutingDataSource { private static Map targetDataSources = new ConcurrentHashMap<>(); @@ -28,23 +28,28 @@ public class DynamicDataSource extends AbstractRoutingDataSource { } - public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) { - super.setDefaultTargetDataSource(defaultTargetDataSource); - super.setTargetDataSources(targetDataSources); - super.afterPropertiesSet(); - } - + /** + * 添加数据源 + * + * @param key + * @param dataSource + */ public void addTargetDataSource(Object key, Object dataSource) { - if (dataSource instanceof String) { - try { - SpringUtils.getBean(dataSource.toString()); + try { + if (dataSource instanceof String) { + try { + SpringUtils.getBean(dataSource.toString()); + this.targetDataSources.put(key, dataSource); + } catch (Exception e) { + } + } else { this.targetDataSources.put(key, dataSource); - } catch (Exception e) { } - } else { - this.targetDataSources.put(key, dataSource); + super.afterPropertiesSet(); // 重新初始化数据源 + } catch (Exception e) { + log.error("添加数据源失败", e); + throw new RuntimeException(e); } - super.afterPropertiesSet(); // 重新初始化数据源 } @@ -53,13 +58,5 @@ public class DynamicDataSource extends AbstractRoutingDataSource { super.afterPropertiesSet(); // 重新初始化数据源 } - public void print() { - DruidDataSource resolvedDefaultDataSource = (DruidDataSource) getResolvedDefaultDataSource(); - System.out.println("主数据源:" + resolvedDefaultDataSource.getUrl()); - Map resolvedDataSources = getResolvedDataSources(); - for (Map.Entry entry : resolvedDataSources.entrySet()) { - DruidDataSource value = (DruidDataSource) entry.getValue(); - System.out.println("数据源[" + entry.getKey() + "]:" + value.getUrl()); - } - } + } \ No newline at end of file diff --git a/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSourceContextHolder.java b/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSourceContextHolder.java index db8fa19..e9f2eb8 100644 --- a/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSourceContextHolder.java +++ b/sync-framework/src/main/java/com/lyr/framework/datasource/DynamicDataSourceContextHolder.java @@ -9,6 +9,8 @@ import org.slf4j.LoggerFactory; * @author ruoyi */ public class DynamicDataSourceContextHolder { + + public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class); /** diff --git a/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManager.java b/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManager.java new file mode 100644 index 0000000..24f3960 --- /dev/null +++ b/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManager.java @@ -0,0 +1,130 @@ +package com.lyr.framework.manager; + +import com.alibaba.druid.pool.DruidDataSource; +import com.lyr.common.exception.ServiceException; +import com.lyr.common.utils.AssertUtil; +import com.lyr.framework.datasource.DynamicDataSource; +import com.lyr.framework.datasource.DynamicDataSourceContextHolder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author liyc + * @date 2024/10/30 + * @description TODO + **/ +@Slf4j +@Component +public class DataSourceManager { + + @Resource + private DynamicDataSource dynamicDataSource; + + + public enum RegisterType { + LOAD, ADD; + } + + + /** + * 配置数据源默认参数 + * + * @param dataSource + * @param registerType 注册类型 + */ + public void defaultDataSourceConfiguration(DruidDataSource dataSource, RegisterType registerType) { + String dataSourceName = dataSource.getName(); + AssertUtil.notEmpty(dataSourceName, "数据源名称不能为空"); + // 配置数据源参数 + dataSource.setInitialSize(5); + dataSource.setMinIdle(10); + dataSource.setMaxActive(20); + dataSource.setMaxWait(60000); + dataSource.setConnectTimeout(30000); + dataSource.setSocketTimeout(60000); + dataSource.setTimeBetweenEvictionRunsMillis(60000); + dataSource.setMinEvictableIdleTimeMillis(300000); + dataSource.setMaxEvictableIdleTimeMillis(900000); + dataSource.setValidationQuery("SELECT 1"); + dataSource.setTestOnBorrow(false); + try { + DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource(); + // 设置默认数据源 + dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource); + // 添加数据源 + dynamicDataSource.addTargetDataSource(dataSourceName, dataSource); + // 测试数据源连接 + this.testDataSourceConnection(dataSource, registerType); + } catch (ServiceException e) { + dataSource.close(); + throw new ServiceException(e.getMessage()); + } catch (Exception ex) { + String name = registerType.name(); + String message = String.format("【%s】数据源配置失败", name); + log.error(message, ex); + dataSource.close(); + throw new ServiceException(message); + } + } + + + /** + * 测试数据源连接 + * + * @param dataSource + * @param registerType + */ + private void testDataSourceConnection(DruidDataSource dataSource, RegisterType registerType) { + String dataSourceName = dataSource.getName(); + int compareTo = RegisterType.LOAD.compareTo(registerType); + String message = String.format("数据源连接测试未通过 %s", + (compareTo == 0 ? "排查表参数: data_source_config" : "请手动测试数据源是否正确")); + try (Connection connection = dataSource.getConnection()) { + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + Integer result = jdbcTemplate.queryForObject("SELECT 1", Integer.class); + if (result != null && result == 1) { + log.info(String.format("数据源连接测试通过", dataSourceName)); + } else { + log.error(message); + throw new ServiceException(message); + } + } catch (SQLException e) { + log.error(message, e); + // 销毁数据源 + DynamicDataSourceContextHolder.clearDataSourceType(); + throw new ServiceException(message); + } + } + + + public void print() { + log.debug("=======================开始打印数据源信息============================="); + // 获取默认数据源 + DruidDataSource resolvedDefaultDataSource = (DruidDataSource) dynamicDataSource.getResolvedDefaultDataSource(); + if (resolvedDefaultDataSource != null) { + log.debug("主数据源: {}", resolvedDefaultDataSource.getUrl()); + } else { + log.debug("主数据源: 未设置"); + } + // 获取所有数据源 + Map resolvedDataSources = dynamicDataSource.getResolvedDataSources(); + AtomicInteger index = new AtomicInteger(0); + for (Map.Entry entry : resolvedDataSources.entrySet()) { + DruidDataSource value = (DruidDataSource) entry.getValue(); + log.debug("数据源[{}]: {} {}", index.getAndIncrement(), entry.getKey(), value.getUrl()); + } + log.debug("=======================打印数据源信息结束============================="); + } + + + + +} diff --git a/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManagerService.java b/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManagerService.java deleted file mode 100644 index df1fe2a..0000000 --- a/sync-framework/src/main/java/com/lyr/framework/manager/DataSourceManagerService.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.lyr.framework.manager; - -import com.lyr.framework.datasource.DynamicDataSource; -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import javax.sql.DataSource; - -/** - * @author liyc - * @date 2024/10/30 - * @description TODO - **/ -@Component -public class DataSourceManagerService implements ApplicationContextAware { - - private ApplicationContext applicationContext; - @Resource - private DynamicDataSource dynamicDataSource; - - - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - this.applicationContext = applicationContext; - } - - public void print() { - dynamicDataSource.print(); - } - - - public void registerDataSources(String beanName, DataSource dataSource) { - DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource(); - dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource); - dynamicDataSource.addTargetDataSource(beanName, dataSource); - } - - public void add() { - /* // 构建数据源 - DruidDataSource dataSource = new DruidDataSource(); - dataSource.setUrl("jdbc:sqlserver://192.168.3.28:1433;DatabaseName=BiDataDeYue;encrypt=true;trustServerCertificate=true;"); - dataSource.setUsername("sa"); - dataSource.setPassword("mssql_whdZeB"); - dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); - try { - DataSource resolvedDefaultDataSource = dynamicDataSource.getResolvedDefaultDataSource(); - dynamicDataSource.setDefaultTargetDataSource(resolvedDefaultDataSource); - dynamicDataSource.addTargetDataSource("deYueMssql", dataSource); - } catch (BeansException e) { - }*/ - } - - -} diff --git a/sync-framework/src/main/java/com/lyr/framework/web/service/SysLoginService.java b/sync-framework/src/main/java/com/lyr/framework/web/service/SysLoginService.java index 778e749..fed18eb 100644 --- a/sync-framework/src/main/java/com/lyr/framework/web/service/SysLoginService.java +++ b/sync-framework/src/main/java/com/lyr/framework/web/service/SysLoginService.java @@ -13,7 +13,6 @@ import com.lyr.common.utils.MessageUtils; import com.lyr.common.utils.StringUtils; import com.lyr.common.utils.ip.IpUtils; import com.lyr.framework.manager.AsyncManager; -import com.lyr.framework.manager.DataSourceManagerService; import com.lyr.framework.manager.factory.AsyncFactory; import com.lyr.framework.security.context.AuthenticationContextHolder; import com.lyr.system.service.ISysConfigService; diff --git a/sync-framework/target/classes/com/lyr/framework/aspectj/DataScopeAspect.class b/sync-framework/target/classes/com/lyr/framework/aspectj/DataScopeAspect.class index ed4e22aa89f4e97ddaa99c8c84763785a4e793d8..916e62a32d6c6fae122a1ee482c52000f50fb0b8 100644 GIT binary patch delta 1154 zcmZWoS#VTU5IsFJnS1kI$2=y1nF!GV4HCo{LIzQ^3UH~)2Z5qW&<`t4InNTRFjQs` z0>-%EhKhPw6clmA4Hw20mBn2^+;CS=P!SgpHEIN--JvY4@}qCR?mm6)>8|_cW%gz| zH}cRaj{t;+SDkN5F`hY#_Qa(ry?iDo|4<1=m8X0hGkbDimn;z-Ix z2k$W0DKOcZ!IuVK$wCOh_^@zZYi?q;Ejv9dgl&1ZDz=iocBhwYqFruaJVUFCQ{vUs zw3G1-c1y#!*49G4(3YKXurpsC$F~8#6Zd_99~gVESNIt}Vjtrt{46¥A)GSNuk( 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 JZVqY#{s24XaH{|S diff --git a/sync-framework/target/classes/com/lyr/framework/aspectj/LogAspect.class b/sync-framework/target/classes/com/lyr/framework/aspectj/LogAspect.class index aa5bf7cdd3856d3b8c80d72f055f5cf82c6185b4..de50ee209f81520b35c165241eb7cbd276f1e14e 100644 GIT binary patch delta 2182 zcmZWpXLuA<6g_7*n>RcA5;`OTnn0phASxghG>9EUv49F9t`b9H44MS6#YF@uf(U~G zA_hazgkTH38H%73DJqHzHb4-SBGLoiyP^2WkN4*Gd(W9WGpNJNJ0dHO&szkb1y8tm z4qJohgKaLh<2M)0u*1bp{O*cvmy18}r@>z?9F5wIJ+54PUF^f(YTNJP9~@BWpo>E| z96~ORxHyVqYO8c{9MZudL?XpOpG!X@F)jm)RgaOXbX>G#P*pd?5UmWwIG6FPrfT&N zYp|MOO&5)^RW8`w8VM8^a>+(D%xlCpwl_HHb zBE>LOkn?*6_L@)7i$A>-r!g>1?a|4eGp6G2Wy_Zq|fbRJzr$off;@VF%Uk zaCoPSr`XZ(E*D*+Z;W@lyodK16pDqNl&;Qt-Dh~eJ|8gb5<&*MhWH@6>GhCd_Yku9 z@HHWZ+12oo5OVmaVGqL$!^aFW9rkpXb$9A)WowB_p@VfcpS7>>0Zr=EPvH#KZLM_Rtc36^hTy^JncicGWhti__O&ci*L1#b_yJKbJKQInmJ`m+OuMHb zFDo~*ZSSm{9vOL-AMzuD%?MwU3oSp^q;f4kL#3G_VIJmN&SD7>f2PXqy>c@xXDcOh zIM;BV<@}mlV7Sn75kIl4;9|=qUO#(T#!|~={M2$e1`6YrEBKk==awru%yO0XS*;z{ z@C(DWmh05Ko*OJG_@%`{EVBHH8w|g;+{kY%zt!kX{Lb=wP5yzKiMrmR#JbH5w^;tj zpDce?&o3(ds@GO-v)s<#ELPw%%N>gA3#>KV>2;55ReK|UCt$G->xGOY%UvAdmBw9J z=MT$2`IqHx$Y6V9Chp}l?_gXD|33chHH%MdvY-FRj#wU0=RsvDF3M8xf~=gh4&f&) z5Am?!5wBN#g8wK>yrJ>?V~<%@^0+skT5FChUtDdIrQaLhpiASR55wiJH$u)RIUx|9 zoYDDsT^?^>4E$cOVdpExVjTP!DIszG(-~t=W>uHaH{rv0&3Y>zV@02Uwa`?)RHuU?_r(ml5Gy^nv7w;i}c=>ylpcJu4#x6`l84QY% zjp-se_yFDTzDPmVLv7I}de!CW_ryGD%Qt{!EoNS=zFx~YP)ENOXLoysq^@PE3*z?Ytc1!9en z*p_F?056EKM2?p6>BdQ!3CZ*QpP}MTnYbce)8RE;|e)G-A(wswT%`>K94e(gmkPFmW+6_F$6>9 zsnRN}mPRV+I6fID6EdnimCfrAa{@JCq6Drn=q{}d)=)A|pdFmE?5Eg00v-||vR1Vq zo4879Rmh=!DKb~Bly(W)k5T3VJn58gM)o5+CBVpNnKghE*@g}HQl=@C4gLz>$bR&Z zfvUWnaXG#f>h$fDp2k!f#YxGYf=&2NFrA{a%JRKf6k95S$57Ychf35j*le)nFcO5} zbClr()l%yF+nkeps$Zzli>;oQ-m7ik^ckd>tD^C*H>P HZ4&ZDkF$U#b`02jdCe7uUnb> z4u%z><-VonmXzjFY316grsa}KGf@5N*B|%XS-zS1X70T6YHoU^YuT!ka~1%&h$mh2 z#f}h4u+zmZ>~_%(dtB_r_paD}aPcF4GWgkrqo`l7&y{1piv##oZ3kT(!fz`5?&2_x zgi(Z}E{@?3wH8KhC3m`0{XkA7zqH5zX zPhrIHR2NCuAqSf{Z0ayt#nUt@M(Xl(m12c9z`8#a?}*j&vmT%N%*T_!M5rLvZa zNHR>8&Y9w{RhVb7wX$dv=GkoP@*M5b;kl}|Qz=!Y^IV?a;J8553-!22OSV_(;xId~ zqk=DyY4B2&F4LwjH@qUmPE2#0Cu&~bIsBh&CsecxqxcNjgG73Mv>SC4GNoG|j) z{jxCcW0qlV7=^sw@BzaI4SN_q3hr+?fCCL*wS0|(EMMnf!#6C4 z(6b!ML59ODhjWDGNcHr#d{bd>aj@kmzHK=g>kY?Pj^#MR@s<+eX!rY>~)Gm(|be!;dWIaIWDz%lTYjxsZ!27ki#PzsC~GrCetDG0J7K zmdm-qaHZuZ9B8>p%dFOdYq-{Mo#m%$Ue8*Kh5XE79_Cwq&RW9_mK*tnt zsQBoO{GNctr&uo|NwEBZgS`1s9b1SQpl)cj1c{8j27H%!HvP#f8oXnu0GZHVvIpR_ZO`0e1_kbHVKpE&I{6D3Z^26 z2u@-erlS!O1PVPa}hiV z`O&>=@Sef@iFJ4mL4#_84-9GyW*N+eRGpP$@S!W*WeJ6QIB|JfE$^2Ux&KNRfG;fp zbHy4EY@Y!m3+m9)5QW&HpWkcLmBNh5g*&>sWjt_3&Ad=;i)#5X$S&A?|#~1PuOQdXrHxn0NlT1S=Tk#L`iu!IS(UY+mTZH-F z6Kb$*6^nL|g3xiq7<_pGrx|=@@byu|%FyCoxGt%S!1p1M_asU7T diff --git a/sync-framework/target/classes/com/lyr/framework/aspectj/RateLimiterAspect.class b/sync-framework/target/classes/com/lyr/framework/aspectj/RateLimiterAspect.class index 255cbbac441329defd525f158ec7c9cb0d9ada79..3e4892b0ad98d6b8e8c4074f2b0744b639291611 100644 GIT binary patch delta 982 zcmZ9K>r<6g6vlu1aA3V>pLYOl7_ZX|(+tQU!%R7&4&H^ZlAuy4BkPDKkPr}#N~KYu z1z3>2WqGeisi+Xi8x>kwCR$q2AK+i%7e`$iQX4+JYdw3t>+(E%uVYy^vRa034Gsab z_}AjGDMB`zo!JtlnOB{8&Fb-W%T~4tZ&+G*)AAN?3$2#z?65?6M|jtx&5}yHtM2gF z8Rb3R7dnM5j}I&vvK2X) zJ;Im5SISzsDlLO8YOahoB-Yp0H3?r2q@^?)vnyzmJrzAZPtxmC=FB?c!Z$wO@|_{Q zCbl`2UmL5d$}e486R%7NeLlzN7moW3@Vz1Re#-Ltx+>v>&q+@CoTk^16Pyd@1l?Y) zITKv<=B5n#{J@VvYNR>mCx(2^a!&Z!=NHZk7kqwo!QZ%OFnOxO=XWjzeUZFr!(0}w z`24}2!d0JZF7Yph47ouplp7WP_W6eq!_*)(dFnv19SNIoFg>k2Yo0!MvgWDF(=Wt) z7N}3buu#2W5sL{2o%d7o@1-som%5Zf!pGAirlp8S5jsesm}QE(u!LHO_Ue4Nm$#ygu9kVNco}6TxWE%4Ke-J zHc_cgSAkG)eL`Q0qwYkk8I=>#y)WZss#L_o%%qz2+OvR%sNoeAv4rW=vf+Os#v*n9 yiSRHt$rkGGa&Yq<503^O(Lu8mXO0e3iW9R>?|xv)q>UO2(KyP}Dr(Ym0`35ccC||Y delta 889 zcmZ9L>r<6g6vlu19ALd?pFP6lINs8UX$EOPnQ@#^2Qx*nObE49i6}^ zx-A~H5r(lcFm+K@Q6HGqR*!2eU(g_|wXCDj@+Dsh>n$7j+7e}>@Quf}mOeBE)tfw; zqkP9^VT-WUqs7vXCShC9@q5bvngX;vJA%&+%T9I$cI0!^Q4p9C77523$NAlmQW2|*Wi5+UmSq(ztSBw16;3!# z(k`5GoF;DQ^M6WSRb`oQ#&MQ&j`JM#o4rDF!GGqBO}gml;F6yjsn5L36-Osmg=>!M z+z@U$ZUy9R?ikE)eT3sK_YCQNilh&5+~gg*;?bY@)h%mGP9H!PvQ#&o)j@#C=_&BLXj{>mU78$f8ZM@=LT8>)x|yfL%O}wDP^&$9!Vx;EYT*}yiGY3syc@^ rS<154RKH@D|Et=={LL_-Qh%f>e`Mbg{j0Tih|haOSVb%JTmvrwok*yd diff --git a/sync-framework/target/classes/com/lyr/framework/config/ApplicationConfig.class b/sync-framework/target/classes/com/lyr/framework/config/ApplicationConfig.class index 1298ee5ae80606cf1c6b53df7a91dce06a728718..bc4996ed2ef390cabb31f8e2dd60d77caeb40b58 100644 GIT binary patch delta 238 zcmWO0NlF7z5XSNU>roz$q@APf5KTL^v&N}4i5@_3Czw?r4K5TR$wlNHz%z)uAZ}dg zC0w`=4<=EFCyBw1je8orv9^(Rs5&~jeCS*>ch_9GpTEa{d)n%3w VDYQ7F&ate`iH&$(jw&Qn{s9r5C5iw5 delta 220 zcmWNKOHKko7=*u`M-SQxG2;TC@%O97G&OBrkEzd%N>Ws?o_)%xSuo zBXSWvOP@i+vE_tQMe_WZxL1E8Gh}24Idg0OSC1_drfwCa>dIxppWs^2at~qI%|q=9 zda0EA(&=qLN!~rm6{vuGycXPm5`2_}6^SxhtIW7fx< z#XJi>a=+4|#S+UVD<*l9)rZ1+(AlcgtJfE$a;jX@&FK;U5yvJcHm96DRrL;C zY3`ko54FkiUWIe(plBzI?!Fn>&InQA9U^)JWBl79(ophYr`Y0VqnMyeIC4*tZnVED zMGrbH;_0PNp8pOpMC<<_6VORWD=C?hR1C=8A7(Z_C`@CBVL=ZgjM6HVC60ig#1GcV BFu4E# delta 334 zcmW-cNlpS`5QV>=M!Ic&44SCKfyoIG8$|&J1P2hsc^-Bo5KTi?1YW|82QdCnN#(s)FRxPd<9+uQzy3Zxfmtrw@sKd-V8*Rv(oKrA!JNrF3kHh@ z8IvWl2DzrSY_h_t&YDhMr|?|-wiBWv)*COPO^BlX=Ew&(B%72ZUOFXR#B{bKLAG^v zB)i0Hp+#JKl6?;BxaPMGB}W_!eD`8A4*S=Y>K$MZfnPo4R2WblB&58O{*(+eq%@=%W&}rzjWUKtH(?@- lt4uTLQeL!`ols}?7^%>tnmVwED|9l&G(N>lwaueY)jw`?F9HAn diff --git a/sync-framework/target/classes/com/lyr/framework/config/DruidConfig.class b/sync-framework/target/classes/com/lyr/framework/config/DruidConfig.class index fed0116f0b89bbca3bb5b2c0cc8a983f60f2e071..9829d097c5fae5cf9384585f6f810ce82375237d 100644 GIT binary patch delta 859 zcmYk4*-ukZ5XOI}rJVM94IoAVqk#x65G;xyh=M4fq6i40f}#~Fi>z%yTya5h7rD4^ zxa*72H1WYi{{Wx-3-rZDUwAjhxwS@aa_)RH^L;ZXGv`~zyG6raet-N7tmKVBDy;^7 z4%)vqgLXPJodzyD?BbAzF1ii*_1JE&?e@9JGw3Iv3CnX-Tsh25DZVL z3a1(j7q~{08V!GnjZ-nBBDB8h@x%)z7rA6|nJb#BCfQuG2Hd%=*BR5?Fd4@(DP+Rr zCbvv(V`=V~+~uBPcBgO9H{=cWcX`WvAzxkZK%m91xo`4-hl)fy?d|gQw0X;iTKs*X zj@};4Ba_EWnml2`GCgU|r#!QAJasY86-8F5BiWktq|bZ7OGW&DeO)Nf(bHz~ir3-q zo<5gyS~YQv3tfsVSwN1QI22SJh06Huf@1O9ETDvS(#R`~q~6kK?^%)FDylA_RN{*DY!LB}_~zka zVkDBxVwQ-tQ5ogJuu%mYMQx)^f}Cs?Y({fsR0`T65sjlkvsFbp&vc3&Q6d_slH*{T zFsrGN3hClc$s==%thFVG3E0`M@10r!mN3s9!Af5O!CGX%sgcmCp UX%Rn7jy<|0vG!LlkADZAKP~N!z5oCK delta 726 zcmYk4*-jKu5Qe|gvz(shBm8oRj0Z?FZfk3`2EkOF-?aV2v|*%%m7YB>2L7*_saNpq+4 zc;*em2saJ4xUIQkh%)Mq*roIDa!)g6xX-wu64&s6hlWRtYaSb(@YMZjX9b@bp7X+; zwj*gT4X=1@c!TTagz|h7ymjkBG58&tmon3Q$BIdub*}g?#xI_KCRH!eC94so7tvX-!>gPU>37 nO01cy9r(8m9|u!o#8YWGLFs--h&*|{RYb&kPfY&1orL}ZA@Fs0 diff --git a/sync-framework/target/classes/com/lyr/framework/config/FastJson2JsonRedisSerializer.class b/sync-framework/target/classes/com/lyr/framework/config/FastJson2JsonRedisSerializer.class index e7ec73db265e73aec293fa60eddccd586f3e9863..38727cf68d24c033918de0fcba06f460b97a5a8e 100644 GIT binary patch delta 503 zcmZXR$xc*36o$XLx1su8DyE6uAWcXNP8S>+(3U}F6%k|-hnD#QZ4W9WO-Gh&4cp>9 zjIc9C_pV%-_zFIR;ar=zaZ<`TyjrQ>Q+pzNB*B|9t)m+~JK+BlkQK3~GiwT*ew0 z=YHfo@QL$KGZE>d$eGkkMe(%96J|VSne%zfyky!)wEpi;Lpt#C4V)j>jX)d5c`gTd0B!f0Ca!E9*0y-tTF13q_b3=-l z7&kd%24d8hx5UoSCCq)VINME+^v$x!+p>D+FWrcP+*+eY%ovWR{)cw|gJ$JB?$T@9 g{h^LN`o(t`U{o|M1Gx+_GTK6ed`zST(PF)K3MR`$&j0`b delta 455 zcmZXQOK(z96otQYFY$0MClMnL!I=0!DOyDpf2Xx@jzv4{YCk!2}wbwfNcFz8u{G4p<|JnNil-TerAm-0->d{UZ}ba0I0oD#JzPeHn~;$2jfb7CSAOfvzU7k`1GfVRB##fw~$IW0Gu z;j*AC(nx|}CP)j4;CSjkQc2ERrV=*&YT*jA^3Gw78=_fR?Q)&@T85Y$+UlBU_ki~g D=5{|i diff --git a/sync-framework/target/classes/com/lyr/framework/config/I18nConfig.class b/sync-framework/target/classes/com/lyr/framework/config/I18nConfig.class index d94f82cda3bd093e55ac2d44c7c9bca06257f1c6..6edce198a685d8488340507ff93b479ff8a541b9 100644 GIT binary patch delta 182 zcmcc2_mR)#)W2Q(7#J8#7#z45co{U<88o>Vm>4uT8MGL*K`b4123;-&HUm2(Pb`^pnz{`Nk)E3Kw?p1ZfZ$tQSs#aOmq0mco@tX zEO;0!8LSu?Y$h?PPF}~XAYjd4!^0rMAj{5R%fn#DV88huvlufY)8wygo(d{J*RV1& XC;=%Z230Vr#vlcx*%%lZ)EO86pZ^_8 delta 162 zcmWm8yAHun0D$5DoJtQTM>mA9sk-0qilvLkFj>UI=qB+HVl#LEv3ZgvX3n<<;9s8rpyd; w76Sh)-0&?5MM3JgKOGE9R)#Vag>P81xkpys5+Y2iT~1PsHzY2lSQ|kN{!8>1NB{r; diff --git a/sync-framework/target/classes/com/lyr/framework/config/RedisConfig.class b/sync-framework/target/classes/com/lyr/framework/config/RedisConfig.class index 30c737fd3a8ca340eee2689da5dff5659e096b52..778434433f4af6faf0bf36587e9667a0da6e1d09 100644 GIT binary patch delta 482 zcmY+BJ5!TE6o#K~L$YCALc)v%j9|veP}l&XauXCqP`LyJ1Vq#i2|+FihJbhhTKfGR z7EU?~bu4Y5r=_sAm+>rA7Uwy)eRt2C{oee$dH>hx*Kfde_6&^-Yeo!;VUJPGm?mq8 zGOl@Sh@aP=_~wMiq{o!UQ_ZxY)*raUjE`nD&%B?D^E}SH=7r%Uuc`@IFvNImSR_}i zS<>V+%U=$5R4O@|D=!xp$HP*%o-5}{o0U^_7>T@L#T~`6!KzE^frd5KEd`IF$A-sS zt_1YDq{_G-RrP60FMXC0n*oWHa64>S3k&&{kzyflDYIHR)_t$N%GIQPrlSE@WmD~9O7?X_e2jpb;sZM9bSJ5~wl2CQYn7T6 zA16r{JrbR(ZvCfHen_`b*BQOd9hCcAmmTZpu4p4%o`6IEkm=Rf%{K92|f6cl}R{#J2 delta 456 zcmY+A%TAL~6otS4|7lM-91D~*ghUGi!i<1|Q0@u{3J8i9L{wUCg^DexAQuTQKuFAa z0bYT0<^U3g5Z}X*1Ls`!ff0kf_T{X#&(8W=cU-r7dhz=RXl6%qk0Hgd#%IXEh~l|o zR1;!M@j?^1nZI<8;|^Xqcm)}R2its`4QS*uEVp60vVP-V5 z%o)YJVnLDdsI(~+KRihJg^J)$5ME@--LRa_Wg15Exs2f(*}^|{9!h*Stg){6Vc1~Putk?* z+wjxLYUS73LVfhV?*+D|{3PzvBo-lO%Snk>;K;Z5G2Ltr{?G$Y|#Ni;7gxxn{Y}4a-e#S+eAW+m<`rRn+7%8R4GAabJ;jNnJKCJg_|Ek>xQ@e0#?7 zl&a-ffag?&7r}pNdBtnRY#*BFn&K((8{R6?E~!atOB3%Djqa0b9R3iuiHh8>y7yz} zg#T5{@}!u{JR&zVsyJ@G-~O`}u+WVhU7fLr#olVBo)(r6k@vyaD@#2`Ec=7Y|EaC; E8*wRHU;qFB delta 489 zcmX|-Nl#Q!5QV?{I`7r%n*zm^F(kS$ozNN@NXL~T+D^1Mv?GH|DmdXh;7p4G4k*fV zqCpUK=Zdgn;a)c^-T70D@2cT0&Z%>5)v2V4YksaC`0;z;8<6FTWj%Rex6l-_$Fi4w z!hTCYKBVCIfaM^ELJm7|#B!A8kd}~EKTdGZPtwLQOFJD7I$cXwl67=jj&ma9q@{;m z;gn?+dCTcMXIyzUJ#Nx8WcSA}bqDy|DRgnr@X-1lE* ze!6bg!{?>MT5yG4=4(Q%EP!J=NC3SQid27MwG`qQJ(Tl8RfZB zO-6X3jPcTt$fVQ4D`lL>P(ALgj2Z$zYAdU#5nd~Ac&ohQeY_;COi)rL9ZXRYKDhsB zWrmN2jsIp-!7QH)RZfj2Dtx7m&-10AUyO-Xlz$b&Ch9TKVtFCCnK+jQwnW)wleJsP c#VX5kwy_m7{~wr*_l1xetYEG+0hPmiDhrqX6-6bR!bpPE390SDTAJ}yLKj$YAcmW ziH;~LU6AfH6-h{nbk#kSF49#hx<|cdcAjVFdCvF#&-;7NdCxiToU^xf->9Y?N7ruz zP{GMAhGMzG3Ku>s&p!$tg?$dbcCg>UHx9ma@STJ2 zZOji2espla!B4dg4m$YR!7mPewdjx?dpHBX;dd8*;7^L=Dj8Y5Gq@n~Z#5lHVxeO`sbldTfvtq%CSW7t}w0n;=+W)Zy&JLj2dZ}QZjOjlK3ACJWwBMr^-##*N{ z+ha&f8xKn~k7bU=QijFR*268D?L;fK_i&?yxte)N*ulefnjMqyI1g87c1r5b9%34C zhE1oe@tOJTqA?m{h(4yHue~|w%QxGz2Bvpq0a1}$Sb1<#S)pbTi#0}~Rz57z7>jX= z$7`Oz6J;f(9#7Kj#xlk3n&qr8JA%D3dhle$Q;17to=USUugJu+b25AKRK;GJy?L5h zlwFn9gQuI_*>xlPut2lY!oHekuu8F?W`CZkF&rZl&(a*gfs$*Ghee8KYYyfR=~jD~ zuQ`-MG|yp;<}lVMo@?!JVxVL$H+utZ68l4Id}$*%(k#izWvyA8vo$n|P*b9jiBdDU z0z8ixTVy7rwKGT3TAOv@K^;aDS+Qs=c5!`Ob)+sbIXX337q_8uTx}wzTV5z&dt(zl z+cx<8GKp+a;OOGY@EqLKl4MSDq#T04 z6~$HIxwy4ur Gnf?bIS~Yn9 delta 1333 zcmXYx30PEB6vzMnVc@=b+{rfsiU?+k%2Ht_wwQ^ak)|jr;sR-uqu6Ia4A~ypW@bip zv&G6XGqcjHsZ1-|EQ=Oftu(X6HchQ8TQu_AVcz$>dw%bK&b{}Xciw%wChe?hX=~rG z5kL`Vx)_7y3J<&RVR-=MSYhcAS7@cBM-^5nJm$i|<6)Wdl#9`LIt+HuvtfyO-fHW^ zNb1mD48z}{y&Ohz2fb#OeqCXc4Sl1Y`!ysglt@Q#ZfSnl9m7w_SH8?wdH z2bMl`@ew`_BL!Pi@fki>_`<<92iqNd>0&N+DC~4mh;IV;7T-D8<=}e~ZjmgS}M__Bq(^;8zE~S=aA&?tuXQz@IJ-;xD`9-!A^azhNj_)qiLY%PX)% zx>!V?3&SLrekLoXC@MuKR>`$~24Y=PhSBd51*RmsAhtlQ^D{M8qWz?fl?C_ufJBh{s_^>H1_Tu+ub`#CYfn{H;2Z_8BCGWS0|SC8!{!iBa>wr(6r_b4@S`p zdOo|lD0^}b1TVwoqPTV!Q4Z!6XIRBv>9`6lai1h4zUus<;5E1wkol6QC@b@egEwG) zJVw$Nr9HnicoP;%jBB$MWpY9P;H|hVu1FE0EEDBU+!a@(a#3~{6tyhDy|Skt_sQtP z{jim!3oVuVfvI>9%k1!wsF%oHAb*az_zD*zghg`vZV_w5-XXS7^shml!}C~+Ogtg+ wH3(p}{DIcsNvus!49_I!IjkF;zzujIK`&urf?mO^3Hk(|Cg>0jC+L6T2;(s(Pyhe` diff --git a/sync-framework/target/classes/com/lyr/framework/config/ServerConfig.class b/sync-framework/target/classes/com/lyr/framework/config/ServerConfig.class index 4003e5e2fcb087705dbb93837a488e51d8d80801..9978a4f5857a71905575627fd3abda9f6a9df2e1 100644 GIT binary patch delta 218 zcmWlTxlRI67)H;XfRo($B@i1cWpQP3K^9pRK|vf6-hhxWiH#vaN@Gt+<{_w!orMqJ zLlN(7&X;qlZ{=+~|8M*A3zT@##5ndi;nd>Hk_@v^e=lXsAx*~Yj_F7657^Tm5&!@I delta 189 zcmWlTw+#Y86a{Bbz)5=_5^}uv-g^(a3P|XLoCu*Sf*6qzPyj_C*kqn&qIY*Lj{Et( z-aw0kCPd01O~xSWkRz`tP&8W7lqnjm7*q{vnmP?lkfu$`ru}dm%DbuSpd)nY34I1O zLt#YJW-LsY3Ns^fVZl;Zu@*L_Y=s^B=g~S@N_j8e*{_HY^>%(Y9Q!}Ch?Dql07Vjh D+qM{0 diff --git a/sync-framework/target/classes/com/lyr/framework/config/ThreadPoolConfig$1.class b/sync-framework/target/classes/com/lyr/framework/config/ThreadPoolConfig$1.class index e72b4758876c7cbf512ccc63dd5d32c8f2dc16a8..224c5af868839d8a7b8fa83dce1e259f642d6c97 100644 GIT binary patch delta 217 zcmWlS&q@MO7{!10cI`Ho3p#|B|IMbA%CY;d_)ih~|8*XTmm*k|B6PG&yZde-T delta 161 zcmWlSOAY}+7=*un^k~!R#L{>V+GC7IgiBaEglo7%AHqf?V#UG%>}?%I^wgprsY>c$ zPR6}|&lj*`oe(oLR2h}z3}Ysmsb+R_XYpUTWVvNdVbRnq2@6YuRI{|KNQJ_0q_}^g rgNXQC9knWZ#9!5Z+oXkrCrg_S5f!>2MfB(gRb&jP2WP@64jS+W)LRo9 diff --git a/sync-framework/target/classes/com/lyr/framework/config/properties/DruidProperties.class b/sync-framework/target/classes/com/lyr/framework/config/properties/DruidProperties.class index dc37b48feaf4420ffa216c63b0a4ad8a98e4a79c..f12b12d3a0e098efa127acbcad7f6103848bc76b 100644 GIT binary patch delta 355 zcmW;Ixk>|J7=__8F$)v^LO~%##1tYTA|eq*f{lf^MB^6sWi(?JjnT=t#Yn(QFooA4 zb{2xI_uySvi}Tui=i!|0`{{n}X?^{^e@IH}F|J-^Z6&o7*RpbG1+Ahrw2n4V9&Ms6 zw2gMqF4{x;=l~s}BjliCbb<=D5=pu6l(L9QF_mMgyuN&fyE?P3U#b;yj^|We-}UP4 ze5BkuGdfq*Xh3~N7pNcA&>*_hmC+FL=!Q`pjUbmrtBg9vH<|1KyMWK@mjFM&;-W+;SJ_XCQD-IWVXmR9-z&j@}E&p}HulzQjM71jDtf5{%GV J%Onw_@DHz7Fu(u+ diff --git a/sync-framework/target/classes/com/lyr/framework/config/properties/PermitAllUrlProperties.class b/sync-framework/target/classes/com/lyr/framework/config/properties/PermitAllUrlProperties.class index 97e0457c0fac5a68aaecb5b62116953622963b67..c336431dd3123e9f55939c75a51e7a8e97d8a03a 100644 GIT binary patch delta 981 zcmaizS#VTE6o$W^nWQIonwraGLIsM74=fb~0#$%Tg`GlFmL!TMLV`HJARrJ-hJ6Vx zxU$-Uq7h{i1qI@OEXs}>qOvLo3RLj`4?I{_!5hWtVdTLVAG-VRKHvHKoLhZQbly|a zaQx1`13-7KdbDF~m~nZuWxOWo5n`;{OmNe4nu!r6G1()`^AV;nH70rW5n7XS+Zmdf z9#Lj#W_!$GuE#v)$51plwaCR@bb*&*1l-vxEcWR6DzACG&KsIHV+2|1?po%toD~sP z@^(y$SQ_RXk5#PJysLRnvqtlN)9#yr_y-DqcrrDyc6>#mE-^KkO4ikH|=@!4$nl+O%X*lPHkFBF}u(uKAt zCmuFzW4oe_?Vr=8L9@fq#Fv`1VJEvJ{VSi{E`5(-uS?&@*ADqcLi;rb3 z2F+2!G3VcGa$;tp%Z${dDP2Y+Q^J1hGt$|7XDFtF=6k~r{HQr@_=yt&{H(}}*UT#} zd9YuHngyC)48L+xQEJzk()7XbIF);f(~1H+z{De!o_x$Rih;$$q?3;JawtE&*t@RO z+4M9sNQKTR`eXw!`%klLq2CnMw$b#lh0*iscl&p=@`3Y)3;byq#&AP5m4>I>^t3Cq zhLLuH-$PxtjsA_$6-7JS)VwIYxp|pVL3=A!?msL~Bu5I6MKPF1?2!Dvd5?;Ij3ET= z%KWNUS)@det}+4)^#krU0`_+Pn$j}L#L+ zK4m_VE+tC(qJkoOA>OmSvrvMxq)PC>zj&G8RT*5G5&ULBH(Om$SU8G~f@jMbl>wyh zj9=ydd&xJ+cnyvJ*GK-F(RM(KlF`p(+8o2PvgXQF30W`6@I?Q?UtE+*r^&v%v{oxE YPv-^dvT6Yfv+Cvh>MfRJ&n!#s0=MnVW&i*H delta 852 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 a^{XpNlD%97@C0^pjPSIczfU_#%l-vi%8gV2 diff --git a/sync-framework/target/classes/com/lyr/framework/datasource/DynamicDataSourceContextHolder.class b/sync-framework/target/classes/com/lyr/framework/datasource/DynamicDataSourceContextHolder.class index f9e9b22f08435f59bd15c84b33a13f1939bc68db..d9baf62922bf22c940c405ef6d4875c12c3f711a 100644 GIT binary patch delta 231 zcmWlTyH3ME5Jk@}CXP2NhXfiZfH>sk1W3TV-yo$!;uB&COEd^6q@$;Y{RJ9IL`MMy z9Up};0+v}pyDP6B*C-KDrOu)}XHlZ_tWuL5$;>JNq*8aUUOVVeAg0Kg`}LA?DA$5i I8j{d7r@!bRf&c&j delta 209 zcmWlTO-{l<0ENG)jnf$>n6!z}jTM!);9m=^e+6;H5m<5&_U_GG!2@925yAmna{(`6 zoY}nhzL&RnpZZh1M|PSkT(8Xd}tg@XG9a8+-_Lg5r!6VHaVUrgS(brpKv! jWDrgh*Yun#F6=riRL&s<5tsHitdERKvD;m_ML_=_-!vKZ diff --git a/sync-framework/target/classes/com/lyr/framework/interceptor/RepeatSubmitInterceptor.class b/sync-framework/target/classes/com/lyr/framework/interceptor/RepeatSubmitInterceptor.class index 90f49943f5c827c158c39cac4ec52a8fa9503e37..bad77f547cc539ac06e8813baf184bac638fcf98 100644 GIT binary patch delta 248 zcmW-bNlpS$6h+VfRpEtS-=tiCA%uw$d$0j)C=q)Un+hB}Ra9d-?S>g9(qqlFbJm0b$ zb7EO!$#Tk>aBjJvBV1ap=nB`C8*bC0|D~0e{^atiN!b;i@hCVH-ITyr|1VIP%Ii$c QIi*?7_6nXlANOX6t=>(f03W1C)3&Sc*bm(3}Y+L&&+orR?HRF8 ziOvKj!>z?9Yq_H<^elY_!o6k4NO-V} ic~pd7pJDvwthCaxlC(N;)V@kSHMs*%$tONSQGkDBpdNt$ diff --git a/sync-framework/target/classes/com/lyr/framework/interceptor/impl/SameUrlDataInterceptor.class b/sync-framework/target/classes/com/lyr/framework/interceptor/impl/SameUrlDataInterceptor.class index e983874a828463eb2da067ffb8fb2cf67a2b1006..b638f47a40a0803150617a774db204c6b871bced 100644 GIT binary patch delta 743 zcmYk3*-ukZ5Qo2eTR83Qfz-r6d?6TOh%ux#QJ;M9!5Cu15b#YXUZobW6etCE>%K2Y zam9V#6)K7-D7c`wB>p)*XqgDMXpXgH2&iFaYIb%Jq=yfRNg5shf zUQ%4{8z1(R^vW=bD~hYqOmWR3SP@M%wA5F+Nw+zgiYD8$J>Hde(RIxYZYpkRZgWRU zGlSTn+Fi@YYc(+zc`8snh~w^j3oQOy`{H8s@AoSG=_H0!8Wyf>f^igC?HK4~WS zEDKCFh`Whcs5+HwOvE%_7`4d%mtWD6h~;R$(x0vLwdGiLb}X;PE?6z!>bF@YSGk03 zhg&9ZDPG*?71ulT3x@$6E|< z7%;r$ona~UvW{Uj?+q(irTAbIJ}N#L2Kj9G!jMC77?6sm6X9s4HJMHrzB1rY_OCv# zIi2tf-zYfL=BKJqvE5rV#&L>2O6y(a+9cfk>|ktRj9EDHsFf@e<;p9KXD-#0FagDK zQ9kOVUm-o~iV+?4N2RtxsxEQ)WMN^t<>~BSW@Lm35xLVEVFsDVS`xynq?~o4#{Nf- ijMD9-r7sq`ANLnwpKqo!5|)%k!*Fb)fDwd43jP4M0fSNi diff --git a/sync-framework/target/classes/com/lyr/framework/manager/AsyncManager.class b/sync-framework/target/classes/com/lyr/framework/manager/AsyncManager.class index 3948180ff7820f1ef506841e7877b0632f179b00..8ba0066f4583f317acef8b7379b35ee61b377dff 100644 GIT binary patch delta 181 zcmbQjy@}iB)W2Q(7#J8#7@W8m_!%@f88{d;IT*CK7_=F5*co&|d_54M&(2`L3RDOJ zT$~Js3`X1xtPI9nK%J&sKzR*z2D6PmL5zX|zNsY{`6&U3MTxnoC8}?ik@oIg zz4-lmzJM`1LqN^Nq3+NyG-+wt8F#YkYI-Uavly2?0}sW}Fk)=dy`~9o@ln{DIJpy_ zh^e4slUydO!pvvR!e_}!v-a7reOzQLg|OfJAtxx=NbN=0o>gC0(i=(j56n3j A_W%F@ diff --git a/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory$1.class b/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory$1.class index f9e30c1e3795feb94821e975746233ae5a9eff56..07eb2eb29d2d41c6f277744777c526eea0678b3b 100644 GIT binary patch delta 567 zcmYk3Nl%nP5Qd-rX6bL5j*f-{Bt#QYOb~I5l9(7BH{3CrD1!^?FpQ#rgWrsbE8@PP z;OFkR?^}$)lLr$|CSLsyT>J+f)asi_zfZlD>gwvGK39!ZnIC_?dafkwLVE?<*zagOLPow0D2Ye114$<#(SaZa1lw%c4=eXvCX5iEJk7`1)C12_) zbgs_^+1`999~8rq*Qcd?Qs#%hyr%e|WNhZD7vEcYo}9ymO7c;xWd;R)q%EYd#t zspT2Z6)I(UL0J)N4uV1;U$eaARoD@28u!}rhPRe?yjP?`6>A**8Lf*cFZ`XzOkE%w zsg5%znPj#oC7LB_6g7wx3rUZ*nr>BG#7s%kGH0rHAWOwX>7k!xG!tXF pyjz3!mv6*1D>N(rJF8%#^sSaV9&1=DF)E8*$9!={rqoLW{~tylX{`VN delta 551 zcmYk3Nl%nP5Qd-r_=f)IX+02v988RIFu@Q!$U%&t2<|)Tpn^Coj_5e(2ZM;qxC?HG z?T$O{nizv#JeY7Y@#L@YXP{j-lg?9brRq&pr~XuYttkAO`The~!lx3d*euv0*ecj2 z*e+->EMkXYC%ZH$Ly07<>=w00u-CAWwj}NBGjy=ukfu{qm!X?ZO^=~WOl2GpWCRDz z`0(sHO;&RxA{WsYanx{(IHF$~1|sr?L5@cZX-*i1IhkZ3r!=QEXTJRWtlVgj(>^Kq z5pE`^Ek0{G$9cE3XhD0u=7QxSmlSgjr3ceB*>o;b(=rhE<}!`>-fVYIthsEt!iZ&* ztCnkAx7^^SX3TPnam{UuDb}pktoiS)g;MWZ Y=X(Oyv%$yE-*6MlyfS`Dm5&hp1CH2fM*si- diff --git a/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory$2.class b/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory$2.class index 6deff0dfa1c024a687dc6ff241944ffe359f1942..9a1c7b6cd95eb52277a510ab7d61176cfdbb2bb2 100644 GIT binary patch delta 202 zcmWlTOHKko7zV3HuA`FV)1MmT(gcS!M;Ruj8i5o(KY&?ePi%8tD-~cYU z05>7FtEzmd#plezB){9`3TV?c7>X9lg{4H<5>xrNOU;#~%5}&tHBDV}^ObB4qCq-; zpS}&pv+*RIr?U^2Q~m0#aL2t6BEmj-O+#qX(mV){JPFUV-KT1rj*##oy#9QvI8cFG n@ART0|0SykqX@+@d3Tr@#V39YIOWVULxFR0-mEW-C+z(J{zw}; delta 182 zcmWlTJ5mBc6af1HGR*9QDvJ_7AYT_3)OD3*waS32a3B(DPGXrEcmOX!L`q0VG22OZ z*x%OM;{Wvf2jqNOEIo(g-qB~^7&0nrY?wG6h$HGu4UdLoTkL!yt9Yi&c~T-&Y0@z~ zD=(ymS0&?3d1v7_lD2YXNuhku5;A{TNq>%V5D~wxeq9JxbbMA@kFLW^g&S^zYuwSL L9m*l$uB34WEKC-z diff --git a/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory.class b/sync-framework/target/classes/com/lyr/framework/manager/factory/AsyncFactory.class index 22013c3986e26a29a8e41a00b3b96dfee12d4880..bc976b40fcd78c5ea0936419e452eac827eb68c9 100644 GIT binary patch delta 300 zcmXAk%`O8`9L0ZkhTiEl(J2WVX>FL6b|^!AQ{PpM`g(vS1{)-uT6hT`xo=@b>?}Nh zwVl0JuoG7-emVb~|2d2EnY#C???10^K*&*&ZpIWT#uX(d945PrJ*AkYte9a|GN*8u zmnMv7V*M>X@@p>ZYzWkG9JPv-v*@xd z*>u@rTT*q|p(fdNsq2CrCQ2^7?CHQR_csJid=nS1O;57#a=@V=&?P%~d9=SQVd;m& zU1rD(NOv%RN5+sf3>uOQ<6~)GhJ88mCiEBV6y)$chY?2gsq{rb-^w6cG%t(5)S$;) K$|z>7^RK_Np)e`{ delta 243 zcmXAkyDmgg7)IBglgz*8pB;08M5$sh&M@OJ?i}~yKExwTbP9*UJ4i@&sr3Lvr_kt> zTJIuuqFSr@lJz~tKehbp_x%G%Ij_)1Q>ihfOw+QotIUupv&<ff$?3=9k=4EkIQTnvhw44e!~Tny|C%Ipj(AX*hfsIfDsgJ?x|1`T!w z&5b5k83hG=Q%f@PQvwo;5_3~aQj3ZwvonP;YcXg~PGB-+(_zr%VbI$=o5_ihk!kWh kW?McPpe?M73{pUflR06ni5e*gdg delta 113 zcmZ3&*~V#d>ff$?3=9k=40>D)Tnq}F44e##Tny|CO6&~EAX)`PsIoJtfoKJG26c7@ zjg2N(87Ipyg)nO}XiY9=GG)_d(BWaw-Mo&;iII_U@<(P{W=;l~$u=wojIxt+Sq#|a KfHp8O$O8Z+R1y^c diff --git a/sync-framework/target/classes/com/lyr/framework/security/context/PermissionContextHolder.class b/sync-framework/target/classes/com/lyr/framework/security/context/PermissionContextHolder.class index e839c7e5ed2b18ec4c1197335d4f3e49461b3972..f72d0a6928a9ebd2eb6f62f456d5249f53bf10f8 100644 GIT binary patch delta 144 zcmey(F_TmO)W2Q(7#J8#7!0`>I2mNP7-Sjb*cs$G7!=qU6uB8#8I-sflo?b&ELC;} zwT=1;jDiBbsU;ctDFKN^iMgpIsYS(;eHo28)p-~+7&I9ftS0WUntYfsSU`(Go1H<2 rhe4M?kB32@!CSIP~3BG?(Ocg@o88ee{b(VoEt?q@eaBeQ;d^POfadKV%keHUNlT`8j`dmBM7JLX1P|% zT6OEzZrb&RQ}9dMDRi!lt>+YyYyKUcRlUH||9 delta 275 zcmWlU$ua{`7=^#v#Lw+p7KW~DtgMs`(lKje2ttsU$JT;GRiX@4-s8T6t+KQ502baM z8+$LHbZ^dg>Z>}7^XKbQI6Vc0&b>sH`=@H7{wQn+o3`Fk>n|F%*cNsS zCCb9CVUK;o0cFD>M~b3tN}o-)`ke*CF(-yJrz)N|B|lhdJU>Jg!x`s>3qs-25OF2M m@|qjr)=;IU2yCE&cQ-YVQjX2)-(H8I__xC_Ud%QWBk&Jb4K7Cj diff --git a/sync-framework/target/classes/com/lyr/framework/security/handle/AuthenticationEntryPointImpl.class b/sync-framework/target/classes/com/lyr/framework/security/handle/AuthenticationEntryPointImpl.class index 6200432afbe883971b0f95b9f3008a22ad04b5c9..fa4aff21e9ac0955cb0e8d14f64bda43cce3bdc8 100644 GIT binary patch delta 183 zcmdnT_k_>t)W2Q(7#J8#7<{=HSQvEJ8FV=q^w=5nxfu)?47nJL7>v1qlBV1YW(?+B z3>FNQ>OT=XnN4Py`2@ZJR=np|R;0U2zBwV$hun58&Rd zYfoWpT)g*_|9Af-{1t9|{=R~@nNDcNIRkP;jiD9upX1b9h#W5#>tm2e2L0WOnh2pZUE3O4M z3X9w3x0xNb6*;sZuehV2C~_|-Daup?RfR)M@St$1zgZorPQz@zhJGTW{vkak1AYwp SM0^5_{d=5#Kf5se$M^$UN<44? delta 290 zcmWlVxlRI67)H+>)CSA-F1X=}3!;MJJ`Rd3g99;I@euPMhS*uy+1UFI zw!VOoY0j6NuRGtd*I4`O@BITv&@>2%2vH^slS~<=nK2}p4KNqDdBXxJ&0?6PFw2@1 z!zyXR8tcKeVc2A=pKUUR9dInd<%e8?L*6plF7LX4HZUi1e;rpBb2xk w?kQ^?gbGznO{n8)8p0!jCM0vj4{~VJ{05d4}9%5UjP6A diff --git a/sync-framework/target/classes/com/lyr/framework/web/domain/Server.class b/sync-framework/target/classes/com/lyr/framework/web/domain/Server.class index 1a58d07293d8e958cc43f4359e4831c092c4c27c..3fe0a84bcae39a4ef54a35fea75061965e22cf13 100644 GIT binary patch delta 1852 zcmYL~37Cy#6vzMnd+*G9?|0uB`;5Vm)I-QpN=;#iM9rim(PnTN#u)AlA-RLHRkjbq z*!O)M``)4?B_&EyqfL9XOQUn{7~SXj{_pRc_k8C)?|HxPyC+*6O^qBW*}We?GwyfL zAH@de9C%P1Ky!Ry@TG&8QsXOwuO0YHjc*LjI|!B<-x_@9AimW2K8PRiV-P>#=OBK; zg&;2CSC!ukeh(r6f2jOv@Rx%m6bB<>{jGRO{r@OkR{B?|#E~kl2oWk&@i_F-7n|Bm zik6>RG3t+%onVjs)C>_aqg)4dHMmYM8l z*`HaK1C+9r1}fzU;UrF34pQG>l`yjmb1m~Y#BwN~u^h(XmLvEqQ7$JpvtQ%R!*laO z*&PP<$*~;C=L|<#MwoB05Bn`gbBx71c-P`MUa&ZkD9W*X-eMt^8j3NFtq|GTkHbT82^4>3Nv%u1RbeSRe~7#3Fdz3yJL-E|xhf9v~L^7%OzOvV3ukk;{W6 za>)Y#Pf^#Zbr@NOQE%_Q^0@h%yd@X^Un21R-Dy_qM zS;1g4HejQqjhCoR7!5DV>L~SW7S9&BqXIl7NH8ce*lMutl9U~PwZ3&SO>B2BCylSY zLsAoQxDmUsThi{4IiGm;3d@r%l`pF{hLHm}7+t*tui#ags*DSGO~{M7IE&Y14?d*e zZ5)d3Fin!a5#3=A(KqFCkc;U!EMzeb5xgZ7k2x5CBSPh6cirUf<)|nbQgKwMa#=SI zNJYk@FP9w6;u?c0AH#c6%hkOclUWaryVa7X1>VO8GU34qcWZKCVyRWOpATh5-g!w8 zs(CT;5k5u$S*V3lf}DF(Gow4>gRk}M)@zHeCsRmrPQSV054;Bt^fc4 delta 1773 zcmX|?30zcF6vn@AnDNcLx!?{Wn`TOdftF=iDq2`tYKmo)m8cLPFv=imY2%V>i_3FE z-1l7(_pNL-v$8C+&1ly)&9ah=ItQ}({pP#>bKZI9oO|xPH^)*>b`Bk_-ggKrcf?>aSAzOX;%G-?ns7t@Muwp+cK3hSf>U zkf!CMmRtQEDaSe%EgMOw6rtBoA8koNzmic3SBX%mt0DF5kYIg38?d3pMxNT7VP|YM zW~7f%Y+{QYS#QHfQFQ;AneP-&(qn#<&Pl}Zbht5sU6v{Fg*^BP_&^W=3(NlLAy zzK7S_OlFGBHf$?Hcn`RjG?o zSEWQR@6h#5FVl4G_TL8G!gpD`+h+G>>|ygB-s|pq1mf-KWiKy#dwHLieQfq+dPS_O zqpKp{JtoZRXYqcE4>;$nLF`}A*V~_b(AnVY!3^i3ud4S$h7WUq#eRm5V3EWcKFY`B z2E&2OG#tdiL~J0KlbaF@WEYRjEXqm=1XFsacgxMsN-qu+Wf=~kNH(*GBn}4JUCj(L#EQb7GA* zG{tZ#r&*kC_#B@%oWYrfvy^75I4W~g=Bmt7nXj@y<4Uhtx|4ZMN_axVF2mj2V==>UFZVeE!rS`xtLp#}H$VAU9%m$tONcB6IBmNGaxtIsej#AfrET{?1iAwa8Vxff2sqvR#k#jbx zlW#F7r?eCqh2O%QfrxqRg;!HVTgS}?Q{t0bTkO0ZhUi!=nV zM#x4lWMeJXNs`u>iuKqaFG64sreV6QN*l3B(po6TW^9qP5fZZ%;}M2sa$SqpdbWwD zTs-yRsz#)R?G`F5?5L8kFk+|Er|FdDyRcj0!_iXm?v-5oB;GBa{lfCgly)yQoxso` zyiilJ8ZY9oTxujQ)|Z6BkciWGSsHhv1Kz|dHQVYb$zHA5)s8ECj*WrF5mYy-Vw`%o{(ZS352&2f@%Rg&4{-`U3`GKJ2`Kx2m}U4#YEinMkB^1I!K8bIk{7Ee}9u=GKMv@lp&3ndC4NmX2hF>lOh^>j0$}1EqDr(jQq}MW9X- M1xxDzNhSt;02+KMy8r+H delta 215 zcmW;GD-Oay6ouh4v_sP}6)XWL?>CfZc~sCQMdH{1`yqqq4v+{O0wf8n1&JlxnJa$r z<%oN7A0mGJZg&7aLI*CoHUxSq{cN}=r*kmCP{mh1QW>jERHhbY7UswJEj^az0)YjV z0xPVqPnIyoWZsB4Ljgs3FgCmd4@_RPmB~yq;T3H=Q|+o`XR?~MueLhbmM6TSE#+$0 SB>RxHv<2D7W@yv18FcV2>3rS9Ed?#A=a;}d`|PBpY+N<|xDN;1ewY-xxi z!AnVwX(dr=)>9g0kZ!>&=D5soWL3;#L1S3tSmIdb$nm~BpRhu(O0XtCHfyGScGGxi zbuAfYwN}aNb^Y8hjrxU^6+Q~<6a{Qhc+g4V<=8}#phU5SZGs(&U4$rn@KXffC)lId z=Z6F66o)8NRQS%o5ydg86ekEhT#MhLAX=Al+S$YYA`9qXA)wcKlT&gZx*=L#9DVlssU|yQcKoa?tuzGD6UblAJVzkab03(lE7pYd gkJ4UIC2Y(m^|>Y_wt8N`*D)v0Xcokag@AyIL7hPZB%}!Sgzu|WcoPiA8b71iZo&|}c&Vc=)r<6#g05e5u~n+q6~85tQTPhoOnW@M0^{DR4u nRgOWLfpM|{Ge|^!atpIFs{&Z$3|K^QvI2`2yAseECI)2y|5z9O diff --git a/sync-framework/target/classes/com/lyr/framework/web/domain/server/Sys.class b/sync-framework/target/classes/com/lyr/framework/web/domain/server/Sys.class index 2bb777501aba7efca6e78be234dd6e8eefbfa9f6..df8a52ba0c3d8f675bddb3447e81f0f7a0830bdc 100644 GIT binary patch delta 237 zcmX@i)yu7S>ff$?3=9k=47ywl91NoKdd$}mVW zFinnPhAZF(E06^%*bY=62UhSHp@0XhKpw2XfkmBF0jwa01#SW_Sb-u~!AYP3C9s08 SEUqF@H}HWKC<93*1{DC=mLz2W delta 160 zcmeC>KFpff$?3=9k=3_4s491JR)4D1Z5AVLj9sDlU%5TVJ=pvBIhy-`nyadR-^ z1V%>2$xoPEnHd?RCdadgPWE9|XO(7MroRN`nvJbN> zGb4lifJGF6BBGN$SkzgSz@jBAAa%-M(K|p<6|g7=D@aroELy;- z&Z-6$odXtCpZuQHhE)SBV!-Cg%E+L}pf$Ob&5Big8L6vuzh8_9j#_r4*rk$3O`X(cl?W-{snMeH;rqNyf?gh*QZE2zD#eW@ka zzO-U1Nr-rBUxRM8Sf-_RTIz!@zGK|`GQJqgbmqC|Ip^H-|D8Ga-kOgewVry8suH?5$!Xw;DOyg=TF zg5rX}*x+GLhNo7Upgb5A9_?`|g3UyASi}y+PAc^y*)npMqKZnvZbguvb+R`jqTITB zbht|+eZx8R!M zIyW4WbXA=gJv!Q}D}27Vo3_a<#cl2g?keu_kKkWj~`27L^8e*91;Q$LRPzkQ%g zBk0R#M$n}GY9~t{sqgR5*$h!D)ZL5ol*WS3&G+u+S%%e*FAPgI$WF};P33=eI5F>g zI98ZLe}h?RFa!QC#tL&8XfRC^@>2$xs1f1hnb|y{QNo?jJ->d(wltr?Mp&7Un=-^i t3GXMgr3DN%!dCvaiG?Pz58;h{3UMjYi~Ju&e`(4*d=+|c5k@u)o&#N3)S>_Y delta 962 zcmaKo*K>_Q7>A$lAp6;~Co>pQ4l(0~BQr9=C>NqdFA-ftf)LR{^xk`y)ob(~<>(C zo7p1S%0`!Mg6)zW>^%4;-wEFLBzSzg1iKw7W%SDIGpMhwUn(lts>Bz^*%PcIE))yd ztJp`b{vl&S_bU#ND>$e)L{P_h6GL{}^srv;4MZPN93|J*#{|dic|viLQ-afqGn^Id zQk>(wLnB>HRn=uwO7sQAMeDdnaf!=vsdv#e=p8ADhfKAuL%22M%;z2Mw}6mBFGei>I z4N*KY$w@APNH#fMpS3)E=-PQNh=~Jhw-)B!P9r^tG<0qh+moC}tcG*Lt%U<@` zQ(OBM(1c1UwL%n_HP9J8F`E+=S@aFTe0Q=GP2hbG~Y&Y3W0EwR%o zcG=tK!kmwAfo@H(N7MUm)KwXMibaiyWM^+jQ+y!aok%7I2EB1L<_e=xxoIF)=(Qt`;&1J(Ct{Sc}r0FvZb6s=8CPy?k4Y#;$*vuAhCQx45Zy4o{;V$$2)|A*mBEG-1riixz~+?Xs9qtYK3A|1#K%vMizB!T}R^}bkxT-)lOwy|AeL@w=+wR4bN Fe*tP$a^nC1 delta 660 zcmX|-TW`!k7{-6|-@|NYr;!M;EN!%`EIWDL8=8d_;H%wo4+_GtFT*k{qrpXzmay-Tf-+0n1 zcKX|0F;2xf%^6L&ThsGy*eKQOUaJu!$3D$jO~0!P+QI{(F)d?+|k^%+~dCHfn|h;ngPor9$Q8k zQ>0vrO1iW*u00&Bc*0Xfq$Ahe)nj?apvCdrvXn9@S2W0wjFuM+PK<@8g_Uw|VlTC# zk}{Ob6toInn8zOqzNOO4M^Q+YauyJfqMk)m5u#dt-U|1>Qsds5nR6CvmT1JFR#T@G z6#XP3Jz_4}Kg_4%deMu}Ofkz?PFOTLnM;Z69yPcx@zTVKKU8a0iqGE&4m pxfe{n$XC+T2DTDYHkZy9I!;Q)Nnh?40o{H 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 CfmvGs diff --git a/sync-framework/target/classes/com/lyr/framework/web/service/SysPermissionService.class b/sync-framework/target/classes/com/lyr/framework/web/service/SysPermissionService.class index 9f5a1d5f0411f665e7facaeb37b7878d67eb10c5..1030024c53766773251cdf4cc9609cb07dc4f3b7 100644 GIT binary patch delta 503 zcmZ9J$x;+S6h%*EQJqEATR>p6i$+0qIN)p}AS#113OM7~Z8xJ0(lpM1IH0m|QD5NN zmBB*81s`Cz!=LaMa0p+9J0l}AU!1&o^Tx|}>CfqfuYbO*0{eIyQBSv}C&JJj(aW)r z<1r^VSxtshj+~A;L!V=3L(VzUA2GmS%y}-vT;!5lE?cfd)N<7_6ml)%IyaofO$Tqq z+$QI$ysPXTOTkk7xRf;;hCOQfij~o+LVvEDD-|on^32Mrsr9NxEThSqKRq-ij5Fa8 zUqJ5a?3k254SH$4KR_O?p%_rWxPMB$P9;|5N2S;YrPt;CCq1{nRkUv_oWMd~WKQX2LMTtRbJXhB<^h zH@qNam}fz>^R==JFIm(q8J1blOd4MCS{e;2OdD2t6MPQGLvMK({0hg5(}p$H4Mh|i z-rLR%!=~-rB4gMlwO=0j5^_{<;O_d0%Q#e1iVAkJ4$}$BiPA_JHC!P=A+yA(B_v<^ zkrK|yY10KU99%Ng$%Nvf&_c0B$tFRCbevAs3p=$c#JVI_jObrtn#yBxHCHv){*XLE ZsUvd9uM)$)Npbxo-Jn3usNB^6{{chcOo0FZ diff --git a/sync-framework/target/classes/com/lyr/framework/web/service/SysRegisterService.class b/sync-framework/target/classes/com/lyr/framework/web/service/SysRegisterService.class index 624383292c64f8312637129674dc2dfd481cb8e7..f99d747337a89c62355f09e1d284d2f35f152008 100644 GIT binary patch delta 598 zcmW-e*-ukJ6vltIx3_aU9hYEY6B2?C8Zn|VDsg@B(F76`O;o_8maCxFYFp|q?uxsP zD~N(CB8XU56cqO*CjJTj8@zxsKAi76IcLuIos$_Z?V8l|bEJO|n9C2z6cRogBuVNl z1cHqckA#IyQ7Wj9(ZFWg+hSp>G_{mu8)={IK074kWCU5CoKK^j$j8{pF2QceM615X z@?M{PmiJ4VJPsJ-p!GOpA0PHPB00)2!Ev7xJ|_jul2e?PoZ+l(ofDk*xnPYi3NBe6 zExF7U3s(i#B(v<+Y zD#+ER>y{-liBymaGFjc~{)x3JZqlZ>MVrotXHLCMyJ8`W1RaVy+*RDO?fVv1v0Csz z@sLjaD_r3|qD#A8bM&#In;wU_PDkUq+beRP(5r{M$;D6YSRd_zXNm&P6)&v*OM3LE zHzV>&@tQY!cBFPfzv3<_1r?ap` z40ukcFsg=~qLt>WJ%^=+9J?qXJvz3xw3H&6E!A6to@Jcm~S{@B-g_~xdMjC delta 588 zcmWlW*-ukJ6vltI?Y(oIj*(zOjE3lg2847N|RQ*ShPt zfhcZ>f`VAwP;p=4lMg=ofAAo2CYgNam{k8DrCPzs5&Kfd%}O%p&R&lWZk! zpYU)b&jl-dQEB9(BTknYe{5k6Pau(o^U9yi8nV5jq8By5OkV7=3G4x z{2lI8+@wo!i!PlHRg~SPTd{L$NYjPO?QPVt^m z#Rop>VXwOU6Q3Q58e-X4Wn(OztgLO#q|!-6HOmBF6kqwK_->p`5sSSa^g2}NX`-yq zF0|`7h2n{0j&Q7H99=qTaOHYx2$;`b%?6VNDPVpSYuw1 Rnb>4%0XDP9L=T58@E;u(fzbc} diff --git a/sync-framework/target/classes/com/lyr/framework/web/service/TokenService.class b/sync-framework/target/classes/com/lyr/framework/web/service/TokenService.class index 75c1f9e9259f1f82a99248067a742f3b3b9c4306..4083775164dd8325cd1fa2a7d8c85d55d57b9a85 100644 GIT binary patch delta 1349 zcmY*Yc~sO@6#l*$;LW_bB7&>~2}VUKkwqF{rDkOrVF_f5%A_OUA*zAMj^_lOHV7nj z%66q1L!#x#B$}b^q*iqp`UZN~H7(&t@wEDIbE|el zI2nD02MfzsZdf6l;tD(j-G+w>4?~}Ds#eQsoNjoyaE5aq;gBPFl;KR_(T;nJa8?D6 zHLMgK$120w!sB^@AdEWU999c!oU)cD8qO7-#FK@m@KnQj!uebf?X|%%b;`g3)al_) z4~HV*NWL&cAs{@B3!|HDP0AvMg^OLI>xB($94HQ~w)6~aN)IsgV!gqM#CbXqm!K1# z=+=ztf-Wpm`+P;cUXIS&Pet^7)Xhhf)gzO>RZn+8E_#gmg~Q5^n+i2mHMIe*gdg delta 1224 zcmXw1X>?O%5WP1^`Ch&^lu&3(nMJOsoR1~o)E#d+sYDkMcJz6S94?lv( zrCPwE(YjG&k-D#Ot&01G`-+PDhGN}OaRHq#(VUZccjnHWnKy5GCvTXP+Pu4W6MzY9 zGT3NQj~)x+MvI$pvqQHS-0I;rAJcKW!5uDiXIRZ$26tQBgN(tw&cDyY{TBInz{i7l z$jN&x1P?pGBQEh#i%odU#U6LDCk&pnC{3Zq$5VLPg`RQbvlh?cd5agY*_D0Kxi2~5 zWoKS-u~+kSVEt{6xzKACuj7p{-o#t3&D$35V2g)$eY}VFEw zXO8&X;)@i%bpBV)-)8Z3&i%$>JHGYNhwsAp9zVFQKRWj(XMT3u+Y*MT#M_{YrTmT!u~{LQG7|fx;fsGte)N0+SHO1tVOqA5zZj0 z(yQ~TJi~n907lYd!c$TMSztIwIGBaPA{GnQut0D*+J!^t8+A9mot9HsYdB4KsH3O5$YDI(@Ce}ymwTk}s2a{RJX$!5#~9WLkL7WK z1Y*MDIa^rolntC?c!F>)PZXZSlMPQ1&g1;_IvX9fKr^raF~Uqs#9I@s<-!U^? zO>eagk<)m(FyR)xP?%(6W~$$1$;_5QpLz)wp&d-`D5@{I7)$k9&eKy4f<+21L5EUJ z#b;^Sa;#9?SA5R+Tv`Ytu?#T;5Jdz_uu?^rs#H{$i*&j&Sd}fme#pXcIh}_RUHlx? z^~YdbrYMwcX~1154~0~sUte3*mRwMrlZ@8HbF;1JPC&VBCFc*%arvmk6}VE%6<`Fq zG%KiB?*M^xSLxj9mDzCu|Bd?pfWS~4xl_5Tb>sl9(ZAlYR<4Zdwy_%BidQKPK#yJV i&gg}T^_CTPmemD4tV{Qm)eKsn)o(ytpZ&Dn4Zy$7QtWL2 diff --git a/sync-framework/target/classes/com/lyr/framework/web/service/UserDetailsServiceImpl.class b/sync-framework/target/classes/com/lyr/framework/web/service/UserDetailsServiceImpl.class index 0aa7952965863c0c073c6c22225c9b2cba103dec..b028649d8ca651299a78f6c8b0dedb277466dd2e 100644 GIT binary patch delta 443 zcmXYtOHb256vcnj_TQOKCxpmG8>EmJB|%|B6gG-HR6rDY_@amv{#aBfv_%mgJVZeS z1O|2I-X&q@LU%6sC@%Q`#+k&;IrpA(&sp5X)c4fF!QUT0fkwV+G#v@5xs>EGS2Ue; z`L$bdHAxTGB-a(ak{g;n`ZbDy1cThv4sK~~b4PQRAw@{Gu0 delta 402 zcmWlVO;gfQ6vlrS_;W9pJ2{TiOv7ZfGG{{DuxMpPQAyd0KxtW)h=vwWkYQS26jJ$8 z-D=t1rNgd8AE0m0H)#40jsLrOo^#IcoM&2fF$2FnhOz*la6wcOPb4! zyEdb^66Gorl52|Vk{gapayG-dD^j9=N23nmG#E zujVC12N&W_7ae@0DY2x9u`GG4c|uuI+5gcE^j8Hs-6#~R^-`r=lRUMV;J-u93^nSK z=Y|zt*i>jJ+%T;2(w0Nn;WfiLuM8u+mNX45HVkiQOR9#q&fgh2{$0X5YCSKmHr+y( zwm&!>eQ)@{N5dFrY{fe@xW%?%$H_?&l3l|mKD+QQf~1`l$Lt^PNW>bx@=b8oiqPR+ mUpVcFKrbJS3n^R@!gfq9sC@p{j1HXh-yR^v3E#sA&cgvo!Al$f diff --git a/sync-gather/src/main/java/com/lyr/gather/controller/DataSourceConfigController.java b/sync-gather/src/main/java/com/lyr/gather/controller/DataSourceConfigController.java index 0ba0eb6..4f7fd98 100644 --- a/sync-gather/src/main/java/com/lyr/gather/controller/DataSourceConfigController.java +++ b/sync-gather/src/main/java/com/lyr/gather/controller/DataSourceConfigController.java @@ -1,17 +1,21 @@ package com.lyr.gather.controller; import com.lyr.gather.service.DataSourceConfigService; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.validation.constraints.NotNull; /** * @author liyc * @date 2024/10/30 * @description TODO **/ +@Validated @RestController @RequestMapping("/gather") public class DataSourceConfigController { @@ -31,4 +35,10 @@ public class DataSourceConfigController { public void add() { dataSourceConfigService.add(); } + + + @GetMapping("/list/{dataSource}") + public void list(@NotNull(message = "数据源名称不能为空") @PathVariable("dataSource") String datasourceName) { + dataSourceConfigService.list(datasourceName, null); + } } diff --git a/sync-gather/src/main/java/com/lyr/gather/domain/vo/DataSourceConfig.java b/sync-gather/src/main/java/com/lyr/gather/domain/model/DataSourceConfig.java similarity index 97% rename from sync-gather/src/main/java/com/lyr/gather/domain/vo/DataSourceConfig.java rename to sync-gather/src/main/java/com/lyr/gather/domain/model/DataSourceConfig.java index c07c4fd..a6fa5cc 100644 --- a/sync-gather/src/main/java/com/lyr/gather/domain/vo/DataSourceConfig.java +++ b/sync-gather/src/main/java/com/lyr/gather/domain/model/DataSourceConfig.java @@ -1,4 +1,4 @@ -package com.lyr.gather.domain.vo; +package com.lyr.gather.domain.model; import com.lyr.common.annotation.Excel; import lombok.Data; diff --git a/sync-gather/src/main/java/com/lyr/gather/domain/model/TSupplier.java b/sync-gather/src/main/java/com/lyr/gather/domain/model/TSupplier.java new file mode 100644 index 0000000..fe80543 --- /dev/null +++ b/sync-gather/src/main/java/com/lyr/gather/domain/model/TSupplier.java @@ -0,0 +1,108 @@ +package com.lyr.gather.domain.model; + + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; + +@Data +@Accessors(chain = true) +public class TSupplier { + + private Integer fItemId; + private String fAddress; + private String fCity; + private String fProvince; + private String fCountry; + private String fPostalCode; + private String fPhone; + private String fFax; + private String fEmail; + private String fHomePage; + private String fCreditLimit; + private String fTaxId; + private String fBank; + private String fAccount; + private String fBrNo; + private Integer fBoundAttr; + private Integer fErpClsId; + private String fShortName; + private Integer fPriorityId; + private Integer fPGroupId; + private Integer fStatus; + private Integer fLanguageId; + private Integer fRegionId; + private Integer fTrade; + private Double fMinPoValue; + private Double fMaxDebitDate; + private String fLegalPerson; + private String fContact; + private String fContactAcct; + private String fPhoneAcct; + private String fFaxAcct; + private String fZipAcct; + private String fEmailAcct; + private String fAddrAcct; + private Float fTax; + private Integer fCyId; + private Integer fSetId; + private Integer fSetDLineId; + private String fTaxNum; + private Integer fPriceClsId; + private Integer fOperId; + private String fCiqNumber; + private Short fDeleted; + private Short fSaleMode; + private String fName; + private String fNumber; + private Integer fParentId; + private String fShortNumber; + private Integer fArAccountId; + private Integer fApAccountId; + private Integer fPreAcctId; + private BigDecimal fLastTradeAmount; + private BigDecimal fLastRPAmount; + private String fFavorPolicy; + private Integer fDepartment; + private Integer fEmployee; + private String fCorperate; + private Date fBeginTradeDate; + private Date fEndTradeDate; + private Date fLastTradeDate; + private Date fLastReceiveDate; + private String fCashDiscount; + private Integer fCurrencyId; + private Double fMaxDealAmount; + private Double fMinForeReceiveRate; + private Double fMinReserveRate; + private Double fMaxForePayAmount; + private Double fMaxForePayRate; + private Integer fDebtLevel; + private Integer fCreditDays; + private BigDecimal fValueAddRate; + private Integer fPayTaxAcctId; + private BigDecimal fDiscount; + private Integer fTypeId; + private BigDecimal fCreditAmount; + private String fCreditLevel; + private Integer fStockIdAssignee; + private Integer fBr; + private String fRegmark; + private Boolean fLicAndPermit; + private String fLicence; + private Date fPaperPeriod; + private Integer fAlarmPeriod; + private Integer fOtherArAcctId; + private Integer fOtherApAcctId; + private Integer fPreArAcctId; + private String fHelpCode; + private Timestamp fModifyTime; + private Integer fCreditDegree; + private String fRightUserId; + private Integer fPaymentTime; + private String fSMSPhoneNumber; + private String fFullName; +} diff --git a/sync-gather/src/main/java/com/lyr/gather/mapper/DataSourceConfigMapper.java b/sync-gather/src/main/java/com/lyr/gather/mapper/DataSourceConfigMapper.java index 2a3f286..4e60007 100644 --- a/sync-gather/src/main/java/com/lyr/gather/mapper/DataSourceConfigMapper.java +++ b/sync-gather/src/main/java/com/lyr/gather/mapper/DataSourceConfigMapper.java @@ -1,7 +1,9 @@ package com.lyr.gather.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.lyr.gather.domain.vo.DataSourceConfig; +import com.lyr.gather.domain.model.DataSourceConfig; public interface DataSourceConfigMapper extends BaseMapper { + + } diff --git a/sync-gather/src/main/java/com/lyr/gather/mapper/TSupplierMapper.java b/sync-gather/src/main/java/com/lyr/gather/mapper/TSupplierMapper.java new file mode 100644 index 0000000..500d42b --- /dev/null +++ b/sync-gather/src/main/java/com/lyr/gather/mapper/TSupplierMapper.java @@ -0,0 +1,25 @@ +package com.lyr.gather.mapper; + +import com.lyr.common.annotation.DataSource; +import com.lyr.gather.domain.model.TSupplier; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface TSupplierMapper { + + @DataSource(name = "#dataSource") + @Select("SELECT " + // + "s.FItemID, " + // + "s.FSaleMode, " + // + "s.FName, " + // + "s.FNumber, " + // + "s.FParentID, " + // + "s.FShortNumber, " + // + "s.FHelpCode, " + // + "s.FFullName " + // + "FROM t_Supplier s") + List list(@Param("dataSource") String dataSource); + +} diff --git a/sync-gather/src/main/java/com/lyr/gather/service/DataSourceConfigService.java b/sync-gather/src/main/java/com/lyr/gather/service/DataSourceConfigService.java index 1e48d39..3509b4a 100644 --- a/sync-gather/src/main/java/com/lyr/gather/service/DataSourceConfigService.java +++ b/sync-gather/src/main/java/com/lyr/gather/service/DataSourceConfigService.java @@ -1,11 +1,13 @@ package com.lyr.gather.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.lyr.gather.domain.vo.DataSourceConfig; +import com.lyr.gather.domain.model.DataSourceConfig; public interface DataSourceConfigService extends IService { void print(); void add(); + + void list(String s, Object o); } diff --git a/sync-gather/src/main/java/com/lyr/gather/service/impl/DataSourceConfigServiceImpl.java b/sync-gather/src/main/java/com/lyr/gather/service/impl/DataSourceConfigServiceImpl.java index e9cc276..5dab190 100644 --- a/sync-gather/src/main/java/com/lyr/gather/service/impl/DataSourceConfigServiceImpl.java +++ b/sync-gather/src/main/java/com/lyr/gather/service/impl/DataSourceConfigServiceImpl.java @@ -2,9 +2,10 @@ package com.lyr.gather.service.impl; import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.lyr.framework.manager.DataSourceManagerService; -import com.lyr.gather.domain.vo.DataSourceConfig; +import com.lyr.framework.manager.DataSourceManager; +import com.lyr.gather.domain.model.DataSourceConfig; import com.lyr.gather.mapper.DataSourceConfigMapper; +import com.lyr.gather.mapper.TSupplierMapper; import com.lyr.gather.service.DataSourceConfigService; import org.springframework.stereotype.Service; @@ -16,7 +17,10 @@ import java.util.List; public class DataSourceConfigServiceImpl extends ServiceImpl implements DataSourceConfigService { @Resource - private DataSourceManagerService dataSourceManagerService; + private DataSourceManager dataSourceManager; + @Resource + private TSupplierMapper tSupplierMapper; + @PostConstruct private void registered() { @@ -27,22 +31,29 @@ public class DataSourceConfigServiceImpl extends ServiceImpl