Merge branch 'dev-ltx' into dev/3.1_release_merge
# Conflicts: # src/main/java/com/ai/da/service/impl/DesignItemServiceImpl.java
This commit is contained in:
938
pom.xml
938
pom.xml
@@ -1,468 +1,470 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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"
|
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.2.2.RELEASE</version>
|
<version>3.1.6</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>com.aida</groupId>
|
<groupId>com.aida</groupId>
|
||||||
<artifactId>aida</artifactId>
|
<artifactId>aida</artifactId>
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
<name>aida</name>
|
<name>aida</name>
|
||||||
<description>ai da</description>
|
<description>ai da</description>
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>8</java.version>
|
<java.version>21</java.version>
|
||||||
<mybatis.plus.version>3.5.2</mybatis.plus.version>
|
<mybatis.plus.version>3.5.5</mybatis.plus.version>
|
||||||
<hutool.version>5.8.2</hutool.version>
|
<hutool.version>5.8.23</hutool.version>
|
||||||
<wx.java.version>4.2.7.B</wx.java.version>
|
<wx.java.version>4.2.7.B</wx.java.version>
|
||||||
<fastjson.version>2.0.6.graal</fastjson.version>
|
<fastjson.version>2.0.43</fastjson.version>
|
||||||
<security.jwt.version>1.1.1.RELEASE</security.jwt.version>
|
<jjwt.version>0.12.3</jjwt.version>
|
||||||
<jjwt.version>0.9.1</jjwt.version>
|
<guava.version>32.1.3-jre</guava.version>
|
||||||
<guava.version>31.1-jre</guava.version>
|
|
||||||
|
<easy-captcha>1.6.2</easy-captcha>
|
||||||
<jaxb-api>2.4.0-b180830.0359</jaxb-api>
|
<aws.java.sdk.version>2.20.43</aws.java.sdk.version>
|
||||||
<jaxb-impl>4.0.0</jaxb-impl>
|
|
||||||
<jaxb-core>4.0.0</jaxb-core>
|
<javacv.version>1.5.5</javacv.version>
|
||||||
<activation>1.1.1</activation>
|
<system.windowsx64>windows-x86_64</system.windowsx64>
|
||||||
<easy-captcha>1.6.2</easy-captcha>
|
<javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
|
||||||
<aws.java.sdk.version>2.20.43</aws.java.sdk.version>
|
</properties>
|
||||||
|
<dependencyManagement>
|
||||||
<javacv.version>1.5.5</javacv.version>
|
<dependencies>
|
||||||
<system.windowsx64>windows-x86_64</system.windowsx64>
|
<dependency>
|
||||||
<javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64>
|
<groupId>software.amazon.awssdk</groupId>
|
||||||
</properties>
|
<artifactId>bom</artifactId>
|
||||||
<dependencyManagement>
|
<version>${aws.java.sdk.version}</version>
|
||||||
<dependencies>
|
<type>pom</type>
|
||||||
<dependency>
|
<scope>import</scope>
|
||||||
<groupId>software.amazon.awssdk</groupId>
|
</dependency>
|
||||||
<artifactId>bom</artifactId>
|
</dependencies>
|
||||||
<version>${aws.java.sdk.version}</version>
|
</dependencyManagement>
|
||||||
<type>pom</type>
|
<dependencies>
|
||||||
<scope>import</scope>
|
<dependency>
|
||||||
</dependency>
|
<groupId>org.springframework.boot</groupId>
|
||||||
</dependencies>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
</dependencyManagement>
|
</dependency>
|
||||||
<dependencies>
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.projectlombok</groupId>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<artifactId>lombok</artifactId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>lombok</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
<optional>true</optional>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
<scope>test</scope>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
<artifactId>spring-boot-starter-security</artifactId>
|
||||||
<optional>true</optional>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.mysql</groupId>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<artifactId>mysql-connector-j</artifactId>
|
||||||
<artifactId>spring-boot-starter-security</artifactId>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.baomidou</groupId>
|
||||||
<groupId>org.springframework.security</groupId>
|
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||||
<artifactId>spring-security-jwt</artifactId>
|
<version>${mybatis.plus.version}</version>
|
||||||
<version>${security.jwt.version}</version>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>mysql</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.baomidou</groupId>
|
<dependency>
|
||||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<version>${mybatis.plus.version}</version>
|
<artifactId>spring-boot-starter-logging</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
<artifactId>spring-boot-starter-validation</artifactId>
|
<artifactId>hutool-all</artifactId>
|
||||||
</dependency>
|
<version>${hutool.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>spring-boot-starter-logging</artifactId>
|
<artifactId>fastjson</artifactId>
|
||||||
</dependency>
|
<version>${fastjson.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>io.jsonwebtoken</groupId>
|
||||||
<artifactId>hutool-all</artifactId>
|
<artifactId>jjwt-api</artifactId>
|
||||||
<version>${hutool.version}</version>
|
<version>${jjwt.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<groupId>io.jsonwebtoken</groupId>
|
||||||
<artifactId>fastjson</artifactId>
|
<artifactId>jjwt-impl</artifactId>
|
||||||
<version>${fastjson.version}</version>
|
<version>${jjwt.version}</version>
|
||||||
</dependency>
|
<scope>runtime</scope>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>io.jsonwebtoken</groupId>
|
<dependency>
|
||||||
<artifactId>jjwt</artifactId>
|
<groupId>io.jsonwebtoken</groupId>
|
||||||
<version>${jjwt.version}</version>
|
<artifactId>jjwt-jackson</artifactId>
|
||||||
</dependency>
|
<version>${jjwt.version}</version>
|
||||||
<dependency>
|
<scope>runtime</scope>
|
||||||
<groupId>com.squareup.okhttp3</groupId>
|
</dependency>
|
||||||
<artifactId>okhttp</artifactId>
|
<dependency>
|
||||||
<version>3.14.2</version>
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
</dependency>
|
<artifactId>okhttp</artifactId>
|
||||||
<dependency>
|
<version>3.14.2</version>
|
||||||
<groupId>javax.xml.bind</groupId>
|
</dependency>
|
||||||
<artifactId>jaxb-api</artifactId>
|
<!-- JAXB is included in Java 11+ but needs explicit dependency for Java 9-10 -->
|
||||||
<version>${jaxb-api}</version>
|
<!-- For Java 21, these are not needed as JAXB is part of JDK -->
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.github.whvcse</groupId>
|
||||||
<groupId>com.sun.xml.bind</groupId>
|
<artifactId>easy-captcha</artifactId>
|
||||||
<artifactId>jaxb-impl</artifactId>
|
<version>${easy-captcha}</version>
|
||||||
<version>${jaxb-impl}</version>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.google.guava</groupId>
|
||||||
<groupId>com.sun.xml.bind</groupId>
|
<artifactId>guava</artifactId>
|
||||||
<artifactId>jaxb-core</artifactId>
|
<version>${guava.version}</version>
|
||||||
<version>${jaxb-core}</version>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.activation</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>activation</artifactId>
|
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
|
||||||
<version>${activation}</version>
|
<version>4.4.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<!-- Swagger 2 annotations for backward compatibility -->
|
||||||
<groupId>com.github.whvcse</groupId>
|
<dependency>
|
||||||
<artifactId>easy-captcha</artifactId>
|
<groupId>io.swagger</groupId>
|
||||||
<version>${easy-captcha}</version>
|
<artifactId>swagger-annotations</artifactId>
|
||||||
</dependency>
|
<version>1.6.14</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>com.google.guava</groupId>
|
<!-- /**发送邮件**/-->
|
||||||
<artifactId>guava</artifactId>
|
<!-- <dependency>-->
|
||||||
<version>${guava.version}</version>
|
<!-- <groupId>com.tencentcloudapi</groupId>-->
|
||||||
</dependency>
|
<!-- <artifactId>tencentcloud-sdk-java-ses</artifactId>-->
|
||||||
|
<!-- <version>3.1.572</version>-->
|
||||||
<dependency>
|
<!-- </dependency>-->
|
||||||
<groupId>com.github.xiaoymin</groupId>
|
|
||||||
<artifactId>knife4j-spring-boot-starter</artifactId>
|
<dependency>
|
||||||
<version>3.0.3</version>
|
<groupId>com.tencentcloudapi</groupId>
|
||||||
</dependency>
|
<artifactId>tencentcloud-sdk-java-ses</artifactId>
|
||||||
<!-- /**发送邮件**/-->
|
<version>3.1.572</version>
|
||||||
<!-- <dependency>-->
|
</dependency>
|
||||||
<!-- <groupId>com.tencentcloudapi</groupId>-->
|
|
||||||
<!-- <artifactId>tencentcloud-sdk-java-ses</artifactId>-->
|
<!--minio-->
|
||||||
<!-- <version>3.1.572</version>-->
|
<dependency>
|
||||||
<!-- </dependency>-->
|
<groupId>io.minio</groupId>
|
||||||
|
<artifactId>minio</artifactId>
|
||||||
<dependency>
|
<version>8.0.3</version>
|
||||||
<groupId>com.tencentcloudapi</groupId>
|
</dependency>
|
||||||
<artifactId>tencentcloud-sdk-java-ses</artifactId>
|
|
||||||
<version>3.1.572</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>commons-fileupload</groupId>
|
||||||
|
<artifactId>commons-fileupload</artifactId>
|
||||||
<!--minio-->
|
<version>1.4</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>io.minio</groupId>
|
|
||||||
<artifactId>minio</artifactId>
|
<dependency>
|
||||||
<version>8.0.3</version>
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
</dependency>
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
|
<version>12.4.2.jre11</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>commons-fileupload</groupId>
|
|
||||||
<artifactId>commons-fileupload</artifactId>
|
<!-- RabbitMQ -->
|
||||||
<version>1.4</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-amqp</artifactId>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>com.microsoft.sqlserver</groupId>
|
|
||||||
<artifactId>mssql-jdbc</artifactId>
|
<!-- redis 连接池 -->
|
||||||
<version>9.2.1.jre8</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-pool2</artifactId>
|
||||||
<!-- RabbitMQ -->
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
<!--支付宝 SDK-->
|
||||||
<artifactId>spring-boot-starter-amqp</artifactId>
|
<dependency>
|
||||||
</dependency>
|
<groupId>com.alipay.sdk</groupId>
|
||||||
|
<artifactId>alipay-sdk-java</artifactId>
|
||||||
<!-- redis 连接池 -->
|
<version>4.22.57.ALL</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-pool2</artifactId>
|
<!--PayPal SDK-->
|
||||||
</dependency>
|
<dependency>
|
||||||
|
<groupId>com.paypal.sdk</groupId>
|
||||||
<!--支付宝 SDK-->
|
<artifactId>checkout-sdk</artifactId>
|
||||||
<dependency>
|
<version>1.0.5</version>
|
||||||
<groupId>com.alipay.sdk</groupId>
|
</dependency>
|
||||||
<artifactId>alipay-sdk-java</artifactId>
|
|
||||||
<version>4.22.57.ALL</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>com.paypal.sdk</groupId>
|
||||||
|
<artifactId>rest-api-sdk</artifactId>
|
||||||
<!--PayPal SDK-->
|
<version>LATEST</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>com.paypal.sdk</groupId>
|
|
||||||
<artifactId>checkout-sdk</artifactId>
|
<dependency>
|
||||||
<version>1.0.5</version>
|
<groupId>org.json</groupId>
|
||||||
</dependency>
|
<artifactId>json</artifactId>
|
||||||
|
<version>20230618</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>com.paypal.sdk</groupId>
|
|
||||||
<artifactId>rest-api-sdk</artifactId>
|
<dependency>
|
||||||
<version>LATEST</version>
|
<groupId>org.apache.poi</groupId>
|
||||||
</dependency>
|
<artifactId>poi</artifactId>
|
||||||
|
<version>5.2.4</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>org.json</groupId>
|
|
||||||
<artifactId>json</artifactId>
|
<dependency>
|
||||||
<version>20230618</version>
|
<groupId>org.apache.poi</groupId>
|
||||||
</dependency>
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
<version>5.2.4</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>org.apache.logging.log4j</groupId>
|
|
||||||
<artifactId>log4j-api</artifactId>
|
<dependency>
|
||||||
<version>2.17.1</version>
|
<groupId>commons-io</groupId>
|
||||||
</dependency>
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.15.1</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
<dependency>
|
||||||
<artifactId>poi</artifactId>
|
<groupId>com.stripe</groupId>
|
||||||
<version>5.2.1</version>
|
<artifactId>stripe-java</artifactId>
|
||||||
</dependency>
|
<version>26.2.0</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
<!-- aws s3 -->
|
||||||
<artifactId>poi-ooxml</artifactId>
|
<!-- S3 dependency -->
|
||||||
<version>5.2.1</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>software.amazon.awssdk</groupId>
|
||||||
|
<artifactId>s3</artifactId>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>commons-io</groupId>
|
<dependency>
|
||||||
<artifactId>commons-io</artifactId>
|
<groupId>software.amazon.awssdk</groupId>
|
||||||
<version>2.11.0</version>
|
<artifactId>s3-transfer-manager</artifactId>
|
||||||
</dependency>
|
<version>2.17.103-PREVIEW</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.logging.log4j</groupId>
|
<groupId>software.amazon.awssdk</groupId>
|
||||||
<artifactId>log4j-api</artifactId>
|
<artifactId>kms</artifactId>
|
||||||
<version>2.17.1</version>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
|
<groupId>software.amazon.awssdk</groupId>
|
||||||
<dependency>
|
<artifactId>s3control</artifactId>
|
||||||
<groupId>com.stripe</groupId>
|
</dependency>
|
||||||
<artifactId>stripe-java</artifactId>
|
|
||||||
<version>26.2.0</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
<!-- aws s3 -->
|
<version>2.10.1</version>
|
||||||
<!-- S3 dependency -->
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>software.amazon.awssdk</groupId>
|
<dependency>
|
||||||
<artifactId>s3</artifactId>
|
<groupId>com.itextpdf</groupId>
|
||||||
</dependency>
|
<artifactId>itextpdf</artifactId>
|
||||||
<dependency>
|
<version>5.5.13.2</version>
|
||||||
<groupId>software.amazon.awssdk</groupId>
|
</dependency>
|
||||||
<artifactId>s3-transfer-manager</artifactId>
|
|
||||||
<version>2.17.103-PREVIEW</version>
|
<dependency>
|
||||||
</dependency>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<dependency>
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
<groupId>software.amazon.awssdk</groupId>
|
</dependency>
|
||||||
<artifactId>kms</artifactId>
|
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.google.auth</groupId>
|
||||||
<groupId>software.amazon.awssdk</groupId>
|
<artifactId>google-auth-library-oauth2-http</artifactId>
|
||||||
<artifactId>s3control</artifactId>
|
<version>1.8.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.code.gson</groupId>
|
<groupId>com.google.api-client</groupId>
|
||||||
<artifactId>gson</artifactId>
|
<artifactId>google-api-client</artifactId>
|
||||||
<version>2.10.1</version>
|
<version>1.32.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.google.oauth-client</groupId>
|
||||||
<groupId>com.itextpdf</groupId>
|
<artifactId>google-oauth-client</artifactId>
|
||||||
<artifactId>itextpdf</artifactId>
|
<version>1.32.1</version>
|
||||||
<version>5.5.13.2</version>
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
|
<groupId>com.google.http-client</groupId>
|
||||||
<dependency>
|
<artifactId>google-http-client-jackson2</artifactId>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<version>1.41.5</version>
|
||||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
|
<!-- 邮件发送 -->
|
||||||
<dependency>
|
<!-- thymeleaf -->
|
||||||
<groupId>com.google.auth</groupId>
|
<dependency>
|
||||||
<artifactId>google-auth-library-oauth2-http</artifactId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<version>1.8.0</version>
|
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<groupId>com.google.api-client</groupId>
|
<artifactId>spring-boot-starter-mail</artifactId>
|
||||||
<artifactId>google-api-client</artifactId>
|
</dependency>
|
||||||
<version>1.32.1</version>
|
|
||||||
</dependency>
|
<dependency>
|
||||||
<dependency>
|
<groupId>com.alibaba</groupId>
|
||||||
<groupId>com.google.oauth-client</groupId>
|
<artifactId>easyexcel</artifactId>
|
||||||
<artifactId>google-oauth-client</artifactId>
|
<version>3.3.3</version>
|
||||||
<version>1.32.1</version>
|
</dependency>
|
||||||
</dependency>
|
<!-- JSON 转义恢复 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.google.http-client</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>google-http-client-jackson2</artifactId>
|
<artifactId>commons-text</artifactId>
|
||||||
<version>1.41.5</version>
|
<version>1.10.0</version> <!-- 使用最新版本 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 邮件发送 -->
|
<!-- 最新版本号:https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
|
||||||
<!-- thymeleaf -->
|
<!-- 万象SDK -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>com.alibaba</groupId>
|
||||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
<artifactId>dashscope-sdk-java</artifactId>
|
||||||
</dependency>
|
<version>2.20.1</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-mail</artifactId>
|
<!-- FFmpeg封装(JavaCV) 视频转gif 全部依赖-->
|
||||||
</dependency>
|
<!--<dependency>
|
||||||
|
<groupId>org.bytedeco</groupId>
|
||||||
<dependency>
|
<artifactId>javacv-platform</artifactId>
|
||||||
<groupId>com.alibaba</groupId>
|
<version>1.5.9</version>
|
||||||
<artifactId>easyexcel</artifactId>
|
</dependency>-->
|
||||||
<version>3.3.2</version>
|
|
||||||
</dependency>
|
<!-- javacv+javacpp核心库-->
|
||||||
<!-- JSON 转义恢复 -->
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.bytedeco</groupId>
|
||||||
<groupId>org.apache.commons</groupId>
|
<artifactId>javacv</artifactId>
|
||||||
<artifactId>commons-text</artifactId>
|
<version>${javacv.version}</version>
|
||||||
<version>1.10.0</version> <!-- 使用最新版本 -->
|
</dependency>
|
||||||
</dependency>
|
<dependency>
|
||||||
|
<groupId>org.bytedeco</groupId>
|
||||||
<!-- 最新版本号:https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
|
<artifactId>javacpp-platform</artifactId>
|
||||||
<!-- 万象SDK -->
|
<version>${javacv.version}</version>
|
||||||
<dependency>
|
</dependency>
|
||||||
<groupId>com.alibaba</groupId>
|
<!-- 最小opencv依赖包 ,必须包含上面的javacv+javacpp -->
|
||||||
<artifactId>dashscope-sdk-java</artifactId>
|
<dependency>
|
||||||
<version>2.20.1</version>
|
<groupId>org.bytedeco</groupId>
|
||||||
</dependency>
|
<artifactId>opencv</artifactId>
|
||||||
|
<version>4.5.1-${javacv.version}</version>
|
||||||
<!-- FFmpeg封装(JavaCV) 视频转gif 全部依赖-->
|
<!--<classifier>${system.windowsx64}</classifier>-->
|
||||||
<!--<dependency>
|
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
||||||
<groupId>org.bytedeco</groupId>
|
</dependency>
|
||||||
<artifactId>javacv-platform</artifactId>
|
<dependency>
|
||||||
<version>1.5.9</version>
|
<groupId>org.bytedeco</groupId>
|
||||||
</dependency>-->
|
<artifactId>openblas</artifactId>
|
||||||
|
<version>0.3.13-${javacv.version}</version>
|
||||||
<!-- javacv+javacpp核心库-->
|
<!--<classifier>${system.windowsx64}</classifier>-->
|
||||||
<dependency>
|
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
||||||
<groupId>org.bytedeco</groupId>
|
</dependency>
|
||||||
<artifactId>javacv</artifactId>
|
<dependency>
|
||||||
<version>${javacv.version}</version>
|
<groupId>org.bytedeco</groupId>
|
||||||
</dependency>
|
<artifactId>flycapture</artifactId>
|
||||||
<dependency>
|
<version>2.13.3.31-${javacv.version}</version>
|
||||||
<groupId>org.bytedeco</groupId>
|
<!--<classifier>${system.windowsx64}</classifier>-->
|
||||||
<artifactId>javacpp-platform</artifactId>
|
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
||||||
<version>${javacv.version}</version>
|
</dependency>
|
||||||
</dependency>
|
<!-- FFmpeg(视频处理,解决你的报错) -->
|
||||||
<!-- 最小opencv依赖包 ,必须包含上面的javacv+javacpp -->
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.bytedeco</groupId>
|
||||||
<groupId>org.bytedeco</groupId>
|
<artifactId>ffmpeg</artifactId>
|
||||||
<artifactId>opencv</artifactId>
|
<version>4.4-1.5.6</version>
|
||||||
<version>4.5.1-${javacv.version}</version>
|
<!--<classifier>${system.windowsx64}</classifier>-->
|
||||||
<!--<classifier>${system.windowsx64}</classifier>-->
|
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
||||||
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bytedeco</groupId>
|
<groupId>com.volcengine</groupId>
|
||||||
<artifactId>openblas</artifactId>
|
<artifactId>volcengine-java-sdk-ark-runtime</artifactId>
|
||||||
<version>0.3.13-${javacv.version}</version>
|
<version>0.2.43</version>
|
||||||
<!--<classifier>${system.windowsx64}</classifier>-->
|
</dependency>
|
||||||
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
|
||||||
</dependency>
|
<!-- Google 认证库 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bytedeco</groupId>
|
<groupId>com.google.auth</groupId>
|
||||||
<artifactId>flycapture</artifactId>
|
<artifactId>google-auth-library-oauth2-http</artifactId>
|
||||||
<version>2.13.3.31-${javacv.version}</version>
|
<version>1.38.0</version>
|
||||||
<!--<classifier>${system.windowsx64}</classifier>-->
|
</dependency>
|
||||||
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
|
||||||
</dependency>
|
|
||||||
<!-- FFmpeg(视频处理,解决你的报错) -->
|
<!-- GIFEncoder 视频转gif-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bytedeco</groupId>
|
<groupId>com.madgag</groupId>
|
||||||
<artifactId>ffmpeg</artifactId>
|
<artifactId>animated-gif-lib</artifactId>
|
||||||
<version>4.4-1.5.6</version>
|
<version>1.4</version>
|
||||||
<!--<classifier>${system.windowsx64}</classifier>-->
|
</dependency>
|
||||||
<classifier>${javacpp.platform.linux-x86_64}</classifier>
|
|
||||||
</dependency>
|
<!-- Jakarta WebSocket API -->
|
||||||
|
<dependency>
|
||||||
<dependency>
|
<groupId>jakarta.websocket</groupId>
|
||||||
<groupId>com.volcengine</groupId>
|
<artifactId>jakarta.websocket-api</artifactId>
|
||||||
<artifactId>volcengine-java-sdk-ark-runtime</artifactId>
|
<version>2.1.1</version>
|
||||||
<version>0.2.43</version>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
|
<!-- Spring MockMultipartFile 等测试工具,生产代码中也有引用 -->
|
||||||
<!-- Google 认证库 -->
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.springframework</groupId>
|
||||||
<groupId>com.google.auth</groupId>
|
<artifactId>spring-test</artifactId>
|
||||||
<artifactId>google-auth-library-oauth2-http</artifactId>
|
</dependency>
|
||||||
<version>1.38.0</version>
|
|
||||||
</dependency>
|
<!-- BouncyCastle 加密库 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
<!-- GIFEncoder 视频转gif-->
|
<artifactId>bcprov-jdk18on</artifactId>
|
||||||
<dependency>
|
<version>1.78.1</version>
|
||||||
<groupId>com.madgag</groupId>
|
</dependency>
|
||||||
<artifactId>animated-gif-lib</artifactId>
|
<dependency>
|
||||||
<version>1.4</version>
|
<groupId>org.bouncycastle</groupId>
|
||||||
</dependency>
|
<artifactId>bcpkix-jdk18on</artifactId>
|
||||||
</dependencies>
|
<version>1.78.1</version>
|
||||||
|
</dependency>
|
||||||
<build>
|
</dependencies>
|
||||||
<plugins>
|
|
||||||
<plugin>
|
<build>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<plugins>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<plugin>
|
||||||
<configuration>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<excludes>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
<exclude>
|
<configuration>
|
||||||
<groupId>org.projectlombok</groupId>
|
<excludes>
|
||||||
<artifactId>lombok</artifactId>
|
<exclude>
|
||||||
</exclude>
|
<groupId>org.projectlombok</groupId>
|
||||||
</excludes>
|
<artifactId>lombok</artifactId>
|
||||||
</configuration>
|
</exclude>
|
||||||
</plugin>
|
</excludes>
|
||||||
</plugins>
|
</configuration>
|
||||||
</build>
|
</plugin>
|
||||||
|
</plugins>
|
||||||
<profiles>
|
</build>
|
||||||
<profile>
|
|
||||||
<!-- 本地开发环境 -->
|
<profiles>
|
||||||
<id>dev</id>
|
<profile>
|
||||||
<properties>
|
<!-- 本地开发环境 -->
|
||||||
<profiles.active>dev</profiles.active>
|
<id>dev</id>
|
||||||
</properties>
|
<properties>
|
||||||
<activation>
|
<profiles.active>dev</profiles.active>
|
||||||
<activeByDefault>true</activeByDefault>
|
</properties>
|
||||||
</activation>
|
<activation>
|
||||||
</profile>
|
<activeByDefault>true</activeByDefault>
|
||||||
<profile>
|
</activation>
|
||||||
<!-- 测试环境 -->
|
</profile>
|
||||||
<id>test</id>
|
<profile>
|
||||||
<properties>
|
<!-- 测试环境 -->
|
||||||
<profiles.active>test</profiles.active>
|
<id>test</id>
|
||||||
</properties>
|
<properties>
|
||||||
</profile>
|
<profiles.active>test</profiles.active>
|
||||||
<profile>
|
</properties>
|
||||||
<!-- 生产环境 -->
|
</profile>
|
||||||
<id>prod</id>
|
<profile>
|
||||||
<properties>
|
<!-- 生产环境 -->
|
||||||
<profiles.active>prod</profiles.active>
|
<id>prod</id>
|
||||||
</properties>
|
<properties>
|
||||||
</profile>
|
<profiles.active>prod</profiles.active>
|
||||||
</profiles>
|
</properties>
|
||||||
</project>
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</project>
|
||||||
|
|||||||
@@ -13,9 +13,8 @@ import org.springframework.stereotype.Component;
|
|||||||
import software.amazon.awssdk.core.exception.RetryableException;
|
import software.amazon.awssdk.core.exception.RetryableException;
|
||||||
import org.springframework.amqp.core.Message;
|
import org.springframework.amqp.core.Message;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
import javax.mail.MessagingException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.springframework.amqp.core.AmqpTemplate;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
import org.springframework.context.annotation.PropertySource;
|
import org.springframework.context.annotation.PropertySource;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
//加载配置文件
|
//加载配置文件
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.apache.poi.ss.usermodel.Workbook;
|
|||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.security.core.parameters.P;
|
import org.springframework.security.core.parameters.P;
|
||||||
@@ -32,8 +33,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StopWatch;
|
import org.springframework.util.StopWatch;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
package com.ai.da.common.config;
|
package com.ai.da.common.config;
|
||||||
|
|
||||||
|
|
||||||
import org.hibernate.validator.HibernateValidator;
|
import org.hibernate.validator.HibernateValidator;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
|
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
|
||||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
import javax.validation.Validation;
|
import jakarta.validation.Validation;
|
||||||
import javax.validation.Validator;
|
import jakarta.validation.Validator;
|
||||||
import javax.validation.ValidatorFactory;
|
import jakarta.validation.ValidatorFactory;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class WebConfig extends WebMvcConfigurerAdapter {
|
public class WebConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
static final String ORIGINS[] = new String[]{"GET", "POST", "PUT", "DELETE"};
|
static final String ORIGINS[] = new String[]{"GET", "POST", "PUT", "DELETE"};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addCorsMappings(CorsRegistry registry) {
|
public void addCorsMappings(CorsRegistry registry) {
|
||||||
registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods(ORIGINS).maxAge(3600);
|
registry.addMapping("/**").allowedOriginPatterns("*").allowCredentials(true).allowedMethods(ORIGINS).maxAge(3600);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public Validator validator() {
|
public Validator validator() {
|
||||||
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
|
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
|
||||||
.configure()
|
.configure()
|
||||||
//failFast为true出现校验失败的情况,立即结束校验,不再进行后续的校验
|
//failFast为true出现校验失败的情况,立即结束校验,不再进行后续的校验
|
||||||
.failFast(true)
|
.failFast(true)
|
||||||
.buildValidatorFactory();
|
.buildValidatorFactory();
|
||||||
|
|
||||||
return validatorFactory.getValidator();
|
return validatorFactory.getValidator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public MethodValidationPostProcessor methodValidationPostProcessor() {
|
public MethodValidationPostProcessor methodValidationPostProcessor() {
|
||||||
MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
|
MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
|
||||||
methodValidationPostProcessor.setValidator(validator());
|
methodValidationPostProcessor.setValidator(validator());
|
||||||
return methodValidationPostProcessor;
|
return methodValidationPostProcessor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
package com.ai.da.common.config.swagger;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import springfox.documentation.builders.ApiInfoBuilder;
|
|
||||||
import springfox.documentation.builders.PathSelectors;
|
|
||||||
import springfox.documentation.builders.RequestHandlerSelectors;
|
|
||||||
import springfox.documentation.service.Contact;
|
|
||||||
import springfox.documentation.spi.DocumentationType;
|
|
||||||
import springfox.documentation.spring.web.plugins.Docket;
|
|
||||||
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableSwagger2WebMvc
|
|
||||||
public class AidaConfiguration {
|
|
||||||
|
|
||||||
@Bean(value = "IntelligentCurtainApis")
|
|
||||||
public Docket gxyd5aThemeApis() {
|
|
||||||
Contact contact = new Contact("Mr.Y", "", "136");
|
|
||||||
|
|
||||||
Docket docket = new Docket(DocumentationType.SWAGGER_2)
|
|
||||||
.apiInfo(new ApiInfoBuilder()
|
|
||||||
.description("aida接口文档")
|
|
||||||
.contact(contact)
|
|
||||||
.termsOfServiceUrl("暂无")
|
|
||||||
.version("1.0")
|
|
||||||
.build())
|
|
||||||
//分组名称
|
|
||||||
.groupName("1.0")
|
|
||||||
.select()
|
|
||||||
//这里指定Controller扫描包路径
|
|
||||||
.apis(RequestHandlerSelectors.basePackage("com.ai.da.controller"))
|
|
||||||
.paths(PathSelectors.any())
|
|
||||||
.build();
|
|
||||||
return docket;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,8 +7,8 @@ import org.springframework.security.access.AccessDeniedException;
|
|||||||
import org.springframework.security.web.access.AccessDeniedHandler;
|
import org.springframework.security.web.access.AccessDeniedHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import org.springframework.security.core.AuthenticationException;
|
|||||||
import org.springframework.security.web.AuthenticationEntryPoint;
|
import org.springframework.security.web.AuthenticationEntryPoint;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.springframework.security.core.Authentication;
|
|||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: dangweijian
|
* @author: dangweijian
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|||||||
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import org.springframework.security.core.Authentication;
|
|||||||
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,84 +1,97 @@
|
|||||||
package com.ai.da.common.security.config;
|
package com.ai.da.common.security.config;
|
||||||
|
|
||||||
import com.ai.da.common.security.*;
|
import com.ai.da.common.security.*;
|
||||||
import com.ai.da.common.security.filter.AuthenticationFilter;
|
import com.ai.da.common.security.filter.AuthenticationFilter;
|
||||||
import com.ai.da.common.security.filter.UserAuthenticationProcessingFilter;
|
import com.ai.da.common.security.filter.UserAuthenticationProcessingFilter;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
||||||
import org.springframework.security.config.annotation.web.builders.WebSecurity;
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
|
||||||
import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler;
|
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
import org.springframework.security.web.SecurityFilterChain;
|
||||||
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler;
|
||||||
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||||
import javax.annotation.Resource;
|
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
||||||
|
|
||||||
@EnableWebSecurity
|
import jakarta.annotation.Resource;
|
||||||
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
|
||||||
@EnableConfigurationProperties(SecurityProperties.class)
|
@Configuration
|
||||||
public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
@EnableWebSecurity
|
||||||
|
@EnableMethodSecurity(prePostEnabled = true)
|
||||||
@Resource
|
@EnableConfigurationProperties(SecurityProperties.class)
|
||||||
private SecurityProperties securityProperties;
|
public class SecurityConfig {
|
||||||
@Resource
|
|
||||||
private UserLoginSuccessHandler userLoginSuccessHandler;
|
@Resource
|
||||||
@Resource
|
private SecurityProperties securityProperties;
|
||||||
private UserLoginFailureHandler userLoginFailureHandler;
|
@Resource
|
||||||
@Resource
|
private UserLoginSuccessHandler userLoginSuccessHandler;
|
||||||
private UserAuthAccessDeniedHandler userAuthAccessDeniedHandler;
|
@Resource
|
||||||
@Resource
|
private UserLoginFailureHandler userLoginFailureHandler;
|
||||||
private UserAuthenticationEntryPointHandler userAuthenticationEntryPointHandler;
|
@Resource
|
||||||
@Resource
|
private UserAuthAccessDeniedHandler userAuthAccessDeniedHandler;
|
||||||
private UserAuthenticationManager userAuthenticationManager;
|
@Resource
|
||||||
@Resource
|
private UserAuthenticationEntryPointHandler userAuthenticationEntryPointHandler;
|
||||||
private UserAuthenticationProcessingFilter userAuthenticationProcessingFilter;
|
@Resource
|
||||||
|
private UserAuthenticationManager userAuthenticationManager;
|
||||||
/**
|
@Resource
|
||||||
* 不通过注入spring管理 让Security来管理 这样自定义的Filter就不会走,.permitAll()才能起作用
|
private UserAuthenticationProcessingFilter userAuthenticationProcessingFilter;
|
||||||
*/
|
|
||||||
@Resource
|
/**
|
||||||
private AuthenticationFilter authenticationFilter;
|
* 不通过注入spring管理 让Security来管理 这样自定义的Filter就不会走,.permitAll()才能起作用
|
||||||
@Resource
|
*/
|
||||||
private UserPermissionEvaluator userPermissionEvaluator;
|
@Resource
|
||||||
|
private AuthenticationFilter authenticationFilter;
|
||||||
|
@Resource
|
||||||
@Override
|
private UserPermissionEvaluator userPermissionEvaluator;
|
||||||
public AuthenticationManager authenticationManagerBean() throws Exception {
|
|
||||||
return this.userAuthenticationManager;
|
@Bean
|
||||||
}
|
public AuthenticationManager authenticationManager() throws Exception {
|
||||||
|
return this.userAuthenticationManager;
|
||||||
@Override
|
}
|
||||||
protected void configure(HttpSecurity httpSecurity/*, WebSecurity web*/) throws Exception {
|
|
||||||
// web.ignoring().antMatchers("/test/**");//禁止所有过滤器
|
@Bean
|
||||||
httpSecurity.cors().disable()//禁用 CSRF
|
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
|
||||||
.authorizeRequests()//认证请求
|
httpSecurity
|
||||||
.antMatchers(securityProperties.getIgnorePaths()).permitAll()//忽略的请求
|
.cors(AbstractHttpConfigurer::disable)
|
||||||
.anyRequest().authenticated()//其余所有的请求都需要认证
|
.authorizeHttpRequests(auth -> auth
|
||||||
.and().headers().frameOptions().disable()// 防止iframe 造成跨域
|
.requestMatchers(securityProperties.getIgnorePaths()).permitAll()
|
||||||
.and().exceptionHandling().authenticationEntryPoint(userAuthenticationEntryPointHandler)//未登录请求处理
|
.anyRequest().authenticated()
|
||||||
.accessDeniedHandler(userAuthAccessDeniedHandler)//无权限访问处理类 (此配置可以忽略,全局异常会先于Security框架处理异常,全局异常已特殊处理)
|
)
|
||||||
.and().formLogin().loginProcessingUrl(securityProperties.getAuthApi())//指定认证接口
|
.headers(headers -> headers
|
||||||
.successHandler(userLoginSuccessHandler)//登录成功处理器
|
.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable)
|
||||||
.failureHandler(userLoginFailureHandler)//登录失败处理器
|
.cacheControl(cache -> cache.disable())
|
||||||
.and().cors().and().csrf().disable();//允许跨域
|
)
|
||||||
//自定义过滤器在登录时认证用户名、密码
|
.exceptionHandling(exception -> exception
|
||||||
httpSecurity.addFilterAt(userAuthenticationProcessingFilter, UsernamePasswordAuthenticationFilter.class)
|
.authenticationEntryPoint(userAuthenticationEntryPointHandler)
|
||||||
.addFilterBefore(authenticationFilter, BasicAuthenticationFilter.class);
|
.accessDeniedHandler(userAuthAccessDeniedHandler)
|
||||||
//不创建session会话
|
)
|
||||||
httpSecurity.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
|
.formLogin(form -> form
|
||||||
//取消头缓存控制
|
.loginProcessingUrl(securityProperties.getAuthApi())
|
||||||
httpSecurity.headers().cacheControl();
|
.successHandler(userLoginSuccessHandler)
|
||||||
}
|
.failureHandler(userLoginFailureHandler)
|
||||||
|
)
|
||||||
@Bean
|
.cors(AbstractHttpConfigurer::disable)
|
||||||
public DefaultWebSecurityExpressionHandler userSecurityExpressionHandler() {
|
.csrf(AbstractHttpConfigurer::disable)
|
||||||
DefaultWebSecurityExpressionHandler handler = new DefaultWebSecurityExpressionHandler();
|
.sessionManagement(session -> session
|
||||||
handler.setPermissionEvaluator(userPermissionEvaluator);
|
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
|
||||||
return handler;
|
);
|
||||||
}
|
|
||||||
}
|
//自定义过滤器在登录时认证用户名、密码
|
||||||
|
httpSecurity.addFilterAt(userAuthenticationProcessingFilter, UsernamePasswordAuthenticationFilter.class)
|
||||||
|
.addFilterBefore(authenticationFilter, BasicAuthenticationFilter.class);
|
||||||
|
|
||||||
|
return httpSecurity.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DefaultWebSecurityExpressionHandler userSecurityExpressionHandler() {
|
||||||
|
DefaultWebSecurityExpressionHandler handler = new DefaultWebSecurityExpressionHandler();
|
||||||
|
handler.setPermissionEvaluator(userPermissionEvaluator);
|
||||||
|
return handler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,12 +18,11 @@ import org.springframework.util.StopWatch;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.filter.OncePerRequestFilter;
|
import org.springframework.web.filter.OncePerRequestFilter;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.security.sasl.AuthenticationException;
|
import jakarta.servlet.FilterChain;
|
||||||
import javax.servlet.FilterChain;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -104,7 +103,7 @@ public class AuthenticationFilter extends OncePerRequestFilter {
|
|||||||
return authorizationHeader != null && authorizationHeader.startsWith("Bearer");
|
return authorizationHeader != null && authorizationHeader.startsWith("Bearer");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void extracted(HttpServletRequest request) throws AuthenticationException {
|
private void extracted(HttpServletRequest request) {
|
||||||
String jwtToken = request.getHeader(properties.getJwtTokenHeader());
|
String jwtToken = request.getHeader(properties.getJwtTokenHeader());
|
||||||
// log.debug("后台检查令牌:{}", jwtToken);
|
// log.debug("后台检查令牌:{}", jwtToken);
|
||||||
|
|
||||||
|
|||||||
@@ -1,69 +1,69 @@
|
|||||||
package com.ai.da.common.security.filter;
|
package com.ai.da.common.security.filter;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ai.da.common.security.UserLoginSuccessHandler;
|
import com.ai.da.common.security.UserLoginSuccessHandler;
|
||||||
import com.ai.da.common.security.config.SecurityProperties;
|
import com.ai.da.common.security.config.SecurityProperties;
|
||||||
import com.ai.da.common.utils.RedisCacheUtils;
|
import com.ai.da.common.utils.RedisCacheUtils;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.ai.da.common.security.UserAuthenticationManager;
|
import com.ai.da.common.security.UserAuthenticationManager;
|
||||||
import com.ai.da.common.security.UserLoginFailureHandler;
|
import com.ai.da.common.security.UserLoginFailureHandler;
|
||||||
import com.ai.da.common.utils.MultiReadHttpServletRequest;
|
import com.ai.da.common.utils.MultiReadHttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.security.authentication.AuthenticationServiceException;
|
import org.springframework.security.authentication.AuthenticationServiceException;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
|
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
|
||||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: dangweijian
|
* @author: dangweijian
|
||||||
* @description: 用户认证过滤器
|
* @description: 用户认证过滤器
|
||||||
* @create: 2020-07-10 15:58
|
* @create: 2020-07-10 15:58
|
||||||
**/
|
**/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class UserAuthenticationProcessingFilter extends AbstractAuthenticationProcessingFilter {
|
public class UserAuthenticationProcessingFilter extends AbstractAuthenticationProcessingFilter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param securityProperties 配置(从配置中读取登录url)
|
* @param securityProperties 配置(从配置中读取登录url)
|
||||||
* @param authenticationManager 认证管理器
|
* @param authenticationManager 认证管理器
|
||||||
* @param adminAuthenticationSuccessHandler 认证成功处理器
|
* @param adminAuthenticationSuccessHandler 认证成功处理器
|
||||||
* @param adminAuthenticationFailureHandler 认证失败处理器
|
* @param adminAuthenticationFailureHandler 认证失败处理器
|
||||||
*/
|
*/
|
||||||
public UserAuthenticationProcessingFilter(SecurityProperties securityProperties, UserAuthenticationManager authenticationManager, UserLoginSuccessHandler adminAuthenticationSuccessHandler, UserLoginFailureHandler adminAuthenticationFailureHandler) {
|
public UserAuthenticationProcessingFilter(SecurityProperties securityProperties, UserAuthenticationManager authenticationManager, UserLoginSuccessHandler adminAuthenticationSuccessHandler, UserLoginFailureHandler adminAuthenticationFailureHandler) {
|
||||||
super(new AntPathRequestMatcher(securityProperties.getAuthApi(), HttpMethod.POST.name()));
|
super(new AntPathRequestMatcher(securityProperties.getAuthApi(), HttpMethod.POST.name()));
|
||||||
this.setAuthenticationManager(authenticationManager);
|
this.setAuthenticationManager(authenticationManager);
|
||||||
this.setAuthenticationSuccessHandler(adminAuthenticationSuccessHandler);
|
this.setAuthenticationSuccessHandler(adminAuthenticationSuccessHandler);
|
||||||
this.setAuthenticationFailureHandler(adminAuthenticationFailureHandler);
|
this.setAuthenticationFailureHandler(adminAuthenticationFailureHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
|
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
|
||||||
if (request.getContentType() == null || !request.getContentType().contains("application/json")) {
|
if (request.getContentType() == null || !request.getContentType().contains("application/json")) {
|
||||||
throw new AuthenticationServiceException("请求头类型不支持: " + request.getContentType());
|
throw new AuthenticationServiceException("请求头类型不支持: " + request.getContentType());
|
||||||
}
|
}
|
||||||
UsernamePasswordAuthenticationToken authRequest;
|
UsernamePasswordAuthenticationToken authRequest;
|
||||||
try {
|
try {
|
||||||
MultiReadHttpServletRequest wrappedRequest = new MultiReadHttpServletRequest(request);
|
MultiReadHttpServletRequest wrappedRequest = new MultiReadHttpServletRequest(request);
|
||||||
// 将前端传递的数据转换成jsonBean数据格式
|
// 将前端传递的数据转换成jsonBean数据格式
|
||||||
JSONObject jsonObject = JSONObject.parseObject(wrappedRequest.getBodyJsonStrByJson(wrappedRequest));
|
JSONObject jsonObject = JSONObject.parseObject(wrappedRequest.getBodyJsonStrByJson(wrappedRequest));
|
||||||
String code = jsonObject.getString("code");
|
String code = jsonObject.getString("code");
|
||||||
String uuid = jsonObject.getString("uuid");
|
String uuid = jsonObject.getString("uuid");
|
||||||
if (StrUtil.isEmpty(code) || StrUtil.isEmpty(uuid) || !code.equals(RedisCacheUtils.get("code-key-" + uuid, String.class))) {
|
if (StrUtil.isEmpty(code) || StrUtil.isEmpty(uuid) || !code.equals(RedisCacheUtils.get("code-key-" + uuid, String.class))) {
|
||||||
throw new AuthenticationServiceException("验证码错误");
|
throw new AuthenticationServiceException("验证码错误");
|
||||||
}
|
}
|
||||||
RedisCacheUtils.delete("code-key-" + uuid);
|
RedisCacheUtils.delete("code-key-" + uuid);
|
||||||
authRequest = new UsernamePasswordAuthenticationToken(jsonObject.get("username"), jsonObject.get("password"), null);
|
authRequest = new UsernamePasswordAuthenticationToken(jsonObject.get("username"), jsonObject.get("password"), null);
|
||||||
authRequest.setDetails(authenticationDetailsSource.buildDetails(wrappedRequest));
|
authRequest.setDetails(authenticationDetailsSource.buildDetails(wrappedRequest));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AuthenticationServiceException(e.getMessage());
|
throw new AuthenticationServiceException(e.getMessage());
|
||||||
}
|
}
|
||||||
return this.getAuthenticationManager().authenticate(authRequest);
|
return this.getAuthenticationManager().authenticate(authRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,87 +1,108 @@
|
|||||||
package com.ai.da.common.security.jwt;
|
package com.ai.da.common.security.jwt;
|
||||||
|
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ai.da.common.constant.CommonConstant;
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import com.ai.da.common.security.config.SecurityProperties;
|
import com.ai.da.common.constant.CommonConstant;
|
||||||
import com.ai.da.model.vo.AuthPrincipalVo;
|
import com.ai.da.common.security.config.SecurityProperties;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.ai.da.model.vo.AuthPrincipalVo;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSON;
|
||||||
import io.jsonwebtoken.Claims;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.jsonwebtoken.Jwts;
|
import io.jsonwebtoken.Claims;
|
||||||
import io.jsonwebtoken.SignatureAlgorithm;
|
import io.jsonwebtoken.Jwts;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import io.jsonwebtoken.security.Keys;
|
||||||
import org.springframework.stereotype.Component;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.ArrayList;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.Date;
|
import javax.crypto.SecretKey;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
/**
|
import java.util.ArrayList;
|
||||||
* @author: dangweijian
|
import java.util.Date;
|
||||||
* @description: JWT工具
|
|
||||||
* @create: 2020-07-09 09:27
|
/**
|
||||||
**/
|
* @author: dangweijian
|
||||||
@Slf4j
|
* @description: JWT工具
|
||||||
@Component
|
* @create: 2020-07-09 09:27
|
||||||
public class JWTTokenHelper {
|
**/
|
||||||
|
@Slf4j
|
||||||
@Resource
|
@Component
|
||||||
private SecurityProperties securityProperties;
|
public class JWTTokenHelper {
|
||||||
|
|
||||||
private static final String ISSUER = "DWJ";
|
@Resource
|
||||||
private static final String AUTHORITIES = "authorities";
|
private SecurityProperties securityProperties;
|
||||||
private static final String CHANGE_MAILBOX = "changeMailbox";
|
|
||||||
|
private static final String ISSUER = "DWJ";
|
||||||
public String createToken(AuthPrincipalVo principal) {
|
private static final String AUTHORITIES = "authorities";
|
||||||
String token = Jwts.builder()
|
private static final String CHANGE_MAILBOX = "changeMailbox";
|
||||||
.setId(String.valueOf(principal.getId()))
|
|
||||||
.setSubject(JSONObject.toJSONString(principal))
|
public String createToken(AuthPrincipalVo principal) {
|
||||||
.setIssuedAt(new Date())
|
SecretKey key = buildSigningKey();
|
||||||
.setIssuer(ISSUER)
|
String token = Jwts.builder()
|
||||||
.claim(AUTHORITIES, JSON.toJSONString(new ArrayList<>()))//自定义属性 权限
|
.id(String.valueOf(principal.getId()))
|
||||||
.setExpiration(new Date(System.currentTimeMillis() + securityProperties.getJwtExpiration()))
|
.subject(JSONObject.toJSONString(principal))
|
||||||
.signWith(SignatureAlgorithm.HS512, securityProperties.getJwtSecret())
|
.issuedAt(new Date())
|
||||||
.compact();
|
.issuer(ISSUER)
|
||||||
token = securityProperties.getJwtTokenPrefix() + token;
|
.claim(AUTHORITIES, JSON.toJSONString(new ArrayList<>()))//自定义属性 权限
|
||||||
return token;
|
.expiration(new Date(System.currentTimeMillis() + securityProperties.getJwtExpiration()))
|
||||||
}
|
.signWith(key)
|
||||||
|
.compact();
|
||||||
public boolean validateToken(String token) {
|
token = securityProperties.getJwtTokenPrefix() + token;
|
||||||
Claims claims = parser(token);
|
return token;
|
||||||
if (MapUtil.isEmpty(claims)) {
|
}
|
||||||
return false;
|
|
||||||
}
|
public boolean validateToken(String token) {
|
||||||
return true;
|
Claims claims = parser(token);
|
||||||
}
|
if (MapUtil.isEmpty(claims)) {
|
||||||
|
return false;
|
||||||
public AuthPrincipalVo parserToUser(String token) {
|
}
|
||||||
String subject = parser(token).getSubject();
|
return true;
|
||||||
if (StrUtil.isNotEmpty(subject)) {
|
}
|
||||||
return JSONObject.parseObject(subject, AuthPrincipalVo.class);
|
|
||||||
}
|
public AuthPrincipalVo parserToUser(String token) {
|
||||||
return null;
|
String subject = parser(token).getSubject();
|
||||||
}
|
if (StrUtil.isNotEmpty(subject)) {
|
||||||
|
return JSONObject.parseObject(subject, AuthPrincipalVo.class);
|
||||||
public Claims parser(String token) {
|
}
|
||||||
token = token.replaceAll(securityProperties.getJwtTokenPrefix(), "");
|
return null;
|
||||||
return Jwts.parser().setSigningKey(securityProperties.getJwtSecret()).parseClaimsJws(token).getBody();
|
}
|
||||||
}
|
|
||||||
|
public Claims parser(String token) {
|
||||||
public String createToken(Long userId, String userEmail){
|
token = token.replaceAll(securityProperties.getJwtTokenPrefix(), "");
|
||||||
String token = Jwts.builder()
|
SecretKey key = buildSigningKey();
|
||||||
.setId(String.valueOf(userId))
|
return Jwts.parser()
|
||||||
.setSubject(userEmail + "_" + userId)
|
.verifyWith(key)
|
||||||
.setIssuedAt(new Date())
|
.build()
|
||||||
.setIssuer(ISSUER)
|
.parseSignedClaims(token)
|
||||||
.claim(CHANGE_MAILBOX, JSON.toJSONString(new ArrayList<>()))//自定义属性 权限
|
.getPayload();
|
||||||
.setExpiration(new Date(System.currentTimeMillis() + CommonConstant.CHANGE_MAILBOX_LINK_VALIDITY))
|
}
|
||||||
.signWith(SignatureAlgorithm.HS256, securityProperties.getJwtSecret())
|
|
||||||
.compact();
|
public String createToken(Long userId, String userEmail){
|
||||||
return token;
|
SecretKey key = buildSigningKey();
|
||||||
}
|
String token = Jwts.builder()
|
||||||
|
.id(String.valueOf(userId))
|
||||||
public String parseToEmailAndId(String token) {
|
.subject(userEmail + "_" + userId)
|
||||||
return parser(token).getSubject();
|
.issuedAt(new Date())
|
||||||
}
|
.issuer(ISSUER)
|
||||||
}
|
.claim(CHANGE_MAILBOX, JSON.toJSONString(new ArrayList<>()))//自定义属性 权限
|
||||||
|
.expiration(new Date(System.currentTimeMillis() + CommonConstant.CHANGE_MAILBOX_LINK_VALIDITY))
|
||||||
|
.signWith(key)
|
||||||
|
.compact();
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String parseToEmailAndId(String token) {
|
||||||
|
return parser(token).getSubject();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JWT 要求 HMAC-SHA 的密钥至少 256 bit,这里统一扩展/哈希密钥长度避免 WeakKeyException。
|
||||||
|
*/
|
||||||
|
private SecretKey buildSigningKey() {
|
||||||
|
byte[] raw = securityProperties.getJwtSecret().getBytes(StandardCharsets.UTF_8);
|
||||||
|
if (raw.length < 32) {
|
||||||
|
raw = DigestUtil.sha256(raw);
|
||||||
|
}
|
||||||
|
return Keys.hmacShaKeyFor(raw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
//import org.springframework.stereotype.Component;
|
//import org.springframework.stereotype.Component;
|
||||||
//import org.springframework.util.CollectionUtils;
|
//import org.springframework.util.CollectionUtils;
|
||||||
//
|
//
|
||||||
//import javax.annotation.PostConstruct;
|
//import jakarta.annotation.PostConstruct;
|
||||||
//import javax.annotation.Resource;
|
//import jakarta.annotation.Resource;
|
||||||
//import java.io.FileOutputStream;
|
//import java.io.FileOutputStream;
|
||||||
//import java.io.IOException;
|
//import java.io.IOException;
|
||||||
//import java.nio.file.Files;
|
//import java.nio.file.Files;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -1,313 +1,325 @@
|
|||||||
package com.ai.da.common.utils;
|
package com.ai.da.common.utils;
|
||||||
|
|
||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ai.da.common.config.exception.BusinessException;
|
import com.ai.da.common.config.exception.BusinessException;
|
||||||
import com.ai.da.model.vo.FileVO;
|
import com.ai.da.model.vo.FileVO;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.mock.web.MockMultipartFile;
|
||||||
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class FileUtil extends cn.hutool.core.io.FileUtil {
|
public class FileUtil extends cn.hutool.core.io.FileUtil {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(com.ai.da.common.utils.FileUtil.class);
|
private static final Logger log = LoggerFactory.getLogger(com.ai.da.common.utils.FileUtil.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统临时目录
|
* 系统临时目录
|
||||||
* <br>
|
* <br>
|
||||||
* windows 包含路径分割符,但Linux 不包含,
|
* windows 包含路径分割符,但Linux 不包含,
|
||||||
* 在windows \\==\ 前提下,
|
* 在windows \\==\ 前提下,
|
||||||
* 为安全起见 同意拼装 路径分割符,
|
* 为安全起见 同意拼装 路径分割符,
|
||||||
* <pre>
|
* <pre>
|
||||||
* java.io.tmpdir
|
* java.io.tmpdir
|
||||||
* windows : C:\Users/xxx\AppData\Local\Temp\
|
* windows : C:\Users/xxx\AppData\Local\Temp\
|
||||||
* linux: /temp
|
* linux: /temp
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir") + File.separator;
|
public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir") + File.separator;
|
||||||
/**
|
/**
|
||||||
* 定义GB的计算常量
|
* 定义GB的计算常量
|
||||||
*/
|
*/
|
||||||
private static final int GB = 1024 * 1024 * 1024;
|
private static final int GB = 1024 * 1024 * 1024;
|
||||||
/**
|
/**
|
||||||
* 定义MB的计算常量
|
* 定义MB的计算常量
|
||||||
*/
|
*/
|
||||||
private static final int MB = 1024 * 1024;
|
private static final int MB = 1024 * 1024;
|
||||||
/**
|
/**
|
||||||
* 定义KB的计算常量
|
* 定义KB的计算常量
|
||||||
*/
|
*/
|
||||||
private static final int KB = 1024;
|
private static final int KB = 1024;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 格式化小数
|
* 格式化小数
|
||||||
*/
|
*/
|
||||||
private static final DecimalFormat DF = new DecimalFormat("0.00");
|
private static final DecimalFormat DF = new DecimalFormat("0.00");
|
||||||
|
|
||||||
public static final String IMAGE = "图片";
|
public static final String IMAGE = "图片";
|
||||||
public static final String TXT = "文档";
|
public static final String TXT = "文档";
|
||||||
public static final String MUSIC = "音乐";
|
public static final String MUSIC = "音乐";
|
||||||
public static final String VIDEO = "视频";
|
public static final String VIDEO = "视频";
|
||||||
public static final String OTHER = "其他";
|
public static final String OTHER = "其他";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MultipartFile转File
|
* MultipartFile转File
|
||||||
*/
|
*/
|
||||||
public static File toFile(MultipartFile multipartFile) {
|
public static File toFile(MultipartFile multipartFile) {
|
||||||
// 获取文件名
|
// 获取文件名
|
||||||
String fileName = multipartFile.getOriginalFilename();
|
String fileName = multipartFile.getOriginalFilename();
|
||||||
// 获取文件后缀
|
// 获取文件后缀
|
||||||
String prefix = "." + getExtensionName(fileName);
|
String prefix = "." + getExtensionName(fileName);
|
||||||
File file = null;
|
File file = null;
|
||||||
try {
|
try {
|
||||||
// 用uuid作为文件名,防止生成的临时文件重复
|
// 用uuid作为文件名,防止生成的临时文件重复
|
||||||
file = new File(SYS_TEM_DIR + IdUtil.simpleUUID() + prefix);
|
file = new File(SYS_TEM_DIR + IdUtil.simpleUUID() + prefix);
|
||||||
// MultipartFile to File
|
// MultipartFile to File
|
||||||
multipartFile.transferTo(file);
|
multipartFile.transferTo(file);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public static void main(String[] args) {
|
// public static void main(String[] args) {
|
||||||
// File file = new File(
|
// File file = new File(
|
||||||
// "http://18.162.111.141:5568/download/202211/userFile/collection/Printboard/1/a3c9838c-2171-44d7-af54-c94ee6affcd9print_2.jpg.png");
|
// "http://18.162.111.141:5568/download/202211/userFile/collection/Printboard/1/a3c9838c-2171-44d7-af54-c94ee6affcd9print_2.jpg.png");
|
||||||
// FileUtil.getFileSize()
|
// FileUtil.getFileSize()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件扩展名,不带 .
|
* 获取文件扩展名,不带 .
|
||||||
*/
|
*/
|
||||||
public static String getExtensionName(String filename) {
|
public static String getExtensionName(String filename) {
|
||||||
if ((filename != null) && (filename.length() > 0)) {
|
if ((filename != null) && (filename.length() > 0)) {
|
||||||
int dot = filename.lastIndexOf('.');
|
int dot = filename.lastIndexOf('.');
|
||||||
if ((dot > -1) && (dot < (filename.length() - 1))) {
|
if ((dot > -1) && (dot < (filename.length() - 1))) {
|
||||||
return filename.substring(dot + 1);
|
return filename.substring(dot + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* inputStream 转 File
|
* inputStream 转 File
|
||||||
*/
|
*/
|
||||||
static File inputStreamToFile(InputStream ins, String name) {
|
static File inputStreamToFile(InputStream ins, String name) {
|
||||||
File file = new File(SYS_TEM_DIR + name);
|
File file = new File(SYS_TEM_DIR + name);
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
OutputStream os = null;
|
OutputStream os = null;
|
||||||
try {
|
try {
|
||||||
os = new FileOutputStream(file);
|
os = new FileOutputStream(file);
|
||||||
int bytesRead;
|
int bytesRead;
|
||||||
int len = 8192;
|
int len = 8192;
|
||||||
byte[] buffer = new byte[len];
|
byte[] buffer = new byte[len];
|
||||||
while ((bytesRead = ins.read(buffer, 0, len)) != -1) {
|
while ((bytesRead = ins.read(buffer, 0, len)) != -1) {
|
||||||
os.write(buffer, 0, bytesRead);
|
os.write(buffer, 0, bytesRead);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
CloseUtil.close(os);
|
CloseUtil.close(os);
|
||||||
CloseUtil.close(ins);
|
CloseUtil.close(ins);
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件尺寸
|
* 获取文件尺寸
|
||||||
*/
|
*/
|
||||||
public static FileVO getFileSize(MultipartFile file) {
|
public static FileVO getFileSize(MultipartFile file) {
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int height = 0;
|
int height = 0;
|
||||||
try {
|
try {
|
||||||
// 图片对象
|
// 图片对象
|
||||||
BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
|
BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
|
||||||
// 宽度
|
// 宽度
|
||||||
width = bufferedImage.getWidth();
|
width = bufferedImage.getWidth();
|
||||||
// 高度
|
// 高度
|
||||||
height = bufferedImage.getHeight();
|
height = bufferedImage.getHeight();
|
||||||
} catch (IOException ioException) {
|
} catch (IOException ioException) {
|
||||||
log.error("获取文件尺寸异常###{}", ExceptionUtil.stacktraceToString(ioException));
|
log.error("获取文件尺寸异常###{}", ExceptionUtil.stacktraceToString(ioException));
|
||||||
}
|
}
|
||||||
return new FileVO(height, width);
|
return new FileVO(height, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件尺寸
|
* 获取文件尺寸
|
||||||
*/
|
*/
|
||||||
public static FileVO getFileSize(InputStream inputStream) {
|
public static FileVO getFileSize(InputStream inputStream) {
|
||||||
int width = 0;
|
int width = 0;
|
||||||
int height = 0;
|
int height = 0;
|
||||||
try {
|
try {
|
||||||
// 图片对象
|
// 图片对象
|
||||||
BufferedImage bufferedImage = ImageIO.read(inputStream);
|
BufferedImage bufferedImage = ImageIO.read(inputStream);
|
||||||
// 宽度
|
// 宽度
|
||||||
width = bufferedImage.getWidth();
|
width = bufferedImage.getWidth();
|
||||||
// 高度
|
// 高度
|
||||||
height = bufferedImage.getHeight();
|
height = bufferedImage.getHeight();
|
||||||
} catch (IOException ioException) {
|
} catch (IOException ioException) {
|
||||||
log.error("获取文件尺寸异常###{}", ExceptionUtil.stacktraceToString(ioException));
|
log.error("获取文件尺寸异常###{}", ExceptionUtil.stacktraceToString(ioException));
|
||||||
}
|
}
|
||||||
return new FileVO(height, width);
|
return new FileVO(height, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取远程文件流
|
* 获取远程文件流
|
||||||
*/
|
*/
|
||||||
public static InputStream getOriginFile(String path) {
|
public static InputStream getOriginFile(String path) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//远程
|
//远程
|
||||||
URL url = new URL(path);
|
URL url = new URL(path);
|
||||||
return url.openStream();
|
return url.openStream();
|
||||||
} catch (IOException ioException) {
|
} catch (IOException ioException) {
|
||||||
log.error("获取源文件异常###{}###path##{}", ExceptionUtil.stacktraceToString(ioException), path);
|
log.error("获取源文件异常###{}###path##{}", ExceptionUtil.stacktraceToString(ioException), path);
|
||||||
throw new BusinessException("get.file.failed");
|
throw new BusinessException("get.file.failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将文件名解析成文件的上传路径
|
* 将文件名解析成文件的上传路径
|
||||||
*/
|
*/
|
||||||
public static File upload(MultipartFile file, String filePath) {
|
public static File upload(MultipartFile file, String filePath) {
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmssS");
|
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmssS");
|
||||||
String suffix = getExtensionName(file.getOriginalFilename());
|
String suffix = getExtensionName(file.getOriginalFilename());
|
||||||
String nowStr = format.format(date) + "-";
|
String nowStr = format.format(date) + "-";
|
||||||
try {
|
try {
|
||||||
String fileName = file.getOriginalFilename();
|
String fileName = file.getOriginalFilename();
|
||||||
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
|
String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
|
||||||
String path = filePath + fileSuffix;
|
String path = filePath + fileSuffix;
|
||||||
// getCanonicalFile 可解析正确各种路径
|
// getCanonicalFile 可解析正确各种路径
|
||||||
File dest = new File(path).getCanonicalFile();
|
File dest = new File(path).getCanonicalFile();
|
||||||
// 检测是否存在目录
|
// 检测是否存在目录
|
||||||
if (!dest.getParentFile().exists()) {
|
if (!dest.getParentFile().exists()) {
|
||||||
if (!dest.getParentFile().mkdirs()) {
|
if (!dest.getParentFile().mkdirs()) {
|
||||||
System.out.println("was not successful.");
|
System.out.println("was not successful.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 文件写入
|
// 文件写入
|
||||||
file.transferTo(dest);
|
file.transferTo(dest);
|
||||||
return dest;
|
return dest;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将文件名解析成文件的上传路径
|
* 将文件名解析成文件的上传路径
|
||||||
*/
|
*/
|
||||||
public static File upload2(MultipartFile file, String filePath) {
|
public static File upload2(MultipartFile file, String filePath) {
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmssS");
|
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmssS");
|
||||||
String suffix = getExtensionName(file.getOriginalFilename());
|
String suffix = getExtensionName(file.getOriginalFilename());
|
||||||
String nowStr = format.format(date) + "-";
|
String nowStr = format.format(date) + "-";
|
||||||
try {
|
try {
|
||||||
String fileName = file.getOriginalFilename();
|
String fileName = file.getOriginalFilename();
|
||||||
String path = filePath + fileName;
|
String path = filePath + fileName;
|
||||||
// getCanonicalFile 可解析正确各种路径
|
// getCanonicalFile 可解析正确各种路径
|
||||||
File dest = new File(path).getCanonicalFile();
|
File dest = new File(path).getCanonicalFile();
|
||||||
// 检测是否存在目录
|
// 检测是否存在目录
|
||||||
if (!dest.getParentFile().exists()) {
|
if (!dest.getParentFile().exists()) {
|
||||||
if (!dest.getParentFile().mkdirs()) {
|
if (!dest.getParentFile().mkdirs()) {
|
||||||
System.out.println("was not successful.");
|
System.out.println("was not successful.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 文件写入
|
// 文件写入
|
||||||
file.transferTo(dest);
|
file.transferTo(dest);
|
||||||
return dest;
|
return dest;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除文件
|
* 删除文件
|
||||||
*/
|
*/
|
||||||
public static boolean delete(String path) {
|
public static boolean delete(String path) {
|
||||||
File file = new File(path);
|
File file = new File(path);
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
return file.delete();
|
return file.delete();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定文件夹下所有文件,不含文件夹里的文件
|
* 获取指定文件夹下所有文件,不含文件夹里的文件
|
||||||
*
|
*
|
||||||
* @param dirFilePath 文件夹路径
|
* @param dirFilePath 文件夹路径
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<File> getAllFile(String dirFilePath) {
|
public static List<File> getAllFile(String dirFilePath) {
|
||||||
if (StrUtil.isBlank(dirFilePath)) {
|
if (StrUtil.isBlank(dirFilePath)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return getAllFile(new File(dirFilePath));
|
return getAllFile(new File(dirFilePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定文件夹下所有文件,不含文件夹里的文件
|
* 获取指定文件夹下所有文件,不含文件夹里的文件
|
||||||
*
|
*
|
||||||
* @param dirFile 文件夹
|
* @param dirFile 文件夹
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<File> getAllFile(File dirFile) {
|
public static List<File> getAllFile(File dirFile) {
|
||||||
// 如果文件夹不存在或着不是文件夹,则返回 null
|
// 如果文件夹不存在或着不是文件夹,则返回 null
|
||||||
if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) {
|
if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
File[] childrenFiles = dirFile.listFiles();
|
File[] childrenFiles = dirFile.listFiles();
|
||||||
if (Objects.isNull(childrenFiles) || childrenFiles.length == 0) {
|
if (Objects.isNull(childrenFiles) || childrenFiles.length == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<File> files = new ArrayList<>();
|
List<File> files = new ArrayList<>();
|
||||||
for (File childFile : childrenFiles) {
|
for (File childFile : childrenFiles) {
|
||||||
// 如果是文件,直接添加到结果集合
|
// 如果是文件,直接添加到结果集合
|
||||||
if (childFile.isFile()) {
|
if (childFile.isFile()) {
|
||||||
files.add(childFile);
|
files.add(childFile);
|
||||||
}
|
}
|
||||||
//以下几行代码取消注释后可以将所有子文件夹里的文件也获取到列表里
|
//以下几行代码取消注释后可以将所有子文件夹里的文件也获取到列表里
|
||||||
else {
|
else {
|
||||||
// 如果是文件夹,则将其内部文件添加进结果集合
|
// 如果是文件夹,则将其内部文件添加进结果集合
|
||||||
List<File> cFiles = getAllFile(childFile);
|
List<File> cFiles = getAllFile(childFile);
|
||||||
if (Objects.isNull(cFiles) || cFiles.isEmpty()) {
|
if (Objects.isNull(cFiles) || cFiles.isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
files.addAll(cFiles);
|
files.addAll(cFiles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return files;
|
return files;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断文件是否存在
|
// 判断文件是否存在
|
||||||
public static boolean isFileExists(String filePath) {
|
public static boolean isFileExists(String filePath) {
|
||||||
File file = new File(filePath);
|
File file = new File(filePath);
|
||||||
return file.exists() && file.isFile();
|
return file.exists() && file.isFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据路径获取文件
|
// 根据路径获取文件
|
||||||
public static File getFile(String filePath) {
|
public static File getFile(String filePath) {
|
||||||
File file = new File(filePath);
|
File file = new File(filePath);
|
||||||
if (file.exists() && file.isFile()) {
|
if (file.exists() && file.isFile()) {
|
||||||
return file;
|
return file;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* 将 FileItem 转换为 MultipartFile
|
||||||
|
* 用于 Spring Boot 3.x 兼容性(CommonsMultipartFile 已移除)
|
||||||
|
*/
|
||||||
|
public static MultipartFile fileItemToMultipartFile(org.apache.commons.fileupload.FileItem fileItem) {
|
||||||
|
String fieldName = fileItem.getFieldName();
|
||||||
|
String fileName = fileItem.getName();
|
||||||
|
String contentType = fileItem.getContentType();
|
||||||
|
byte[] content = fileItem.get();
|
||||||
|
return new MockMultipartFile(fieldName, fileName, contentType, content);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.ai.da.common.response.Response;
|
import com.ai.da.common.response.Response;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import javax.servlet.ServletResponse;
|
import jakarta.servlet.ServletResponse;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ import org.springframework.stereotype.Component;
|
|||||||
import org.thymeleaf.TemplateEngine;
|
import org.thymeleaf.TemplateEngine;
|
||||||
import org.thymeleaf.context.Context;
|
import org.thymeleaf.context.Context;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import javax.mail.internet.*;
|
import jakarta.mail.internet.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ package com.ai.da.common.utils;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import javax.servlet.ReadListener;
|
import jakarta.servlet.ReadListener;
|
||||||
import javax.servlet.ServletInputStream;
|
import jakarta.servlet.ServletInputStream;
|
||||||
import javax.servlet.ServletRequest;
|
import jakarta.servlet.ServletRequest;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletRequestWrapper;
|
import jakarta.servlet.http.HttpServletRequestWrapper;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ package com.ai.da.common.utils;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.servlet.ServletOutputStream;
|
import jakarta.servlet.ServletOutputStream;
|
||||||
import javax.servlet.WriteListener;
|
import jakarta.servlet.WriteListener;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpServletResponseWrapper;
|
import jakarta.servlet.http.HttpServletResponseWrapper;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import org.springframework.data.redis.core.script.DefaultRedisScript;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import org.springframework.data.redis.core.script.DefaultRedisScript;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.ai.da.common.utils;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import software.amazon.awssdk.services.s3.presigner.S3Presigner;
|
|||||||
import software.amazon.awssdk.services.s3.presigner.model.GetObjectPresignRequest;
|
import software.amazon.awssdk.services.s3.presigner.model.GetObjectPresignRequest;
|
||||||
import software.amazon.awssdk.services.s3.presigner.model.PresignedGetObjectRequest;
|
import software.amazon.awssdk.services.s3.presigner.model.PresignedGetObjectRequest;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|||||||
@@ -4,11 +4,10 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import javax.websocket.*;
|
import jakarta.websocket.*;
|
||||||
import javax.websocket.server.PathParam;
|
import jakarta.websocket.server.PathParam;
|
||||||
import javax.websocket.server.ServerEndpoint;
|
import jakarta.websocket.server.ServerEndpoint;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -58,7 +57,7 @@ public class NotificationConnection {
|
|||||||
|
|
||||||
//收到了客户端消息执行的操作
|
//收到了客户端消息执行的操作
|
||||||
@OnMessage
|
@OnMessage
|
||||||
public void onMessage(@RequestParam String text){
|
public void onMessage(String text){
|
||||||
Map<String, String> textMap = JSONObject.parseObject(text, Map.class);
|
Map<String, String> textMap = JSONObject.parseObject(text, Map.class);
|
||||||
log.info("收到了一条来自 {} 的消息:{}, sessionId:{}", this.userId, textMap.get("text"), this.session.getId());
|
log.info("收到了一条来自 {} 的消息:{}, sessionId:{}", this.userId, textMap.get("text"), this.session.getId());
|
||||||
// return "已收到你的消息";
|
// return "已收到你的消息";
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.ai.da.common.websocket.config;
|
package com.ai.da.common.websocket.config;
|
||||||
|
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||||
@@ -8,6 +10,8 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
|||||||
* Configuration of WebSocket
|
* Configuration of WebSocket
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
|
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||||
|
@ConditionalOnProperty(name = "websocket.enabled", havingValue = "true", matchIfMissing = true)
|
||||||
public class WebSocketConfig {
|
public class WebSocketConfig {
|
||||||
@Bean
|
@Bean
|
||||||
public ServerEndpointExporter serverEndpointExporter() {
|
public ServerEndpointExporter serverEndpointExporter() {
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ import org.springframework.util.StringUtils;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@RestController
|
@RestController
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ import io.swagger.annotations.ApiParam;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import jakarta.annotation.Nullable;
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@RestController
|
@RestController
|
||||||
|
|||||||
@@ -13,11 +13,10 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import io.swagger.annotations.ApiParam;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ import org.springframework.util.StringUtils;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.thymeleaf.context.Context;
|
import org.thymeleaf.context.Context;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
@Api(tags = "邮件模块")
|
@Api(tags = "邮件模块")
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|||||||
@@ -1,45 +1,20 @@
|
|||||||
package com.ai.da.controller;
|
package com.ai.da.controller;
|
||||||
|
|
||||||
import com.ai.da.common.config.exception.BusinessException;
|
|
||||||
import com.ai.da.common.response.PageBaseResponse;
|
import com.ai.da.common.response.PageBaseResponse;
|
||||||
import com.ai.da.common.response.Response;
|
import com.ai.da.common.response.Response;
|
||||||
import com.ai.da.mapper.primary.entity.Account;
|
|
||||||
import com.ai.da.mapper.primary.entity.AccountExtend;
|
|
||||||
import com.ai.da.mapper.primary.entity.ChatMessage;
|
import com.ai.da.mapper.primary.entity.ChatMessage;
|
||||||
import com.ai.da.mapper.primary.entity.TrialOrder;
|
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.vo.AccountLoginVO;
|
|
||||||
import com.ai.da.model.vo.AccountPreLoginVO;
|
|
||||||
import com.ai.da.model.vo.BindEmailVO;
|
|
||||||
import com.ai.da.model.vo.PersonalHomepageVO;
|
|
||||||
import com.ai.da.service.AccountService;
|
|
||||||
import com.ai.da.service.LLMService;
|
import com.ai.da.service.LLMService;
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
|
|
||||||
@Api(tags = "llm模块")
|
@Api(tags = "llm模块")
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
@CrossOrigin //开放前端的跨域访问
|
@CrossOrigin //开放前端的跨域访问
|
||||||
@Api(tags = "商品订单管理")
|
@Api(tags = "商品订单管理")
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Api(tags = "Portfolio模块")
|
@Api(tags = "Portfolio模块")
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@Api(tags = "Project模块")
|
@Api(tags = "Project模块")
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|||||||
@@ -19,13 +19,12 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Api(tags = "任务列表模块")
|
@Api(tags = "任务列表模块")
|
||||||
|
|||||||
@@ -1,167 +1,167 @@
|
|||||||
package com.ai.da.controller;
|
package com.ai.da.controller;
|
||||||
|
|
||||||
import com.ai.da.common.constant.CommonConstant;
|
import com.ai.da.common.constant.CommonConstant;
|
||||||
import com.ai.da.common.response.Response;
|
import com.ai.da.common.response.Response;
|
||||||
import com.ai.da.common.utils.MinioUtil;
|
import com.ai.da.common.utils.MinioUtil;
|
||||||
import com.ai.da.mapper.primary.entity.GoogleUser;
|
import com.ai.da.mapper.primary.entity.GoogleUser;
|
||||||
import com.ai.da.model.dto.*;
|
import com.ai.da.model.dto.*;
|
||||||
import com.ai.da.model.vo.AccountLoginVO;
|
import com.ai.da.model.vo.AccountLoginVO;
|
||||||
import com.ai.da.model.vo.DesignCollectionVO;
|
import com.ai.da.model.vo.DesignCollectionVO;
|
||||||
import com.ai.da.service.AccountService;
|
import com.ai.da.service.AccountService;
|
||||||
import com.ai.da.service.DesignService;
|
import com.ai.da.service.DesignService;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
|
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpSession;
|
import jakarta.servlet.http.HttpSession;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
|
|
||||||
@Api(tags = "Third Party Modules")
|
@Api(tags = "Third Party Modules")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/third/party")
|
@RequestMapping("/api/third/party")
|
||||||
public class ThirdPartyController {
|
public class ThirdPartyController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AccountService accountService;
|
private AccountService accountService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DesignService designService;
|
private DesignService designService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MinioUtil minioUtil;
|
private MinioUtil minioUtil;
|
||||||
|
|
||||||
/*@ApiOperation(value = "Add user information")
|
/*@ApiOperation(value = "Add user information")
|
||||||
@PostMapping("/addUser")
|
@PostMapping("/addUser")
|
||||||
public Response<Boolean> addUser(@Valid @RequestBody AccountAddDTO accountAddDTO) {
|
public Response<Boolean> addUser(@Valid @RequestBody AccountAddDTO accountAddDTO) {
|
||||||
return Response.success(accountService.addUser(accountAddDTO));
|
return Response.success(accountService.addUser(accountAddDTO));
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
@ApiOperation(value = "Edit user information")
|
@ApiOperation(value = "Edit user information")
|
||||||
@PostMapping("/editUser")
|
@PostMapping("/editUser")
|
||||||
public Response<Boolean> editUser(@RequestBody AccountEditDTO accountEditDTO) {
|
public Response<Boolean> editUser(@RequestBody AccountEditDTO accountEditDTO) {
|
||||||
return Response.success(accountService.editUser(accountEditDTO));
|
return Response.success(accountService.editUser(accountEditDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "Add user information")
|
@ApiOperation(value = "Add user information")
|
||||||
@PostMapping("/addTrialUser")
|
@PostMapping("/addTrialUser")
|
||||||
public Response<Boolean> addTrialUser(@RequestBody AccountTrialDTO accountTrialDTO, HttpServletRequest request) {
|
public Response<Boolean> addTrialUser(@RequestBody AccountTrialDTO accountTrialDTO, HttpServletRequest request) {
|
||||||
return Response.success(accountService.addTrialUser(accountTrialDTO, request));
|
return Response.success(accountService.addTrialUser(accountTrialDTO, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/addNoLoginRequired")
|
@PostMapping("/addNoLoginRequired")
|
||||||
public Response<Boolean> addNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
|
public Response<Boolean> addNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
|
||||||
return Response.success(accountService.addNoLoginRequired(noLoginRequiredDTO));
|
return Response.success(accountService.addNoLoginRequired(noLoginRequiredDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/deleteNoLoginRequired")
|
@PostMapping("/deleteNoLoginRequired")
|
||||||
public Response<Boolean> deleteNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
|
public Response<Boolean> deleteNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO) {
|
||||||
return Response.success(accountService.deleteNoLoginRequired(noLoginRequiredDTO));
|
return Response.success(accountService.deleteNoLoginRequired(noLoginRequiredDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/existNoLoginRequired")
|
@PostMapping("/existNoLoginRequired")
|
||||||
public Response<Boolean> existNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
public Response<Boolean> existNoLoginRequired(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
||||||
return Response.success(accountService.existNoLoginRequired(noLoginRequiredDTO, request));
|
return Response.success(accountService.existNoLoginRequired(noLoginRequiredDTO, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/your-secured-endpoint")
|
@GetMapping("/your-secured-endpoint")
|
||||||
// @PreAuthorize("hasRole('ROLE_USER')")
|
// @PreAuthorize("hasRole('ROLE_USER')")
|
||||||
public String securedEndpoint(HttpServletRequest request, @AuthenticationPrincipal PreAuthenticatedAuthenticationToken authenticationToken) {
|
public String securedEndpoint(HttpServletRequest request, @AuthenticationPrincipal PreAuthenticatedAuthenticationToken authenticationToken) {
|
||||||
// 从请求属性中获取证书
|
// 从请求属性中获取证书
|
||||||
X509Certificate[] certificates = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
|
X509Certificate[] certificates = (X509Certificate[]) request.getAttribute("jakarta.servlet.request.X509Certificate");
|
||||||
if (certificates != null && certificates.length > 0) {
|
if (certificates != null && certificates.length > 0) {
|
||||||
X509Certificate clientCertificate = certificates[0];
|
X509Certificate clientCertificate = certificates[0];
|
||||||
// 可以从 clientCertificate 中获取证书信息,例如主题、颁发者等
|
// 可以从 clientCertificate 中获取证书信息,例如主题、颁发者等
|
||||||
String subject = clientCertificate.getSubjectX500Principal().getName();
|
String subject = clientCertificate.getSubjectX500Principal().getName();
|
||||||
String issuer = clientCertificate.getIssuerX500Principal().getName();
|
String issuer = clientCertificate.getIssuerX500Principal().getName();
|
||||||
// 处理逻辑
|
// 处理逻辑
|
||||||
return "Secured Endpoint. Client Subject: " + subject + ", Issuer: " + issuer;
|
return "Secured Endpoint. Client Subject: " + subject + ", Issuer: " + issuer;
|
||||||
} else {
|
} else {
|
||||||
// 证书不存在或获取失败
|
// 证书不存在或获取失败
|
||||||
return "Failed to retrieve client certificate.";
|
return "Failed to retrieve client certificate.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/addNoLoginRequiredNew")
|
@PostMapping("/addNoLoginRequiredNew")
|
||||||
public Response<String> addNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
public Response<String> addNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
||||||
return Response.success(accountService.addNoLoginRequiredNew(noLoginRequiredDTO, request));
|
return Response.success(accountService.addNoLoginRequiredNew(noLoginRequiredDTO, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/deleteNoLoginRequiredNew")
|
@PostMapping("/deleteNoLoginRequiredNew")
|
||||||
public Response<Boolean> deleteNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
public Response<Boolean> deleteNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
||||||
return Response.success(accountService.deleteNoLoginRequiredNew(noLoginRequiredDTO, request));
|
return Response.success(accountService.deleteNoLoginRequiredNew(noLoginRequiredDTO, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Value("${redirect_url}")
|
@Value("${redirect_url}")
|
||||||
private String REDIRECT_URL;
|
private String REDIRECT_URL;
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "add No Login Required")
|
@ApiOperation(value = "add No Login Required")
|
||||||
@PostMapping("/getRedirectUrl")
|
@PostMapping("/getRedirectUrl")
|
||||||
public Response<String> getRedirectUrl() {
|
public Response<String> getRedirectUrl() {
|
||||||
return Response.success(REDIRECT_URL);
|
return Response.success(REDIRECT_URL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@ApiOperation(value = "updateNoLoginRequiredNew")
|
@ApiOperation(value = "updateNoLoginRequiredNew")
|
||||||
@PostMapping("/updateNoLoginRequiredNew")
|
@PostMapping("/updateNoLoginRequiredNew")
|
||||||
public Response<String> updateNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
public Response<String> updateNoLoginRequiredNew(@RequestBody NoLoginRequiredDTO noLoginRequiredDTO, HttpServletRequest request) {
|
||||||
return Response.success(accountService.updateNoLoginRequiredNew(noLoginRequiredDTO, request));
|
return Response.success(accountService.updateNoLoginRequiredNew(noLoginRequiredDTO, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@GetMapping("/auth/google_callback")
|
@GetMapping("/auth/google_callback")
|
||||||
public Response<String> googleCallback(@RequestParam("code") String code, HttpSession session) {
|
public Response<String> googleCallback(@RequestParam("code") String code, HttpSession session) {
|
||||||
return Response.success(accountService.googleCallback(code, session));
|
return Response.success(accountService.googleCallback(code, session));
|
||||||
}
|
}
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@GetMapping("/parseGoogleCredential")
|
@GetMapping("/parseGoogleCredential")
|
||||||
public Response<AccountLoginVO> parseGoogleCredential(@RequestParam("credential") String credential, @RequestParam("type") Integer type) {
|
public Response<AccountLoginVO> parseGoogleCredential(@RequestParam("credential") String credential, @RequestParam("type") Integer type) {
|
||||||
return Response.success(accountService.parseGoogleCredential(credential, type));
|
return Response.success(accountService.parseGoogleCredential(credential, type));
|
||||||
}
|
}
|
||||||
|
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
@GetMapping("/parseWeChatCode")
|
@GetMapping("/parseWeChatCode")
|
||||||
public Response<AccountLoginVO> parseWeChatCode(@RequestParam("code") String code, @RequestParam("type") Integer type) {
|
public Response<AccountLoginVO> parseWeChatCode(@RequestParam("code") String code, @RequestParam("type") Integer type) {
|
||||||
return Response.success(accountService.parseWeChatCode(code, type));
|
return Response.success(accountService.parseWeChatCode(code, type));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "接收Design结果")
|
@ApiOperation(value = "接收Design结果")
|
||||||
@PostMapping("/receiveDesignResults")
|
@PostMapping("/receiveDesignResults")
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
public Response<Boolean> receiveDesignResults(@Valid @RequestBody JSONObject responseObject) {
|
public Response<Boolean> receiveDesignResults(@Valid @RequestBody JSONObject responseObject) {
|
||||||
return Response.success(designService.receiveDesignResults(responseObject));
|
return Response.success(designService.receiveDesignResults(responseObject));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "接收Design入参")
|
@ApiOperation(value = "接收Design入参")
|
||||||
@PostMapping("/receiveDesignParams")
|
@PostMapping("/receiveDesignParams")
|
||||||
@CrossOrigin
|
@CrossOrigin
|
||||||
public Response<Boolean> receiveDesignParams(@Valid @RequestBody ReceiveDesignParam receiveDesignParam) {
|
public Response<Boolean> receiveDesignParams(@Valid @RequestBody ReceiveDesignParam receiveDesignParam) {
|
||||||
return Response.success(designService.receiveDesignParams(receiveDesignParam));
|
return Response.success(designService.receiveDesignParams(receiveDesignParam));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "刷新minio预签名地址")
|
@ApiOperation(value = "刷新minio预签名地址")
|
||||||
@GetMapping("/refreshMinioUrl")
|
@GetMapping("/refreshMinioUrl")
|
||||||
public Response<String> refreshMinioUrl(@RequestParam("path") String path){
|
public Response<String> refreshMinioUrl(@RequestParam("path") String path){
|
||||||
return Response.success(minioUtil.getPreSignedUrl(path, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
|
return Response.success(minioUtil.getPreSignedUrl(path, CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ import io.swagger.annotations.ApiParam;
|
|||||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.ai.da.mapper.primary.entity;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.models.auth.In;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|||||||
@@ -67,6 +67,11 @@ public class SysFile implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Date updateDate;
|
private Date updateDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风格样式
|
||||||
|
*/
|
||||||
|
private String style;
|
||||||
|
|
||||||
public SysFile() {
|
public SysFile() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("绑定邮箱")
|
@ApiModel("绑定邮箱")
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("AccountEdit")
|
@ApiModel("AccountEdit")
|
||||||
public class AccountEditDTO {
|
public class AccountEditDTO {
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("登入")
|
@ApiModel("登入")
|
||||||
public class AccountLoginDTO {
|
public class AccountLoginDTO {
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("登出")
|
@ApiModel("登出")
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("预先登入")
|
@ApiModel("预先登入")
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("账户")
|
@ApiModel("账户")
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import javax.validation.constraints.Pattern;
|
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.ai.da.model.dto;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.mail.internet.InternetAddress;
|
import jakarta.mail.internet.InternetAddress;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class BasicEmailParamDTO {
|
public class BasicEmailParamDTO {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package com.ai.da.model.dto;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author aida
|
* @author aida
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author aida
|
* @author aida
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("设计Collection颜色板 入参")
|
@ApiModel("设计Collection颜色板 入参")
|
||||||
|
|||||||
@@ -4,8 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("删除文件")
|
@ApiModel("删除文件")
|
||||||
|
|||||||
@@ -4,11 +4,10 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("生成印花")
|
@ApiModel("生成印花")
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package com.ai.da.model.dto;
|
package com.ai.da.model.dto;
|
||||||
|
|
||||||
import com.ai.da.mapper.primary.entity.Gradient;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("设计Collection Sketch 入参")
|
@ApiModel("设计Collection Sketch 入参")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.ai.da.model.dto;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class CreateCouponDTO {
|
public class CreateCouponDTO {
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("设计Collection element other 入参")
|
@ApiModel("设计Collection element other 入参")
|
||||||
public class DesignCollectionElementDTO {
|
public class DesignCollectionElementDTO {
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("Design like 入参")
|
@ApiModel("Design like 入参")
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ package com.ai.da.model.dto;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package com.ai.da.model.dto;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import com.ai.da.mapper.primary.entity.Gradient;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("Design dislike 入参")
|
@ApiModel("Design dislike 入参")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("邮箱发送")
|
@ApiModel("邮箱发送")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("生成高级design 入参")
|
@ApiModel("生成高级design 入参")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("Generate like入参")
|
@ApiModel("Generate like入参")
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
@ApiModel("修改imageToSketch提取出的sketch")
|
@ApiModel("修改imageToSketch提取出的sketch")
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("GenerateThroughImageTextDTO")
|
@ApiModel("GenerateThroughImageTextDTO")
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("根据rgb数组批量获取潘通rgb")
|
@ApiModel("根据rgb数组批量获取潘通rgb")
|
||||||
|
|||||||
@@ -2,12 +2,9 @@ package com.ai.da.model.dto;
|
|||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("History删除")
|
@ApiModel("History删除")
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import io.swagger.annotations.ApiParam;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ApiModel("History编辑")
|
@ApiModel("History编辑")
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import io.swagger.annotations.ApiModel;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user