|
@@ -1,8 +1,11 @@
|
|
|
package cn.tr.module.smart.wx.handler;
|
|
package cn.tr.module.smart.wx.handler;
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.tr.module.smart.common.po.BizWxUserSubscribePO;
|
|
|
import cn.tr.module.smart.common.repository.BizWxUserMpCareRepository;
|
|
import cn.tr.module.smart.common.repository.BizWxUserMpCareRepository;
|
|
|
|
|
+import cn.tr.module.smart.common.repository.BizWxUserSubscribeRepository;
|
|
|
import cn.tr.module.smart.wx.constant.WxAppletSubscribeStatusStringType;
|
|
import cn.tr.module.smart.wx.constant.WxAppletSubscribeStatusStringType;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
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;
|
|
@@ -13,26 +16,48 @@ 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 org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
@Component
|
|
@Component
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
public class SubscribeMsgPopupEventHandler implements WxMpMessageHandler {
|
|
public class SubscribeMsgPopupEventHandler implements WxMpMessageHandler {
|
|
|
- @Autowired
|
|
|
|
|
- private BizWxUserMpCareRepository wxUserMpCareRepository;
|
|
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private BizWxUserSubscribeRepository wxUserSubscribeRepository;
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
WxMpSubscribeMsgEvent.SubscribeMsgPopupEvent subscribeMsgPopupEvent = wxMessage.getSubscribeMsgPopupEvent();
|
|
WxMpSubscribeMsgEvent.SubscribeMsgPopupEvent subscribeMsgPopupEvent = wxMessage.getSubscribeMsgPopupEvent();
|
|
|
|
|
+ String appId = wxMpService.getWxMpConfigStorage().getAppId();
|
|
|
String unionId = wxMessage.getUnionId();
|
|
String unionId = wxMessage.getUnionId();
|
|
|
for (WxMpSubscribeMsgEvent.PopupEvent popupEvent : subscribeMsgPopupEvent.getList()) {
|
|
for (WxMpSubscribeMsgEvent.PopupEvent popupEvent : subscribeMsgPopupEvent.getList()) {
|
|
|
String subscribeStatusString = popupEvent.getSubscribeStatusString();
|
|
String subscribeStatusString = popupEvent.getSubscribeStatusString();
|
|
|
String templateId = popupEvent.getTemplateId();
|
|
String templateId = popupEvent.getTemplateId();
|
|
|
if (StrUtil.equals(subscribeStatusString, WxAppletSubscribeStatusStringType.ACCEPT)) {
|
|
if (StrUtil.equals(subscribeStatusString, WxAppletSubscribeStatusStringType.ACCEPT)) {
|
|
|
log.debug("[WxMpSubscribeMsgEvent] unionId:{},templateId:{},subscribeStatusString:{}", unionId, templateId, subscribeStatusString);
|
|
log.debug("[WxMpSubscribeMsgEvent] unionId:{},templateId:{},subscribeStatusString:{}", unionId, templateId, subscribeStatusString);
|
|
|
|
|
+ //开始订阅
|
|
|
|
|
+ BizWxUserSubscribePO subscribePO = wxUserSubscribeRepository.selectOne(new LambdaQueryWrapper<BizWxUserSubscribePO>()
|
|
|
|
|
+ .eq(BizWxUserSubscribePO::getTemplateId, templateId)
|
|
|
|
|
+ .eq(BizWxUserSubscribePO::getUnionId, unionId));
|
|
|
|
|
+ if(subscribePO==null){
|
|
|
|
|
+ subscribePO = new BizWxUserSubscribePO();
|
|
|
|
|
+ subscribePO.setTemplateId(templateId);
|
|
|
|
|
+ subscribePO.setUnionId(unionId);
|
|
|
|
|
+ subscribePO.setAppId(appId);
|
|
|
|
|
+ subscribePO.setCount(1);
|
|
|
|
|
+ wxUserSubscribeRepository.insert(subscribePO);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ subscribePO.setCount(subscribePO.getCount()+1);
|
|
|
|
|
+ wxUserSubscribeRepository.updateById(subscribePO);
|
|
|
|
|
+ }
|
|
|
}else if (StrUtil.equals(subscribeStatusString, WxAppletSubscribeStatusStringType.REJECT)) {
|
|
}else if (StrUtil.equals(subscribeStatusString, WxAppletSubscribeStatusStringType.REJECT)) {
|
|
|
|
|
+ //取消订阅
|
|
|
log.debug("[WxMpSubscribeMsgEvent] unionId:{},templateId:{},subscribeStatusString:{}", unionId, templateId, subscribeStatusString);
|
|
log.debug("[WxMpSubscribeMsgEvent] unionId:{},templateId:{},subscribeStatusString:{}", unionId, templateId, subscribeStatusString);
|
|
|
|
|
+ wxUserSubscribeRepository.delete(new LambdaQueryWrapper<BizWxUserSubscribePO>()
|
|
|
|
|
+ .eq(BizWxUserSubscribePO::getTemplateId, templateId)
|
|
|
|
|
+ .eq(BizWxUserSubscribePO::getUnionId, unionId));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|