Browse Source

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

test

# Conflicts:
#	mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java
release
Stormeye Wu 7 years ago
parent
commit
c6fbd6735a
23 changed files with 325 additions and 259 deletions
  1. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxAuthorizerInfoMapper.java
  2. +0
    -8
      mallinkService/src/main/java/com/iformall/service/WxAuthorizerInfoService.java
  3. +0
    -13
      mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java
  4. +109
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/FmOpenService.java
  5. +17
    -0
      mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java
  6. +24
    -0
      mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java
  7. +25
    -0
      mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java
  8. +1
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/AbstractHandler.java
  9. +2
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/KfSessionHandler.java
  10. +2
    -2
      mallinkService/src/main/java/com/iformall/service/wechat/handler/LocationHandler.java
  11. +2
    -2
      mallinkService/src/main/java/com/iformall/service/wechat/handler/LogHandler.java
  12. +2
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/MenuHandler.java
  13. +2
    -2
      mallinkService/src/main/java/com/iformall/service/wechat/handler/MsgHandler.java
  14. +1
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/NullHandler.java
  15. +3
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/ScanHandler.java
  16. +2
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/handler/StoreCheckNotifyHandler.java
  17. +8
    -5
      mallinkService/src/main/java/com/iformall/service/wechat/handler/SubscribeHandler.java
  18. +5
    -3
      mallinkService/src/main/java/com/iformall/service/wechat/handler/UnsubscribeHandler.java
  19. +104
    -0
      mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java
  20. +1
    -1
      mallinkService/src/main/java/com/iformall/service/wechat/utils/JsonUtils.java
  21. +7
    -0
      mallinkService/src/main/resources/mapper/WxAuthorizerInfoMapper.xml
  22. +6
    -214
      mlWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java
  23. +1
    -1
      mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java

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

@@ -13,7 +13,7 @@ public interface WxAuthorizerInfoMapper extends CommonMapper<WxAuthorizerInfo, L


WxAuthorizerInfo findWeChatMp(WxAuthorizerInfo wxAuthorizerInfo); WxAuthorizerInfo findWeChatMp(WxAuthorizerInfo wxAuthorizerInfo);


WxWeappInfo findVo(WxWeappInfo wxWeappInfo);
WxAuthorizerInfo findByAppid(String appId);


int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo); int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo);




+ 0
- 8
mallinkService/src/main/java/com/iformall/service/WxAuthorizerInfoService.java View File

