chore: 升级依赖并切换 WxJava 到 HttpClient5
升级 Netty、Redisson、Hutool、jsch、AWS SDK、Alipay、weixin-java 等依赖。 - easy-trans 迁移到 org.dromara 并同步 Java import - 修复 Redisson 4.6.x 与 Spring Boot 2.7 的 spring-data 适配包冲突 - 新增 system-server 的 WxJava 配置类和 mp-server 的 MP-only 配置类 - 将 WxJava http-client-type 切换为 HttpComponents - 移除显式 httpclient4 依赖 - 补充 cloud 项目 fastjson2 依赖管理master
parent
2c46f1fc09
commit
78210da6e2
|
|
@ -73,3 +73,4 @@ functions/mock
|
||||||
screenshot
|
screenshot
|
||||||
.firebase
|
.firebase
|
||||||
sessionStore
|
sessionStore
|
||||||
|
outputs/
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,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 定时任务相关 -->
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
<opentracing.version>0.33.0</opentracing.version>
|
<opentracing.version>0.33.0</opentracing.version>
|
||||||
<!-- Test 测试相关 -->
|
<!-- Test 测试相关 -->
|
||||||
<podam.version>7.2.11.RELEASE</podam.version> <!-- Spring Boot 2.X 最多使用 7.2.11 版本 -->
|
<podam.version>7.2.11.RELEASE</podam.version> <!-- Spring Boot 2.X 最多使用 7.2.11 版本 -->
|
||||||
<jedis-mock.version>1.1.12</jedis-mock.version>
|
<jedis-mock.version>1.1.15</jedis-mock.version>
|
||||||
<mockito-inline.version>4.11.0</mockito-inline.version>
|
<mockito-inline.version>4.11.0</mockito-inline.version>
|
||||||
<!-- Bpm 工作流相关 -->
|
<!-- Bpm 工作流相关 -->
|
||||||
<flowable.version>6.8.1</flowable.version>
|
<flowable.version>6.8.1</flowable.version>
|
||||||
|
|
@ -63,20 +63,21 @@
|
||||||
<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>
|
||||||
<fastexcel.version>1.3.0</fastexcel.version>
|
<fastexcel.version>1.3.0</fastexcel.version>
|
||||||
<velocity.version>2.4</velocity.version> <!-- JDK8 不能从 2.4 升级到 2.4.1,会报包不存在!!!! -->
|
<velocity.version>2.4</velocity.version> <!-- JDK8 不能从 2.4 升级到 2.4.1,会报包不存在!!!! -->
|
||||||
<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>2.9.3</tika-core.version> <!-- JDK8 不能从 2.9.3 升级到 3.X,会报 JDK8 不支持 -->
|
<tika-core.version>2.9.3</tika-core.version> <!-- JDK8 不能从 2.9.3 升级到 3.X,会报 JDK8 不支持 -->
|
||||||
<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>
|
||||||
|
|
@ -85,14 +86,14 @@
|
||||||
<httpclient5.version>5.5.2</httpclient5.version> <!-- WxJava 4.8.x 需要 HttpClient5 5.4+,Spring Boot 2.7 默认 5.1.4 不兼容 -->
|
<httpclient5.version>5.5.2</httpclient5.version> <!-- WxJava 4.8.x 需要 HttpClient5 5.4+,Spring Boot 2.7 默认 5.1.4 不兼容 -->
|
||||||
<httpcore5.version>5.3.6</httpcore5.version> <!-- 配套 httpclient5 5.5.2,Spring Boot 2.7 默认 5.1.5 不兼容 -->
|
<httpcore5.version>5.3.6</httpcore5.version> <!-- 配套 httpclient5 5.5.2,Spring Boot 2.7 默认 5.1.5 不兼容 -->
|
||||||
<!-- 三方云服务相关 -->
|
<!-- 三方云服务相关 -->
|
||||||
<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>
|
||||||
<!-- 专属于 JDK8 安全漏洞升级 -->
|
<!-- 专属于 JDK8 安全漏洞升级 -->
|
||||||
<logback.version>1.2.13</logback.version> <!-- 无法使用 1.3.X 版本,启动会报错 -->
|
<logback.version>1.2.13</logback.version> <!-- 无法使用 1.3.X 版本,启动会报错 -->
|
||||||
</properties>
|
</properties>
|
||||||
|
|
@ -276,7 +277,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>
|
||||||
|
|
@ -291,12 +292,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>
|
||||||
|
|
@ -312,8 +313,8 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>org.redisson</groupId>
|
<groupId>org.redisson</groupId>
|
||||||
<!-- 使用 redisson-spring-data-27 替代,解决 Tuple NoClassDefFoundError 报错 -->
|
<!-- Redisson 4.6.x 默认依赖 redisson-spring-data-41(适配 Spring Data Redis 4.x),排除后使用下方的 spring-data-27 适配 Spring Boot 2.7 -->
|
||||||
<artifactId>redisson-spring-data-40</artifactId> <!-- Redisson 4.x 默认依赖 spring-data-40,排除后使用 spring-data-27 适配 Spring Boot 2.7 -->
|
<artifactId>redisson-spring-data-41</artifactId>
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
@ -579,6 +580,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>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,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 做过沟通
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -87,11 +87,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,7 +1,7 @@
|
||||||
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.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@ import org.springframework.context.annotation.Bean;
|
||||||
public class YudaoTranslateAutoConfiguration {
|
public class YudaoTranslateAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@SuppressWarnings({"InstantiationOfUtilityClass", "SpringJavaInjectionPointsAutowiringInspection"})
|
@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 io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
|
||||||
|
|
@ -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 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)请求微信公众号平台
|
||||||
|
|
||||||
--- #################### 芋道相关配置 ####################
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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