Ver código fonte

Merge tag 'refs/tags/jenkins-back_end_wechat-157' into release

test
release
Stormeye Wu 7 anos atrás
pai
commit
10c2252eb8
4 arquivos alterados com 68 adições e 37 exclusões
  1. +53
    -12
      mallinkService/src/main/java/com/iformall/service/wechat/FmOpenInRedisDBConfigStorage.java
  2. +1
    -8
      mallinkService/src/main/java/com/iformall/service/wechat/FmOpenService.java
  3. +13
    -16
      mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java
  4. +1
    -1
      mlWechatOpen/src/main/resources/application-dev.yml

+ 53
- 12
mallinkService/src/main/java/com/iformall/service/wechat/FmOpenInRedisDBConfigStorage.java Ver arquivo

@@ -11,6 +11,7 @@ import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPool;
import redis.clients.util.Pool; import redis.clients.util.Pool;
@@ -76,7 +77,28 @@ public class FmOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
@Override @Override
public String getComponentVerifyTicket() { public String getComponentVerifyTicket() {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(this.componentVerifyTicketKey);
logger.info("getComponentVerifyTicket " + this.componentVerifyTicketKey);
String ticket = jedis.get(this.componentVerifyTicketKey);
if(StringUtils.isBlank(ticket)) {
String appId;
String [] keys = componentAccessTokenKey.split(":");
if(StringUtils.isBlank(keyPrefix)) {
appId = keys[1];
} else {
appId = keys[2];
}
WxComponentVerifyTicket wxComponentVerifyTicket = new WxComponentVerifyTicket();
wxComponentVerifyTicket.setComponentAppid(getComponentAppId());
try {
wxComponentVerifyTicket = wxComponentVerifyTicketMapper.selectOne(wxComponentVerifyTicket);
if(wxComponentVerifyTicket != null) {
ticket = wxComponentVerifyTicket.getComponentVerifyTicket();
}
}catch (Exception e) {
logger.error(e.getMessage());
}
}
return ticket;
} }
} }


@@ -84,6 +106,7 @@ public class FmOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
public void setComponentVerifyTicket(String componentVerifyTicket) { public void setComponentVerifyTicket(String componentVerifyTicket) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.set(this.componentVerifyTicketKey, componentVerifyTicket); jedis.set(this.componentVerifyTicketKey, componentVerifyTicket);
logger.info("setComponentVerifyTicket " + componentVerifyTicket);
} }
} }


@@ -112,16 +135,22 @@ public class FmOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds) { public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(this.componentAccessTokenKey, expiresInSeconds - 200, componentAccessToken); jedis.setex(this.componentAccessTokenKey, expiresInSeconds - 200, componentAccessToken);
logger.info("updateComponentVerifyTicketAccessToken " + componentAccessToken);


WxComponentVerifyTicket ticket = new WxComponentVerifyTicket();
ticket.setComponentAppid(getComponentAppId());
ticket.setAccessToken(componentAccessToken);
ticket.setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + (expiresInSeconds * 1000))));
int num = wxComponentVerifyTicketMapper.updateAccessToken(ticket);
logger.info("updateComponentVerifyTicketAccessToken rows: " + num);
saveComponentVerifyTicket(componentAccessToken, expiresInSeconds);
} }
} }


@Async
public void saveComponentVerifyTicket(String componentAccessToken, int expiresInSeconds) {
WxComponentVerifyTicket ticket = new WxComponentVerifyTicket();
ticket.setComponentAppid(getComponentAppId());
ticket.setAccessToken(componentAccessToken);
ticket.setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + (expiresInSeconds * 1000))));
int num = wxComponentVerifyTicketMapper.updateAccessToken(ticket);
logger.info("updateComponentVerifyTicketAccessToken rows: " + num);
}

private String getKey(String prefix, String appId) { private String getKey(String prefix, String appId) {
return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId); return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId);
} }
@@ -137,15 +166,20 @@ public class FmOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) { public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.set(this.getKey(this.authorizerRefreshTokenKey, appId), authorizerRefreshToken); jedis.set(this.getKey(this.authorizerRefreshTokenKey, appId), authorizerRefreshToken);
logger.info("setAuthorizerRefreshToken " + appId);


WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
authorizerInfo.setAuthorizerAppid(appId);
authorizerInfo.setRefreshToken(authorizerRefreshToken);
int num = wxAuthorizerInfoMapper.updateRefreshToken(authorizerInfo);
logger.info("setAuthorizerRefreshToken " + appId + " rows: " + num);
saveAuthorizerRefreshToken(appId, authorizerRefreshToken);
} }
} }


@Async
public void saveAuthorizerRefreshToken(String appId, String authorizerRefreshToken) {
WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
authorizerInfo.setAuthorizerAppid(appId);
authorizerInfo.setRefreshToken(authorizerRefreshToken);
int num = wxAuthorizerInfoMapper.updateRefreshToken(authorizerInfo);
}

