解决许可证的问题。

This commit is contained in:
chenxudong 2025-10-17 14:52:56 +08:00
parent 16f2cdd576
commit e7cf898cbe
9 changed files with 106 additions and 70 deletions

View File

@ -15,39 +15,36 @@
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.36</lombok.version>
<hutool.version>5.8.22</hutool.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.22</version> <version>${hutool.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.electromagnetic.data</groupId> <groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-common</artifactId> <artifactId>electromagnetic-common</artifactId>
<version>1.0</version> <version>1.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- 可选:添加 JAXB 实现库(如 jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -16,6 +16,11 @@
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mapstruct.version>1.4.1.Final</mapstruct.version> <mapstruct.version>1.4.1.Final</mapstruct.version>
<mybatis-plus.version>3.5.7</mybatis-plus.version>
<mariaddb-client.version>3.5.1</mariaddb-client.version>
<pagehelper.version>5.3.1</pagehelper.version>
<druid.version>1.2.6</druid.version>
<aspectjweaver.version>1.9.7</aspectjweaver.version>
</properties> </properties>
<dependencies> <dependencies>
@ -30,44 +35,40 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-test</artifactId>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId> <artifactId>spring-boot-starter-webflux</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.ai</groupId> <groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId> <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.ai</groupId> <groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-mariadb</artifactId> <artifactId>spring-ai-starter-vector-store-mariadb</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version> <version>${mybatis-plus.version}</version>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- <version>8.0.31</version>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>org.mariadb.jdbc</groupId> <groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId> <artifactId>mariadb-java-client</artifactId>
<version>3.5.1</version> <version>${mariaddb-client.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.electromagnetic.data</groupId> <groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-common</artifactId> <artifactId>electromagnetic-common</artifactId>
<version>1.0</version> <version>1.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId> <artifactId>pagehelper</artifactId>
@ -77,13 +78,14 @@
<artifactId>jsqlparser</artifactId> <artifactId>jsqlparser</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
<version>5.3.1</version> <version>${pagehelper.version}</version>
</dependency> </dependency>
<!--引入druid数据源--> <!--引入druid数据源-->
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version> <version>${druid.version}</version>
</dependency> </dependency>
<dependency> <dependency>
@ -91,15 +93,17 @@
<artifactId>mapstruct-processor</artifactId> <artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version> <version>${mapstruct.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mapstruct</groupId> <groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId> <artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version> <version>${mapstruct.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.aspectj</groupId> <groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId> <artifactId>aspectjweaver</artifactId>
<version>1.9.7</version> <version>${aspectjweaver.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -1,4 +1,4 @@
package com.electromagnetic.industry.software.common.pojo; package com.electromagnetic.industry.software.manage.pojo.other;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Builder; import lombok.Builder;

View File

@ -1,7 +1,7 @@
package com.electromagnetic.industry.software.manage.service; package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.common.pojo.TreeNode; import com.electromagnetic.industry.software.manage.pojo.other.TreeNode;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary; import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import com.electromagnetic.industry.software.manage.pojo.resp.FileTagInfo; import com.electromagnetic.industry.software.manage.pojo.resp.FileTagInfo;
import com.electromagnetic.industry.software.manage.pojo.resp.TagListVO; import com.electromagnetic.industry.software.manage.pojo.resp.TagListVO;

View File

@ -11,7 +11,7 @@ import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.enums.PublishEnum; import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.enums.TagTypeEnum; import com.electromagnetic.industry.software.common.enums.TagTypeEnum;
import com.electromagnetic.industry.software.common.exception.BizException; import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.pojo.TreeNode; import com.electromagnetic.industry.software.manage.pojo.other.TreeNode;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.EdTagLibraryMapper; import com.electromagnetic.industry.software.manage.mapper.EdTagLibraryMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary; import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;

View File

@ -35,12 +35,14 @@ import com.electromagnetic.industry.software.manage.service.EdFileFavoriteServic
import com.electromagnetic.industry.software.manage.service.UserRoleService; import com.electromagnetic.industry.software.manage.service.UserRoleService;
import com.electromagnetic.industry.software.manage.service.UserService; import com.electromagnetic.industry.software.manage.service.UserService;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.crypto.SecretKey;
import java.nio.charset.Charset;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -119,11 +121,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
claims.put(UserConstants.LOGIN_USER_NAME, loginInfo.getUsername()); claims.put(UserConstants.LOGIN_USER_NAME, loginInfo.getUsername());
claims.put(UserConstants.LOGIN_WORK_NUMBER, loginInfo.getWorkNumber()); claims.put(UserConstants.LOGIN_WORK_NUMBER, loginInfo.getWorkNumber());
claims.put(UserConstants.LOGIN_ADMIN_TYPE, loginInfo.getAdminType()); claims.put(UserConstants.LOGIN_ADMIN_TYPE, loginInfo.getAdminType());
byte[] keyBytes = elePropertyConfig.getLoginEncPasswd().getBytes(Charset.defaultCharset());
SecretKey key = Keys.hmacShaKeyFor(keyBytes);
return Jwts.builder() return Jwts.builder()
.addClaims(claims) .claims(claims) // 自定义 claims
.setId(UUID.randomUUID().toString()) .id(UUID.randomUUID().toString()) // JWT ID
.setIssuedAt(DateTime.now()) .issuedAt(new Date()) // 签发时间使用 java.util.Date
.signWith(SignatureAlgorithm.HS512, elePropertyConfig.getLoginEncPasswd()) .signWith(key) // 签名
.compact(); .compact();
} }

View File

@ -15,109 +15,128 @@
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jwt.version>0.9.0</jwt.version> <jwt.version>0.13.0</jwt.version>
<lombok.version>1.18.36</lombok.version>
<hutool.version>5.8.22</hutool.version>
<logback.version>1.5.16</logback.version>
<rapidocr.version>0.0.7</rapidocr.version>
<rapidocr-onnx.version>1.2.2</rapidocr-onnx.version>
<documents4j.version>1.0.3</documents4j.version>
<bcprov.version>1.78</bcprov.version>
<fr.opensagres.xdocreport.version>2.0.1</fr.opensagres.xdocreport.version>
<poi-ooxml.version>4.1.2</poi-ooxml.version>
<poi-scratchpad.version>4.1.2</poi-scratchpad.version>
<poi-ooxml-schemas.version>4.1.0</poi-ooxml-schemas.version>
<commons-compress.version>1.26.0</commons-compress.version>
<pdfbox.version>3.0.3</pdfbox.version>
<jaxb-impl.version>2.3.3</jaxb-impl.version>
<jbig2-imageio.version>3.0.2</jbig2-imageio.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.36</version> <version>${lombok.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
<version>${jwt.version}</version> <version>${jwt.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.bouncycastle</groupId> <groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId> <artifactId>bcprov-jdk18on</artifactId>
<version>1.78</version> <version>${bcprov.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.22</version> <version>${hutool.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>1.5.16</version> <version>${logback.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId> <artifactId>logback-core</artifactId>
<version>1.5.16</version> <version>${logback.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>fr.opensagres.xdocreport</groupId> <groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId> <artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
<version>2.0.1</version> <version>${fr.opensagres.xdocreport.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.documents4j</groupId> <groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId> <artifactId>documents4j-local</artifactId>
<version>1.0.3</version> <version>${documents4j.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.documents4j</groupId> <groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId> <artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version> <version>${documents4j.version}</version>
</dependency> </dependency>
<!--处理word文档需要的额外的jar包--> <!--处理word文档需要的额外的jar包-->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
<version>${poi-ooxml.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
<version>1.26.0</version> <version>${commons-compress.version}</version>
</dependency> </dependency>
<!--处理word文档需要的额外的jar包--> <!--处理word文档需要的额外的jar包-->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId> <artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.0</version> <version>${poi-ooxml-schemas.version}</version>
</dependency> </dependency>
<!-- POI-word文件处理需要 --> <!-- POI-word文件处理需要 -->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId> <artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version> <version>${poi-scratchpad.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.pdfbox</groupId> <groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId> <artifactId>pdfbox</artifactId>
<version>3.0.3</version> <version>${pdfbox.version}</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sun.xml.bind</groupId> <groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId> <artifactId>jaxb-impl</artifactId>
<version>2.3.3</version> <version>${jaxb-impl.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.github.mymonstercat</groupId> <groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr</artifactId> <artifactId>rapidocr</artifactId>
<version>0.0.7</version> <version>${rapidocr.version}</version>
</dependency> </dependency>
<!-- 一般只需要引入一个CPU端建议使用onnx移动端建议使用ncnn --> <!-- 一般只需要引入一个CPU端建议使用onnx移动端建议使用ncnn -->
@ -125,17 +144,19 @@
<dependency> <dependency>
<groupId>io.github.mymonstercat</groupId> <groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr-onnx-platform</artifactId> <artifactId>rapidocr-onnx-platform</artifactId>
<version>0.0.7</version> <version>${rapidocr.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.github.mymonstercat</groupId> <groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr-onnx-linux-x86_64</artifactId> <artifactId>rapidocr-onnx-linux-x86_64</artifactId>
<version>1.2.2</version> <version>${rapidocr-onnx.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.pdfbox</groupId> <groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId> <artifactId>jbig2-imageio</artifactId>
<version>3.0.2</version> <version>${jbig2-imageio.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -1,8 +1,10 @@
package com.electromagnetic.industry.software.common.util; package com.electromagnetic.industry.software.common.util;
import cn.hutool.crypto.SecureUtil; import javax.crypto.Cipher;
import cn.hutool.crypto.symmetric.AES; import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/** /**
* <p>Description: [AES对称加密和解密]</p> * <p>Description: [AES对称加密和解密]</p>
@ -22,11 +24,15 @@ public class AESUtils {
*/ */
public static String decrypt(String enc, String key) { public static String decrypt(String enc, String key) {
try { try {
// 使用Hutool创建AES解密器ECB模式PKCS7Padding // 1. 还原密钥
AES aes = SecureUtil.aes(key.getBytes()); SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
// 执行解密Hutool会自动处理Base64解码 // 2. 创建 Cipher
byte[] decrypted = aes.decrypt(enc); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
return new String(decrypted); // 3. 初始化解密
cipher.init(Cipher.DECRYPT_MODE, keySpec);
// 4. 解密
byte[] plainBytes = cipher.doFinal(Base64.getDecoder().decode(enc));
return new String(plainBytes, StandardCharsets.UTF_8);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View File

@ -2,6 +2,9 @@ package com.electromagnetic.industry.software.common.util;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import java.nio.charset.StandardCharsets;
public class TokenUtil { public class TokenUtil {
@ -12,10 +15,11 @@ public class TokenUtil {
* @return * @return
*/ */
public static Claims getLoginInfo(String token, String loginEncode) { public static Claims getLoginInfo(String token, String loginEncode) {
return Jwts.parser() return Jwts.parser() // 返回 JwtParserBuilder
.setSigningKey(loginEncode) .verifyWith(Keys.hmacShaKeyFor(loginEncode.getBytes(StandardCharsets.UTF_8)))
.parseClaimsJws(token) .build()
.getBody(); .parseSignedClaims(token) // 对应原来的 parseClaimsJws
.getPayload(); // 对应原来的 getBody()
} }
} }