From 179c4d64313c9b7572778da4aaaf6c6584fe457d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 20 五月 2025 23:48:08 +0800
Subject: [PATCH] 修改文件上传类型限制

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java |   87 +++++++++++++++++++++++--------------------
 1 files changed, 46 insertions(+), 41 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java
index 7bf6658..904c51c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxXCXTempSend.java
@@ -1,23 +1,16 @@
 package com.panzhihua.common.utlis;
 
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.common.constants.SecurityConstants;
 import com.panzhihua.common.controller.BaseController;
-import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.user.SysAppConfigVO;
 import com.panzhihua.common.redis.RedisUtils;
-import com.panzhihua.common.service.user.UserService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileItemFactory;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.http.entity.ContentType;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.ValueOperations;
@@ -25,14 +18,18 @@
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.panzhihua.common.constants.SecurityConstants;
-
-import lombok.extern.slf4j.Slf4j;
-
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 @Component
@@ -54,6 +51,7 @@
     private RedisUtils redisUtils;
 
     private static WxXCXTempSend wxXCXTempSend;
+
     /**
      * url转变为 MultipartFile对象
      *
@@ -65,7 +63,7 @@
     private static MultipartFile createFileItem(String url, String fileName) throws Exception {
         FileItem item = null;
         try {
-            HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
+            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
             conn.setReadTimeout(30000);
             conn.setConnectTimeout(30000);
             // 设置应用程序要从网络连接读取数据
@@ -77,7 +75,7 @@
                 FileItemFactory factory = new DiskFileItemFactory(16, null);
                 String textFieldName = "uploadfile";
                 item =
-                    factory.createItem(textFieldName, ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
+                        factory.createItem(textFieldName, ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
                 OutputStream os = item.getOutputStream();
 
                 int bytesRead = 0;
@@ -101,31 +99,24 @@
      * @return
      */
     public String getAccessToken() throws Exception {
-         String accessToken = "";
+        String accessToken = "";
         String appId = this.getAppId();
-        accessToken=wxXCXTempSend.stringRedisTemplate.boundValueOps("access_token:access_token:"+ appId).get();
-        if (appId.equals(APP_ID)){
-            accessToken = validAccessToken(accessToken, appId,APP_SECRET);
-        }
-
+        accessToken = wxXCXTempSend.stringRedisTemplate.boundValueOps("access_token:access_token:" + appId).get();
         return accessToken;
     }
 
 
     public String getAccessToken(String appId) throws Exception {
         String accessToken = "";
-        accessToken=wxXCXTempSend.stringRedisTemplate.boundValueOps("access_token:access_token:"+appId).get();
-        if (appId.equals(APP_ID)){
-            accessToken = validAccessToken(accessToken, appId,APP_SECRET);
-        }
+        accessToken = wxXCXTempSend.stringRedisTemplate.boundValueOps("access_token:access_token:" + appId).get();
         return accessToken;
     }
 
-    private String validAccessToken(String accessToken, String appId,String appSecret) throws Exception {
+    private String validAccessToken(String accessToken, String appId, String appSecret) throws Exception {
         if (StrUtil.isEmpty(accessToken)) {
             //重新获取并设置到缓存 该方法暂时只用在花城
             accessToken = getAppAccessToken(appId, appSecret);
-            wxXCXTempSend.stringRedisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken, EXPIRE_TIME,TimeUnit.HOURS);
+            wxXCXTempSend.stringRedisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken, EXPIRE_TIME, TimeUnit.HOURS);
         } else {
             String accessTokenUrl = WX_CALL_BACK + accessToken;
             String result = HttpClientUtil.httpGet(accessTokenUrl, null, null);
@@ -133,33 +124,45 @@
             //如果Access_token过期也重新获取
             if (resultMap.containsKey("errcode")) {
                 accessToken = getAppAccessToken(appId, appSecret);
-                wxXCXTempSend.stringRedisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken, EXPIRE_TIME,TimeUnit.HOURS);
+                wxXCXTempSend.stringRedisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken, EXPIRE_TIME, TimeUnit.HOURS);
             }
         }
         return accessToken;
     }
 
