记得上下班打卡 | git大法好,push需谨慎

Commit aaa7a693 authored by jiangxiulong's avatar jiangxiulong

海报活动微信公众号事件处理

parent a1ce192d
......@@ -46,6 +46,8 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_CITY_VOTE = "sweet:cityVote";
public final static String REDIS_KEY_SWEET_CITY_VOTE_USER = ":user:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME = ":updateTime";
// 2021草莓音乐节海报活动活动
public static final String REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK = "sweet:strawberryPoster:click:openId:";
// 微信用户相关
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO = "sweet:wechatUser:zhengzai:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY = "sweet:wechatUser:modernsky:unionId:";
......
package com.liquidnet.service.sweet.config;
import com.liquidnet.service.sweet.handler.StrawberryPosterHandler;
import com.liquidnet.service.sweet.handler.SubscribeHandler;
import com.liquidnet.service.sweet.handler.TextMsgHandler;
import com.liquidnet.service.sweet.handler.UnsubscribeHandler;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker;
......@@ -64,6 +66,10 @@ public class WechatMpConfigure {
private SubscribeHandler subscribeHandler;
@Autowired
private UnsubscribeHandler unsubscribeHandler;
@Autowired
private StrawberryPosterHandler posterHandler;
@Autowired
private TextMsgHandler textMsgHandler;
@PostConstruct
public void init() {
......@@ -135,6 +141,18 @@ public class WechatMpConfigure {
.handler(unsubscribeHandler)
.end();
// 2021草莓音乐节海报活动菜单点击事件
router.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT)
.event(WxConsts.EventType.CLICK)
.eventKey("V1001_GOOD")
.handler(posterHandler)
.end();
// 文本消息
router.rule().async(false).msgType(WxConsts.XmlMsgType.TEXT)
.handler(textMsgHandler)
.end();
return router;
}
}
package com.liquidnet.service.sweet.handler;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
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.Map;
/**
* <p>
* 2021草莓音乐节海报活动菜单点击
* </p>
*
* @author jiangxiulong
* @since 2021-11-25
*/
@Component
@Slf4j
public class StrawberryPosterHandler implements WxMpMessageHandler {
@Autowired
private WechatUsersRedisUtils redisUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) throws WxErrorException {
redisUtils.setStrawberryPosterClick(wxMessage.getFromUser(), 10 * 60);
// TODO: 2021/11/25 线上改成正规文案
return WxMpXmlOutMessage.TEXT().content("您已进入活动,请回复姓名,zhengzai.tv, 10分钟内回复有效")
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
}
}
package com.liquidnet.service.sweet.handler;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpMessageHandler;
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.Map;
/**
* <p>
* 文本消息
* </p>
*
* @author jiangxiulong
* @since 2021-11-25
*/
@Component
@Slf4j
public class TextMsgHandler implements WxMpMessageHandler {
@Autowired
private WechatUsersRedisUtils redisUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) throws WxErrorException {
boolean IsPosterClick = redisUtils.getStrawberryPosterClick(wxMessage.getFromUser());
// TODO: 2021/11/25 线上改成正规模版消息
if (IsPosterClick) {
return WxMpXmlOutMessage.TEXT().content("您已参与活动,结果为:".concat(wxMessage.getContent()))
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
} else {
return WxMpXmlOutMessage.TEXT().content("您未参与活动或者超过10分钟回复期限,结果为:".concat(wxMessage.getContent()))
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
}
}
}
......@@ -84,4 +84,17 @@ public class WechatUsersRedisUtils {
redisUtil.set(redisKeyU, sweetAppletUsersVo);
}
public void setStrawberryPosterClick(String openId, long time) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK.concat(openId);
redisUtil.set(redisKey, 1, time);
}
public boolean getStrawberryPosterClick(String openId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK.concat(openId);
Object obj = redisUtil.get(redisKey);
if(null == obj) {
return false;
} else {
return true;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment