From c3dcca22238302f2a58f539418b3d7206ee8d381 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 25 Jul 2024 10:08:02 +0800
Subject: [PATCH] 后台
---
src/main/java/cc/mrbird/febs/common/advise/MyHttpInputMessage.java | 37 +++++++++
src/main/java/cc/mrbird/febs/mall/quartz/SystemInit.java | 44 +++++++++++
src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java | 2
src/main/java/cc/mrbird/febs/common/annotation/EncryptEnable.java | 15 +++
src/main/java/cc/mrbird/febs/common/advise/MyRequestBodyAdvise.java | 49 ++++++++++++
src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java | 2
src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 8 ++
src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java | 55 +++++++++++++
src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java | 2
src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java | 7 +
10 files changed, 221 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/advise/MyHttpInputMessage.java b/src/main/java/cc/mrbird/febs/common/advise/MyHttpInputMessage.java
new file mode 100644
index 0000000..46c2ec0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/advise/MyHttpInputMessage.java
@@ -0,0 +1,37 @@
+package cc.mrbird.febs.common.advise;
+
+import cc.mrbird.febs.common.utils.AppContants;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpInputMessage;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author wzy
+ * @date 2022-06-14
+ **/
+public class MyHttpInputMessage implements HttpInputMessage {
+
+ private InputStream body;
+
+ @Override
+ public InputStream getBody() throws IOException {
+ return body;
+ }
+
+ @Override
+ public HttpHeaders getHeaders() {
+ return null;
+ }
+
+ public MyHttpInputMessage(InputStream body) {
+ RSA rsa = new RSA(AppContants.REQ_PRIVATE_KEY, AppContants.REQ_PUBLIC_KEY);
+ String read = IoUtil.read(body, "utf-8");
+ String decrypt = rsa.decryptStr(read, KeyType.PrivateKey);
+ this.body = IoUtil.toStream(decrypt.getBytes());
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/advise/MyRequestBodyAdvise.java b/src/main/java/cc/mrbird/febs/common/advise/MyRequestBodyAdvise.java
new file mode 100644
index 0000000..ddeb65a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/advise/MyRequestBodyAdvise.java
@@ -0,0 +1,49 @@
+package cc.mrbird.febs.common.advise;
+
+import cc.mrbird.febs.common.utils.AppContants;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.HttpInputMessage;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice;
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+
+/**
+ * @author wzy
+ * @date 2022-06-14
+ **/
+@ControllerAdvice
+public class MyRequestBodyAdvise implements RequestBodyAdvice {
+
+ @Value("${system.debug}")
+ private boolean isDebug;
+
+ @Override
+ public boolean supports(MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
+ return true;
+ }
+
+ @Override
+ public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) throws IOException {
+
+ if(!AppContants.ENCRYPT_METHOD.contains(methodParameter.getMethod().getName()) || isDebug) {
+ return inputMessage;
+ }
+
+ return new MyHttpInputMessage(inputMessage.getBody());
+ }
+
+ @Override
+ public Object afterBodyRead(Object body, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
+ return body;
+ }
+
+ @Override
+ public Object handleEmptyBody(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
+ return o;
+ }
+
+}
diff --git a/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java b/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
new file mode 100644
index 0000000..a398ae5
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/advise/MyResponseBodyAdvise.java
@@ -0,0 +1,55 @@
+package cc.mrbird.febs.common.advise;
+
+import cc.mrbird.febs.common.utils.AppContants;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+/**
+ * @author wzy
+ * @date 2022-06-14
+ **/
+@ControllerAdvice
+public class MyResponseBodyAdvise implements ResponseBodyAdvice {
+
+ @Value("${system.debug}")
+ private boolean isDebug;
+
+ @Override
+ public boolean supports(MethodParameter methodParameter, Class aClass) {
+ return true;
+ }
+
+ @Override
+ public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
+ String name = methodParameter.getMethod().getName();
+ if("findPlatformBannerList".equals(name)){
+ return o;
+ }
+ if("newsDetails".equals(name)){
+ return o;
+ }
+ if("findNews".equals(name)){
+ return o;
+ }
+ if("findNewsInPage".equals(name)){
+ return o;
+ }
+ if("findNewsInfoCategory".equals(name)){
+ return o;
+ }
+ if (!AppContants.ENCRYPT_METHOD.contains(name)) {
+ return o;
+ }
+
+ RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY);
+ return rsa.encryptBase64(JSONObject.toJSONString(o), KeyType.PublicKey);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/annotation/EncryptEnable.java b/src/main/java/cc/mrbird/febs/common/annotation/EncryptEnable.java
new file mode 100644
index 0000000..658ca37
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/annotation/EncryptEnable.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.common.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author wzy
+ * @date 2022-06-14
+ **/
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EncryptEnable {
+}
diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index 608974a..a10f940 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -1,9 +1,17 @@
package cc.mrbird.febs.common.utils;
import java.math.BigDecimal;
+import java.util.LinkedList;
public class AppContants {
+ public static final String REQ_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1cHrcMpXoKNC8rjAa/jAbgU2bhIBmJmn6iYDfqt0Him/p2s5F0L9nfzZOLYlPq3z12zvXl9IgThhtLIBLi86RPW0ljuwpTvIZz9O36Zae9eMk5bMNsFEFsxg1IOLIM2Oc4ffNvGL58Uupp9RL5NCN1MRQyY61ISy7H2VRTznoJQIDAQAB";
+ public static final String REQ_PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVwetwylego0LyuMBr+MBuBTZuEgGYmafqJgN+q3QeKb+nazkXQv2d/Nk4tiU+rfPXbO9eX0iBOGG0sgEuLzpE9bSWO7ClO8hnP07fplp714yTlsw2wUQWzGDUg4sgzY5zh9828YvnxS6mn1Evk0I3UxFDJjrUhLLsfZVFPOeglAgMBAAECgYAPKWWS5gVB37tFsRajAs+5VK5MCyABqT8c6QWkay5KNYbRl2+6RM3h068RjFuXlUB9eQMAqpasDWqcIOZdqcKqmxm0ILF2zfPzJr4RaQNSNwDCVrKEeaDtrZQcq/0ygaNDF9y203UMHT0dfEQSGp/xkjTgXNsOuC9iLM56XScOVwJBAPOZLbrCi0h4PL7g3rWsCw8/aN6ehkJ3iTDgjYpdBwJOJSyxV0qi0xmDthGqPd99Kvc14u1jy3ghpm1SAEunrj8CQQC+rS6qajIkK7NiRmX43chDhgMPGo0UFHbmHyYBb1Eyrxu1MNWQEh221p54GsB2HqAGRhxxQ98Ds2S26Au7QpibAkA2nQAAn/8kFzjfPoEPz+uG1puHVZkaK7yJRb7V53dbz/NLqtK8O/cCAGKAYV+PzHsmg2FGAZqrazfpyHmifIx3AkBnFau/+A/JnFKr09F3XTfSwZXPyZPyAipRuQ9MAUmNtDuvloovDIxB9//OgPACLAZpvefMmFvuXUMa25LUF2n3AkBGb+vO+69NSyQM2SHKZ9fUrxx9ZPhupNt/TXNL9OMEQiLaHCYgg0tfcojGe3QjBCA6wVG+dCyZUcv5OwiW23pI";
+ public static final String RESP_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcgj54n3XV+x2Df8Hscqsbd3BQiqBNf/pQiL+4vhKaPN8ZcG0Xreq018hl+yQrOaqYNVLwvi7gfkXpb/G2TxMEnC5rtAeWsMA5mPeePe+Cg+mJ/yXR4tlk/d90L5g7PTxalH50HdCoXwFBenktitKrsDfQzi1+VCHBGUhPUjsJHQIDAQAB";
+ public static final String RESP_PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANyCPnifddX7HYN/wexyqxt3cFCKoE1/+lCIv7i+Epo83xlwbRet6rTXyGX7JCs5qpg1UvC+LuB+Relv8bZPEwScLmu0B5awwDmY954974KD6Yn/JdHi2WT933QvmDs9PFqUfnQd0KhfAUF6eS2K0quwN9DOLX5UIcEZSE9SOwkdAgMBAAECgYAt52Mv4yo5qHQFavQoz9o09pFIAwPJ/mlSmJUo1VC0ERX0isX7FvZ0PTN3n2dxJCkSVI92lHDXxRGyvd4YsK9pdErGVL2DecbbER7069y94g/uHsYq15skzLlyUNhyu2FOUCsVFy+M/C0qk14z/xG1ze3GWNHP1oc1leAYpoWmAQJBAPXxRvYTxmZAFv3J4pcf/FXqmUXdbJI5sHWXe6Pcs+rIuil5ePqX6AQBoQ5PalYhe5/kKzr7Gy6GSzlpztuOV50CQQDlhrTNytQdDCNIOL8uw3t4D8mDGuslPcRoykmaCQhd4NvaqLZrBS8k+TuS2+v5ryng3HhcYjR0h1MHHG69En+BAkEAzt2G5mxzsIWv0QACi0LoKAwPp+g67jN/7SjhYk69Nnpnu4Lk80LacKQ+J588vf2j0jVE93NGxbdHhp8s0xfDMQJBAJFlOqVeRe28oaD/aYRLCqyse39Ujv6BWSj0c5li/WzSoxKpaxzyJMIsK2PFcn8xSbsKjigfgZELpDnN9gxJaoECQCn+tZB0g9WJMaGNCMdlStPHAO2ajS1HY6BV5Xq13hixAdp5bLzbg0GrY25MrpTCFBEqCx+7F4cYUvVazLuAK6g=";
+
+ public static final LinkedList<String> ENCRYPT_METHOD = new LinkedList<>();
+
/**
* 系统用户
*/
diff --git a/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java b/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java
index f62a614..5345545 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java
@@ -5,6 +5,9 @@
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
+import java.lang.annotation.Annotation;
+import java.util.Map;
+
/**
* Spring Context 工具类
*
@@ -44,4 +47,8 @@
return applicationContext.getType(name);
}
+ public static Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> aclazz) {
+ return applicationContext.getBeansWithAnnotation(aclazz);
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java
index e9d0a85..fa025db 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.controller;
+import cc.mrbird.febs.common.annotation.EncryptEnable;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.service.GameService;
@@ -19,6 +20,7 @@
* @date 2021-09-16
**/
@Slf4j
+@EncryptEnable
@RestController
@CrossOrigin("*")
@RequestMapping(value = "/api/gameOwner")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
index c45e368..7b002b3 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.controller;
+import cc.mrbird.febs.common.annotation.EncryptEnable;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.service.GameService;
@@ -19,6 +20,7 @@
* @date 2021-09-16
**/
@Slf4j
+@EncryptEnable
@RestController
@CrossOrigin("*")
@RequestMapping(value = "/api/gamePlayer")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
index 40fe4a9..248b6b3 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.controller;
+import cc.mrbird.febs.common.annotation.EncryptEnable;
import cc.mrbird.febs.common.annotation.Limit;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
@@ -25,6 +26,7 @@
* @date 2021-09-16
**/
@Slf4j
+@EncryptEnable
@CrossOrigin("*")
@RequiredArgsConstructor
@RestController
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/SystemInit.java b/src/main/java/cc/mrbird/febs/mall/quartz/SystemInit.java
new file mode 100644
index 0000000..b9db8a2
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/SystemInit.java
@@ -0,0 +1,44 @@
+package cc.mrbird.febs.mall.quartz;
+
+import cc.mrbird.febs.common.annotation.EncryptEnable;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.SpringContextUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Method;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2022-06-09
+ **/
+@Slf4j
+@Component
+public class SystemInit implements CommandLineRunner {
+
+// @PostConstruct
+// public void init() {
+//
+// }
+
+ @Override
+ public void run(String... args) throws Exception {
+ Map<String, Object> encryptBeans = SpringContextUtil.getBeansWithAnnotation(EncryptEnable.class);
+ if (encryptBeans.isEmpty()) {
+ return;
+ }
+
+ for (Map.Entry<String, Object> entry : encryptBeans.entrySet()) {
+ Method[] methods = entry.getValue().getClass().getMethods();
+ if (methods.length == 0) {
+ continue;
+ }
+
+ for (Method method : methods) {
+ AppContants.ENCRYPT_METHOD.add(method.getName());
+ }
+ }
+ }
+}
--
Gitblit v1.9.1