前端代码
<div id="login_container"></div>
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
var obj = new WxLogin
({
id: "login_container",
self_redirect: true,
appid: "",
scope: "snsapi_login",
redirect_uri: window._CONFIG['domianURL'] + "/constant/weChat/callback_wechat?token=1",
state: "",
style: "black",
href: ""
});
后端代码
@RequestMapping("weChat/callback_wechat")
@Transactional
public void callback_wechat(HttpServletRequest request,HttpServletResponse response,AuthCallback callback, String token) throws JSONException, IOException {
AuthRequest authRequest = new AuthWeChatRequest(AuthConfig.builder()
.clientId(appID)
.clientSecret(appSecret)
.redirectUri("http://" + authorizedCallbackDomain + ":" + request.getServerPort() + "/jeecg-boot/constant/weChat/callback_wechat")
.build());
AuthResponse authResponse = authRequest.login(callback);
String data = com.alibaba.fastjson.JSONObject.toJSONString(authResponse.getData());
org.json.JSONObject obj = new org.json.JSONObject(data);
org.json.JSONObject tokenObj = new org.json.JSONObject(obj.get("token").toString());
String openId = tokenObj.getString("openId");
String uuid = obj.getString("uuid");
String nickname = obj.getString("nickname");
String gender = obj.getString("gender");
String avatar = obj.getString("avatar");
String location = obj.getString("location");
SysUserWechat sysUserWechat = new SysUserWechat();
sysUserWechat.setOpenId(openId);
sysUserWechat.setUuid(uuid);
sysUserWechat.setNickname(nickname);
sysUserWechat.setGender(gender);
sysUserWechat.setLocation(location);
sysUserWechat.setAvatar(avatar);
String loginName =JwtUtil.getUsername(token);
SysUser sysUser = sysUserService.getUserByName(loginName);
Result result = new Result<SysUser>();
Map map = new HashMap();
if (sysUser == null) {
QueryWrapper<SysUserWechat> queryWrapper = QueryGenerator.initQueryWrapper(new SysUserWechat(),request.getParameterMap());
queryWrapper.eq("open_id",sysUserWechat.getOpenId());
queryWrapper.eq("del_flag",0);
SysUserWechat wechat = sysUserWechatService.getOne(queryWrapper);
if (wechat == null) {
result.setSuccess(false);
result.setMessage("请先绑定微信账号再进行登陆!");
httpMethod(request,map,result);
}else{
QueryWrapper<SysUser> queryWrapper2 = QueryGenerator.initQueryWrapper(new SysUser(),request.getParameterMap());
queryWrapper2.eq("id",wechat.getUserId());
SysUser sysUser1 = sysUserService.getOne(queryWrapper2);
sysBaseAPI.addLog("用户名: " + sysUser1.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null);
userInfo(sysUser1, result);
httpMethod(request,map,result);
}
}else {
QueryWrapper<SysUserWechat> queryWrapper2 = QueryGenerator.initQueryWrapper(new SysUserWechat(),request.getParameterMap());
queryWrapper2.eq("open_id",sysUserWechat.getOpenId());
queryWrapper2.eq("del_flag",0);
Page<SysUserWechat> page = new Page<>(10, 20);
IPage<SysUserWechat> pageList = sysUserWechatService.page(page, queryWrapper2);
if (pageList.getTotal()>0) {
result.setSuccess(false);
result.setMessage("此微信号已被绑定,请选择其他微信账号!");
httpMethod(request,map,result);
}else {
sysUserWechat.setUserId(sysUser.getId());
sysUserWechat.setCreateBy(sysUser.getUsername());
sysUserWechat.setDelFlag(0);
sysUser.setBindingWechat(1);
try {
sysUserWechatService.save(sysUserWechat);
sysUserService.updateById(sysUser);
} catch (Exception e) {
log.error(e.getMessage(),e);
}
AuthState.delete("weChat");
result.setSuccess(true);
result.setMessage("绑定成功!");
httpMethod(request,map,result);
}
}
}
private void httpMethod(HttpServletRequest request,Map map,Result resultTest){
String json = JSON.toJSONString(resultTest);
map.put("userid","weChat");
map.put("json",json);
String params = JSON.toJSONString(map);
try {
HttpUtil.doPostJson("http://" + authorizedCallbackDomain + ":" + request.getServerPort() +"/constant/sendPost",params);
} catch (Exception e) {
e.printStackTrace();
}
}