Commit e35dde1207243f384dc3ff5f818a3e1c55459e37

Authored by YunaiV
1 parent 90e49664

项目结构调整 x 4

yudao-admin-server/pom.xml
... ... @@ -16,14 +16,62 @@
16 16  
17 17 <properties>
18 18 <revision>1.0.0</revision>
  19 + <spring.boot.version>2.4.4</spring.boot.version>
19 20 </properties>
20 21  
  22 + <!-- 依赖声明 -->
  23 + <dependencyManagement>
  24 + <dependencies>
  25 + <!-- 统一依赖管理 -->
  26 + <dependency>
  27 + <groupId>org.springframework.boot</groupId>
  28 + <artifactId>spring-boot-dependencies</artifactId>
  29 + <version>${spring.boot.version}</version>
  30 + <type>pom</type>
  31 + <scope>import</scope>
  32 + </dependency>
  33 + </dependencies>
  34 + </dependencyManagement>
  35 +
21 36 <dependencies>
22 37 <dependency>
23 38 <groupId>cn.iocoder.boot</groupId>
24 39 <artifactId>yudao-framework</artifactId>
25 40 <version>${revision}</version>
26 41 </dependency>
  42 +
  43 + <dependency>
  44 + <groupId>org.springframework.boot</groupId>
  45 + <artifactId>spring-boot-starter-test</artifactId>
  46 + <version>2.4.4</version> <!-- TODO bom 调整 -->
  47 + <scope>test</scope>
  48 + <exclusions>
  49 + <exclusion>
  50 + <artifactId>asm</artifactId>
  51 + <groupId>org.ow2.asm</groupId>
  52 + </exclusion>
  53 + </exclusions>
  54 + </dependency>
  55 +
  56 + <dependency>
  57 + <groupId>com.h2database</groupId> <!-- 单元测试,我们采用 H2 作为数据库 -->
  58 + <artifactId>h2</artifactId>
  59 + <scope>test</scope> <!-- TODO bom 调整 -->
  60 + </dependency>
  61 +
  62 + <dependency>
  63 + <groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 -->
  64 + <artifactId>jedis-mock</artifactId>
  65 + <version>0.1.16</version> <!-- TODO bom 调整 -->
  66 + <scope>test</scope>
  67 + </dependency>
  68 +
  69 + <dependency>
  70 + <groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 -->
  71 + <artifactId>podam</artifactId>
  72 + <version>7.2.6.RELEASE</version> <!-- TODO bom 调整 -->
  73 + <scope>test</scope>
  74 + </dependency>
27 75 </dependencies>
28 76  
29 77 <!-- TODO 稍后清理掉 -->
... ...
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java
... ... @@ -250,7 +250,7 @@ public class SysDictDataServiceImpl implements SysDictDataService {
250 250  
251 251 @Override
252 252 public List<DictDataRespDTO> listDictDatasFromCache(String type) {
253   - return SysDictDataConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values()));
  253 + return SysDictDataConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values());
254 254 }
255 255  
256 256 }
... ...
yudao-admin-server/src/main/resources/application-dev.yaml
... ... @@ -99,6 +99,7 @@ apollo:
99 99 eagerLoad:
100 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
  102 + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl
102 103 url: ${spring.datasource.dynamic.datasource.master.url}
103 104 username: ${spring.datasource.dynamic.datasource.master.username}
104 105 password: ${spring.datasource.dynamic.datasource.master.password}
... ...
yudao-admin-server/src/main/resources/application-local.yaml
... ... @@ -99,6 +99,7 @@ apollo:
99 99 eagerLoad:
100 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
  102 + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl
102 103 url: ${spring.datasource.dynamic.datasource.master.url}
103 104 username: ${spring.datasource.dynamic.datasource.master.username}
104 105 password: ${spring.datasource.dynamic.datasource.master.password}
... ...
yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java
... ... @@ -66,7 +66,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
66 66 // 准备参数
67 67 String username = randomString();
68 68 // mock 方法
69   - SysUserDO user = randomUserDO(o -> o.setUsername(username));
  69 + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username));