@@ -50,14 +50,6 @@ public interface WxAuthorizerInfoService {
* @return * @return
*/ */
WxAuthorizerInfo getByAppId(String appId); WxAuthorizerInfo getByAppId(String appId);

/**
* 根据appId获得实体
*
* @param appId
* @return
*/
WxWeappInfo getWeappByAppId(String appId);
/** /**
* 保存或更新实体 * 保存或更新实体


+ 0
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxAuthorizerInfoServiceImpl.java View File

@@ -68,19 +68,6 @@ public class WxAuthorizerInfoServiceImpl implements WxAuthorizerInfoService {
return null; return null;
} }


@Override
public WxWeappInfo getWeappByAppId(String appId) {
WxWeappInfo authQ = new WxWeappInfo();
authQ.setAuthorizerAppid(appId);
try {
WxWeappInfo authorizerInfo = authorizerInfoMapper.findVo(authQ);
return authorizerInfo;
} catch (Exception e) {
logger.error(e.getMessage());
}
return null;
}

@Override @Override
public void saveOrUpdate(WxAuthorizerInfo record) { public void saveOrUpdate(WxAuthorizerInfo record) {
// 1. 添加到wx_authorizer_info表中 // 1. 添加到wx_authorizer_info表中


+ 109
- 1
mallinkService/src/main/java/com/iformall/service/wechat/FmOpenService.java View File

@@ -2,8 +2,13 @@ package com.iformall.service.wechat;


import com.iformall.config.WechatRedisProperies; import com.iformall.config.WechatRedisProperies;
import com.iformall.config.WechatOpenProperties; import com.iformall.config.WechatOpenProperties;
import com.iformall.domain.po.WxAuthorizerInfo;
import com.iformall.enums.EnumAppType;
import com.iformall.mapper.WxAuthorizerInfoMapper; import com.iformall.mapper.WxAuthorizerInfoMapper;
import com.iformall.mapper.WxComponentVerifyTicketMapper; import com.iformall.mapper.WxComponentVerifyTicketMapper;
import com.iformall.service.wechat.handler.*;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.constant.WxMpEventConstants;
import me.chanjar.weixin.open.api.impl.WxOpenMessageRouter; import me.chanjar.weixin.open.api.impl.WxOpenMessageRouter;
import me.chanjar.weixin.open.api.impl.WxOpenServiceImpl; import me.chanjar.weixin.open.api.impl.WxOpenServiceImpl;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -33,6 +38,26 @@ public class FmOpenService extends WxOpenServiceImpl {
@Autowired @Autowired
private WxAuthorizerInfoMapper authorizerInfoMapper; private WxAuthorizerInfoMapper authorizerInfoMapper;


@Autowired
protected NullHandler nullHandler;
@Autowired
protected KfSessionHandler kfSessionHandler;
@Autowired
protected StoreCheckNotifyHandler storeCheckNotifyHandler;
@Autowired
protected LocationHandler locationHandler;
@Autowired
protected MenuHandler menuHandler;
@Autowired
protected MsgHandler msgHandler;
@Autowired
protected UnsubscribeHandler unsubscribeHandler;
@Autowired
protected SubscribeHandler subscribeHandler;

@Autowired
protected WeappAuditHandler weappAuditHandler;

private static JedisPool pool; private static JedisPool pool;
private WxOpenMessageRouter wxOpenMessageRouter; private WxOpenMessageRouter wxOpenMessageRouter;


@@ -46,9 +71,92 @@ public class FmOpenService extends WxOpenServiceImpl {
setWxOpenConfigStorage(configStorage); setWxOpenConfigStorage(configStorage);
wxOpenMessageRouter = new WxOpenMessageRouter(this); wxOpenMessageRouter = new WxOpenMessageRouter(this);
wxOpenMessageRouter.rule().handler((wxMpXmlMessage, map, wxMpService, wxSessionManager) -> { wxOpenMessageRouter.rule().handler((wxMpXmlMessage, map, wxMpService, wxSessionManager) -> {
logger.info("\n接收到 {} 公众号请求消息,内容:{}", wxMpService.getWxMpConfigStorage().getAppId(), wxMpXmlMessage);
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);
return null; return null;
}).next(); }).next();

// 接收客服会话管理事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxMpEventConstants.CustomerService.KF_CREATE_SESSION)
.handler(this.kfSessionHandler).end();
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxMpEventConstants.CustomerService.KF_CLOSE_SESSION)
.handler(this.kfSessionHandler).end();
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxMpEventConstants.CustomerService.KF_SWITCH_SESSION)
.handler(this.kfSessionHandler).end();

// 门店审核事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxMpEventConstants.POI_CHECK_NOTIFY)
.handler(this.storeCheckNotifyHandler).end();

// 自定义菜单事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.MenuButtonType.CLICK)
.handler(this.menuHandler).end();

// 点击菜单连接事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.MenuButtonType.VIEW)
.handler(this.nullHandler).end();

// 关注事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.SUBSCRIBE)
.handler(this.subscribeHandler).end();

// 取消关注事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.UNSUBSCRIBE)
.handler(this.unsubscribeHandler).end();

// 上报地理位置事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.LOCATION)
.handler(this.locationHandler).end();

// 接收地理位置消息
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.LOCATION)
.handler(this.locationHandler).end();

// 扫码事件
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.SCAN)
.handler(this.nullHandler).end();

// 小程序 审核通过
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.WEAPP_AUDIT_SUCCESS)
.handler(this.weappAuditHandler).end();
// 小程序 审核失败
wxOpenMessageRouter.rule().async(false)
.msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.WEAPP_AUDIT_FAIL)
.handler(this.weappAuditHandler).end();

// 默认
wxOpenMessageRouter.rule().async(false).handler(this.msgHandler).end();
} }


public WxOpenMessageRouter getWxOpenMessageRouter() { public WxOpenMessageRouter getWxOpenMessageRouter() {


+ 17
- 0
mallinkService/src/main/java/com/iformall/service/wechat/builder/AbstractBuilder.java View File

@@ -0,0 +1,17 @@
package com.iformall.service.wechat.builder;

import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* @author Stormeye
*/
public abstract class AbstractBuilder {
protected final Logger logger = LoggerFactory.getLogger(getClass());

public abstract WxMpXmlOutMessage build(String content,
WxMpXmlMessage wxMessage, WxMpService service);
}

+ 24
- 0
mallinkService/src/main/java/com/iformall/service/wechat/builder/ImageBuilder.java View File

@@ -0,0 +1,24 @@
package com.iformall.service.wechat.builder;

import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;

/**
* @author Binary Wang(https://github.com/binarywang)
*/
public class ImageBuilder extends AbstractBuilder {

@Override
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage,
WxMpService service) {

WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();

return m;
}

}

