|
|
|
@@ -1,11 +1,19 @@ |
|
|
|
package com.iformall.mp.handler; |
|
|
|
|
|
|
|
import com.iformall.domain.po.WxCUser; |
|
|
|
import com.iformall.domain.vo.WxWeappInfo; |
|
|
|
import com.iformall.enums.EnumAppType; |
|
|
|
import com.iformall.enums.EnumWechatSubscribe; |
|
|
|
import com.iformall.service.WxAuthorizerInfoService; |
|
|
|
import com.iformall.service.WxCUserService; |
|
|
|
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.util.Date; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
/** |
|
|
|
@@ -14,13 +22,46 @@ import java.util.Map; |
|
|
|
@Component |
|
|
|
public class UnsubscribeHandler extends AbstractHandler { |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxAuthorizerInfoService authorizerInfoService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private WxCUserService userService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, |
|
|
|
Map<String, Object> context, WxMpService wxMpService, |
|
|
|
WxSessionManager sessionManager) { |
|
|
|
String openId = wxMessage.getFromUser(); |
|
|
|
this.logger.info("取消关注用户 OPENID: " + openId); |
|
|
|
// TODO 可以更新本地数据库为取消关注状态 |
|
|
|
|
|
|
|
WxWeappInfo weappInfo = authorizerInfoService.getWeappByAppId(wxMpService.getWxMpConfigStorage().getAppId()); |
|
|
|
try { |
|
|
|
WxCUser userQ = new WxCUser(); |
|
|
|
userQ.setOpenAppId(weappInfo.getOpenAppid()); |
|
|
|
if(weappInfo.getType().equals(EnumAppType.MP_S.getCode())) { |
|
|
|
userQ.setMpAppId(weappInfo.getAuthorizerAppid()); |
|
|
|
userQ.setMpOpenId(openId); |
|
|
|
} else if(weappInfo.getType().equals(EnumAppType.MP_S.getCode())) { |
|
|
|
userQ.setSubsAppId(weappInfo.getAuthorizerAppid()); |
|
|
|
userQ.setSubsOpenId(openId); |
|
|
|
} |
|
|
|
WxCUser oldUser = userService.getByWxOpenId(userQ); |
|
|
|
if(oldUser != null) { |
|
|
|
userQ.setId(oldUser.getId()); |
|
|
|
if(weappInfo.getType().equals(EnumAppType.MP_S.getCode())) { |
|
|
|
userQ.setMpSubscribe(EnumWechatSubscribe.NO.getCode()); |
|
|
|
userQ.setMpSubscribeTime(new Date(wxMessage.getCreateTime())); |
|
|
|
} else if(weappInfo.getType().equals(EnumAppType.MP_S.getCode())) { |
|
|
|
userQ.setSubsSubscribe(EnumWechatSubscribe.NO.getCode()); |
|
|
|
userQ.setSubsSubscribeTime(new Date(wxMessage.getCreateTime())); |
|
|
|
} |
|
|
|
userService.saveOrUpdate(userQ); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
this.logger.error(e.getMessage()); |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
|