Jelajahi Sumber

修改获取token

yusm 3 minggu lalu
induk
melakukan
b0ddb2c036

+ 0 - 7
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatAccountController.java

@@ -422,13 +422,6 @@ public class WechatAccountController {
         }else return;
     }
 
-    @RequestMapping("/getUserInfo")
-    public HttpRespMsg getUserInfo(String openId)  {
-        HttpRespMsg msg = new HttpRespMsg();
-        Map<String, Object> userInfo = wechatApiService.getUserInfo(openId);
-        msg.data=userInfo;
-        return msg;
-    }
 
     // 获取用户IP
     @RequestMapping("/getIP")

+ 3 - 8
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatCallbackController.java

@@ -1,6 +1,5 @@
 package com.management.platform.controller;
 
-import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.Custom;
 import com.management.platform.entity.User;
@@ -127,7 +126,7 @@ public class WechatCallbackController {
         String ipAddress = getClientIp(request);
         
         // 获取用户信息
-        Map<String, Object> userInfo = wechatApiService.getUserInfo(openId);
+        Map<String, Object> userInfo = wechatApiService.getUserInfo(openId,salesmanId);//用户的openId,员工的userId
         
         // 保存扫码记录
         WechatQrcodeScan scanRecord = new WechatQrcodeScan();
@@ -165,11 +164,7 @@ public class WechatCallbackController {
                 Custom serviceOne = customService.getOne(new QueryWrapper<Custom>().eq("plate4", openId));
                 if(serviceOne==null) {
                     Custom custom = new Custom();
-                    String cityByIp = getCityByIp(ipAddress);
-                    JSONObject jsonObject = JSONObject.parseObject(cityByIp);
-                    custom.setPlate2(jsonObject.getString("city"));
-                    custom.setPlate3(jsonObject.getString("regionName"));
-                    custom.setPlate4(openId);//用户的openId
+                    custom.setCustomName(openId);//用户的openId
                     custom.setIsDelete(0);
                     custom.setInchargerId(salesmanId);
                     if (StringUtils.isNotEmpty(salesmanId)) {
@@ -196,7 +191,7 @@ public class WechatCallbackController {
             followRecord.setUnfollowTime(LocalDateTime.now());
             followMapper.update(followRecord);
 
-            customService.remove(new QueryWrapper<Custom>().eq("plate4", openId));
+            customService.remove(new QueryWrapper<Custom>().eq("custom_name", openId));
             log.info("用户取消关注成功");
         }
     }

+ 31 - 24
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/WechatApiService.java

@@ -1,29 +1,39 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.management.platform.entity.User;
+import com.management.platform.entity.WechatAccount;
+import com.management.platform.service.CompanyService;
+import com.management.platform.service.UserService;
+import com.management.platform.service.WechatAccountService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
 import java.util.Map;
 
 @Service
 @Slf4j
 public class WechatApiService {
     
-    @Value("${weixin.APP_ID}")
-    private String appId;
-    
-    @Value("${weixin.APP_SECRET}")
-    private String appSecret;
+    @Resource
+    private UserService userService;
+
+    @Resource
+    private CompanyService companyService;
+
+    @Resource
+    private WechatAccountService wechatAccountService;
     
     private final ObjectMapper objectMapper = new ObjectMapper();
     
-    public Map<String, Object> getUserInfo(String openId) {
-        String accessToken = getAccessToken();
+    public Map<String, Object> getUserInfo(String openId,String userId) {
+        String accessToken = getAccessToken(userId);
         if (accessToken == null) {
             return null;
         }
@@ -44,21 +54,18 @@ public class WechatApiService {
         }
     }
     
-    private String getAccessToken() {
-        String url = String.format(
-            "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",
-            appId, appSecret);
-        
-        try (CloseableHttpClient client = HttpClients.createDefault()) {
-            HttpGet request = new HttpGet(url);
-            String response = EntityUtils.toString(client.execute(request).getEntity());
-            Map<String, Object> result = objectMapper.readValue(response, Map.class);
-            log.info("获取企业的token==>"+result);
-            return (String) result.get("access_token");
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.info("获取企业对应的token失败==>"+e.getMessage());
+    private String getAccessToken(String userId) {
+        User user = userService.getById(userId);
+        if (user==null){
+            log.info("获取企业的微信Token时,未获取该用户");
             return null;
+        }else {
+            WechatAccount wechatAccount = wechatAccountService.getOne(new QueryWrapper<WechatAccount>().eq("company_id", user.getCompanyId()));
+            if (wechatAccount==null){
+                log.info("该公司没有配置公众号相关的参数");
+                return null;
+            }
+            return wechatAccountService.getAccessToken(user.getCompanyId(), wechatAccount.getAppId());
         }
     }
 }

+ 0 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/resources/application.yml

@@ -181,5 +181,3 @@ weixin:
      QR_STR_SCENE: QR_STR_SCENE
      QR_LIMIT_SCENE: QR_LIMIT_SCENE
      QR_LIMIT_STR_SCENE: QR_LIMIT_STR_SCENE
-  APP_ID: wx1c1d8fc81bc073a8
-  APP_SECRET: 17ad07f90ee845f99f4c1605647ef755