+ 25
- 0
mallinkService/src/main/java/com/iformall/service/wechat/builder/TextBuilder.java View File

@@ -0,0 +1,25 @@
package com.iformall.service.wechat.builder;

import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* @author Binary Wang(https://github.com/binarywang)
*/
public class TextBuilder extends AbstractBuilder {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Override
public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage,
WxMpService service) {
WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return m;
}

}

mlWechatOpen/src/main/java/com/iformall/mp/handler/AbstractHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/AbstractHandler.java View File

@@ -1,4 +1,4 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import me.chanjar.weixin.mp.api.WxMpMessageHandler; import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import org.slf4j.Logger; import org.slf4j.Logger;

mlWechatOpen/src/main/java/com/iformall/mp/handler/KfSessionHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/KfSessionHandler.java View File

@@ -1,5 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.service.wechat.handler.AbstractHandler;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

mlWechatOpen/src/main/java/com/iformall/mp/handler/LocationHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/LocationHandler.java View File

@@ -1,6 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.mp.builder.TextBuilder;
import com.iformall.service.wechat.builder.TextBuilder;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

mlWechatOpen/src/main/java/com/iformall/mp/handler/LogHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/LogHandler.java View File

@@ -1,6 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.mp.utils.JsonUtils;
import com.iformall.service.wechat.utils.JsonUtils;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

mlWechatOpen/src/main/java/com/iformall/mp/handler/MenuHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/MenuHandler.java View File

@@ -1,5 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.service.wechat.handler.AbstractHandler;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

mlWechatOpen/src/main/java/com/iformall/mp/handler/MsgHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/MsgHandler.java View File

@@ -1,6 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.mp.builder.TextBuilder;
import com.iformall.service.wechat.builder.TextBuilder;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;

mlWechatOpen/src/main/java/com/iformall/mp/handler/NullHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/NullHandler.java View File

@@ -1,4 +1,4 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;

mlWechatOpen/src/main/java/com/iformall/mp/handler/ScanHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/ScanHandler.java View File

@@ -1,4 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;

import com.iformall.service.wechat.handler.AbstractHandler;


