Browse Source

feat(util): 增强充电工具类功能并优化依赖注入

- 为ChargingUtil添加@Component注解以支持Spring组件扫描
- 修改chargingRequest方法签名,新增tokenRequired参数控制是否添加认证头
- 使用HashMap替换Map.of以支持动态添加请求头
- 在OkHttpUtil中引入Hutool工具库,增强空值判断和集合判空逻辑- 更新TokenManager中的依赖引用,从OkHttpUtil切换至ChargingUtil- 简化TokenManager中获取Token的请求构建过程,复用ChargingUtil方法
- 移除冗余的请求参数构建代码,提升代码可维护性
wzq 1 month ago
parent
commit
bbd4ae2d4f

+ 3 - 1
src/main/java/com/zsElectric/boot/common/util/OkHttpUtil.java

@@ -1,5 +1,7 @@
 package com.zsElectric.boot.common.util;
 
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import okhttp3.*;
@@ -78,7 +80,7 @@ public class OkHttpUtil {
                 .url(url)
                 .post(formBodyBuilder.build());
 
-        if (headers != null) {
+        if (MapUtil.isNotEmpty(headers)) {
             headers.forEach(requestBuilder::addHeader);
         }
 

+ 8 - 4
src/main/java/com/zsElectric/boot/common/util/electric/ChargingUtil.java

@@ -9,11 +9,14 @@ import com.zsElectric.boot.common.util.OkHttpUtil;
 import com.zsElectric.boot.common.util.SequenceGenUtil;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
 @Slf4j
+@Component
 public class ChargingUtil {
 
     @Resource
@@ -21,10 +24,11 @@ public class ChargingUtil {
     @Resource
     private OkHttpUtil okHttpUtil;
 
-    public JsonObject chargingRequest(String url, Map<String,Object> queryParms) {
-        Map<String, String> headers = Map.of(
-                "Authorization", "Bearer " + tokenManager.getValidAccessToken()
-        );
+    public JsonObject chargingRequest(String url, Map<String,Object> queryParms,boolean tokenRequired) {
+        Map<String, String> headers = new HashMap<>();
+        if(tokenRequired){
+            headers.put("Authorization", "Bearer " + tokenManager.getValidAccessToken());
+        }
         try {
             RequestParmsEntity requestParms = new RequestParmsEntity();
             SequenceGenUtil.SequenceResult result = SequenceGenUtil.generate();

+ 2 - 12
src/main/java/com/zsElectric/boot/common/util/electric/TokenManager.java

@@ -30,7 +30,7 @@ import java.util.concurrent.locks.ReentrantLock;
 public class TokenManager {
 
     @Resource
-    private OkHttpUtil okHttpUtil;
+    private ChargingUtil chargingUtil;
     
     private static final String TOKEN_KEY = "api:local:accessToken";
     private static final String TOKEN_REFRESH_LOCK_KEY = "api:token:refresh:lock";
@@ -157,17 +157,7 @@ public class TokenManager {
                     .setOperatorID(ConnectivityConstants.OPERATOR_ID)
                     .setOperatorSecret(ConnectivityConstants.OPERATOR_SECRET);
 
-            RequestParmsEntity requestParms = new RequestParmsEntity();
-            SequenceGenUtil.SequenceResult result = SequenceGenUtil.generate();
-
-            requestParms
-                    .setOperatorID(ConnectivityConstants.OPERATOR_ID)
-                    .setData(AESCryptoUtil.decrypt(queryTokenParms.toString(),ConnectivityConstants.DATA_SECRET,ConnectivityConstants.DATA_SECRET_IV))
-                    .setTimeStamp(result.getTimestamp())
-                    .setSeq(result.getSequence())
-                    .setSig(HmacMD5Util.genSign(requestParms.getOperatorID(),requestParms.getData(),requestParms.getTimeStamp(),requestParms.getSeq(),ConnectivityConstants.SIG_SECRET));
-
-            JsonObject response = okHttpUtil.doPostForm(ConnectivityConstants.QUERY_TOKEN, BeanUtil.beanToMap(requestParms), null);
+            JsonObject response = chargingUtil.chargingRequest(ConnectivityConstants.QUERY_TOKEN, BeanUtil.beanToMap(queryTokenParms), false);
 
             if (Objects.isNull(response)) {
                 log.error("调用第三方接口获取Token失败");