mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 01:01:52 +08:00
Merge branch 'master-jdk21' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into develop
# Conflicts: # yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java
This commit is contained in:
commit
722223c659
Binary file not shown.
Before Width: | Height: | Size: 238 KiB After Width: | Height: | Size: 204 KiB |
@ -235,8 +235,6 @@
|
|||||||
|
|
||||||
![功能图](/.image/common/mall-preview.png)
|
![功能图](/.image/common/mall-preview.png)
|
||||||
|
|
||||||
_前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋道快速开发平台_
|
|
||||||
|
|
||||||
演示地址:<https://doc.iocoder.cn/mall-preview/>
|
演示地址:<https://doc.iocoder.cn/mall-preview/>
|
||||||
|
|
||||||
### 会员中心
|
### 会员中心
|
||||||
|
10
pom.xml
10
pom.xml
@ -15,13 +15,13 @@
|
|||||||
<!-- 各种 module 拓展 -->
|
<!-- 各种 module 拓展 -->
|
||||||
<module>yudao-module-system</module>
|
<module>yudao-module-system</module>
|
||||||
<module>yudao-module-infra</module>
|
<module>yudao-module-infra</module>
|
||||||
<module>yudao-module-member</module>
|
<!-- <module>yudao-module-member</module>-->
|
||||||
<!-- <module>yudao-module-bpm</module>-->
|
<!-- <module>yudao-module-bpm</module>-->
|
||||||
<!-- <module>yudao-module-report</module>-->
|
<!-- <module>yudao-module-report</module>-->
|
||||||
<!-- <module>yudao-module-mp</module>-->
|
<!-- <module>yudao-module-mp</module>-->
|
||||||
<module>yudao-module-pay</module>
|
<!-- <module>yudao-module-pay</module>-->
|
||||||
<module>yudao-module-mall</module>
|
<!-- <module>yudao-module-mall</module>-->
|
||||||
<module>yudao-module-crm</module>
|
<!-- <module>yudao-module-crm</module>-->
|
||||||
<!-- 示例项目 -->
|
<!-- 示例项目 -->
|
||||||
<!-- <module>yudao-example</module>-->
|
<!-- <module>yudao-example</module>-->
|
||||||
</modules>
|
</modules>
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
||||||
<!-- 看看咋放到 bom 里 -->
|
<!-- 看看咋放到 bom 里 -->
|
||||||
<lombok.version>1.18.30</lombok.version>
|
<lombok.version>1.18.30</lombok.version>
|
||||||
<spring.boot.version>3.2.0</spring.boot.version>
|
<spring.boot.version>3.2.2</spring.boot.version>
|
||||||
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -17,47 +17,47 @@
|
|||||||
<revision>2.0.0-snapshot</revision>
|
<revision>2.0.0-snapshot</revision>
|
||||||
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
||||||
<!-- 统一依赖管理 -->
|
<!-- 统一依赖管理 -->
|
||||||
<spring.boot.version>3.2.0</spring.boot.version>
|
<spring.boot.version>3.2.2</spring.boot.version>
|
||||||
<!-- Web 相关 -->
|
<!-- Web 相关 -->
|
||||||
<springdoc.version>2.2.0</springdoc.version>
|
<springdoc.version>2.2.0</springdoc.version>
|
||||||
<knife4j.version>4.3.0</knife4j.version>
|
<knife4j.version>4.3.0</knife4j.version>
|
||||||
<!-- DB 相关 -->
|
<!-- DB 相关 -->
|
||||||
<druid.version>1.2.20</druid.version>
|
<druid.version>1.2.21</druid.version>
|
||||||
<mybatis-plus.version>3.5.4.1</mybatis-plus.version>
|
<mybatis-plus.version>3.5.5</mybatis-plus.version>
|
||||||
<mybatis-plus-generator.version>3.5.4.1</mybatis-plus-generator.version>
|
<mybatis-plus-generator.version>3.5.5</mybatis-plus-generator.version>
|
||||||
<dynamic-datasource.version>4.2.0</dynamic-datasource.version>
|
<dynamic-datasource.version>4.3.0</dynamic-datasource.version>
|
||||||
<mybatis-plus-join.version>1.4.8.1</mybatis-plus-join.version>
|
<mybatis-plus-join.version>1.4.10</mybatis-plus-join.version>
|
||||||
<redisson.version>3.25.0</redisson.version>
|
<redisson.version>3.26.0</redisson.version>
|
||||||
<dm8.jdbc.version>8.1.3.62</dm8.jdbc.version>
|
<dm8.jdbc.version>8.1.3.62</dm8.jdbc.version>
|
||||||
<!-- 消息队列 -->
|
<!-- 消息队列 -->
|
||||||
<rocketmq-spring.version>2.2.3</rocketmq-spring.version>
|
<rocketmq-spring.version>2.2.3</rocketmq-spring.version>
|
||||||
<!-- 服务保障相关 -->
|
<!-- 服务保障相关 -->
|
||||||
<lock4j.version>2.2.5</lock4j.version>
|
<lock4j.version>2.2.7</lock4j.version>
|
||||||
<resilience4j.version>2.1.0</resilience4j.version>
|
<resilience4j.version>2.1.0</resilience4j.version>
|
||||||
<!-- 监控相关 -->
|
<!-- 监控相关 -->
|
||||||
<skywalking.version>9.0.0</skywalking.version>
|
<skywalking.version>9.0.0</skywalking.version>
|
||||||
<spring-boot-admin.version>3.1.8</spring-boot-admin.version>
|
<spring-boot-admin.version>3.2.1</spring-boot-admin.version>
|
||||||
<opentracing.version>0.33.0</opentracing.version>
|
<opentracing.version>0.33.0</opentracing.version>
|
||||||
<!-- Test 测试相关 -->
|
<!-- Test 测试相关 -->
|
||||||
<podam.version>8.0.0.RELEASE</podam.version>
|
<podam.version>8.0.1.RELEASE</podam.version>
|
||||||
<jedis-mock.version>1.0.12</jedis-mock.version>
|
<jedis-mock.version>1.0.13</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>7.0.0</flowable.version>
|
<flowable.version>7.0.1</flowable.version>
|
||||||
<!-- 工具类相关 -->
|
<!-- 工具类相关 -->
|
||||||
<captcha-plus.version>2.0.3</captcha-plus.version>
|
<captcha-plus.version>2.0.3</captcha-plus.version>
|
||||||
<jsoup.version>1.17.1</jsoup.version>
|
<jsoup.version>1.17.2</jsoup.version>
|
||||||
<lombok.version>1.18.30</lombok.version>
|
<lombok.version>1.18.30</lombok.version>
|
||||||
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
||||||
<hutool-5.version>5.8.23</hutool-5.version>
|
<hutool-5.version>5.8.25</hutool-5.version>
|
||||||
<hutool-6.version>6.0.0-M8</hutool-6.version>
|
<hutool-6.version>6.0.0-M10</hutool-6.version>
|
||||||
<easyexcel.verion>3.3.3</easyexcel.verion>
|
<easyexcel.verion>3.3.3</easyexcel.verion>
|
||||||
<velocity.version>2.3</velocity.version>
|
<velocity.version>2.3</velocity.version>
|
||||||
<screw.version>1.0.5</screw.version>
|
<screw.version>1.0.5</screw.version>
|
||||||
<fastjson.version>1.2.83</fastjson.version>
|
<fastjson.version>1.2.83</fastjson.version>
|
||||||
<guava.version>32.1.3-jre</guava.version>
|
<guava.version>33.0.0-jre</guava.version>
|
||||||
<guice.version>5.1.0</guice.version>
|
<guice.version>5.1.0</guice.version>
|
||||||
<transmittable-thread-local.version>2.14.4</transmittable-thread-local.version>
|
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
|
||||||
<commons-net.version>3.10.0</commons-net.version>
|
<commons-net.version>3.10.0</commons-net.version>
|
||||||
<jsch.version>0.1.55</jsch.version>
|
<jsch.version>0.1.55</jsch.version>
|
||||||
<tika-core.version>2.9.1</tika-core.version>
|
<tika-core.version>2.9.1</tika-core.version>
|
||||||
@ -66,15 +66,15 @@
|
|||||||
<!-- 三方云服务相关 -->
|
<!-- 三方云服务相关 -->
|
||||||
<okio.version>3.5.0</okio.version>
|
<okio.version>3.5.0</okio.version>
|
||||||
<okhttp3.version>4.11.0</okhttp3.version>
|
<okhttp3.version>4.11.0</okhttp3.version>
|
||||||
<commons-io.version>2.11.0</commons-io.version>
|
<commons-io.version>2.15.1</commons-io.version>
|
||||||
<minio.version>8.5.6</minio.version>
|
<minio.version>8.5.7</minio.version>
|
||||||
<aliyun-java-sdk-core.version>4.6.4</aliyun-java-sdk-core.version>
|
<aliyun-java-sdk-core.version>4.6.4</aliyun-java-sdk-core.version>
|
||||||
<aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version>
|
<aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version>
|
||||||
<tencentcloud-sdk-java.version>3.1.880</tencentcloud-sdk-java.version>
|
<tencentcloud-sdk-java.version>3.1.880</tencentcloud-sdk-java.version>
|
||||||
<justauth.version>2.0.5</justauth.version>
|
<justauth.version>2.0.5</justauth.version>
|
||||||
<jimureport.version>1.6.6-beta2</jimureport.version>
|
<jimureport.version>1.6.6-beta2</jimureport.version>
|
||||||
<xercesImpl.version>2.12.2</xercesImpl.version>
|
<xercesImpl.version>2.12.2</xercesImpl.version>
|
||||||
<weixin-java.version>4.5.7.B</weixin-java.version>
|
<weixin-java.version>4.6.0</weixin-java.version>
|
||||||
<ureport2.version>2.2.9</ureport2.version>
|
<ureport2.version>2.2.9</ureport2.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@ -90,11 +90,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 业务组件 -->
|
<!-- 业务组件 -->
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-banner</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
|
||||||
@ -116,11 +111,6 @@
|
|||||||
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-sms</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
<artifactId>yudao-spring-boot-starter-biz-pay</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-pay</artifactId>
|
||||||
@ -136,11 +126,6 @@
|
|||||||
<artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-data-permission</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-error-code</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
<artifactId>yudao-spring-boot-starter-biz-ip</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-ip</artifactId>
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<modules>
|
<modules>
|
||||||
<module>yudao-common</module>
|
<module>yudao-common</module>
|
||||||
<module>yudao-spring-boot-starter-banner</module>
|
|
||||||
<module>yudao-spring-boot-starter-mybatis</module>
|
<module>yudao-spring-boot-starter-mybatis</module>
|
||||||
<module>yudao-spring-boot-starter-redis</module>
|
<module>yudao-spring-boot-starter-redis</module>
|
||||||
<module>yudao-spring-boot-starter-web</module>
|
<module>yudao-spring-boot-starter-web</module>
|
||||||
@ -28,18 +27,15 @@
|
|||||||
|
|
||||||
<module>yudao-spring-boot-starter-biz-operatelog</module>
|
<module>yudao-spring-boot-starter-biz-operatelog</module>
|
||||||
<module>yudao-spring-boot-starter-biz-dict</module>
|
<module>yudao-spring-boot-starter-biz-dict</module>
|
||||||
<module>yudao-spring-boot-starter-biz-sms</module>
|
|
||||||
|
|
||||||
<module>yudao-spring-boot-starter-biz-pay</module>
|
<module>yudao-spring-boot-starter-biz-pay</module>
|
||||||
<module>yudao-spring-boot-starter-biz-tenant</module>
|
<module>yudao-spring-boot-starter-biz-tenant</module>
|
||||||
<module>yudao-spring-boot-starter-biz-data-permission</module>
|
<module>yudao-spring-boot-starter-biz-data-permission</module>
|
||||||
<module>yudao-spring-boot-starter-biz-error-code</module>
|
|
||||||
<module>yudao-spring-boot-starter-biz-ip</module>
|
<module>yudao-spring-boot-starter-biz-ip</module>
|
||||||
|
|
||||||
<module>yudao-spring-boot-starter-flowable</module>
|
<module>yudao-spring-boot-starter-flowable</module>
|
||||||
<module>yudao-spring-boot-starter-captcha</module>
|
<module>yudao-spring-boot-starter-captcha</module>
|
||||||
<module>yudao-spring-boot-starter-websocket</module>
|
<module>yudao-spring-boot-starter-websocket</module>
|
||||||
<module>yudao-spring-boot-starter-desensitize</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<artifactId>yudao-framework</artifactId>
|
<artifactId>yudao-framework</artifactId>
|
||||||
|
@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.common.pojo.SortablePageParam;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.SortingField;
|
import cn.iocoder.yudao.framework.common.pojo.SortingField;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
import java.util.List;
|
import static java.util.Collections.singletonList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link cn.iocoder.yudao.framework.common.pojo.PageParam} 工具类
|
* {@link cn.iocoder.yudao.framework.common.pojo.PageParam} 工具类
|
||||||
@ -60,7 +60,7 @@ public class PageUtils {
|
|||||||
*/
|
*/
|
||||||
public static <T> void buildDefaultSortingField(SortablePageParam sortablePageParam, Func1<T, ?> func) {
|
public static <T> void buildDefaultSortingField(SortablePageParam sortablePageParam, Func1<T, ?> func) {
|
||||||
if (sortablePageParam != null && CollUtil.isEmpty(sortablePageParam.getSortingFields())) {
|
if (sortablePageParam != null && CollUtil.isEmpty(sortablePageParam.getSortingFields())) {
|
||||||
sortablePageParam.setSortingFields(List.of(buildSortingField(func)));
|
sortablePageParam.setSortingFields(singletonList(buildSortingField(func)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>yudao-framework</artifactId>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>yudao-spring-boot-starter-banner</artifactId>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<name>${project.artifactId}</name>
|
|
||||||
<description>Banner 用于在 console 控制台,打印开发文档、接口文档等</description>
|
|
||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-common</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1 +0,0 @@
|
|||||||
cn.iocoder.yudao.framework.banner.config.YudaoBannerAutoConfiguration
|
|
@ -1,49 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>yudao-framework</artifactId>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-error-code</artifactId>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<name>${project.artifactId}</name>
|
|
||||||
<description>
|
|
||||||
错误码 ErrorCode 的自动配置功能,提供如下功能:
|
|
||||||
1. 远程读取:项目启动时,从 system-server 服务,读取数据库中的 ErrorCode 错误码,实现错误码的提示可配置;
|
|
||||||
2. 自动更新:管理员在管理后台修数据库中的 ErrorCode 错误码时,项目自动从 system-server 服务加载最新的 ErrorCode 错误码;
|
|
||||||
3. 自动写入:项目启动时,将项目本地的错误码写到 system-server 服务中,方便管理员在管理后台编辑;
|
|
||||||
</description>
|
|
||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-common</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Spring 核心 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 业务组件 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-module-system-api</artifactId> <!-- 需要使用它,进行操作日志的记录 -->
|
|
||||||
<version>${revision}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>jakarta.validation</groupId>
|
|
||||||
<artifactId>jakarta.validation-api</artifactId>
|
|
||||||
<scope>provided</scope> <!-- 设置为 provided,主要是 ErrorCodeProperties 使用到 -->
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1 +0,0 @@
|
|||||||
cn.iocoder.yudao.framework.errorcode.config.YudaoErrorCodeAutoConfiguration
|
|
@ -1,82 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-framework</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</parent>
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-sms</artifactId>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<name>${project.artifactId}</name>
|
|
||||||
<description>短信拓展,支持阿里云、腾讯云</description>
|
|
||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-common</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Spring 核心 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 监控相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.opentracing</groupId>
|
|
||||||
<artifactId>opentracing-util</artifactId> <!-- aliyun 短信需要,进行链路追踪 -->
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Test 测试相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 工具类相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
<optional>true</optional> <!-- 设置为可选,因为使用到 @VisibleForTesting 用于单元测试 -->
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-databind</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>jakarta.validation</groupId>
|
|
||||||
<artifactId>jakarta.validation-api</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 三方云服务相关 -->
|
|
||||||
|
|
||||||
<!-- SMS SDK begin -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.aliyun</groupId>
|
|
||||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.aliyun</groupId>
|
|
||||||
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.tencentcloudapi</groupId>
|
|
||||||
<artifactId>tencentcloud-sdk-java-sms</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- SMS SDK end -->
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
</project>
|
|
@ -1,21 +0,0 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.config;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.SmsClientFactoryImpl;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信配置类
|
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
@AutoConfiguration
|
|
||||||
public class YudaoSmsAutoConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public SmsClientFactory smsClientFactory() {
|
|
||||||
return new SmsClientFactoryImpl();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.enums;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信框架的错误码枚举
|
|
||||||
*
|
|
||||||
* 短信框架,使用 2-001-000-000 段
|
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
public interface SmsFrameworkErrorCodeConstants {
|
|
||||||
|
|
||||||
ErrorCode SMS_UNKNOWN = new ErrorCode(2_001_000_000, "未知错误,需要解析");
|
|
||||||
|
|
||||||
// ========== 权限 / 限流等相关 2-001-000-100 ==========
|
|
||||||
|
|
||||||
ErrorCode SMS_PERMISSION_DENY = new ErrorCode(2_001_000_100, "没有发送短信的权限");
|
|
||||||
ErrorCode SMS_IP_DENY = new ErrorCode(2_001_000_100, "IP 不允许发送短信");
|
|
||||||
|
|
||||||
// 阿里云:将短信发送频率限制在正常的业务限流范围内。默认短信验证码:使用同一签名,对同一个手机号验证码,支持 1 条 / 分钟,5 条 / 小时,累计 10 条 / 天。
|
|
||||||
ErrorCode SMS_SEND_BUSINESS_LIMIT_CONTROL = new ErrorCode(2_001_000_102, "指定手机的发送限流");
|
|
||||||
// 阿里云:已经达到您在控制台设置的短信日发送量限额值。在国内消息设置 > 安全设置,修改发送总量阈值。
|
|
||||||
ErrorCode SMS_SEND_DAY_LIMIT_CONTROL = new ErrorCode(2_001_000_103, "每天的发送限流");
|
|
||||||
|
|
||||||
ErrorCode SMS_SEND_CONTENT_INVALID = new ErrorCode(2_001_000_104, "短信内容有敏感词");
|
|
||||||
|
|
||||||
// 腾讯云:为避免骚扰用户,营销短信只允许在8点到22点发送。
|
|
||||||
ErrorCode SMS_SEND_MARKET_LIMIT_CONTROL = new ErrorCode(2_001_000_105, "营销短信发送时间限制");
|
|
||||||
|
|
||||||
// ========== 模板相关 2-001-000-200 ==========
|
|
||||||
ErrorCode SMS_TEMPLATE_INVALID = new ErrorCode(2_001_000_200, "短信模板不合法"); // 包括短信模板不存在
|
|
||||||
ErrorCode SMS_TEMPLATE_PARAM_ERROR = new ErrorCode(2_001_000_201, "模板参数不正确");
|
|
||||||
|
|
||||||
// ========== 签名相关 2-001-000-300 ==========
|
|
||||||
ErrorCode SMS_SIGN_INVALID = new ErrorCode(2_001_000_300, "短信签名不可用");
|
|
||||||
|
|
||||||
// ========== 账户相关 2-001-000-400 ==========
|
|
||||||
ErrorCode SMS_ACCOUNT_MONEY_NOT_ENOUGH = new ErrorCode(2_001_000_400, "账户余额不足");
|
|
||||||
ErrorCode SMS_ACCOUNT_INVALID = new ErrorCode(2_001_000_401, "apiKey 不存在");
|
|
||||||
|
|
||||||
// ========== 其它相关 2-001-000-900 开头 ==========
|
|
||||||
ErrorCode SMS_API_PARAM_ERROR = new ErrorCode(2_001_000_900, "请求参数缺失");
|
|
||||||
ErrorCode SMS_MOBILE_INVALID = new ErrorCode(2_001_000_901, "手机格式不正确");
|
|
||||||
ErrorCode SMS_MOBILE_BLACK = new ErrorCode(2_001_000_902, "手机号在黑名单中");
|
|
||||||
ErrorCode SMS_APP_ID_INVALID = new ErrorCode(2_001_000_903, "SdkAppId不合法");
|
|
||||||
|
|
||||||
ErrorCode EXCEPTION = new ErrorCode(2_001_000_999, "调用异常");
|
|
||||||
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
cn.iocoder.yudao.framework.sms.config.YudaoSmsAutoConfiguration
|
|
@ -1,38 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<parent>
|
|
||||||
<artifactId>yudao-framework</artifactId>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<artifactId>yudao-spring-boot-starter-desensitize</artifactId>
|
|
||||||
<description>脱敏组件:支持 JSON 返回数据时,将邮箱、手机等字段进行脱敏</description>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-common</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- jackson -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-annotations</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-databind</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Test 测试相关 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</project>
|
|
@ -77,13 +77,6 @@
|
|||||||
<groupId>com.github.yulichang</groupId>
|
<groupId>com.github.yulichang</groupId>
|
||||||
<artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
|
<artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- TODO 芋艿:临时解决 spring boot 3.x 适配 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.mybatis</groupId>
|
|
||||||
<artifactId>mybatis-spring</artifactId>
|
|
||||||
<version>3.0.3</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>${project.artifactId}</name>
|
<name>${project.artifactId}</name>
|
||||||
<description>Web 框架,全局异常、API 日志等</description>
|
<description>Web 框架,全局异常、API 日志、脱敏、错误码等</description>
|
||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -54,6 +54,11 @@
|
|||||||
<artifactId>yudao-module-infra-api</artifactId> <!-- 需要使用它,进行操作日志的记录 -->
|
<artifactId>yudao-module-infra-api</artifactId> <!-- 需要使用它,进行操作日志的记录 -->
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
|
<artifactId>yudao-module-system-api</artifactId> <!-- 需要使用它,进行错误码的记录 -->
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- xss -->
|
<!-- xss -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -61,6 +66,17 @@
|
|||||||
<artifactId>jsoup</artifactId>
|
<artifactId>jsoup</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Test 测试相关 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-inline</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/**
|
/**
|
||||||
* 脱敏组件:支持 JSON 返回数据时,将邮箱、手机等字段进行脱敏
|
* 脱敏组件:支持 JSON 返回数据时,将邮箱、手机等字段进行脱敏
|
||||||
*/
|
*/
|
||||||
package cn.iocoder.yudao.framework.desensitize.core;
|
package cn.iocoder.yudao.framework.desensitize;
|
@ -3,3 +3,5 @@ cn.iocoder.yudao.framework.jackson.config.YudaoJacksonAutoConfiguration
|
|||||||
cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration
|
cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration
|
||||||
cn.iocoder.yudao.framework.web.config.YudaoWebAutoConfiguration
|
cn.iocoder.yudao.framework.web.config.YudaoWebAutoConfiguration
|
||||||
cn.iocoder.yudao.framework.xss.config.YudaoXssAutoConfiguration
|
cn.iocoder.yudao.framework.xss.config.YudaoXssAutoConfiguration
|
||||||
|
cn.iocoder.yudao.framework.banner.config.YudaoBannerAutoConfiguration
|
||||||
|
cn.iocoder.yudao.framework.errorcode.config.YudaoErrorCodeAutoConfiguration
|
@ -1,27 +1,23 @@
|
|||||||
package cn.iocoder.yudao.framework.desensitize.core;
|
package cn.iocoder.yudao.framework.desensitize.core;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.annotation.Address;
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize;
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize;
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize;
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize;
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.annotation.Address;
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.*;
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.BankCardDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.CarLicenseDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.ChineseNameDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.FixedPhoneDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.IdCardDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.PasswordDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.MobileDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.SliderDesensitize;
|
|
||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link DesensitizeTest} 的单元测试
|
* {@link DesensitizeTest} 的单元测试
|
||||||
*/
|
*/
|
||||||
public class DesensitizeTest extends BaseMockitoUnitTest {
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class DesensitizeTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
@ -1,8 +1,8 @@
|
|||||||
package cn.iocoder.yudao.framework.desensitize.core.annotation;
|
package cn.iocoder.yudao.framework.desensitize.core.annotation;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.DesensitizeTest;
|
import cn.iocoder.yudao.framework.desensitize.core.DesensitizeTest;
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.handler.AddressHandler;
|
import cn.iocoder.yudao.framework.desensitize.core.handler.AddressHandler;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
|
||||||
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
|
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.Documented;
|
@ -6,7 +6,6 @@ import org.springframework.context.annotation.Bean;
|
|||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
|
import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
|
||||||
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Infra 模块的 Security 配置
|
* Infra 模块的 Security 配置
|
||||||
|
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.hutool.extra.template.TemplateConfig;
|
import cn.hutool.extra.template.TemplateConfig;
|
||||||
import cn.hutool.extra.template.TemplateEngine;
|
import cn.hutool.extra.template.TemplateEngine;
|
||||||
import cn.hutool.extra.template.engine.velocity.VelocityEngine;
|
import cn.hutool.extra.template.engine.velocity.VelocityEngine;
|
||||||
|
import cn.hutool.system.SystemUtil;
|
||||||
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
@ -35,10 +36,11 @@ import com.google.common.annotations.VisibleForTesting;
|
|||||||
import com.google.common.collect.ImmutableTable;
|
import com.google.common.collect.ImmutableTable;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Table;
|
import com.google.common.collect.Table;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static cn.hutool.core.map.MapUtil.getStr;
|
import static cn.hutool.core.map.MapUtil.getStr;
|
||||||
@ -156,6 +158,15 @@ public class CodegenEngine {
|
|||||||
@Resource
|
@Resource
|
||||||
private CodegenProperties codegenProperties;
|
private CodegenProperties codegenProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否使用 jakarta 包,用于解决 Spring Boot 2.X 和 3.X 的兼容性问题
|
||||||
|
*
|
||||||
|
* true - 使用 jakarta.validation.constraints.*
|
||||||
|
* false - 使用 javax.validation.constraints.*
|
||||||
|
*/
|
||||||
|
@Setter // 允许设置的原因,是因为单测需要手动改变
|
||||||
|
private Boolean jakartaEnable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板引擎,由 hutool 实现
|
* 模板引擎,由 hutool 实现
|
||||||
*/
|
*/
|
||||||
@ -170,6 +181,8 @@ public class CodegenEngine {
|
|||||||
TemplateConfig config = new TemplateConfig();
|
TemplateConfig config = new TemplateConfig();
|
||||||
config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH);
|
config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH);
|
||||||
this.templateEngine = new VelocityEngine(config);
|
this.templateEngine = new VelocityEngine(config);
|
||||||
|
// 设置 javaxEnable,按照是否使用 JDK17 来判断
|
||||||
|
this.jakartaEnable = SystemUtil.getJavaInfo().isJavaVersionAtLeast(1700); // 17.00 * 100
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@ -179,6 +192,7 @@ public class CodegenEngine {
|
|||||||
globalBindingMap.put("basePackage", codegenProperties.getBasePackage());
|
globalBindingMap.put("basePackage", codegenProperties.getBasePackage());
|
||||||
globalBindingMap.put("baseFrameworkPackage", codegenProperties.getBasePackage()
|
globalBindingMap.put("baseFrameworkPackage", codegenProperties.getBasePackage()
|
||||||
+ '.' + "framework"); // 用于后续获取测试类的 package 地址
|
+ '.' + "framework"); // 用于后续获取测试类的 package 地址
|
||||||
|
globalBindingMap.put("jakartaPackage", jakartaEnable ? "jakarta" : "javax");
|
||||||
// 全局 Java Bean
|
// 全局 Java Bean
|
||||||
globalBindingMap.put("CommonResultClassName", CommonResult.class.getName());
|
globalBindingMap.put("CommonResultClassName", CommonResult.class.getName());
|
||||||
globalBindingMap.put("PageResultClassName", PageResult.class.getName());
|
globalBindingMap.put("PageResultClassName", PageResult.class.getName());
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName};
|
package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName};
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import jakarta.annotation.Resource;
|
import ${jakartaPackage}.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end
|
#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end
|
||||||
|
|
||||||
@ -9,9 +9,9 @@ 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;
|
||||||
|
|
||||||
import jakarta.validation.constraints.*;
|
import ${jakartaPackage}.validation.constraints.*;
|
||||||
import jakarta.validation.*;
|
import ${jakartaPackage}.validation.*;
|
||||||
import jakarta.servlet.http.*;
|
import ${jakartaPackage}.servlet.http.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePac
|
|||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import jakarta.validation.constraints.*;
|
import ${jakartaPackage}.validation.constraints.*;
|
||||||
## 处理 BigDecimal 字段的引入
|
## 处理 BigDecimal 字段的引入
|
||||||
#foreach ($column in $columns)
|
#foreach ($column in $columns)
|
||||||
#if (${column.javaType} == "BigDecimal")
|
#if (${column.javaType} == "BigDecimal")
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
|
package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import jakarta.validation.*;
|
import ${jakartaPackage}.validation.*;
|
||||||
import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
|
import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
|
||||||
import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
|
import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
|
||||||
## 特殊:主子表专属逻辑
|
## 特殊:主子表专属逻辑
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
|
package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import ${jakartaPackage}.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import org.junit.jupiter.api.Disabled;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import ${jakartaPackage}.annotation.Resource;
|
||||||
|
|
||||||
import ${baseFrameworkPackage}.test.core.ut.BaseDbUnitTest;
|
import ${baseFrameworkPackage}.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.business
|
|||||||
import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
|
import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
|
||||||
import ${PageResultClassName};
|
import ${PageResultClassName};
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import ${jakartaPackage}.annotation.Resource;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
@ -45,7 +45,9 @@ public abstract class CodegenEngineAbstractTest extends BaseMockitoUnitTest {
|
|||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
codegenEngine.setJakartaEnable(true); // 强制使用 jakarta,保证单测可以基于 jakarta 断言
|
||||||
codegenEngine.initGlobalBindingMap();
|
codegenEngine.initGlobalBindingMap();
|
||||||
|
// 单测强制使用
|
||||||
// 获取测试文件 resources 路径
|
// 获取测试文件 resources 路径
|
||||||
String absolutePath = FileUtil.getAbsolutePath("application-unit-test.yaml");
|
String absolutePath = FileUtil.getAbsolutePath("application-unit-test.yaml");
|
||||||
// 系统不一样生成的文件也有差异,那就各自生成各自的
|
// 系统不一样生成的文件也有差异,那就各自生成各自的
|
||||||
|
@ -29,6 +29,7 @@ import java.util.*;
|
|||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
|
import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
|
||||||
|
import static java.util.Collections.singletonList;
|
||||||
|
|
||||||
@Tag(name = "用户 App - 优惠劵模板")
|
@Tag(name = "用户 App - 优惠劵模板")
|
||||||
@RestController
|
@RestController
|
||||||
@ -53,7 +54,7 @@ public class AppCouponTemplateController {
|
|||||||
return success(null);
|
return success(null);
|
||||||
}
|
}
|
||||||
// 处理是否可领取
|
// 处理是否可领取
|
||||||
Map<Long, Boolean> canCanTakeMap = couponService.getUserCanCanTakeMap(getLoginUserId(), List.of(template));
|
Map<Long, Boolean> canCanTakeMap = couponService.getUserCanCanTakeMap(getLoginUserId(), singletonList(template));
|
||||||
return success(BeanUtils.toBean(template, AppCouponTemplateRespVO.class)
|
return success(BeanUtils.toBean(template, AppCouponTemplateRespVO.class)
|
||||||
.setCanTake(canCanTakeMap.get(template.getId())));
|
.setCanTake(canCanTakeMap.get(template.getId())));
|
||||||
}
|
}
|
||||||
@ -72,7 +73,7 @@ public class AppCouponTemplateController {
|
|||||||
// 1.1 处理查询条件:商品范围编号
|
// 1.1 处理查询条件:商品范围编号
|
||||||
Long productScopeValue = getProductScopeValue(productScope, spuId);
|
Long productScopeValue = getProductScopeValue(productScope, spuId);
|
||||||
// 1.2 处理查询条件:领取方式 = 直接领取
|
// 1.2 处理查询条件:领取方式 = 直接领取
|
||||||
List<Integer> canTakeTypes = Collections.singletonList(CouponTakeTypeEnum.USER.getValue());
|
List<Integer> canTakeTypes = singletonList(CouponTakeTypeEnum.USER.getValue());
|
||||||
|
|
||||||
// 2. 查询
|
// 2. 查询
|
||||||
List<CouponTemplateDO> list = couponTemplateService.getCouponTemplateList(canTakeTypes, productScope,
|
List<CouponTemplateDO> list = couponTemplateService.getCouponTemplateList(canTakeTypes, productScope,
|
||||||
@ -104,7 +105,7 @@ public class AppCouponTemplateController {
|
|||||||
// 1.1 处理查询条件:商品范围编号
|
// 1.1 处理查询条件:商品范围编号
|
||||||
Long productScopeValue = getProductScopeValue(pageReqVO.getProductScope(), pageReqVO.getSpuId());
|
Long productScopeValue = getProductScopeValue(pageReqVO.getProductScope(), pageReqVO.getSpuId());
|
||||||
// 1.2 处理查询条件:领取方式 = 直接领取
|
// 1.2 处理查询条件:领取方式 = 直接领取
|
||||||
List<Integer> canTakeTypes = Collections.singletonList(CouponTakeTypeEnum.USER.getValue());
|
List<Integer> canTakeTypes = singletonList(CouponTakeTypeEnum.USER.getValue());
|
||||||
|
|
||||||
// 2. 分页查询
|
// 2. 分页查询
|
||||||
PageResult<CouponTemplateDO> pageResult = couponTemplateService.getCouponTemplatePage(
|
PageResult<CouponTemplateDO> pageResult = couponTemplateService.getCouponTemplatePage(
|
||||||
|
@ -70,7 +70,7 @@ public class CouponServiceImpl implements CouponService {
|
|||||||
throw exception(COUPON_STATUS_NOT_UNUSED);
|
throw exception(COUPON_STATUS_NOT_UNUSED);
|
||||||
}
|
}
|
||||||
// 校验有效期;为避免定时器没跑,实际优惠劵已经过期
|
// 校验有效期;为避免定时器没跑,实际优惠劵已经过期
|
||||||
if (LocalDateTimeUtils.isBetween(coupon.getValidStartTime(), coupon.getValidEndTime())) {
|
if (!LocalDateTimeUtils.isBetween(coupon.getValidStartTime(), coupon.getValidEndTime())) {
|
||||||
throw exception(COUPON_VALID_TIME_NOT_NOW);
|
throw exception(COUPON_VALID_TIME_NOT_NOW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.log;
|
package cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.log;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
@ -10,7 +10,7 @@ import java.time.LocalDateTime;
|
|||||||
public class AppMemberPointRecordRespVO {
|
public class AppMemberPointRecordRespVO {
|
||||||
|
|
||||||
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
|
@Schema(description = "自增主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31457")
|
||||||
private Long id;;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "积分标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
|
@Schema(description = "积分标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "你猜")
|
||||||
private String title;
|
private String title;
|
||||||
|
@ -197,7 +197,7 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
|
|||||||
channelMapper.insert(dbChannel);// @Sql: 先插入出一条存在的数据
|
channelMapper.insert(dbChannel);// @Sql: 先插入出一条存在的数据
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long appId = dbChannel.getAppId();
|
Long appId = dbChannel.getAppId();
|
||||||
String code = dbChannel.getCode();;
|
String code = dbChannel.getCode();
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
PayChannelDO channel = channelService.getChannelByAppIdAndCode(appId, code);
|
PayChannelDO channel = channelService.getChannelByAppIdAndCode(appId, code);
|
||||||
|
@ -6,7 +6,7 @@ import jakarta.validation.constraints.NotNull;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统操作日志 Create Req BO
|
* 系统操作日志 Create Request DTO
|
||||||
*
|
*
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
|
@ -34,10 +34,6 @@
|
|||||||
<groupId>cn.iocoder.boot</groupId>
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
|
||||||
<artifactId>yudao-spring-boot-starter-biz-sms</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.iocoder.boot</groupId>
|
<groupId>cn.iocoder.boot</groupId>
|
||||||
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
|
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
|
||||||
@ -127,6 +123,18 @@
|
|||||||
<artifactId>wx-java-miniapp-spring-boot-starter</artifactId> <!-- 微信登录(小程序) -->
|
<artifactId>wx-java-miniapp-spring-boot-starter</artifactId> <!-- 微信登录(小程序) -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aliyun</groupId>
|
||||||
|
<artifactId>aliyun-java-sdk-core</artifactId> <!-- 短信(阿里云) -->
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.aliyun</groupId>
|
||||||
|
<artifactId>aliyun-java-sdk-dysmsapi</artifactId> <!-- 短信(阿里云) -->
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.tencentcloudapi</groupId>
|
||||||
|
<artifactId>tencentcloud-sdk-java-sms</artifactId> <!-- 短信(腾讯云) -->
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.sms;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
||||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsChannelEnum;
|
||||||
import cn.iocoder.yudao.module.system.service.sms.SmsSendService;
|
import cn.iocoder.yudao.module.system.service.sms.SmsSendService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
@ -37,7 +37,7 @@ public interface OperateLogConvert {
|
|||||||
|
|
||||||
OperateLogV2RespDTO convert(OperateLogV2DO operateLogV2DO);
|
OperateLogV2RespDTO convert(OperateLogV2DO operateLogV2DO);
|
||||||
|
|
||||||
private List<OperateLogV2RespDTO> setUserInfo(List<OperateLogV2DO> logList, List<AdminUserDO> userList) {
|
default List<OperateLogV2RespDTO> setUserInfo(List<OperateLogV2DO> logList, List<AdminUserDO> userList) {
|
||||||
Map<Long, AdminUserDO> userMap = convertMap(userList, AdminUserDO::getId);
|
Map<Long, AdminUserDO> userMap = convertMap(userList, AdminUserDO::getId);
|
||||||
return CollectionUtils.convertList(logList, item -> {
|
return CollectionUtils.convertList(logList, item -> {
|
||||||
OperateLogV2RespDTO respDTO = convert(item);
|
OperateLogV2RespDTO respDTO = convert(item);
|
||||||
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.sms;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsChannelEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.system.framework.sms;
|
|
||||||
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@EnableConfigurationProperties(SmsCodeProperties.class)
|
|
||||||
public class SmsCodeConfiguration {
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.module.system.framework.sms;
|
package cn.iocoder.yudao.module.system.framework.sms.config;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
@ -0,0 +1,23 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.framework.sms.config;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClientFactory;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.impl.SmsClientFactoryImpl;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 短信配置类,包括短信客户端、短信验证码两部分
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@EnableConfigurationProperties(SmsCodeProperties.class)
|
||||||
|
public class SmsConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SmsClientFactory smsClientFactory() {
|
||||||
|
return new SmsClientFactoryImpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,9 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 短信客户端的工厂接口
|
* 短信客户端的工厂接口
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.dto;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.dto;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.dto;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.dto;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.dto;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.dto;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,7 +1,7 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
@ -1,15 +1,14 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl.aliyun;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.AbstractSmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
import com.aliyuncs.DefaultAcsClient;
|
import com.aliyuncs.DefaultAcsClient;
|
||||||
import com.aliyuncs.IAcsClient;
|
import com.aliyuncs.IAcsClient;
|
||||||
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest;
|
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl.debug;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.hutool.core.codec.Base64;
|
import cn.hutool.core.codec.Base64;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
@ -10,12 +10,11 @@ import cn.hutool.http.HttpUtil;
|
|||||||
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.AbstractSmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -1,12 +1,9 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClientFactory;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.aliyun.AliyunSmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsChannelEnum;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.debug.DebugDingTalkSmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.tencent.TencentSmsClient;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
@ -1,16 +1,15 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl.tencent;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.impl.AbstractSmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.enums;
|
package cn.iocoder.yudao.module.system.framework.sms.core.enums;
|
||||||
|
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
import cn.hutool.core.util.ArrayUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.enums;
|
package cn.iocoder.yudao.module.system.framework.sms.core.enums;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
@ -1,6 +1,6 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.property;
|
package cn.iocoder.yudao.module.system.framework.sms.core.property;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsChannelEnum;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
@ -59,7 +59,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CacheEvict(cacheNames = RedisKeyConstants.NOTIFY_TEMPLATE,
|
@CacheEvict(cacheNames = RedisKeyConstants.MAIL_TEMPLATE,
|
||||||
allEntries = true) // allEntries 清空所有缓存,因为可能修改到 code 字段,不好清理
|
allEntries = true) // allEntries 清空所有缓存,因为可能修改到 code 字段,不好清理
|
||||||
public void updateMailTemplate(@Valid MailTemplateSaveReqVO updateReqVO) {
|
public void updateMailTemplate(@Valid MailTemplateSaveReqVO updateReqVO) {
|
||||||
// 校验是否存在
|
// 校验是否存在
|
||||||
@ -87,7 +87,7 @@ public class MailTemplateServiceImpl implements MailTemplateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CacheEvict(cacheNames = RedisKeyConstants.NOTIFY_TEMPLATE,
|
@CacheEvict(cacheNames = RedisKeyConstants.MAIL_TEMPLATE,
|
||||||
allEntries = true) // allEntries 清空所有缓存,因为 id 不是直接的缓存 code,不好清理
|
allEntries = true) // allEntries 清空所有缓存,因为 id 不是直接的缓存 code,不好清理
|
||||||
public void deleteMailTemplate(Long id) {
|
public void deleteMailTemplate(Long id) {
|
||||||
// 校验是否存在
|
// 校验是否存在
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.iocoder.yudao.module.system.service.sms;
|
package cn.iocoder.yudao.module.system.service.sms;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
||||||
|
@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.system.service.sms;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClientFactory;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClientFactory;
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.channel.SmsChannelSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
||||||
|
@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeValidateReqDTO;
|
|||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsCodeDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsCodeDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsCodeMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.sms.SmsCodeMapper;
|
||||||
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
|
import cn.iocoder.yudao.module.system.enums.sms.SmsSceneEnum;
|
||||||
import cn.iocoder.yudao.module.system.framework.sms.SmsCodeProperties;
|
import cn.iocoder.yudao.module.system.framework.sms.config.SmsCodeProperties;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ import cn.iocoder.yudao.framework.common.core.KeyValue;
|
|||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsTemplateDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
|
@ -7,9 +7,9 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.SmsClient;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.SmsClient;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsChannelDO;
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package cn.iocoder.yudao.framework.sms.core.client.impl.aliyun;
|
package cn.iocoder.yudao.module.system.framework.sms.core.client.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.ReflectUtil;
|
import cn.hutool.core.util.ReflectUtil;
|
||||||
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsSendRespDTO;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
|
||||||
import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties;
|
|
||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsReceiveRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsSendRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.client.dto.SmsTemplateRespDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.enums.SmsTemplateAuditStatusEnum;
|
||||||
|
import cn.iocoder.yudao.module.system.framework.sms.core.property.SmsChannelProperties;
|
||||||
import com.aliyuncs.IAcsClient;
|
import com.aliyuncs.IAcsClient;
|
||||||
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest;
|
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest;
|
||||||
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateResponse;
|
import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateResponse;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user