Browse Source

[TOKEN][修改]:token更新

release
Stormeye Wu 7 years ago
parent
commit
2421ecd6fa
6 changed files with 88 additions and 12 deletions
  1. +4
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java
  2. +10
    -0
      mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml
  3. +3
    -0
      mlWechatOpen/src/main/java/com/iformall/controller/WechatAuthController.java
  4. +9
    -6
      mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java
  5. +49
    -0
      mlWechatOpen/src/main/java/com/iformall/schedule/AppAccessTokenSchedule.java
  6. +13
    -6
      mlWechatOpen/src/main/java/com/iformall/service/wechat/WxOpenInRedisDBConfigStorage.java

+ 4
- 0
mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java View File

@@ -9,6 +9,10 @@ public interface WxAuthorizerInfoMapper extends CommonMapper<WxAuthorizerInfo, L

List<WxAuthorizerInfo> findList(WxAuthorizerInfo wxAuthorizerInfo);

List<WxAuthorizerInfo> findWeappList();

List<WxAuthorizerInfo> findWxMpList();

List<WxWeappInfo> findVoList(WxWeappInfo wxWeappInfo);

int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo);


+ 10
- 0
mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml View File

@@ -119,6 +119,16 @@
<include refid="dynamicWhereConditions" />
</select>

<select id="findWeappList" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_authorizer_info
where type = 1 or type = 2
</select>

<select id="findWxMpList" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_authorizer_info
where type = 3 or type = 4
</select>

<update id="updateReleaseInfo" parameterType="com.iformall.domain.po.WxAuthorizerInfo" >
update wx_authorizer_info
set `current_version` = #{currentVersion}, `current_desc` = #{currentDesc}, `release_time` = #{releaseTime}, `update_time` = #{updateTime}


+ 3
- 0
mlWechatOpen/src/main/java/com/iformall/controller/WechatAuthController.java View File

@@ -75,6 +75,9 @@ public class WechatAuthController {
setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias());
setHeadImg(openAuthorizerInfoResult.getAuthorizerInfo().getHeadImg());
setQrcodeUrl(openAuthorizerInfoResult.getAuthorizerInfo().getQrcodeUrl());
setRefreshToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerRefreshToken());
setAccessToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAccessToken());
setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + openAuthorizerInfoResult.getAuthorizationInfo().getExpiresIn()*1000)));
setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode());
setAuthTime(new Date());
}


+ 9
- 6
mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java View File

@@ -129,6 +129,9 @@ public class WechatCalllbackController extends BaseController {
setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias());
setHeadImg(openAuthorizerInfoResult.getAuthorizerInfo().getHeadImg());
setQrcodeUrl(openAuthorizerInfoResult.getAuthorizerInfo().getQrcodeUrl());
setRefreshToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerRefreshToken());
setAccessToken(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAccessToken());
setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + openAuthorizerInfoResult.getAuthorizationInfo().getExpiresIn()*1000)));
setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode());
setAuthTime(new Date());
}
@@ -137,7 +140,7 @@ public class WechatCalllbackController extends BaseController {
logger.error(e.getMessage());
}
} else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.UNAUTHORIZED.getMessage())) {
// 审核未通过
// 授权取消
authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo() {
{
setAuthorizerAppid(inMessage.getAuthorizerAppid());
@@ -233,8 +236,8 @@ public class WechatCalllbackController extends BaseController {
printWriter.close();
return;
}
out = WxOpenXmlMessage.wxMpOutXmlMessageToEncryptedXml(outMessage, openService.getWxOpenConfigStorage());
logger.info(out);
// out = WxOpenXmlMessage.wxMpOutXmlMessageToEncryptedXml(outMessage, openService.getWxOpenConfigStorage());
// logger.info(out);
break;
default:
printWriter.print("success");
@@ -254,9 +257,9 @@ public class WechatCalllbackController extends BaseController {
printWriter.close();
return;
}
logger.info("组装回复" + outMessage.toXml());
out = outMessage.toEncryptedXml(mpService.getWxMpConfigStorage());
logger.info("组装回复消息-->"+out);
// logger.info("组装回复" + outMessage.toXml());
// out = outMessage.toEncryptedXml(mpService.getWxMpConfigStorage());
// logger.info("组装回复消息-->"+out);
} catch (Exception e) {
logger.error("路由消息时出现异常!", e);
}


+ 49
- 0
mlWechatOpen/src/main/java/com/iformall/schedule/AppAccessTokenSchedule.java View File

@@ -0,0 +1,49 @@
package com.iformall.schedule;

import com.iformall.domain.po.WxAuthorizerInfo;
import com.iformall.mapper.WxAuthorizerInfoMapper;
import com.iformall.service.wechat.WxOpenService;
import me.chanjar.weixin.common.error.WxErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class AppAccessTokenSchedule {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxAuthorizerInfoMapper authorizerInfoMapper;

@Autowired
private WxOpenService openService;

// @Scheduled(cron = "0 */30 * * * *?") // 每30分钟更新一次
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
public void updateAppAccessToken() {
// 微信小程序
List<WxAuthorizerInfo> weappList = authorizerInfoMapper.findWeappList();
weappList.stream().forEach(wxAuthorizerInfo -> {
try {
openService.getWxOpenComponentService().getAuthorizerAccessToken(wxAuthorizerInfo.getAuthorizerAppid(), true);
} catch (WxErrorException e) {
logger.error(e.getMessage());
}
});

// 微信公众号
List<WxAuthorizerInfo> wxmpList = authorizerInfoMapper.findWxMpList();
wxmpList.stream().forEach(wxAuthorizerInfo -> {
try {
openService.getWxOpenComponentService().getAuthorizerAccessToken(wxAuthorizerInfo.getAuthorizerAppid(), true);
} catch (WxErrorException e) {
logger.error(e.getMessage());
}
});

}
}

+ 13
- 6
mlWechatOpen/src/main/java/com/iformall/service/wechat/WxOpenInRedisDBConfigStorage.java View File

@@ -5,6 +5,7 @@ import com.iformall.domain.po.WxComponentVerifyTicket;
import com.iformall.mapper.WxAuthorizerInfoMapper;
import com.iformall.mapper.WxComponentVerifyTicketMapper;
import me.chanjar.weixin.open.api.impl.WxOpenInMemoryConfigStorage;
import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -164,16 +165,22 @@ public class WxOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
}
}

@Override
public void updateAuthorizerAccessToken(String appId, WxOpenAuthorizerAccessToken authorizerAccessToken) {
this.updateAuthorizerAccessToken(appId, authorizerAccessToken.getAuthorizerAccessToken(), authorizerAccessToken.getExpiresIn());

WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
authorizerInfo.setAuthorizerAppid(appId);
authorizerInfo.setAccessToken(authorizerAccessToken.getAuthorizerAccessToken());
authorizerInfo.setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + (authorizerAccessToken.getExpiresIn() * 1000))));
int num = wxAuthorizerInfoMapper.updateAccessToken(authorizerInfo);
logger.info("updateAuthorizerAccessToken " + appId + " rows: " + num);
}

@Override
public void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(this.getKey(this.authorizerAccessTokenKey, appId), expiresInSeconds - 200, authorizerAccessToken);
WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
authorizerInfo.setAuthorizerAppid(appId);
authorizerInfo.setAccessToken(authorizerAccessToken);
authorizerInfo.setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + (expiresInSeconds * 1000))));
int num = wxAuthorizerInfoMapper.updateAccessToken(authorizerInfo);
logger.info("updateAuthorizerAccessToken " + appId + " rows: " + num);
}
}



Loading…
Cancel
Save