| @@ -13,6 +13,8 @@ public interface WxAuthorizerInfoMapper extends CommonMapper<WxAuthorizerInfo, L | |||||
| WxAuthorizerInfo findWeChatMp(WxAuthorizerInfo wxAuthorizerInfo); | WxAuthorizerInfo findWeChatMp(WxAuthorizerInfo wxAuthorizerInfo); | ||||
| WxAuthorizerInfo findByAppid(String appId); | |||||
| int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo); | int updateReleaseInfo(WxAuthorizerInfo wxAuthorizerInfo); | ||||
| int updateRefreshToken(WxAuthorizerInfo wxAuthorizerInfo); | int updateRefreshToken(WxAuthorizerInfo wxAuthorizerInfo); | ||||
| @@ -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() { | ||||
| @@ -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); | |||||
| } | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -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) | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| @@ -53,7 +53,7 @@ public class SubscribeHandler extends AbstractHandler { | |||||
| } | } | ||||
| } | } | ||||
| /* | |||||
| WxMpXmlOutMessage responseResult = null; | WxMpXmlOutMessage responseResult = null; | ||||
| try { | try { | ||||
| responseResult = this.handleSpecial(wxMessage); | responseResult = this.handleSpecial(wxMessage); | ||||
| @@ -70,6 +70,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; | ||||
| } | } | ||||
| @@ -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; | ||||
| @@ -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()); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -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; | ||||
| @@ -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"/> | ||||
| @@ -219,7 +219,14 @@ public class WechatCalllbackController extends BaseController { | |||||
| } | } | ||||
| // 实际 消息 处理 | // 实际 消息 处理 | ||||
| handleCallbackMessage(appId, response, inMessage); | |||||
| //handleCallbackMessage(appId, response, inMessage); | |||||
| WxMpXmlOutMessage outMessage = openService.getWxOpenMessageRouter().route(inMessage, appId); | |||||
| if(outMessage == null) { | |||||
| PrintWriter printWriter = response.getWriter(); | |||||
| wechatWriteSuccess(printWriter); | |||||
| } | |||||
| PrintWriter printWriter = response.getWriter(); | |||||
| wechatWriteSuccess(printWriter); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -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; | ||||