Skip to content

Commit 8ea75fe

Browse files
committed
抽离尝试保存用户信息方法,在用户绑定与发送关键字时执行
1 parent 2d81766 commit 8ea75fe

File tree

3 files changed

+57
-35
lines changed

3 files changed

+57
-35
lines changed

src/main/java/com/github/binarywang/demo/wx/mp/handler/MsgHandler.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.github.binarywang.demo.wx.mp.handler;
22

33
import com.github.binarywang.demo.wx.mp.builder.TextBuilder;
4+
import com.github.binarywang.demo.wx.mp.service.WxMpUserService;
45
import com.github.binarywang.demo.wx.mp.utils.JsonUtils;
56
import me.chanjar.weixin.common.error.WxErrorException;
67
import me.chanjar.weixin.common.session.WxSessionManager;
78
import me.chanjar.weixin.mp.api.WxMpService;
89
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
910
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
11+
import me.chanjar.weixin.mp.bean.result.WxMpUser;
1012
import org.apache.commons.lang3.StringUtils;
13+
import org.springframework.beans.factory.annotation.Autowired;
1114
import org.springframework.stereotype.Component;
1215

1316
import java.util.Map;
@@ -19,7 +22,8 @@
1922
*/
2023
@Component
2124
public class MsgHandler extends AbstractHandler {
22-
25+
@Autowired
26+
public WxMpUserService wxMpUserService;
2327
@Override
2428
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
2529
Map<String, Object> context, WxMpService weixinService,
@@ -29,23 +33,21 @@ public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
2933
//TODO 可以选择将消息保存到本地
3034
}
3135

36+
String resultContent = "欢迎关注";
3237
//当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服
3338
try {
34-
if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
35-
&& weixinService.getKefuService().kfOnlineList()
36-
.getKfOnlineList().size() > 0) {
37-
return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE()
38-
.fromUser(wxMessage.getToUser())
39-
.toUser(wxMessage.getFromUser()).build();
39+
if (StringUtils.startsWith(wxMessage.getContent(), "绑定")) {
40+
this.logger.info("用户发送发了绑定: {}", wxMessage.getFromUser());
41+
WxMpUser userWxInfo = weixinService.getUserService()
42+
.userInfo(wxMessage.getFromUser(), null);
43+
boolean result = wxMpUserService.trySave(userWxInfo);
44+
resultContent = result ? "绑定推送成功" : "绑定推送失败";
4045
}
4146
} catch (WxErrorException e) {
4247
e.printStackTrace();
4348
}
4449

45-
//TODO 组装回复消息
46-
String content = "收到信息内容:" + JsonUtils.toJson(wxMessage);
47-
48-
return new TextBuilder().build(content, wxMessage, weixinService);
50+
return new TextBuilder().build(resultContent, wxMessage, weixinService);
4951

5052
}
5153

src/main/java/com/github/binarywang/demo/wx/mp/handler/SubscribeHandler.java

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
import java.util.Map;
44

5-
import com.github.binarywang.demo.wx.mp.eneity.UserWxInfoPO;
6-
import com.github.binarywang.demo.wx.mp.repository.UserWxInfoRepository;
5+
import com.github.binarywang.demo.wx.mp.service.WxMpUserService;
76
import org.springframework.beans.factory.annotation.Autowired;
87
import org.springframework.stereotype.Component;
98

@@ -21,7 +20,7 @@
2120
@Component
2221
public class SubscribeHandler extends AbstractHandler {
2322
@Autowired
24-
public UserWxInfoRepository userWxInfoRepository;
23+
public WxMpUserService wxMpUserService;
2524

2625
@Override
2726
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
@@ -35,28 +34,8 @@ public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
3534
WxMpUser userWxInfo = weixinService.getUserService()
3635
.userInfo(wxMessage.getFromUser(), null);
3736
if (userWxInfo != null) {
38-
userWxInfo.setUnionId("oKOdI67B5_qwzzLJttiCnA86lBa8");
3937
this.logger.debug("获取到用户信息[{}]", userWxInfo.getUnionId());
40-
boolean edit = false;
41-
UserWxInfoPO userWxInfoPO = userWxInfoRepository.findFirstByUid(userWxInfo.getUnionId());
42-
if (userWxInfoPO == null) {
43-
userWxInfoPO = new UserWxInfoPO();
44-
userWxInfoPO.setUid(userWxInfo.getUnionId());
45-
userWxInfoPO.setMpOpenID(userWxInfo.getOpenId());
46-
edit = true;
47-
} else {
48-
if (userWxInfoPO.getMpOpenID() == null) {
49-
userWxInfoPO.setMpOpenID(userWxInfo.getOpenId());
50-
edit = true;
51-
}
52-
if (userWxInfoPO.getUid() == null) {
53-
userWxInfoPO.setUid(userWxInfo.getUnionId());
54-
edit = true;
55-
}
56-
}
57-
if (edit) {
58-
UserWxInfoPO save = userWxInfoRepository.save(userWxInfoPO);
59-
}
38+
wxMpUserService.trySave(userWxInfo);
6039
}
6140
} catch (WxErrorException e) {
6241
if (e.getError().getErrorCode() == 48001) {
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.github.binarywang.demo.wx.mp.service;
2+
3+
import com.github.binarywang.demo.wx.mp.eneity.UserWxInfoPO;
4+
import com.github.binarywang.demo.wx.mp.repository.UserWxInfoRepository;
5+
import me.chanjar.weixin.mp.bean.result.WxMpUser;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
/**
10+
* @author imldy
11+
* @date 2023/03/04 15:24
12+
**/
13+
@Service
14+
public class WxMpUserService {
15+
@Autowired
16+
public UserWxInfoRepository userWxInfoRepository;
17+
18+
public boolean trySave(WxMpUser userWxInfo) {
19+
boolean edit = false;
20+
UserWxInfoPO userWxInfoPO = userWxInfoRepository.findFirstByUid(userWxInfo.getUnionId());
21+
if (userWxInfoPO == null) {
22+
userWxInfoPO = new UserWxInfoPO();
23+
userWxInfoPO.setUid(userWxInfo.getUnionId());
24+
userWxInfoPO.setMpOpenID(userWxInfo.getOpenId());
25+
edit = true;
26+
} else {
27+
if (userWxInfoPO.getMpOpenID() == null) {
28+
userWxInfoPO.setMpOpenID(userWxInfo.getOpenId());
29+
edit = true;
30+
}
31+
if (userWxInfoPO.getUid() == null) {
32+
userWxInfoPO.setUid(userWxInfo.getUnionId());
33+
edit = true;
34+
}
35+
}
36+
if (edit) {
37+
UserWxInfoPO save = userWxInfoRepository.save(userWxInfoPO);
38+
}
39+
return true;
40+
}
41+
}

0 commit comments

Comments
 (0)