@Override @Override
public String getAuthorizerAccessToken(String appId) { public String getAuthorizerAccessToken(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
@@ -171,6 +205,13 @@ public class FmOpenInRedisDBConfigStorage extends WxOpenInMemoryConfigStorage {
public void updateAuthorizerAccessToken(String appId, WxOpenAuthorizerAccessToken authorizerAccessToken) { public void updateAuthorizerAccessToken(String appId, WxOpenAuthorizerAccessToken authorizerAccessToken) {
this.updateAuthorizerAccessToken(appId, authorizerAccessToken.getAuthorizerAccessToken(), authorizerAccessToken.getExpiresIn()); this.updateAuthorizerAccessToken(appId, authorizerAccessToken.getAuthorizerAccessToken(), authorizerAccessToken.getExpiresIn());


logger.info("updateAuthorizerAccessToken " + appId);

dbUpdateAccessToken(appId, authorizerAccessToken);
}

@Async
public void dbUpdateAccessToken(String appId, WxOpenAuthorizerAccessToken authorizerAccessToken) {
WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo(); WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo();
authorizerInfo.setAuthorizerAppid(appId); authorizerInfo.setAuthorizerAppid(appId);
authorizerInfo.setAccessToken(authorizerAccessToken.getAuthorizerAccessToken()); authorizerInfo.setAccessToken(authorizerAccessToken.getAuthorizerAccessToken());


+ 1
- 8
mallinkService/src/main/java/com/iformall/service/wechat/FmOpenService.java Ver arquivo

@@ -72,14 +72,7 @@ public class FmOpenService extends WxOpenServiceImpl {
wxOpenMessageRouter = new WxOpenMessageRouter(this); wxOpenMessageRouter = new WxOpenMessageRouter(this);
wxOpenMessageRouter.rule().handler((wxMpXmlMessage, map, wxMpService, wxSessionManager) -> { wxOpenMessageRouter.rule().handler((wxMpXmlMessage, map, wxMpService, wxSessionManager) -> {
String appId = wxMpService.getWxMpConfigStorage().getAppId(); String appId = wxMpService.getWxMpConfigStorage().getAppId();
WxAuthorizerInfo authorizerInfo = authorizerInfoMapper.findByAppid(appId);
String appType;
if(authorizerInfo.getType() <= EnumAppType.C.getCode()) {
appType = "小程序";
} else {
appType = "公众号";
}
logger.info("\n接收到{}{}请求消息,内容:{}", appId, appType, wxMpXmlMessage);
logger.info("\n接收到 {} 请求消息,内容:{}", appId, wxMpXmlMessage);
return null; return null;
}).next(); }).next();




+ 13
- 16
mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java Ver arquivo

@@ -79,7 +79,8 @@ public class WechatCalllbackController extends BaseController {
this.logger.info("接收微信回调,消息解密后内容为:{} ", inMessage.toString()); this.logger.info("接收微信回调,消息解密后内容为:{} ", inMessage.toString());


// 处理 // 处理
return handleTicket(inMessage);
handleTicket(inMessage);
return "success";
} }


/** /**
@@ -87,8 +88,14 @@ public class WechatCalllbackController extends BaseController {
* @param inMessage * @param inMessage
* @return * @return
*/ */
private String handleTicket(WxOpenXmlMessage inMessage) {
if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.COMPONENT_VERIFY_TICKET.getMessage())) {
private void handleTicket(WxOpenXmlMessage inMessage) {
try {
String out = openService.getWxOpenComponentService().route(inMessage);
this.logger.info("组装回复信息:{}", out);
} catch (WxErrorException e) {
this.logger.error("notify", e);
}
if (inMessage.getInfoType().equalsIgnoreCase(EnumWxAuthorizationInfoType.COMPONENT_VERIFY_TICKET.getMessage())) {
// 保存component_verify_ticket // 保存component_verify_ticket
componentVerifyTicketService.saveOrUpdate(new WxComponentVerifyTicket() { componentVerifyTicketService.saveOrUpdate(new WxComponentVerifyTicket() {
{ {
@@ -98,11 +105,10 @@ public class WechatCalllbackController extends BaseController {
setDeadline(new Date(Long.valueOf(System.currentTimeMillis() + (60 * 60 * 1000)))); setDeadline(new Date(Long.valueOf(System.currentTimeMillis() + (60 * 60 * 1000))));
} }
}); });
return "success";
} else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.AUTHORIZED.getMessage()) ||
inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.UPDATEAUTHORIZED.getMessage())) {
} else if (inMessage.getInfoType().equalsIgnoreCase(EnumWxAuthorizationInfoType.AUTHORIZED.getMessage()) ||
inMessage.getInfoType().equalsIgnoreCase(EnumWxAuthorizationInfoType.UPDATEAUTHORIZED.getMessage())) {
// 审核通过 // 审核通过
if (handleWeappAuditedMessage(inMessage)) return "success";
handleWeappAuditedMessage(inMessage);
} else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.UNAUTHORIZED.getMessage())) { } else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.UNAUTHORIZED.getMessage())) {
// 授权取消 // 授权取消
authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo() { authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo() {
@@ -112,16 +118,7 @@ public class WechatCalllbackController extends BaseController {
setAuthTime(new Date()); setAuthTime(new Date());
} }
}); });
return "success";
} }

try {
String out = openService.getWxOpenComponentService().route(inMessage);
this.logger.info("组装回复信息:{}", out);
} catch (WxErrorException e) {
this.logger.error("notify", e);
}
return "success";
} }


/** /**


+ 1
- 1
mlWechatOpen/src/main/resources/application-dev.yml Ver arquivo

@@ -32,7 +32,7 @@ spring:
password: ENC(aYJ3Wr2UWtkORRQjjrWWpz2ZeTISsHOA) password: ENC(aYJ3Wr2UWtkORRQjjrWWpz2ZeTISsHOA)
timeout: 3600 timeout: 3600
expire: 1800 #30分钟 expire: 1800 #30分钟
database: 10
database: 1
defaultExpiration: 2592000 # 默认生命周期30天 defaultExpiration: 2592000 # 默认生命周期30天
jedis: jedis:
pool: pool:


Carregando…
Cancelar
Salvar