chore: 升级依赖并切换 WxJava 到 HttpClient5
升级 Spring Boot 3.5.15、Netty、Redisson、Tika、Hutool、jsch、AWS SDK、Alipay、weixin-java 等依赖。 - easy-trans 迁移到 org.dromara 并同步 Java import - 新增 system-server 的 WxJava 配置类和 mp-server 的 MP-only 配置类 - 将 WxJava http-client-type 切换为 HttpComponents - 移除显式 httpclient4 依赖 - 补充 cloud 项目 fastjson2 依赖管理master-jdk17
parent
0936e04df3
commit
bf2de0a304
|
|
@ -73,3 +73,4 @@ functions/mock
|
||||||
screenshot
|
screenshot
|
||||||
.firebase
|
.firebase
|
||||||
sessionStore
|
sessionStore
|
||||||
|
outputs/
|
||||||
|
|
|
||||||
2
pom.xml
2
pom.xml
|
|
@ -46,7 +46,7 @@
|
||||||
<flatten-maven-plugin.version>1.7.2</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.7.2</flatten-maven-plugin.version>
|
||||||
<!-- maven-surefire-plugin 暂时无法通过 bom 的依赖读取(兼容老版本 IDEA 2024 及以前版本) -->
|
<!-- maven-surefire-plugin 暂时无法通过 bom 的依赖读取(兼容老版本 IDEA 2024 及以前版本) -->
|
||||||
<lombok.version>1.18.46</lombok.version>
|
<lombok.version>1.18.46</lombok.version>
|
||||||
<spring.boot.version>3.5.9</spring.boot.version>
|
<spring.boot.version>3.5.15</spring.boot.version>
|
||||||
<mapstruct.version>1.6.3</mapstruct.version>
|
<mapstruct.version>1.6.3</mapstruct.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
<revision>2026.05-SNAPSHOT</revision>
|
<revision>2026.05-SNAPSHOT</revision>
|
||||||
<flatten-maven-plugin.version>1.7.2</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.7.2</flatten-maven-plugin.version>
|
||||||
<!-- 统一依赖管理 -->
|
<!-- 统一依赖管理 -->
|
||||||
<spring.boot.version>3.5.14</spring.boot.version>
|
<spring.boot.version>3.5.15</spring.boot.version>
|
||||||
<spring.cloud.version>2025.0.1</spring.cloud.version>
|
<spring.cloud.version>2025.0.1</spring.cloud.version>
|
||||||
<spring.cloud.alibaba.version>2025.0.0.0</spring.cloud.alibaba.version>
|
<spring.cloud.alibaba.version>2025.0.0.0</spring.cloud.alibaba.version>
|
||||||
<!-- Web 相关 -->
|
<!-- Web 相关 -->
|
||||||
|
|
@ -29,14 +29,14 @@
|
||||||
<mybatis-plus.version>3.5.16</mybatis-plus.version>
|
<mybatis-plus.version>3.5.16</mybatis-plus.version>
|
||||||
<mybatis-plus-join.version>1.5.7</mybatis-plus-join.version>
|
<mybatis-plus-join.version>1.5.7</mybatis-plus-join.version>
|
||||||
<dynamic-datasource.version>4.5.0</dynamic-datasource.version>
|
<dynamic-datasource.version>4.5.0</dynamic-datasource.version>
|
||||||
<easy-trans.version>3.0.6</easy-trans.version>
|
<easy-trans.version>3.1.5</easy-trans.version>
|
||||||
<redisson.version>4.4.0</redisson.version>
|
<redisson.version>4.6.1</redisson.version>
|
||||||
<dm8.jdbc.version>8.1.3.140</dm8.jdbc.version>
|
<dm8.jdbc.version>8.1.3.140</dm8.jdbc.version>
|
||||||
<kingbase.jdbc.version>9.0.1.jre7</kingbase.jdbc.version>
|
<kingbase.jdbc.version>9.0.1.jre7</kingbase.jdbc.version>
|
||||||
<opengauss.jdbc.version>7.0.0-RC3-og</opengauss.jdbc.version>
|
<opengauss.jdbc.version>7.0.0-RC3-og</opengauss.jdbc.version>
|
||||||
<taos.version>3.8.3</taos.version>
|
<taos.version>3.8.4</taos.version>
|
||||||
<!-- 消息队列 -->
|
<!-- 消息队列 -->
|
||||||
<rocketmq-spring.version>2.3.5</rocketmq-spring.version>
|
<rocketmq-spring.version>2.3.6</rocketmq-spring.version>
|
||||||
<!-- RPC 相关 -->
|
<!-- RPC 相关 -->
|
||||||
<!-- Config 配置中心相关 -->
|
<!-- Config 配置中心相关 -->
|
||||||
<!-- Job 定时任务相关 -->
|
<!-- Job 定时任务相关 -->
|
||||||
|
|
@ -45,11 +45,11 @@
|
||||||
<lock4j.version>2.2.7</lock4j.version>
|
<lock4j.version>2.2.7</lock4j.version>
|
||||||
<!-- 监控相关 -->
|
<!-- 监控相关 -->
|
||||||
<skywalking.version>9.6.0</skywalking.version>
|
<skywalking.version>9.6.0</skywalking.version>
|
||||||
<spring-boot-admin.version>3.5.8</spring-boot-admin.version>
|
<spring-boot-admin.version>3.5.9</spring-boot-admin.version>
|
||||||
<opentracing.version>0.33.0</opentracing.version>
|
<opentracing.version>0.33.0</opentracing.version>
|
||||||
<!-- Test 测试相关 -->
|
<!-- Test 测试相关 -->
|
||||||
<podam.version>8.0.2.RELEASE</podam.version>
|
<podam.version>8.0.2.RELEASE</podam.version>
|
||||||
<jedis-mock.version>1.1.12</jedis-mock.version>
|
<jedis-mock.version>1.1.15</jedis-mock.version>
|
||||||
<mockito-inline.version>5.2.0</mockito-inline.version>
|
<mockito-inline.version>5.2.0</mockito-inline.version>
|
||||||
<!-- Bpm 工作流相关 -->
|
<!-- Bpm 工作流相关 -->
|
||||||
<flowable.version>8.0.0</flowable.version>
|
<flowable.version>8.0.0</flowable.version>
|
||||||
|
|
@ -60,35 +60,36 @@
|
||||||
<pinyin4j.version>2.5.1</pinyin4j.version>
|
<pinyin4j.version>2.5.1</pinyin4j.version>
|
||||||
<lombok.version>1.18.46</lombok.version>
|
<lombok.version>1.18.46</lombok.version>
|
||||||
<mapstruct.version>1.6.3</mapstruct.version>
|
<mapstruct.version>1.6.3</mapstruct.version>
|
||||||
<hutool-5.version>5.8.44</hutool-5.version>
|
<hutool-5.version>5.8.46</hutool-5.version>
|
||||||
<hutool-6.version>6.0.0-M22</hutool-6.version>
|
<hutool-6.version>6.0.0-M22</hutool-6.version>
|
||||||
<fastexcel.version>1.3.0</fastexcel.version>
|
<fastexcel.version>1.3.0</fastexcel.version>
|
||||||
<velocity.version>2.4.1</velocity.version>
|
<velocity.version>2.4.1</velocity.version>
|
||||||
<fastjson.version>1.2.83</fastjson.version>
|
<fastjson.version>1.2.83</fastjson.version>
|
||||||
|
<fastjson2.version>2.0.62</fastjson2.version>
|
||||||
<guava.version>33.6.0-jre</guava.version>
|
<guava.version>33.6.0-jre</guava.version>
|
||||||
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
|
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
|
||||||
<commons-net.version>3.13.0</commons-net.version>
|
<commons-net.version>3.13.0</commons-net.version>
|
||||||
<commons-lang3.version>3.20.0</commons-lang3.version>
|
<commons-lang3.version>3.20.0</commons-lang3.version>
|
||||||
<jsch.version>2.28.2</jsch.version>
|
<jsch.version>2.28.3</jsch.version>
|
||||||
<tika-core.version>3.3.0</tika-core.version>
|
<tika-core.version>3.3.1</tika-core.version>
|
||||||
<ip2region.version>2.7.0</ip2region.version>
|
<ip2region.version>2.7.0</ip2region.version>
|
||||||
<bizlog-sdk.version>3.0.6</bizlog-sdk.version>
|
<bizlog-sdk.version>3.0.6</bizlog-sdk.version>
|
||||||
<reflections.version>0.10.2</reflections.version>
|
<reflections.version>0.10.2</reflections.version>
|
||||||
<netty.version>4.2.14.Final</netty.version>
|
<netty.version>4.2.15.Final</netty.version>
|
||||||
<mqtt.version>1.2.5</mqtt.version>
|
<mqtt.version>1.2.5</mqtt.version>
|
||||||
<vertx.version>4.5.26</vertx.version>
|
<vertx.version>4.5.26</vertx.version>
|
||||||
<okhttp.version>4.12.0</okhttp.version>
|
<okhttp.version>4.12.0</okhttp.version>
|
||||||
<californium.version>3.14.0</californium.version>
|
<californium.version>3.14.0</californium.version>
|
||||||
<j2mod.version>3.3.0</j2mod.version>
|
<j2mod.version>3.3.0</j2mod.version>
|
||||||
<!-- 三方云服务相关 -->
|
<!-- 三方云服务相关 -->
|
||||||
<awssdk.version>2.44.0</awssdk.version>
|
<awssdk.version>2.46.17</awssdk.version>
|
||||||
<justauth.version>1.16.7</justauth.version>
|
<justauth.version>1.16.7</justauth.version>
|
||||||
<justauth-starter.version>1.4.0</justauth-starter.version>
|
<justauth-starter.version>1.4.0</justauth-starter.version>
|
||||||
<jimureport.version>2.3.4</jimureport.version>
|
<jimureport.version>2.3.4</jimureport.version>
|
||||||
<jimubi.version>2.3.2</jimubi.version>
|
<jimubi.version>2.3.2</jimubi.version>
|
||||||
<weixin-java.version>4.8.2-20260501.180637</weixin-java.version>
|
<weixin-java.version>4.8.4-20260623.211820</weixin-java.version>
|
||||||
<bouncycastle.version>1.80</bouncycastle.version>
|
<bouncycastle.version>1.80</bouncycastle.version>
|
||||||
<alipay-sdk-java.version>4.40.806.ALL</alipay-sdk-java.version>
|
<alipay-sdk-java.version>4.40.865.ALL</alipay-sdk-java.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
|
|
@ -251,7 +252,7 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId> <!-- VO 数据翻译 -->
|
<groupId>org.dromara</groupId> <!-- VO 数据翻译 -->
|
||||||
<artifactId>easy-trans-spring-boot-starter</artifactId>
|
<artifactId>easy-trans-spring-boot-starter</artifactId>
|
||||||
<version>${easy-trans.version}</version>
|
<version>${easy-trans.version}</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
|
|
@ -266,12 +267,12 @@
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
|
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
|
||||||
<version>${easy-trans.version}</version>
|
<version>${easy-trans.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
<artifactId>easy-trans-anno</artifactId>
|
<artifactId>easy-trans-anno</artifactId>
|
||||||
<version>${easy-trans.version}</version>
|
<version>${easy-trans.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
@ -549,6 +550,11 @@
|
||||||
<artifactId>fastjson</artifactId>
|
<artifactId>fastjson</artifactId>
|
||||||
<version>${fastjson.version}</version>
|
<version>${fastjson.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.fastjson2</groupId>
|
||||||
|
<artifactId>fastjson2</artifactId>
|
||||||
|
<version>${fastjson2.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.guava</groupId>
|
<groupId>com.google.guava</groupId>
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId> <!-- VO 数据翻译 -->
|
<groupId>org.dromara</groupId> <!-- VO 数据翻译 -->
|
||||||
<artifactId>easy-trans-anno</artifactId> <!-- 默认引入的原因,方便 xxx-module-api 包使用 -->
|
<artifactId>easy-trans-anno</artifactId> <!-- 默认引入的原因,方便 xxx-module-api 包使用 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package com.fhs.trans.service;
|
package org.dromara.trans.service;
|
||||||
|
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder;
|
import cn.iocoder.yudao.framework.datapermission.core.aop.DataPermissionContextHolder;
|
||||||
import com.fhs.trans.service.impl.SimpleTransService;
|
import org.dromara.trans.service.impl.SimpleTransService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -65,7 +65,7 @@ public class DataPermissionRuleFactoryImpl implements DataPermissionRuleFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否为数据翻译 {@link com.fhs.core.trans.anno.Trans} 的调用
|
* 判断是否为数据翻译 {@link org.dromara.core.trans.anno.Trans} 的调用
|
||||||
*
|
*
|
||||||
* 目前暂时只有这个办法,已经和 easy-trans 做过沟通
|
* 目前暂时只有这个办法,已经和 easy-trans 做过沟通
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -93,11 +93,11 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId> <!-- VO 数据翻译 -->
|
<groupId>org.dromara</groupId> <!-- VO 数据翻译 -->
|
||||||
<artifactId>easy-trans-spring-boot-starter</artifactId>
|
<artifactId>easy-trans-spring-boot-starter</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fhs-opensource</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
|
<artifactId>easy-trans-mybatis-plus-extend</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fhs.core.trans.vo.TransPojo;
|
import org.dromara.core.trans.vo.TransPojo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.ibatis.type.JdbcType;
|
import org.apache.ibatis.type.JdbcType;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
package cn.iocoder.yudao.framework.translate.config;
|
package cn.iocoder.yudao.framework.translate.config;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.translate.core.TranslateUtils;
|
import cn.iocoder.yudao.framework.translate.core.TranslateUtils;
|
||||||
import com.fhs.trans.service.impl.TransService;
|
import org.dromara.trans.service.impl.TransService;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
public class YudaoTranslateAutoConfiguration {
|
public class YudaoTranslateAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@SuppressWarnings({"InstantiationOfUtilityClass", "SpringJavaInjectionPointsAutowiringInspection"})
|
@ConditionalOnBean(TransService.class)
|
||||||
|
@SuppressWarnings("InstantiationOfUtilityClass")
|
||||||
public TranslateUtils translateUtils(TransService transService) {
|
public TranslateUtils translateUtils(TransService transService) {
|
||||||
TranslateUtils.init(transService);
|
TranslateUtils.init(transService);
|
||||||
return new TranslateUtils();
|
return new TranslateUtils();
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package cn.iocoder.yudao.framework.translate.core;
|
package cn.iocoder.yudao.framework.translate.core;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import com.fhs.trans.service.impl.TransService;
|
import org.dromara.trans.service.impl.TransService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,17 +36,6 @@
|
||||||
<groupId>io.github.openfeign</groupId>
|
<groupId>io.github.openfeign</groupId>
|
||||||
<artifactId>feign-okhttp</artifactId>
|
<artifactId>feign-okhttp</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--
|
|
||||||
TODO 芋艿:WxJava 4.8.x 的 AbstractWxMpConfigStorageConfiguration 仍引用了 HttpClient 4.x 的
|
|
||||||
org.apache.http.ssl.TrustStrategy 类。升级 Spring Cloud Alibaba 到 2025.0.0.0 后,Nacos 不再
|
|
||||||
传递 HttpClient 4.x(httpcore),导致 ClassNotFoundException。
|
|
||||||
临时解决:显式引入 httpclient 4.x。待 WxJava 修复后移除。
|
|
||||||
-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
|
||||||
<artifactId>httpclient</artifactId>
|
|
||||||
<version>4.5.14</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 工具相关 -->
|
<!-- 工具相关 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ import java.util.Map;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
@AutoConfiguration(beforeName = {
|
@AutoConfiguration(beforeName = {
|
||||||
"com.fhs.trans.config.TransServiceConfig" // cloud 独有:避免一键改包后,RestTemplate 初始化的冲突。可见 https://t.zsxq.com/T4yj7 帖子
|
"org.dromara.trans.config.TransServiceConfig" // cloud 独有:避免一键改包后,RestTemplate 初始化的冲突。可见 https://t.zsxq.com/T4yj7 帖子
|
||||||
})
|
})
|
||||||
@EnableConfigurationProperties(WebProperties.class)
|
@EnableConfigurationProperties(WebProperties.class)
|
||||||
public class YudaoWebAutoConfiguration {
|
public class YudaoWebAutoConfiguration {
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatCo
|
||||||
import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO;
|
||||||
import cn.iocoder.yudao.module.ai.service.chat.AiChatConversationService;
|
import cn.iocoder.yudao.module.ai.service.chat.AiChatConversationService;
|
||||||
import cn.iocoder.yudao.module.ai.service.chat.AiChatMessageService;
|
import cn.iocoder.yudao.module.ai.service.chat.AiChatMessageService;
|
||||||
import com.fhs.core.trans.anno.TransMethodResult;
|
import org.dromara.core.trans.anno.TransMethodResult;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiModelDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiModelDO;
|
||||||
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
|
||||||
import com.fhs.core.trans.anno.Trans;
|
import org.dromara.core.trans.anno.Trans;
|
||||||
import com.fhs.core.trans.constant.TransType;
|
import org.dromara.core.trans.constant.TransType;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleS
|
||||||
import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO;
|
import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
|
||||||
import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService;
|
import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService;
|
||||||
import com.fhs.core.trans.anno.TransMethodResult;
|
import org.dromara.core.trans.anno.TransMethodResult;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole;
|
package cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiModelDO;
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiModelDO;
|
||||||
import com.fhs.core.trans.anno.Trans;
|
import org.dromara.core.trans.anno.Trans;
|
||||||
import com.fhs.core.trans.constant.TransType;
|
import org.dromara.core.trans.constant.TransType;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO;
|
||||||
import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
|
import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum;
|
||||||
import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
|
import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import com.fhs.core.trans.anno.TransMethodResult;
|
import org.dromara.core.trans.anno.TransMethodResult;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ import cn.iocoder.yudao.module.crm.enums.DictTypeConstants;
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import cn.idev.excel.annotation.ExcelProperty;
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
import com.fhs.core.trans.anno.Trans;
|
import org.dromara.core.trans.anno.Trans;
|
||||||
import com.fhs.core.trans.constant.TransType;
|
import org.dromara.core.trans.constant.TransType;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.firmware;
|
package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.firmware;
|
||||||
|
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task;
|
package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task;
|
||||||
|
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
package cn.iocoder.yudao.module.mp.framework.mp.config;
|
||||||
|
|
||||||
|
import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
|
||||||
|
import me.chanjar.weixin.common.redis.WxRedisOps;
|
||||||
|
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
||||||
|
import me.chanjar.weixin.mp.config.WxMpHostConfig;
|
||||||
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
||||||
|
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信公众号(weixin-java)的配置类
|
||||||
|
*
|
||||||
|
* weixin-java 4.8.x 的 {@code AbstractWxMpConfigStorageConfiguration} 在初始化 config storage 时,
|
||||||
|
* 会无条件调用 {@code DefaultApacheHttpClientBuilder.get()},后者在类加载时引用 Apache HttpClient 4.x 的
|
||||||
|
* {@code org.apache.http.ssl.TrustStrategy} 等类,导致启动报 {@code NoClassDefFoundError}
|
||||||
|
* (Spring Boot 4.x / 新版 Spring Cloud Alibaba 不再传递 HttpClient 4.x)。
|
||||||
|
*
|
||||||
|
* 本配置类自行创建 {@link WxMpConfigStorage} bean,绕过官方的初始化逻辑,
|
||||||
|
* 配合 {@code http-client-type: HttpComponents} 配置,只依赖 Apache HttpClient 5.x。
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@Slf4j
|
||||||
|
public class YudaoWxMpConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnProperty(prefix = WxMpProperties.PREFIX + ".config-storage", name = "type", havingValue = "redistemplate")
|
||||||
|
@ConditionalOnClass(StringRedisTemplate.class)
|
||||||
|
@ConditionalOnMissingBean(WxMpConfigStorage.class)
|
||||||
|
public WxMpConfigStorage wxMpConfigStorage(WxMpProperties properties, ApplicationContext applicationContext) {
|
||||||
|
StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class);
|
||||||
|
WxRedisOps redisOps = new RedisTemplateWxRedisOps(redisTemplate);
|
||||||
|
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
|
||||||
|
applyWxMpConfig(config, properties);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyWxMpConfig(WxMpDefaultConfigImpl config, WxMpProperties properties) {
|
||||||
|
config.setAppId(properties.getAppId());
|
||||||
|
config.setSecret(properties.getSecret());
|
||||||
|
config.setToken(properties.getToken());
|
||||||
|
config.setAesKey(properties.getAesKey());
|
||||||
|
config.setUseStableAccessToken(properties.isUseStableAccessToken());
|
||||||
|
|
||||||
|
WxMpProperties.ConfigStorage storage = properties.getConfigStorage();
|
||||||
|
config.setHttpProxyHost(storage.getHttpProxyHost());
|
||||||
|
config.setHttpProxyUsername(storage.getHttpProxyUsername());
|
||||||
|
config.setHttpProxyPassword(storage.getHttpProxyPassword());
|
||||||
|
if (storage.getHttpProxyPort() != null) {
|
||||||
|
config.setHttpProxyPort(storage.getHttpProxyPort());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.getHosts() != null && StringUtils.isNotEmpty(properties.getHosts().getApiHost())) {
|
||||||
|
WxMpHostConfig hostConfig = new WxMpHostConfig();
|
||||||
|
hostConfig.setApiHost(properties.getHosts().getApiHost());
|
||||||
|
hostConfig.setOpenHost(properties.getHosts().getOpenHost());
|
||||||
|
hostConfig.setMpHost(properties.getHosts().getMpHost());
|
||||||
|
config.setHostConfig(hostConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -100,7 +100,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wx # Redis Key 的前缀
|
key-prefix: wx # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
app-id: null # 避免 weixin-java-mp starter 报错
|
app-id: null # 避免 weixin-java-mp starter 报错
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
package cn.iocoder.yudao.module.system.api.logger.dto;
|
package cn.iocoder.yudao.module.system.api.logger.dto;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||||
import com.fhs.core.trans.anno.Trans;
|
import org.dromara.core.trans.anno.Trans;
|
||||||
import com.fhs.core.trans.constant.TransType;
|
import org.dromara.core.trans.constant.TransType;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.enums.ApiConstants;
|
import cn.iocoder.yudao.module.system.enums.ApiConstants;
|
||||||
import com.fhs.core.trans.anno.AutoTrans;
|
import org.dromara.core.trans.anno.AutoTrans;
|
||||||
import com.fhs.trans.service.AutoTransable;
|
import org.dromara.trans.service.AutoTransable;
|
||||||
import feign.FeignIgnore;
|
import feign.FeignIgnore;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.system.api.user.dto;
|
package cn.iocoder.yudao.module.system.api.user.dto;
|
||||||
|
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.Oper
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.operatelog.OperateLogRespVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.logger.OperateLogDO;
|
||||||
import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
|
import cn.iocoder.yudao.module.system.service.logger.OperateLogService;
|
||||||
import com.fhs.core.trans.anno.TransMethodResult;
|
import org.dromara.core.trans.anno.TransMethodResult;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import cn.idev.excel.annotation.ExcelProperty;
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
|
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
|
||||||
import com.fhs.core.trans.anno.Trans;
|
import org.dromara.core.trans.anno.Trans;
|
||||||
import com.fhs.core.trans.constant.TransType;
|
import org.dromara.core.trans.constant.TransType;
|
||||||
import com.fhs.core.trans.vo.VO;
|
import org.dromara.core.trans.vo.VO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
package cn.iocoder.yudao.module.system.framework.weixin.config;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
||||||
|
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
|
||||||
|
import cn.binarywang.wx.miniapp.config.impl.WxMaRedisBetterConfigImpl;
|
||||||
|
import com.binarywang.spring.starter.wxjava.miniapp.properties.WxMaProperties;
|
||||||
|
import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
|
||||||
|
import me.chanjar.weixin.common.redis.WxRedisOps;
|
||||||
|
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
|
||||||
|
import me.chanjar.weixin.mp.config.WxMpHostConfig;
|
||||||
|
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
||||||
|
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信公众号、小程序(weixin-java)的配置类
|
||||||
|
*
|
||||||
|
* weixin-java 4.8.x 的 {@code AbstractWxMpConfigStorageConfiguration} / {@code AbstractWxMaConfigStorageConfiguration}
|
||||||
|
* 在初始化 config storage 时,会无条件调用 {@code DefaultApacheHttpClientBuilder.get()},后者在类加载时引用
|
||||||
|
* Apache HttpClient 4.x 的 {@code org.apache.http.ssl.TrustStrategy} 等类,导致启动报
|
||||||
|
* {@code NoClassDefFoundError}(Spring Boot 4.x / 新版 Spring Cloud Alibaba 不再传递 HttpClient 4.x)。
|
||||||
|
*
|
||||||
|
* 本配置类自行创建 {@link WxMpConfigStorage} / {@link WxMaConfig} bean,绕过官方的初始化逻辑,
|
||||||
|
* 配合 {@code http-client-type: HttpComponents} 配置,只依赖 Apache HttpClient 5.x。
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@Slf4j
|
||||||
|
public class YudaoWxClientConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnProperty(prefix = WxMpProperties.PREFIX + ".config-storage", name = "type", havingValue = "redistemplate")
|
||||||
|
@ConditionalOnClass(StringRedisTemplate.class)
|
||||||
|
@ConditionalOnMissingBean(WxMpConfigStorage.class)
|
||||||
|
public WxMpConfigStorage wxMpConfigStorage(WxMpProperties properties, ApplicationContext applicationContext) {
|
||||||
|
StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class);
|
||||||
|
WxRedisOps redisOps = new RedisTemplateWxRedisOps(redisTemplate);
|
||||||
|
WxMpRedisConfigImpl config = new WxMpRedisConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
|
||||||
|
applyWxMpConfig(config, properties);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnProperty(prefix = WxMaProperties.PREFIX + ".config-storage", name = "type", havingValue = "redistemplate")
|
||||||
|
@ConditionalOnClass(StringRedisTemplate.class)
|
||||||
|
@ConditionalOnMissingBean(WxMaConfig.class)
|
||||||
|
public WxMaConfig wxMaConfig(WxMaProperties properties, ApplicationContext applicationContext) {
|
||||||
|
StringRedisTemplate redisTemplate = applicationContext.getBean(StringRedisTemplate.class);
|
||||||
|
WxRedisOps redisOps = new RedisTemplateWxRedisOps(redisTemplate);
|
||||||
|
WxMaRedisBetterConfigImpl config = new WxMaRedisBetterConfigImpl(redisOps, properties.getConfigStorage().getKeyPrefix());
|
||||||
|
applyWxMaConfig(config, properties);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyWxMpConfig(WxMpDefaultConfigImpl config, WxMpProperties properties) {
|
||||||
|
config.setAppId(properties.getAppId());
|
||||||
|
config.setSecret(properties.getSecret());
|
||||||
|
config.setToken(properties.getToken());
|
||||||
|
config.setAesKey(properties.getAesKey());
|
||||||
|
config.setUseStableAccessToken(properties.isUseStableAccessToken());
|
||||||
|
|
||||||
|
WxMpProperties.ConfigStorage storage = properties.getConfigStorage();
|
||||||
|
config.setHttpProxyHost(storage.getHttpProxyHost());
|
||||||
|
config.setHttpProxyUsername(storage.getHttpProxyUsername());
|
||||||
|
config.setHttpProxyPassword(storage.getHttpProxyPassword());
|
||||||
|
if (storage.getHttpProxyPort() != null) {
|
||||||
|
config.setHttpProxyPort(storage.getHttpProxyPort());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.getHosts() != null && StringUtils.isNotEmpty(properties.getHosts().getApiHost())) {
|
||||||
|
WxMpHostConfig hostConfig = new WxMpHostConfig();
|
||||||
|
hostConfig.setApiHost(properties.getHosts().getApiHost());
|
||||||
|
hostConfig.setOpenHost(properties.getHosts().getOpenHost());
|
||||||
|
hostConfig.setMpHost(properties.getHosts().getMpHost());
|
||||||
|
config.setHostConfig(hostConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyWxMaConfig(WxMaDefaultConfigImpl config, WxMaProperties properties) {
|
||||||
|
WxMaProperties.ConfigStorage storage = properties.getConfigStorage();
|
||||||
|
config.setAppid(StringUtils.trimToNull(properties.getAppid()));
|
||||||
|
config.setSecret(StringUtils.trimToNull(properties.getSecret()));
|
||||||
|
config.setToken(StringUtils.trimToNull(properties.getToken()));
|
||||||
|
config.setAesKey(StringUtils.trimToNull(properties.getAesKey()));
|
||||||
|
config.setMsgDataFormat(StringUtils.trimToNull(properties.getMsgDataFormat()));
|
||||||
|
config.useStableAccessToken(properties.isUseStableAccessToken());
|
||||||
|
config.setApiHostUrl(StringUtils.trimToNull(properties.getApiHostUrl()));
|
||||||
|
config.setAccessTokenUrl(StringUtils.trimToNull(properties.getAccessTokenUrl()));
|
||||||
|
|
||||||
|
config.setHttpProxyHost(storage.getHttpProxyHost());
|
||||||
|
config.setHttpProxyUsername(storage.getHttpProxyUsername());
|
||||||
|
config.setHttpProxyPassword(storage.getHttpProxyPassword());
|
||||||
|
if (storage.getHttpProxyPort() != null) {
|
||||||
|
config.setHttpProxyPort(storage.getHttpProxyPort());
|
||||||
|
}
|
||||||
|
|
||||||
|
config.setRetrySleepMillis(Math.max(storage.getRetrySleepMillis(), 1000));
|
||||||
|
config.setMaxRetryTimes(Math.max(storage.getMaxRetryTimes(), 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
/**
|
||||||
|
* 微信公众号、小程序(weixin-java)的拓展,跳过 httpclient 4.x 的硬依赖
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
package cn.iocoder.yudao.module.system.framework.weixin;
|
||||||
|
|
@ -143,7 +143,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wx # Redis Key 的前缀
|
key-prefix: wx # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||||
# appid: wx62056c0d5e8db250
|
# appid: wx62056c0d5e8db250
|
||||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||||
|
|
@ -152,7 +152,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wa # Redis Key 的前缀
|
key-prefix: wa # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wx # Redis Key 的前缀
|
key-prefix: wx # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||||
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
||||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||||
|
|
@ -173,7 +173,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wa # Redis Key 的前缀
|
key-prefix: wa # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,14 +135,14 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wx # Redis Key 的前缀
|
key-prefix: wx # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||||
appid: wx63c280fe3248a3e7
|
appid: wx63c280fe3248a3e7
|
||||||
secret: 6f270509224a7ae1296bbf1c8cb97aed
|
secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wa # Redis Key 的前缀
|
key-prefix: wa # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
@ -188,7 +188,6 @@ justauth:
|
||||||
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
|
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
|
||||||
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
|
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
|
||||||
|
|
||||||
|
|
||||||
--- #################### iot相关配置 TODO 芋艿:再瞅瞅 ####################
|
--- #################### iot相关配置 TODO 芋艿:再瞅瞅 ####################
|
||||||
iot:
|
iot:
|
||||||
emq:
|
emq:
|
||||||
|
|
@ -207,7 +206,6 @@ iot:
|
||||||
# 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息)
|
# 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息)
|
||||||
clearSession: true
|
clearSession: true
|
||||||
|
|
||||||
|
|
||||||
# 插件配置
|
# 插件配置
|
||||||
pf4j:
|
pf4j:
|
||||||
pluginsDir: ${user.home}/plugins # 插件目录
|
pluginsDir: ${user.home}/plugins # 插件目录
|
||||||
|
|
@ -185,7 +185,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wx # Redis Key 的前缀
|
key-prefix: wx # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||||
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
||||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||||
|
|
@ -198,7 +198,7 @@ wx:
|
||||||
config-storage:
|
config-storage:
|
||||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||||
key-prefix: wa # Redis Key 的前缀
|
key-prefix: wa # Redis Key 的前缀
|
||||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
http-client-type: HttpComponents # 采用 HttpComponents(HttpClient 5)请求微信公众号平台
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue