diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/LoginServiceImpl.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/LoginServiceImpl.java index 1a5d73b..f353331 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/LoginServiceImpl.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/LoginServiceImpl.java @@ -6,6 +6,7 @@ import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -98,13 +99,7 @@ public class LoginServiceImpl implements LoginService { String res = LoginUtil.checkSessionKey(accessTokenService.getAccessToken(), openid, hmac.digestHex("")); JSONObject jo = JSONUtil.parseObj(res); if (jo.getInt("errcode") == 0) { - //Map m = tokenBuilder(wuid); - String wxToken= String.valueOf(redisUtil.get(HDConstant.wxToken + wuid)); - //刷新token的过期时间 - redisUtil.set(HDConstant.wxToken + wuid, wxToken, tokenExpHour * 3600L); - Map m = new HashMap(); - m.put("wuid", wuid); - m.put("wxToken", wxToken); + Map m = tokenBuilder(wuid); return new Result>().success(m); } return new Result>().error(CodeMsg.WECHAT_SERRION_ERROR, jo); @@ -137,10 +132,16 @@ public class LoginServiceImpl implements LoginService { @Override public Map tokenBuilder(String wuid) { - String randomStr = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_FORMATTER); - String wxToken = XCXUtil.wechatToken(wuid, randomStr); + //获取redis中的token + String wxToken = ((redisUtil.hasKey(HDConstant.wxToken + wuid) && !ObjectUtils.isEmpty(redisUtil.get(HDConstant.wxToken + wuid))) ? String.valueOf(redisUtil.get(HDConstant.wxToken + wuid)) : null); + if(StringUtils.isEmpty(wxToken)) { + String randomStr = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_FORMATTER); + wxToken = XCXUtil.wechatToken(wuid, randomStr); + redisUtil.set(HDConstant.tokenRandomStr + wuid, randomStr); + } + //刷新token redisUtil.set(HDConstant.wxToken + wuid, wxToken, tokenExpHour * 3600L); - redisUtil.set(HDConstant.tokenRandomStr + wuid, randomStr); + Map m = new HashMap(); m.put("wuid", wuid); m.put("wxToken", wxToken);