lidongdong
2022-11-01 2cc4ff419e5ad9abdc70556146adb4af4d258af3
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对象
     *
@@ -104,10 +102,6 @@
         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);
        }
        return accessToken;
    }
@@ -148,7 +142,17 @@
            Map<String, Object> resultMap = JSON.parseObject(result, Map.class);
            if (resultMap.containsKey("access_token")) {
                accessToken = resultMap.get("access_token").toString();
                wxXCXTempSend.stringRedisTemplate.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}",  "request_incr",datetime,requestURI);
            //查询 key 是否存在, 不存在返回 1 ,存在的话则自增加1
            wxXCXTempSend.stringRedisTemplate.opsForValue().increment(key, 1);
        } catch (IOException ioe) {
            log.error("小程序http请求异常");
            ioe.printStackTrace();
@@ -158,6 +162,7 @@
    /**
     * 发布消息时重新设置access_token 防止过期
     *
     * @param appId
     * @param appSecret
     * @throws Exception
@@ -180,13 +185,14 @@
    }
    public String getAccessTokenValid(String appId,Integer index) throws Exception {
        if (index % 100 == 0){
        if (index % 1000 == 0) {
            return getAccessToken(appId);
        }else {
            return wxXCXTempSend.stringRedisTemplate.boundValueOps("access_token:access_token:"+appId).get();
        }
    }
    public String getWsAccessToken() throws Exception {
        String accessToken = "0";
        try {
@@ -203,8 +209,10 @@
        }
        return accessToken;
    }
    /**
     * 获取西区社区通微信token
     *
     * @return  西区社区通微信token
     * @throws Exception 异常
     */
@@ -267,8 +275,8 @@
     *
     * @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";