/** /**
* @author Binary Wang(https://github.com/binarywang) * @author Binary Wang(https://github.com/binarywang)

mlWechatOpen/src/main/java/com/iformall/mp/handler/StoreCheckNotifyHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/StoreCheckNotifyHandler.java View File

@@ -1,5 +1,6 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.service.wechat.handler.AbstractHandler;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;

mlWechatOpen/src/main/java/com/iformall/mp/handler/SubscribeHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/SubscribeHandler.java View File

@@ -1,9 +1,9 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.domain.po.WxAuthorizerInfo;
import com.iformall.mapper.WxAuthorizerInfoMapper; import com.iformall.mapper.WxAuthorizerInfoMapper;
import com.iformall.mp.builder.TextBuilder;
import com.iformall.service.WxCUserService; import com.iformall.service.WxCUserService;
import com.iformall.service.wechat.handler.AbstractHandler;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
@@ -40,10 +40,13 @@ public class SubscribeHandler extends AbstractHandler {
authQ.setAuthorizerAppid(appId); authQ.setAuthorizerAppid(appId);
WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ); WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ);


if(authorizerInfo == null) {
return null;
}
// 获取微信用户基本信息 // 获取微信用户基本信息
try { try {
WxMpUser userWxInfo = weixinService.getUserService() WxMpUser userWxInfo = weixinService.getUserService()
.userInfo(wxMessage.getFromUser());
.userInfo(wxMessage.getFromUser());
if (userWxInfo != null) { if (userWxInfo != null) {
this.logger.info(userWxInfo.toString()); this.logger.info(userWxInfo.toString());
userService.saveOrUpdateMpUser(userWxInfo, authorizerInfo); userService.saveOrUpdateMpUser(userWxInfo, authorizerInfo);
@@ -53,8 +56,7 @@ public class SubscribeHandler extends AbstractHandler {
this.logger.info("该公众号没有获取用户信息权限!"); this.logger.info("该公众号没有获取用户信息权限!");
} }
} }


/*
WxMpXmlOutMessage responseResult = null; WxMpXmlOutMessage responseResult = null;
try { try {
responseResult = this.handleSpecial(wxMessage); responseResult = this.handleSpecial(wxMessage);
@@ -71,6 +73,7 @@ public class SubscribeHandler extends AbstractHandler {
} catch (Exception e) { } catch (Exception e) {
this.logger.error(e.getMessage(), e); this.logger.error(e.getMessage(), e);
} }
*/


return null; return null;
} }

mlWechatOpen/src/main/java/com/iformall/mp/handler/UnsubscribeHandler.java → mallinkService/src/main/java/com/iformall/service/wechat/handler/UnsubscribeHandler.java View File

@@ -1,8 +1,9 @@
package com.iformall.mp.handler;
package com.iformall.service.wechat.handler;


import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.domain.po.WxAuthorizerInfo;
import com.iformall.mapper.WxAuthorizerInfoMapper; import com.iformall.mapper.WxAuthorizerInfoMapper;
import com.iformall.service.WxCUserService; import com.iformall.service.WxCUserService;
import com.iformall.service.wechat.handler.AbstractHandler;
import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
@@ -37,14 +38,15 @@ public class UnsubscribeHandler extends AbstractHandler {
WxAuthorizerInfo authQ = new WxAuthorizerInfo(); WxAuthorizerInfo authQ = new WxAuthorizerInfo();
authQ.setAuthorizerAppid(appId); authQ.setAuthorizerAppid(appId);
WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ); WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ);

if(authorizerInfo == null) {
return null;
}
WxMpUser mpUser = new WxMpUser(); WxMpUser mpUser = new WxMpUser();
mpUser.setOpenId(wxMessage.getFromUser()); mpUser.setOpenId(wxMessage.getFromUser());
mpUser.setSubscribe(false); mpUser.setSubscribe(false);
mpUser.setSubscribeTime(wxMessage.getCreateTime()); mpUser.setSubscribeTime(wxMessage.getCreateTime());


userService.saveOrUpdateMpUser(mpUser, authorizerInfo); userService.saveOrUpdateMpUser(mpUser, authorizerInfo);

return null; return null;
} }



+ 104
- 0
mallinkService/src/main/java/com/iformall/service/wechat/handler/WeappAuditHandler.java View File

@@ -0,0 +1,104 @@
package com.iformall.service.wechat.handler;

import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxWeappAuditStatus;
import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumWeappAuditStatus;
import com.iformall.service.MailService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxWeappAuditStatusService;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