-    public String getAppAccessToken(String appId,String appSecret) throws Exception {
+    public String getAppAccessToken(String appId, String appSecret) throws Exception {
         String accessToken = "0";
         try {
             log.info("获取微信token参数:appid=" + appId + ",appSecret=" + appSecret);
             String accessTokenUrl = ACCESS_TOKEN_URL + "&appid=" + appId + "&secret=" + appSecret;
             String result = HttpClientUtil.httpGet(accessTokenUrl, null, null);
             Map<String, Object> resultMap = JSON.parseObject(result, Map.class);
+            StringRedisTemplate redisTemplate = wxXCXTempSend.stringRedisTemplate;
             if (resultMap.containsKey("access_token")) {
                 accessToken = resultMap.get("access_token").toString();
+                redisTemplate.opsForValue().set("access_token:access_token:" + appId, accessToken);
             }
+            HttpServletRequest request = ServletUtils.getRequest();
+            String requestURI = request.getRequestURI();
+            //加上时间戳
+            String datetime = new SimpleDateFormat("yyyyMMdd").format(new Date());
+            //这里是 Redis key的前缀,如: sys:tabieId:表名  如果不需要去掉表名也可以
+            String key = MessageFormat.format("{0}:{1}:{2}",  "access_token_request_incr",datetime,requestURI);
+            //查询 key 是否存在, 不存在返回 1 ,存在的话则自增加1
+            redisTemplate.opsForValue().increment(key, 1);
+
         } catch (IOException ioe) {
             log.error("小程序http请求异常");
             ioe.printStackTrace();
         }
         return accessToken;
     }
+
     public String getWsAccessToken() throws Exception {
         String accessToken = "0";
         try {
 //            log.info("获取微信token参数:appid=" + APP_ID + ",appSecret=" + APP_SECRET);
-            String accessTokenUrl = ACCESS_TOKEN_URL + "&appid=wx98d62711dfbd8425"+ "&secret=97a2a10b990c2774ed279724337b5337";
+            String accessTokenUrl = ACCESS_TOKEN_URL + "&appid=wx98d62711dfbd8425" + "&secret=97a2a10b990c2774ed279724337b5337";
             String result = HttpClientUtil.httpGet(accessTokenUrl, null, null);
             Map<String, Object> resultMap = JSON.parseObject(result, Map.class);
             if (resultMap.containsKey("access_token")) {
@@ -171,9 +174,11 @@
         }
         return accessToken;
     }
+
     /**
      * 获取西区社区通微信token
-     * @return  西区社区通微信token
+     *
+     * @return 西区社区通微信token
      * @throws Exception 异常
      */
     public String getXQAppAccessToken() throws Exception {
@@ -206,7 +211,7 @@
                 mediaId = getAppMediaId(accessToken);
                 valueOperations.set(SecurityConstants.APPLETS_ACCESS_MEDIA_ID, mediaId);
                 valueOperations.set(SecurityConstants.APPLETS_ACCESS_MEDIA_ID_TIME,
-                    System.currentTimeMillis() + 259000000 + "");
+                        System.currentTimeMillis() + 259000000 + "");
             } else {
                 mediaId = valueOperations.get(SecurityConstants.APPLETS_ACCESS_MEDIA_ID);
             }
@@ -214,7 +219,7 @@
             mediaId = getAppMediaId(accessToken);
             valueOperations.set(SecurityConstants.APPLETS_ACCESS_MEDIA_ID, mediaId);
             valueOperations.set(SecurityConstants.APPLETS_ACCESS_MEDIA_ID_TIME,
-                System.currentTimeMillis() + 259000000 + "");
+                    System.currentTimeMillis() + 259000000 + "");
         }
         return mediaId;
     }
@@ -235,15 +240,15 @@
      *
      * @param file
      * @return
-     * @author yixiu
      * @throws Exception
+     * @author yixiu
      */
     public String uploadFile(MultipartFile file, String access_token) throws Exception {
         String url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=" + access_token + "&type=image";
         String result = null;
         String fileName = file.getOriginalFilename();
         URL urlObj = new URL(url);
-        HttpURLConnection con = (HttpURLConnection)urlObj.openConnection();
+        HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
         con.setRequestMethod("POST");
         con.setDoInput(true);
         con.setDoOutput(true);
@@ -315,8 +320,8 @@
     public void init() {
         wxXCXTempSend = this;
         wxXCXTempSend.redisTemplate = this.redisTemplate;
-        wxXCXTempSend.stringRedisTemplate=this.stringRedisTemplate;
-        wxXCXTempSend.redisUtils=this.redisUtils;
+        wxXCXTempSend.stringRedisTemplate = this.stringRedisTemplate;
+        wxXCXTempSend.redisUtils = this.redisUtils;
 
     }
 

--
Gitblit v1.7.1