微信绑定

beetlsql3-dev
xuliangtong 2 years ago
parent 9c69cef5d2
commit 0ecb32909d

@ -20,8 +20,10 @@ import org.apache.commons.lang3.StringUtils;
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 java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* @author Binary Wang * @author Binary Wang
@ -40,6 +42,11 @@ public class MsgHandler extends AbstractHandler {
@Autowired @Autowired
private WxMpConfig wxConfig; private WxMpConfig wxConfig;
/**
*
*/
public static ConcurrentHashMap<String, Map<String, Object>> WE_CHAT_MAP = new ConcurrentHashMap<>();
@Override @Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
@ -55,6 +62,7 @@ public class MsgHandler extends AbstractHandler {
.build(); .build();
} }
userId = userId.replace("qrscene_", ""); userId = userId.replace("qrscene_", "");
Map<String, Object> map = new HashMap<>();
//登录 //登录
if (userId.contains("login")) { if (userId.contains("login")) {
//登录所包含userId为雪花算法ID //登录所包含userId为雪花算法ID
@ -65,11 +73,20 @@ public class MsgHandler extends AbstractHandler {
if (CollectionUtil.isNotEmpty(info)) { if (CollectionUtil.isNotEmpty(info)) {
Student student = studentService.getByUserId(info.get(0).getUserId()); Student student = studentService.getByUserId(info.get(0).getUserId());
String token = tokenService.getToken(student); String token = tokenService.getToken(student);
WebSocketServer.sendToUser("token="+token, userId);
map.put("type", "login");
map.put("status", "success");
map.put("token", token);
WE_CHAT_MAP.put(userId, map);
// WebSocketServer.sendToUser("token="+token, userId);
return WxMpXmlOutMessage.TEXT().content("登录成功").toUser(fromUser) return WxMpXmlOutMessage.TEXT().content("登录成功").toUser(fromUser)
.fromUser(wxMessage.getToUser()) .fromUser(wxMessage.getToUser())
.build(); .build();
} }
map.put("type", "login");
map.put("status", "error");
map.put("token", "登录失败,未绑定账号");
WE_CHAT_MAP.put(userId, map);
return WxMpXmlOutMessage.TEXT().content("登录失败,未绑定账号").toUser(fromUser) return WxMpXmlOutMessage.TEXT().content("登录失败,未绑定账号").toUser(fromUser)
.fromUser(wxMessage.getToUser()) .fromUser(wxMessage.getToUser())
.build(); .build();
@ -81,12 +98,20 @@ public class MsgHandler extends AbstractHandler {
coreUserWxQuery2.setUserId(Long.parseLong(userId)); coreUserWxQuery2.setUserId(Long.parseLong(userId));
CoreUserWx info2 = coreUserWxService.getInfo(coreUserWxQuery2); CoreUserWx info2 = coreUserWxService.getInfo(coreUserWxQuery2);
if (info2 != null || info1 != null) { if (info2 != null || info1 != null) {
return WxMpXmlOutMessage.TEXT().content("绑定失败,已经绑定其他账号").toUser(fromUser) map.put("type", "bind");
map.put("status", "error");
map.put("token", "绑定失败,已经绑定");
WE_CHAT_MAP.put(userId, map);
return WxMpXmlOutMessage.TEXT().content("绑定失败,已经绑定").toUser(fromUser)
.fromUser(wxMessage.getToUser()) .fromUser(wxMessage.getToUser())
.build(); .build();
} }
coreUserWxQuery2.setOpenid(fromUser); coreUserWxQuery2.setOpenid(fromUser);
coreUserWxService.add(coreUserWxQuery2); coreUserWxService.add(coreUserWxQuery2);
map.put("type", "bind");
map.put("status", "success");
map.put("token", "绑定成功");
WE_CHAT_MAP.put(userId, map);
// String redirectURI = wxConfig.getCodeBackUrl(); // String redirectURI = wxConfig.getCodeBackUrl();
// String s = weixinService.oauth2buildAuthorizationUrl(redirectURI, "snsapi_userinfo", "STATE"); // String s = weixinService.oauth2buildAuthorizationUrl(redirectURI, "snsapi_userinfo", "STATE");
return WxMpXmlOutMessage.TEXT().content("绑定成功").toUser(fromUser) return WxMpXmlOutMessage.TEXT().content("绑定成功").toUser(fromUser)

@ -8,10 +8,12 @@ import cn.jlw.webSocket.WebSocketServer;
import com.github.binarywang.utils.qrcode.MatrixToImageWriter; import com.github.binarywang.utils.qrcode.MatrixToImageWriter;
import com.ibeetl.admin.core.conf.WxMpConfig; import com.ibeetl.admin.core.conf.WxMpConfig;
import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.util.map.MapUtil;
import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.CoreUserWx; import com.ibeetl.jlw.entity.CoreUserWx;
import com.ibeetl.jlw.entity.Student; import com.ibeetl.jlw.entity.Student;
import com.ibeetl.jlw.service.CoreUserWxService; import com.ibeetl.jlw.service.CoreUserWxService;
import com.ibeetl.jlw.service.MsgHandler;
import com.ibeetl.jlw.service.StudentService; import com.ibeetl.jlw.service.StudentService;
import com.ibeetl.jlw.service.WeixinService; import com.ibeetl.jlw.service.WeixinService;
import com.ibeetl.jlw.web.query.CoreUserWxQuery; import com.ibeetl.jlw.web.query.CoreUserWxQuery;
@ -228,4 +230,29 @@ public class WeiXinController {
//endregion 网页授权 //endregion 网页授权
//region 登录绑定轮询
/**
*
* @param type login bind
* @param userId id
* @return status success,error,warning
*/
@GetMapping("/getLoginAndBindStatus")
public Map<String, Object> getLoginAndBindStatus(String type, String userId) {
Map<String, Object> userMap = MsgHandler.WE_CHAT_MAP.get(userId);
if (MapUtil.isEmpty(userMap)) {
Map<String, Object> map = new HashMap<>();
map.put("type", type);
map.put("status", "warning");
map.put("token", "微信未回复,请等待");
return map;
}
MsgHandler.WE_CHAT_MAP.remove(userId);
return userMap;
}
//endregion 登录绑定轮询
} }
Loading…
Cancel
Save