소스 검색

企业微信修改

Qchen 2 년 전
부모
커밋
7e5e88ee39

+ 30 - 12
src/main/java/com/ydtech/modules/admin/service/impl/WechatCpServiceImpl.java

@@ -13,19 +13,20 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysPassword;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.service.*;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysWechatWork;
 import com.ydtech.modules.admin.model.vo.WechatCpBindVo;
 import com.ydtech.security.utils.PasswordUtils;
+import com.ydtech.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
-import me.chanjar.weixin.cp.api.WxCpService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 @Service
@@ -38,16 +39,33 @@ public class WechatCpServiceImpl implements WechatCpService {
 
     private final SysPasswordService sysPasswordService;
 
-    public static final String CORP_ID = "wwfe67d19509d43ec5";
-    public static final String CORP_SECRET = "5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc";
+    @Value("${wechat.cp.corp-id}")
+    private String corpId;
+
+    @Value("${wechat.cp.secret}")
+    private String corpSecret;
+
+    private static final String ACCESS_TOKEN_KEY = "access_token";
+
+    private final StringRedisTemplate redisTemplate;
 
     //  获取accessToken
-    public String getAccessToken() {
-        // 获取access_token
-        String accessTokenUrl = String.format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", CORP_ID, CORP_SECRET);
-        String accessTokenResponse = HttpUtil.get(accessTokenUrl);
-        JSONObject responseTokenJson = JSON.parseObject(accessTokenResponse);
-        return responseTokenJson.getString("access_token");
+    private String fetchAccessToken() throws Exception {
+        String accessTokenUrl = String.format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", corpId, corpSecret);
+        String response = HttpUtil.get(accessTokenUrl);
+        JSONObject jsonObject = JSON.parseObject(response);
+        return jsonObject.getString("access_token");
+    }
+
+    public String getAccessToken() throws Exception {
+        String accessToken = redisTemplate.opsForValue().get(ACCESS_TOKEN_KEY);
+
+        if (StringUtils.isEmpty(accessToken)) {
+            accessToken = fetchAccessToken();
+            // 假设 access_token 有效期为 7200 秒
+            redisTemplate.opsForValue().set(ACCESS_TOKEN_KEY, accessToken, 7000, TimeUnit.SECONDS);
+        }
+        return accessToken;
     }
 
     //  通过 accessToken和code 获取企业微信用户信息
@@ -88,7 +106,7 @@ public class WechatCpServiceImpl implements WechatCpService {
         SysPassword sysPassword = sysPasswordService.getOne(new LambdaQueryWrapper<SysPassword>().eq(SysPassword::getCode, SysPasswordEnum.GENERAL.getCode()));
 
         // 验证密码
-        if (!"admin".equals(userId) && !PasswordUtils.matches(sysPassword.getSalt(), password, sysPassword.getPassword())) {
+        if (!"admin".equals(userId) && PasswordUtils.matches(sysPassword.getSalt(), password, sysPassword.getPassword())) {
             log.info("万能密码登录系统");
         } else if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {
             return HttpResult.error("密码不正确");
@@ -118,7 +136,7 @@ public class WechatCpServiceImpl implements WechatCpService {
                 return loginUser(wechatWork.getUserId());
             } else {
                 // 用户信息验证成功,但尚未绑定
-                return HttpResult.ok(null);
+                return HttpResult.error(null);
             }
         } else {
             // 获取用户信息失败

+ 1 - 1
src/main/resources/application-pre.yml

@@ -164,7 +164,7 @@ wechat:
     componentSecret: 75b7d4cda453b2075dec23f849278bc0
   cp:
     corp-id: wwfe67d19509d43ec5
-    secret: L-JpZMudgJECRU07sNOeBKsSWRQOXEUi_BzdTHR07Vw
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     agent-id: 1000017
 ya:
   callbackUrl: http://www.baoxianzhanggui.com:8080/order/yongAn/updatePolicy

+ 1 - 1
src/main/resources/application-prod.yml

@@ -163,7 +163,7 @@ wechat:
     componentSecret: 75b7d4cda453b2075dec23f849278bc0
   cp:
     corp-id: wwfe67d19509d43ec5
-    secret: L-JpZMudgJECRU07sNOeBKsSWRQOXEUi_BzdTHR07Vw
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     agent-id: 1000017
 ya:
   callbackUrl: http://www.baoxianzhanggui.com:8080/order/yongAn/updatePolicy

+ 1 - 1
src/main/resources/application-test.yml

@@ -182,7 +182,7 @@ wechat:
     componentSecret: 75b7d4cda453b2075dec23f849278bc0
   cp:
     corp-id: wwfe67d19509d43ec5
-    secret: L-JpZMudgJECRU07sNOeBKsSWRQOXEUi_BzdTHR07Vw
+    secret: 5M_5mGONe-t4xCPlwPU-EJt53GiWaUjtbJjY5CR-dgc
     agent-id: 1000017
 
 #================ 永安 ==============#