/**
* @author Binary Wang(https://github.com/binarywang)
*/
@Component
public class WeappAuditHandler extends AbstractHandler {

@Autowired
private WxWeappAuditStatusService weappAuditStatusService;

@Autowired
private WxAppinfoService appinfoService;

@Autowired
private String fmAuditEmails;

@Autowired
private MailService mailService;

@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) {
String appId = wxMpService.getWxMpConfigStorage().getAppId();
if(wxMessage.getEvent().equalsIgnoreCase(WxConsts.EventType.WEAPP_AUDIT_SUCCESS)) {
updateAuditStatus(appId, true, null);
} else if(wxMessage.getEvent().equalsIgnoreCase(WxConsts.EventType.WEAPP_AUDIT_SUCCESS)) {
updateAuditStatus(appId, false, wxMessage.getReason());
}
return null;
}

private void updateAuditStatus(String appId, boolean success, String reason) {
WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
if (auditStatus != null) {
if (success) {
auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode());
auditStatus.setAuditErrCode("");
} else {
auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
auditStatus.setAuditErrCode(reason);
}
auditStatus.setAuditTime(new Date());
weappAuditStatusService.updateStatus(auditStatus);
}

// 发邮件
WxAppinfo appinfo = appinfoService.getByAppId(appId);
if (appinfo != null) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

StringBuilder titleSB = new StringBuilder();
if (appinfo.getType().equals(EnumAppType.C.getCode())) {
titleSB.append("C端小程序");
} else if (appinfo.getType().equals(EnumAppType.B.getCode())) {
titleSB.append("B端小程序");
} else if (appinfo.getType().equals(EnumAppType.MP_S.getCode())) {
titleSB.append("公众号-服务号");
} else if (appinfo.getType().equals(EnumAppType.MP_P.getCode())) {
titleSB.append("公众号-订阅号");
}
titleSB.append(appinfo.getName());
if (success) {
titleSB.append("审核通过");
} else {
titleSB.append("审核未通过");
}

StringBuilder sb = new StringBuilder();
sb.append(df.format(new Date())).append("\n");
if (success) {
sb.append("审核通过\n");
} else {
sb.append("审核未通过\n").append("原因").append(reason);
}

String[] receivers = fmAuditEmails.split(",");

//发送邮件
mailService.sendSimpleMail(receivers, titleSB.toString(), sb.toString());
}
}

}

mlWechatOpen/src/main/java/com/iformall/mp/utils/JsonUtils.java → mallinkService/src/main/java/com/iformall/service/wechat/utils/JsonUtils.java View File

@@ -1,4 +1,4 @@
package com.iformall.mp.utils;
package com.iformall.service.wechat.utils;


import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;

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

@@ -162,6 +162,13 @@
where `authorizer_appid` = #{authorizerAppid} where `authorizer_appid` = #{authorizerAppid}
</select> </select>


<select id="findByAppid" parameterType="string" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_authorizer_info
where `authorizer_appid` = #{value}
</select>

<resultMap id="VBaseResultMap" type="com.iformall.domain.vo.WxWeappInfo"> <resultMap id="VBaseResultMap" type="com.iformall.domain.vo.WxWeappInfo">
<id column="id" jdbcType="BIGINT" property="id"/> <id column="id" jdbcType="BIGINT" property="id"/>
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>


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

@@ -6,7 +6,6 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.mp.manager.WxMpManager;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.service.wechat.FmOpenService; import com.iformall.service.wechat.FmOpenService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -15,7 +14,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult;
import me.chanjar.weixin.open.bean.result.WxOpenPlatformResult; import me.chanjar.weixin.open.bean.result.WxOpenPlatformResult;
@@ -35,7 +33,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;


