From cf6eea4975635e3d196ca05abd73ed4997ef6471 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com>
Date: Mon, 3 Jul 2023 19:03:59 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=AB=AF=E9=83=A8=E5=88=86?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 +
.../config/security/JwtUser.java | 2 +-
.../config/security/TokenProvider.java | 59 ++++++-
.../controller/TrainingController.java | 82 ++++++++-
.../forex/trading_trading/dto/TrainingBO.java | 11 +-
.../service/MemberService.java | 14 +-
.../service/TrainingService.java | 25 ++-
.../trading_trading/util/CacheProvider.java | 50 ++++++
.../forex/trading_trading/util/HttpUtils.java | 33 ++++
.../forex/trading_trading/util/TzApi.java | 167 +++++++++++++++++-
10 files changed, 429 insertions(+), 19 deletions(-)
create mode 100644 src/main/java/com/sztzjy/forex/trading_trading/util/CacheProvider.java
diff --git a/pom.xml b/pom.xml
index 3c60883..e52e779 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,6 +144,11 @@
httpclient
4.5.14
+
+ com.github.ben-manes.caffeine
+ caffeine
+ 2.9.3
+
diff --git a/src/main/java/com/sztzjy/forex/trading_trading/config/security/JwtUser.java b/src/main/java/com/sztzjy/forex/trading_trading/config/security/JwtUser.java
index afa368b..5245794 100644
--- a/src/main/java/com/sztzjy/forex/trading_trading/config/security/JwtUser.java
+++ b/src/main/java/com/sztzjy/forex/trading_trading/config/security/JwtUser.java
@@ -25,7 +25,7 @@ public class JwtUser implements UserDetails {
private String className;
private int majorId;
private String majorName;
- private String collegeId;
+ private int collegeId;
private String collegeName;
private List authorityCodes;
diff --git a/src/main/java/com/sztzjy/forex/trading_trading/config/security/TokenProvider.java b/src/main/java/com/sztzjy/forex/trading_trading/config/security/TokenProvider.java
index 4abe5a9..d2cd9af 100644
--- a/src/main/java/com/sztzjy/forex/trading_trading/config/security/TokenProvider.java
+++ b/src/main/java/com/sztzjy/forex/trading_trading/config/security/TokenProvider.java
@@ -8,10 +8,14 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import java.security.Key;
+import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
+import java.util.Base64;
import java.util.Date;
import java.util.List;
@@ -23,6 +27,8 @@ public class TokenProvider {
private final static String SECRET_ZHIYUN = "zy_wh_mnjy_fp76ckwuczzmb67w0a8x0";
+ private final static String CURRENT_TO_ZHIYUN = "jVzvfoZU_eFN0CJcFARg0K6DlzTLa7oMWB7lV_y2s7bkv2Bem0281wEwlJp5afhsmM-Ynwvh3mAUTpwblGEz1A";
+
/**
* 解析jwtToken
*
@@ -66,7 +72,24 @@ public class TokenProvider {
.claim("classId", jwtUser.getClassId())
.claim("schoolId", jwtUser.getSchoolId())
.claim("username", jwtUser.getUsername())
- .claim("authorityCodes",jwtUser.getAuthorityCodes())
+ .claim("authorityCodes", jwtUser.getAuthorityCodes())
+ .setIssuedAt(new Date(System.currentTimeMillis()))
+ .setExpiration(expiration)
+ .signWith(key, SignatureAlgorithm.HS512)
+ .compact();
+ }
+
+ public static String createZHIYUNToken(JwtUser jwtUser) {
+ Key key = Keys.hmacShaKeyFor(CURRENT_TO_ZHIYUN.getBytes());
+ Date expiration = new Date(System.currentTimeMillis() + EXP_TIME);
+ return Jwts.builder()
+ .claim("userId", jwtUser.getUserId())
+ .claim("roleId", jwtUser.getRoleId())
+ .claim("name", jwtUser.getName())
+ .claim("classId", jwtUser.getClassId())
+ .claim("schoolId", jwtUser.getSchoolId())
+ .claim("username", jwtUser.getUsername())
+ .claim("majorId", jwtUser.getMajorId())
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(expiration)
.signWith(key, SignatureAlgorithm.HS512)
@@ -97,7 +120,7 @@ public class TokenProvider {
jwtUser.setUsername(claims.get("name").toString());
return jwtUser;
} catch (Exception e) {
- throw new UnAuthorizedException("token解析失败");
+ throw new UnAuthorizedException("token解析失败");
}
}
@@ -107,7 +130,36 @@ public class TokenProvider {
// String prefix = "zy_wh_mnjy_";
// String generatedKey = generateKey(prefix);
// System.out.println("Generated Key: " + generatedKey);
- getJWTUserByZhiYun(null);
+// getJWTUserByZhiYun(null);
+
+
+//生成一个新的长度为512字节的随机密钥供智云平台解析token
+// int keyLength = 512; // 根据您的要求进行调整
+// KeyGenerator keyGenerator;
+// try {
+// keyGenerator = KeyGenerator.getInstance("HmacSHA512");
+// keyGenerator.init(keyLength);
+// SecretKey secretKey = keyGenerator.generateKey();
+// byte[] secretBytes = secretKey.getEncoded();
+// String secret = Base64.getUrlEncoder().withoutPadding().encodeToString(secretBytes);
+//
+// System.out.println("Generated Secret: " + secret);
+// } catch (NoSuchAlgorithmException e) {
+// e.printStackTrace();
+// }
+
+ JwtUser user = new JwtUser();
+ user.setUserId("486");
+ user.setRoleId(3);
+ user.setUsername("tzt006");
+ user.setSchoolId(1);
+ user.setSchoolName("天择大学");
+ user.setCollegeId(1);
+ user.setCollegeName("演示学院");
+ user.setMajorId(1);
+ user.setMajorName("产品演示专业");
+ String token = createZHIYUNToken(user);
+ System.out.println(token);
}
public static String generateKey(String prefix) {
@@ -126,6 +178,7 @@ public class TokenProvider {
/**
* 获取当前用户信息
+ *
* @param request request
* @return JwtUser
*/
diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java
index b5e259b..9aca402 100644
--- a/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java
+++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java
@@ -1,6 +1,7 @@
package com.sztzjy.forex.trading_trading.controller;
+import cn.hutool.core.util.IdUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.sztzjy.forex.trading_trading.annotation.Permission;
@@ -8,22 +9,28 @@ import com.sztzjy.forex.trading_trading.annotation.aspect.PermissionType;
import com.sztzjy.forex.trading_trading.config.security.JwtUser;
import com.sztzjy.forex.trading_trading.config.security.TokenProvider;
import com.sztzjy.forex.trading_trading.dto.TrainingBO;
+import com.sztzjy.forex.trading_trading.entity.Member;
import com.sztzjy.forex.trading_trading.entity.Training;
+import com.sztzjy.forex.trading_trading.service.MemberService;
import com.sztzjy.forex.trading_trading.service.TrainingService;
import com.sztzjy.forex.trading_trading.util.ResultEntity;
+import com.sztzjy.forex.trading_trading.util.TzApi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
+import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;
import org.w3c.dom.stylesheets.LinkStyle;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Api(tags = "实训管理")
@RestController
@@ -32,6 +39,7 @@ import java.util.Map;
public class TrainingController {
private final TrainingService trainingService;
+ private final MemberService memberService;
private final HttpServletRequest request;
@@ -40,16 +48,29 @@ public class TrainingController {
@PostMapping("create")
public ResultEntity create(@RequestBody TrainingBO bo) {
JwtUser currentUser = TokenProvider.getJWTUser(request);
- trainingService.create(bo, currentUser);
+ Training training = trainingService.create(bo, currentUser);
+ List