From 6c0d8fb2db64b8982c4162c7527e72841547110b Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 27 十二月 2024 15:28:50 +0800
Subject: [PATCH] 修改推单规则

---
 DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java |   90 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 64 insertions(+), 26 deletions(-)

diff --git a/DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java b/DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
index 2ce43ad..8112738 100644
--- a/DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
+++ b/DriverAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
@@ -1,7 +1,12 @@
 package com.stylefeng.guns.modular.system.util;
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.stylefeng.guns.core.util.ToolUtil;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.http.entity.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,10 +18,13 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import java.nio.charset.Charset;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 微信工具类
@@ -32,6 +40,9 @@
 
     @Autowired
     private RestTemplate restTemplate;
+    
+    @Autowired
+    private RedisUtil redisUtil;
 
 
 
@@ -110,7 +121,32 @@
         String ticket = JSONObject.parseObject(backData).getString("ticket");
         return  ticket;
     }
-
+    
+    
+    public String getWxAppletsAccessToken(){
+        String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
+        if(ToolUtil.isNotEmpty(wxAppletsAccessToken)){
+            return wxAppletsAccessToken;
+        }
+        String appletsAccessToken = getAppletsAccessToken();
+        redisUtil.setStrValue("wxAppletsAccessToken", appletsAccessToken, 7200);
+        return appletsAccessToken;
+    }
+    
+    /**
+     * 获取微信小程序token
+     * @return
+     */
+    public String getAppletsAccessToken() {
+        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret;
+        HttpRequest get = HttpUtil.createGet(url);
+        HttpResponse response = get.execute();
+        if(response.getStatus() != 200){
+            return "";
+        }
+        JSONObject jsonObject = JSON.parseObject(response.body());
+        return jsonObject.getString("access_token");
+    }
 
     /***
      * 获取acess_token (公众号)
@@ -118,7 +154,7 @@
      * @return
      */
     public String getAccessToken(){
-        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc89ecab90d24edd8&secret=bca863174d22736a4a9758a67484947e";
+        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxAppletsAppid + "&secret=" + wxAppletsAppSecret;
         String backData = restTemplate.getForObject(url, String.class);
         String accessToken = JSONObject.parseObject(backData).getString("access_token");
         return accessToken;
@@ -167,32 +203,34 @@
     }
 
     public String rid(String path, Integer driverId) throws Exception{
-        // 获取access_token
-        String accessToken = getAccessToken();
-        // 替换CREATE_CODE_URL
-        String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token="+accessToken;
-        // 发送请求
-        String stringApiResult = null;
+        InputStream release = getwxacodeunlimit(path, "driverId=" + driverId, EnvVersion.RELEASE.getVersion());
+        String png = ObsUploadUtil.obsUpload("png", release);
+        return png;
+    }
+    
+    
+    
+    public InputStream getwxacodeunlimit(String page, String scene, String envVersion) throws Exception{
         try {
-            HashMap<String, String> map = new HashMap<>();
-            map.put("path", path+"?driverId="+driverId);
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_JSON);
-            HttpEntity requestEntity = new HttpEntity(map, headers);
-            ResponseEntity<byte[]> rep = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class);
-            byte[] bytes = rep.getBody();
-            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
-            MultipartFile file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), byteArrayInputStream);
-//            ResultUtil resultUtil = userInfoController.uploadImg(file, null, null);
-            String s = OssUploadUtil.ossUpload(file,driverId);
-            System.err.println("===url"+s);
-//            StringBuilder sb = new StringBuilder(stringApiResult);
-//            stringApiResult = sb.toString();
-            return s;
-
-        } catch (Exception e) {
+            String wxAppletsAccessToken = getWxAppletsAccessToken();
+            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + wxAppletsAccessToken;
+            Map<String, Object> param = new HashMap<>();
+            param.put("scene", scene);
+            param.put("page", page);
+            param.put("env_version", envVersion);
+            HttpHeaders httpHeaders = new HttpHeaders();
+            MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
+            httpHeaders.setContentType(type);
+            HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
+            ResponseEntity<byte[]> entity  = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
+            byte[] body = entity.getBody();
+            String s = new String(body, Charset.defaultCharset());
+            System.err.println(s);
+            return new ByteArrayInputStream(body);
+        }catch (Exception e){
+            e.printStackTrace();
         }
-        return stringApiResult;
+        return null;
     }
 
 }

--
Gitblit v1.7.1