@Controller @Controller
@@ -44,9 +41,6 @@ import java.util.Date;
public class WechatCalllbackController extends BaseController { public class WechatCalllbackController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Logger logger = LoggerFactory.getLogger(this.getClass());


@Autowired
private String fmAuditEmails;

@Autowired @Autowired
protected FmOpenService openService; protected FmOpenService openService;


@@ -56,21 +50,6 @@ public class WechatCalllbackController extends BaseController {
@Autowired @Autowired
private WxAuthorizerInfoService authorizerInfoService; private WxAuthorizerInfoService authorizerInfoService;


@Autowired
private WxWeappAuditStatusService weappAuditStatusService;

@Autowired
private WxAppinfoService appinfoService;

@Autowired
private WxCUserService userService;

@Autowired
private MailService mailService;

@Autowired
private WxMpManager mpManager;

@PostMapping(value = "/notify") @PostMapping(value = "/notify")
@ApiOperation("接收ticket回调") @ApiOperation("接收ticket回调")
@ResponseBody @ResponseBody
@@ -219,108 +198,14 @@ public class WechatCalllbackController extends BaseController {
} }


// 实际 消息 处理 // 实际 消息 处理
handleCallbackMessage(appId, response, inMessage);
}

/**
* 实际回调消息处理
* @param appId
* @param response
* @param inMessage
* @throws IOException
*/
private void handleCallbackMessage(String appId,
HttpServletResponse response,
WxMpXmlMessage inMessage) throws IOException {
WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId);

PrintWriter printWriter = response.getWriter();

// 小程序 消息 处理
if(authorizerInfo != null && (authorizerInfo.getType() <= EnumAppType.C.getCode())) {
/**判断消息类型,调用对应的方法*/
handleWeappCallbackMessage(appId, inMessage);
wechatWriteSuccess(printWriter);
return;
} else {
handleMPCallbackMessage(appId, inMessage, authorizerInfo);
//handleCallbackMessage(appId, response, inMessage);
WxMpXmlOutMessage outMessage = openService.getWxOpenMessageRouter().route(inMessage, appId);
if(outMessage == null) {
PrintWriter printWriter = response.getWriter();
wechatWriteSuccess(printWriter); wechatWriteSuccess(printWriter);
return;
/*
// 公众号
try {
WxMpXmlOutMessage outMessage = mpManager.getRouter(appId).route(inMessage);
getThreadCount( 1 );
if (outMessage == null) {
this.logger.info("2 return: success");
wechatWriteSuccess(printWriter);
return;
}
// logger.info("组装回复" + outMessage.toXml());
// out = outMessage.toEncryptedXml(mpService.getWxMpConfigStorage());
// logger.info("组装回复消息-->"+out);
} catch (Exception e) {
logger.error("路由消息时出现异常!", e);
}
*/
}
}

/**
* 处理小程序回调消息
* @param appId
* @param inMessage
*/
private void handleWeappCallbackMessage(String appId, WxMpXmlMessage inMessage) {
switch (inMessage.getMsgType()) {
case "event": {
switch (inMessage.getEvent()) {
case "weapp_audit_success": { // 审核成功
updateAuditStatus(appId, true, "");
break;
}
case "weapp_audit_fail": { // 审核失败
updateAuditStatus(appId, false, inMessage.getReason());
break;
}
default:
break;
}
return;
}
default:
return;
}
}

/**
* 处理公众号回调消息
* @param appId
* @param inMessage
* @param authorizerInfo
*/
private void handleMPCallbackMessage(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) {
switch (inMessage.getMsgType()) {
case "event": {
switch (inMessage.getEvent()) {
case "subscribe": { // 关注
handleEventSubscribe(appId, inMessage, authorizerInfo);
break;
}
case "unsubscribe": { // 取消关注
handleEventUnsubscribe(appId, inMessage, authorizerInfo);
break;
}
default: {
break;
}
}
return;
}
default: {
return;
}
} }
PrintWriter printWriter = response.getWriter();
wechatWriteSuccess(printWriter);
} }


