Commit e35dde1207243f384dc3ff5f818a3e1c55459e37

Authored by YunaiV
1 parent 90e49664

项目结构调整 x 4

yudao-admin-server/pom.xml
@@ -16,14 +16,62 @@ @@ -16,14 +16,62 @@
16 16
17 <properties> 17 <properties>
18 <revision>1.0.0</revision> 18 <revision>1.0.0</revision>
  19 + <spring.boot.version>2.4.4</spring.boot.version>
19 </properties> 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 <dependencies> 36 <dependencies>
22 <dependency> 37 <dependency>
23 <groupId>cn.iocoder.boot</groupId> 38 <groupId>cn.iocoder.boot</groupId>
24 <artifactId>yudao-framework</artifactId> 39 <artifactId>yudao-framework</artifactId>
25 <version>${revision}</version> 40 <version>${revision}</version>
26 </dependency> 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 </dependencies> 75 </dependencies>
28 76
29 <!-- TODO 稍后清理掉 --> 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,7 +250,7 @@ public class SysDictDataServiceImpl implements SysDictDataService {
250 250
251 @Override 251 @Override
252 public List<DictDataRespDTO> listDictDatasFromCache(String type) { 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,6 +99,7 @@ apollo:
99 eagerLoad: 99 eagerLoad:
100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
  102 + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl
102 url: ${spring.datasource.dynamic.datasource.master.url} 103 url: ${spring.datasource.dynamic.datasource.master.url}
103 username: ${spring.datasource.dynamic.datasource.master.username} 104 username: ${spring.datasource.dynamic.datasource.master.username}
104 password: ${spring.datasource.dynamic.datasource.master.password} 105 password: ${spring.datasource.dynamic.datasource.master.password}
yudao-admin-server/src/main/resources/application-local.yaml
@@ -99,6 +99,7 @@ apollo: @@ -99,6 +99,7 @@ apollo:
99 eagerLoad: 99 eagerLoad:
100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 100 enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 101 jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
  102 + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl
102 url: ${spring.datasource.dynamic.datasource.master.url} 103 url: ${spring.datasource.dynamic.datasource.master.url}
103 username: ${spring.datasource.dynamic.datasource.master.username} 104 username: ${spring.datasource.dynamic.datasource.master.username}
104 password: ${spring.datasource.dynamic.datasource.master.password} 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,7 +66,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
66 // 准备参数 66 // 准备参数
67 String username = randomString(); 67 String username = randomString();
68 // mock 方法 68 // mock 方法
69 - SysUserDO user = randomUserDO(o -> o.setUsername(username)); 69 + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username));
70 when(userService.getUserByUsername(eq(username))).thenReturn(user); 70 when(userService.getUserByUsername(eq(username))).thenReturn(user);
71 71
72 // 调用 72 // 调用
@@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { @@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest {
93 // 准备参数 93 // 准备参数
94 Long userId = randomLongId(); 94 Long userId = randomLongId();
95 // mock 方法 01 95 // mock 方法 01
96 - SysUserDO user = randomUserDO(o -> o.setId(userId)); 96 + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId));
97 when(userService.getUser(eq(userId))).thenReturn(user); 97 when(userService.getUser(eq(userId))).thenReturn(user);
98 // mock 方法 02 98 // mock 方法 02
99 Set<Long> roleIds = randomSet(Long.class); 99 Set<Long> roleIds = randomSet(Long.class);
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/internals/DBConfigRepository.java
1 package cn.iocoder.dashboard.framework.apollo.internals; 1 package cn.iocoder.dashboard.framework.apollo.internals;
2 2
3 import cn.hutool.core.collection.CollUtil; 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 import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts; 7 import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts;
5 import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO; 8 import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO;
6 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; 9 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
  10 +import cn.iocoder.dashboard.util.object.ObjectUtils;
7 import com.ctrip.framework.apollo.Apollo; 11 import com.ctrip.framework.apollo.Apollo;
8 import com.ctrip.framework.apollo.build.ApolloInjector; 12 import com.ctrip.framework.apollo.build.ApolloInjector;
9 import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory; 13 import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory;
@@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository; @@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository;
13 import com.ctrip.framework.apollo.tracer.Tracer; 17 import com.ctrip.framework.apollo.tracer.Tracer;
14 import com.ctrip.framework.apollo.util.ConfigUtil; 18 import com.ctrip.framework.apollo.util.ConfigUtil;
15 import com.ctrip.framework.apollo.util.factory.PropertiesFactory; 19 import com.ctrip.framework.apollo.util.factory.PropertiesFactory;
  20 +import lombok.SneakyThrows;
16 import lombok.extern.slf4j.Slf4j; 21 import lombok.extern.slf4j.Slf4j;
17 22
  23 +import java.lang.reflect.Constructor;
18 import java.util.Comparator; 24 import java.util.Comparator;
19 import java.util.Date; 25 import java.util.Date;
20 import java.util.List; 26 import java.util.List;
@@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository { @@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
58 this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class); 64 this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class);
59 this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class); 65 this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
60 // 初始化 DB 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 this.trySync(); 70 this.trySync();
@@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository { @@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository {
71 INSTANCE = this; 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,8 +23,8 @@ public class ApolloApplicationContextInitializer implements EnvironmentPostProce
23 23
24 private int order = DEFAULT_ORDER; 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 @Override 29 @Override
30 public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { 30 public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {