| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.malk.minglei.config;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.dingtalk.DDConf;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.aliwork.impl.YDClientImpl;
- import com.malk.service.dingtalk.DDClient;
- import com.malk.service.dingtalk.impl.DDImplClient;
- import com.malk.service.dingtalk.impl.DDImplClient_Contacts;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Import;
- import java.lang.reflect.Field;
- @Configuration
- @EnableConfigurationProperties({DDConf.class, YidaApplicationsProperties.class})
- @Import({DDImplClient.class, DDImplClient_Contacts.class})
- public class MjavaYidaConfiguration {
- @Bean("coordinationOfficeYidaClient")
- public YDClient coordinationOfficeYidaClient(DDClient dingTalkClient, YidaApplicationsProperties applications) {
- return createYidaClient(dingTalkClient, applications.getCoordinationOffice());
- }
- @Bean("masterDataYidaClient")
- public YDClient masterDataYidaClient(DDClient dingTalkClient, YidaApplicationsProperties applications) {
- return createYidaClient(dingTalkClient, applications.getMasterData());
- }
- /**
- * 为 malk 自动扫描到的默认客户端提供协调办公应用配置。
- */
- @Bean
- public YDConf yidaConfiguration(YidaApplicationsProperties applications) {
- return createYidaConfiguration(applications.getCoordinationOffice());
- }
- private YDClient createYidaClient(DDClient dingTalkClient, YidaApplicationsProperties.ApplicationCredentials credentials) {
- YDConf yidaConfiguration = createYidaConfiguration(credentials);
- YDClientImpl yidaClient = new YDClientImpl();
- inject(yidaClient, "ydConf", yidaConfiguration);
- inject(yidaClient, "ddClient", dingTalkClient);
- return yidaClient;
- }
- private YDConf createYidaConfiguration(YidaApplicationsProperties.ApplicationCredentials credentials) {
- YDConf yidaConfiguration = new YDConf();
- yidaConfiguration.setAppType(credentials.getAppType());
- yidaConfiguration.setSystemToken(credentials.getSystemToken());
- return yidaConfiguration;
- }
- private void inject(YDClientImpl yidaClient, String fieldName, Object value) {
- try {
- Field field = YDClientImpl.class.getDeclaredField(fieldName);
- field.setAccessible(true);
- field.set(yidaClient, value);
- } catch (ReflectiveOperationException exception) {
- throw new IllegalStateException("Unable to initialize malk Yida client", exception);
- }
- }
- }
|