private void wechatWriteSuccess(PrintWriter printWriter) { private void wechatWriteSuccess(PrintWriter printWriter) {
@@ -329,49 +214,6 @@ public class WechatCalllbackController extends BaseController {
printWriter.close(); printWriter.close();
} }


/**
* 新关注消息处理
* @param appId
* @param inMessage
* @param authorizerInfo
*/
private void handleEventSubscribe(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) {
this.logger.info("新关注用户 OPENID: " + inMessage.getFromUser() + ", AppId: " + appId);

// 获取微信用户基本信息
try {
WxMpUser userWxInfo = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).getUserService()
.userInfo(inMessage.getFromUser());
if (userWxInfo != null) {
this.logger.info(userWxInfo.toString());
userService.saveOrUpdateMpUser(userWxInfo, authorizerInfo);
}
} catch (WxErrorException e) {
if (e.getError().getErrorCode() == 48001) {
this.logger.info("该公众号没有获取用户信息权限!");
}
}
}


/**
* 取消关注消息处理
* @param appId
* @param inMessage
* @param authorizerInfo
*/
private void handleEventUnsubscribe(String appId, WxMpXmlMessage inMessage, WxAuthorizerInfo authorizerInfo) {
String openId = inMessage.getFromUser();
this.logger.info("取消关注用户 OPENID: " + openId + ", AppId: " + appId);

WxMpUser mpUser = new WxMpUser();
mpUser.setOpenId(inMessage.getFromUser());
mpUser.setSubscribe(false);
mpUser.setSubscribeTime(inMessage.getCreateTime());

userService.saveOrUpdateMpUser(mpUser, authorizerInfo);
}

/** /**
* 测试账号特殊处理 * 测试账号特殊处理
* @param appId * @param appId
@@ -436,56 +278,6 @@ public class WechatCalllbackController extends BaseController {


} }


private void updateAuditStatus(String appId, boolean success, String reason) {
WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId);
if (auditStatus != null) {
if (success) {
auditStatus.setAuditStatus(EnumWeappAuditStatus.SUCCESS.getCode());
auditStatus.setAuditErrCode("");
} else {
auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode());
auditStatus.setAuditErrCode(reason);
}
auditStatus.setAuditTime(new Date());
weappAuditStatusService.updateStatus(auditStatus);
}

// 发邮件
WxAppinfo appinfo = appinfoService.getByAppId(appId);
if (appinfo != null) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

StringBuilder titleSB = new StringBuilder();
if (appinfo.getType().equals(EnumAppType.C.getCode())) {
titleSB.append("C端小程序");
} else if (appinfo.getType().equals(EnumAppType.B.getCode())) {
titleSB.append("B端小程序");
} else if (appinfo.getType().equals(EnumAppType.MP_S.getCode())) {
titleSB.append("公众号-服务号");
} else if (appinfo.getType().equals(EnumAppType.MP_P.getCode())) {
titleSB.append("公众号-订阅号");
}
titleSB.append(appinfo.getName());
if (success) {
titleSB.append("审核通过");
} else {
titleSB.append("审核未通过");
}

StringBuilder sb = new StringBuilder();
sb.append(df.format(new Date())).append("\n");
if (success) {
sb.append("审核通过\n");
} else {
sb.append("审核未通过\n").append("原因").append(reason);
}

String[] receivers = fmAuditEmails.split(",");

//发送邮件
mailService.sendSimpleMail(receivers, titleSB.toString(), sb.toString());
}
}


@GetMapping(value = "/createOpenPlatform") @GetMapping(value = "/createOpenPlatform")
@ApiOperation("创建微信开放平台") @ApiOperation("创建微信开放平台")


+ 1
- 1
mlWechatOpen/src/main/java/com/iformall/mp/manager/WxMpManager.java View File

@@ -1,7 +1,7 @@
package com.iformall.mp.manager; package com.iformall.mp.manager;


import com.iformall.mp.handler.*;
import com.iformall.service.wechat.FmOpenService; import com.iformall.service.wechat.FmOpenService;
import com.iformall.service.wechat.handler.*;
import me.chanjar.weixin.mp.api.WxMpMessageRouter; import me.chanjar.weixin.mp.api.WxMpMessageRouter;
import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.constant.WxMpEventConstants; import me.chanjar.weixin.mp.constant.WxMpEventConstants;


Loading…
Cancel
Save