|
@@ -8,6 +8,7 @@ import com.book.push.builder.TextBuilder;
|
|
import com.book.push.builder.TuWenBuilder;
|
|
import com.book.push.builder.TuWenBuilder;
|
|
import com.book.push.cons.UrlCons;
|
|
import com.book.push.cons.UrlCons;
|
|
import com.book.push.service.dao.*;
|
|
import com.book.push.service.dao.*;
|
|
|
|
+import com.book.push.service.redis.RedisService;
|
|
import com.book.push.utils.JsonUtils;
|
|
import com.book.push.utils.JsonUtils;
|
|
import com.book.push.vo.NewsMsgContent;
|
|
import com.book.push.vo.NewsMsgContent;
|
|
import com.book.push.vo.TextMsgContent;
|
|
import com.book.push.vo.TextMsgContent;
|
|
@@ -43,32 +44,37 @@ public class SubscribeHandler extends AbstractHandler {
|
|
private WechatSubscribeConfigService wechatSubscribeConfigService;
|
|
private WechatSubscribeConfigService wechatSubscribeConfigService;
|
|
@Autowired
|
|
@Autowired
|
|
private OpHostService opHostService;
|
|
private OpHostService opHostService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private RedisService redisService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
|
|
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
|
|
Map<String, Object> context, WxMpService weixinService,
|
|
Map<String, Object> context, WxMpService weixinService,
|
|
WxSessionManager sessionManager) throws WxErrorException {
|
|
WxSessionManager sessionManager) throws WxErrorException {
|
|
|
|
|
|
- log.info("新关注用户 OPENID: " + wxMessage.getFromUser());
|
|
|
|
|
|
+ log.info("新关注用户 OPENID: " + wxMessage.getFromUser());
|
|
|
|
|
|
// 获取微信用户基本信息
|
|
// 获取微信用户基本信息
|
|
- WxMpUser userWxInfo ;
|
|
|
|
|
|
+ WxMpUser userWxInfo;
|
|
String openId = wxMessage.getFromUser();
|
|
String openId = wxMessage.getFromUser();
|
|
- String appid = StringUtils.isEmpty(wxMessage.getAuthorizeAppId())?wxMessage.getToUser():wxMessage.getAuthorizeAppId();
|
|
|
|
|
|
+ String appid = StringUtils.isEmpty(wxMessage.getAuthorizeAppId()) ? wxMessage.getToUser() : wxMessage.getAuthorizeAppId();
|
|
AdminConfig adminConfig = adminConfigService.selectByAppid(appid);
|
|
AdminConfig adminConfig = adminConfigService.selectByAppid(appid);
|
|
User user = userService.selectByOpenId(openId);
|
|
User user = userService.selectByOpenId(openId);
|
|
try {
|
|
try {
|
|
- userWxInfo = weixinService.getUserService()
|
|
|
|
|
|
+ userWxInfo = weixinService.getUserService()
|
|
.userInfo(wxMessage.getFromUser(), null);
|
|
.userInfo(wxMessage.getFromUser(), null);
|
|
if (userWxInfo != null) {
|
|
if (userWxInfo != null) {
|
|
// TODO 可以添加关注用户到本地数据库
|
|
// TODO 可以添加关注用户到本地数据库
|
|
|
|
|
|
|
|
+ if (user == null) {
|
|
|
|
+ user = userService.insertUserByWxUser(userWxInfo, adminConfig.getAdminId());
|
|
|
|
+ }else {
|
|
|
|
+ user = userService.updateUserByWxUser(user.getId(),userWxInfo);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
- if (user==null){
|
|
|
|
-
|
|
|
|
- user = userService.createUserByWxUser(userWxInfo,adminConfig.getAdminId());
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
+ String keyMpSubscribe = redisService.getKeyListener().getKeyMpSubscribe(adminConfig.getPlatformId(), appid, openId);
|
|
|
|
+ redisService.set(keyMpSubscribe, JsonUtils.toJsonString(user),60L);
|
|
|
|
|
|
}
|
|
}
|
|
} catch (WxErrorException e) {
|
|
} catch (WxErrorException e) {
|
|
@@ -82,7 +88,7 @@ public class SubscribeHandler extends AbstractHandler {
|
|
try {
|
|
try {
|
|
responseResult = this.handleSpecial(wxMessage);
|
|
responseResult = this.handleSpecial(wxMessage);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- log.error(e.getMessage(), e);
|
|
|
|
|
|
+ log.error(e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
|
|
if (responseResult != null) {
|
|
if (responseResult != null) {
|
|
@@ -90,24 +96,24 @@ public class SubscribeHandler extends AbstractHandler {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
try {
|
|
try {
|
|
WechatSubscribeSwitch wechatSubscribeSwitch = wechatSubscribeSwitchService.selectByAdminId(adminConfig.getAdminId());
|
|
WechatSubscribeSwitch wechatSubscribeSwitch = wechatSubscribeSwitchService.selectByAdminId(adminConfig.getAdminId());
|
|
|
|
+ if (wechatSubscribeSwitch ==null){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
Byte status = wechatSubscribeSwitch.getStatus();
|
|
Byte status = wechatSubscribeSwitch.getStatus();
|
|
- if (status.intValue() == 0){
|
|
|
|
|
|
+ if (status.intValue() == 0) {
|
|
|
|
|
|
- return new TextBuilder().build(String.format("@%s,感谢关注啦",user.getNickname()), wxMessage, weixinService);
|
|
|
|
|
|
+ return new TextBuilder().build(String.format("@%s,感谢关注啦", user.getNickname()), wxMessage, weixinService);
|
|
}
|
|
}
|
|
- if (wechatSubscribeSwitch.getType()==1){
|
|
|
|
- return new TextBuilder().build(String.format("@%s,感谢关注啦",user.getNickname()), wxMessage, weixinService);
|
|
|
|
|
|
+ if (wechatSubscribeSwitch.getType() == 1) {
|
|
|
|
+ return new TextBuilder().build(String.format("@%s,感谢关注啦", user.getNickname()), wxMessage, weixinService);
|
|
}
|
|
}
|
|
WechatSubscribeConfig wechatSubscribeConfig = wechatSubscribeConfigService.selectByAdminId(adminConfig.getAdminId());
|
|
WechatSubscribeConfig wechatSubscribeConfig = wechatSubscribeConfigService.selectByAdminId(adminConfig.getAdminId());
|
|
- if (wechatSubscribeConfig!=null){
|
|
|
|
|
|
+ if (wechatSubscribeConfig != null) {
|
|
String host = opHostService.selectById(adminConfig.getOphostId()).getHost();
|
|
String host = opHostService.selectById(adminConfig.getOphostId()).getHost();
|
|
String type = wechatSubscribeConfig.getType().toString();
|
|
String type = wechatSubscribeConfig.getType().toString();
|
|
- if ("text".equals(type)){
|
|
|
|
|
|
+ if ("text".equals(type)) {
|
|
String textContent = wechatSubscribeConfig.getTextContent();
|
|
String textContent = wechatSubscribeConfig.getTextContent();
|
|
List<TextMsgContent> textMsgContents = JsonUtils.getList(textContent, TextMsgContent.class);
|
|
List<TextMsgContent> textMsgContents = JsonUtils.getList(textContent, TextMsgContent.class);
|
|
StringBuilder sb = new StringBuilder();
|
|
StringBuilder sb = new StringBuilder();
|
|
@@ -121,7 +127,7 @@ public class SubscribeHandler extends AbstractHandler {
|
|
String msg = "@%s,欢迎关注 [%s],点击下方继续阅读 %s\n";
|
|
String msg = "@%s,欢迎关注 [%s],点击下方继续阅读 %s\n";
|
|
msg = String.format(msg, nickname, nick_name, sb.toString());
|
|
msg = String.format(msg, nickname, nick_name, sb.toString());
|
|
return new TextBuilder().build(msg, wxMessage, weixinService);
|
|
return new TextBuilder().build(msg, wxMessage, weixinService);
|
|
- }else if ("news".equals(type)){
|
|
|
|
|
|
+ } else if ("news".equals(type)) {
|
|
List<NewsMsgContent> newsMsgContents = JsonUtils.getList(wechatSubscribeConfig.getNewsContent(), NewsMsgContent.class);
|
|
List<NewsMsgContent> newsMsgContents = JsonUtils.getList(wechatSubscribeConfig.getNewsContent(), NewsMsgContent.class);
|
|
List<WxMpXmlOutNewsMessage.Item> items = new ArrayList<>();
|
|
List<WxMpXmlOutNewsMessage.Item> items = new ArrayList<>();
|
|
for (NewsMsgContent newsMsgContent : newsMsgContents) {
|
|
for (NewsMsgContent newsMsgContent : newsMsgContents) {
|
|
@@ -137,7 +143,7 @@ public class SubscribeHandler extends AbstractHandler {
|
|
item.setUrl(url);
|
|
item.setUrl(url);
|
|
}
|
|
}
|
|
|
|
|
|
- return new TuWenBuilder().build(items, wxMessage, weixinService);
|
|
|
|
|
|
+ return new TuWenBuilder().build(items, wxMessage, weixinService);
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -147,7 +153,7 @@ public class SubscribeHandler extends AbstractHandler {
|
|
log.error(e.getMessage(), e);
|
|
log.error(e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
|
|
- return new TextBuilder().build(String.format("@%s,感谢关注啦",user.getNickname()), wxMessage, weixinService);
|
|
|
|
|
|
+ return new TextBuilder().build(String.format("@%s,感谢关注啦", user.getNickname()), wxMessage, weixinService);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|