70 70 when(userService.getUserByUsername(eq(username))).thenReturn(user);
71 71  
72 72 // 调用
... ... @@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
93 93 // 准备参数
94 94 Long userId = randomLongId();
95 95 // mock 方法 01
96   - SysUserDO user = randomUserDO(o -> o.setId(userId));
  96 + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId));
97 97 when(userService.getUser(eq(userId))).thenReturn(user);
98 98 // mock 方法 02
99 99 Set<Long> roleIds = randomSet(Long.class);
... ...
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/internals/DBConfigRepository.java
1 1 package cn.iocoder.dashboard.framework.apollo.internals;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.util.ClassUtil;
  5 +import cn.hutool.core.util.ObjectUtil;
  6 +import cn.hutool.core.util.ReflectUtil;
4 7 import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts;
5 8 import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO;
6 9 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
  10 +import cn.iocoder.dashboard.util.object.ObjectUtils;
7 11 import com.ctrip.framework.apollo.Apollo;
8 12 import com.ctrip.framework.apollo.build.ApolloInjector;
9 13 import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory;
... ... @@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository;
13 17 import com.ctrip.framework.apollo.tracer.Tracer;
14 18 import com.ctrip.framework.apollo.util.ConfigUtil;
15 19 import com.ctrip.framework.apollo.util.factory.PropertiesFactory;
  20 +import lombok.SneakyThrows;
16 21 import lombok.extern.slf4j.Slf4j;
17 22  
  23 +import java.lang.reflect.Constructor;
18 24 import java.util.Comparator;
19 25 import java.util.Date;
20 26 import java.util.List;
... ... @@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
58 64 this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class);
59 65 this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
60 66 // 初始化 DB
61   - cn.iocoder.dashboard.modules.infra.dal.mysql.config
62   - this.configFrameworkDAO = new InfConfigDAOImpl(System.getProperty(ConfigConsts.APOLLO_JDBC_URL),
63   - System.getProperty(ConfigConsts.APOLLO_JDBC_USERNAME), System.getProperty(ConfigConsts.APOLLO_JDBC_PASSWORD));
  67 + this.configFrameworkDAO = createConfigFrameworkDAO();
64 68  
65 69 // 初始化加载
66 70 this.trySync();
... ... @@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository {
71 75 INSTANCE = this;
72 76 }
73 77  
  78 + @SneakyThrows
  79 + private static ConfigFrameworkDAO createConfigFrameworkDAO() {
  80 + String dao = System.getProperty(ConfigConsts.APOLLO_JDBC_DAO);
  81 + String url = System.getProperty(ConfigConsts.APOLLO_JDBC_URL);
  82 + String username = System.getProperty(ConfigConsts.APOLLO_JDBC_USERNAME);
  83 + String password = System.getProperty(ConfigConsts.APOLLO_JDBC_PASSWORD);
  84 + // 创建 DBConfigRepository 对象
  85 + Class<? extends ConfigFrameworkDAO> clazz = ClassUtil.loadClass(dao);
  86 + Constructor<? extends ConfigFrameworkDAO> constructor = ReflectUtil.getConstructor(clazz, String.class, String.class, String.class);
  87 + return constructor.newInstance(url, username, password);
  88 + }
  89 +
74 90 /**
75 91 * 通知同步,
76 92 */
... ...
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java
... ... @@ -23,8 +23,8 @@ public class ApolloApplicationContextInitializer implements EnvironmentPostProce
23 23  
24 24 private int order = DEFAULT_ORDER;
25 25  
26   - private static final String[] APOLLO_SYSTEM_PROPERTIES = {ConfigConsts.APOLLO_JDBC_URL,
27   - ConfigConsts.APOLLO_JDBC_USERNAME, ConfigConsts.APOLLO_JDBC_PASSWORD};
  26 + private static final String[] APOLLO_SYSTEM_PROPERTIES = {ConfigConsts.APOLLO_JDBC_DAO,
  27 + ConfigConsts.APOLLO_JDBC_URL, ConfigConsts.APOLLO_JDBC_USERNAME, ConfigConsts.APOLLO_JDBC_PASSWORD};
28 28  
29 29 @Override
30 30 public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
... ...