wuwen 5 年之前
父节点
当前提交
e0deea8555

+ 42 - 0
src/main/java/com/ssj/api/controller/ApiWxController.java

@@ -0,0 +1,42 @@
+package com.ssj.api.controller;
+
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ssj.api.security.annotation.IgnoreSecurity;
+import com.ssj.framework.core.common.controller.BaseController;
+import com.ssj.framework.core.security.manager.TokenManager;
+import com.ssj.framework.core.util.ResponseConstant;
+import com.ssj.framework.core.util.ResponseEntity;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(value = "微信相关的", tags = "微信相关的")
+@RestController
+@RequestMapping("/api/wx")
+public class ApiWxController extends BaseController {
+	
+	@Autowired
+	private TokenManager tokenManager;
+	
+	@IgnoreSecurity
+	@RequestMapping(value = "/accessToken")
+    @ApiOperation(value = "获取accessToken接口",  notes = "获取accessToken接口")
+    public ResponseEntity getAccessToken() {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+        	Map<String, Object> data =tokenManager.getSSJAccessTokenAndTime();
+            responseEntity.success(data, "获取accessToken成功");
+        } catch (Exception e) {
+            logger.error("获取accessToken接口", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+	
+	
+}

+ 2 - 0
src/main/java/com/ssj/framework/core/security/manager/TokenManager.java

@@ -150,6 +150,8 @@ public interface TokenManager {
      * @return
      */
     public String getSSJAccessToken();
+    public Map<String,Object> getSSJAccessTokenAndTime();
+    
     /**
      * 获取私塾家微信公众号的JSaccessToken
      * @return

+ 26 - 4
src/main/java/com/ssj/framework/core/security/manager/impl/RedisTokenManager.java

@@ -336,7 +336,7 @@ public class RedisTokenManager implements TokenManager {
     }
 
     private String get(String key) {
-
+    	
         return jedisPool.get(key);
 
     }
@@ -352,15 +352,16 @@ public class RedisTokenManager implements TokenManager {
 
     }
 
-    private String set(String key, String value, int expireSeconds) {
+    private Long ttl(String key) {
+        return jedisPool.ttl(key);
+    }
 
+    private String set(String key, String value, int expireSeconds) {
         return jedisPool.setex(key, expireSeconds, value);
-
     }
 
     public boolean exists(String key) {
         return jedisPool.exists(key);
-
     }
 
     private void expire(String key, int seconds) {
@@ -791,4 +792,25 @@ public class RedisTokenManager implements TokenManager {
     public void refreshExpireTime(String key, int expireSeconds) {
         jedisPool.expire(key, expireSeconds);
     }
+
+	@Override
+	public Map<String,Object> getSSJAccessTokenAndTime() {
+		Map<String,Object> data=new HashMap<String, Object>();
+		String accessToken=get(SSJ_WX_TOKEN);
+        if(accessToken ==null){
+            int seconds  = 0;
+            try {
+                JSONObject json =new WeixinUtil().getAccessToken();
+                accessToken=json.getString("access_token");
+                seconds=json.getInteger("expires_in");
+            } catch (Exception e) {
+                logger.info("发生异常SSJAccessToken:" + e.getMessage());
+                e.printStackTrace();
+            }
+            createSSJAccessToken(accessToken,seconds);
+        }
+        data.put("access_token", accessToken);
+        data.put("expires_in", jedisPool.ttl(SSJ_WX_TOKEN).intValue());
+        return data;
+	}
 }