"".equals(ret)) {
logger.info("网络超时");
renderJson(new OutRoot().setCode("101").setMsg(SYS.CONTACT_FAIL));
} else {
JSONObject obj = JSONObject.parseObject(ret);
if (obj.containsKey("errcode")) {
String errcode = obj.get("errcode").toString();
logger.info("微信返回的错误码{}", errcode);
renderJson(new OutRoot().setCode("101").setMsg(SYS.CONTACT_FAIL));
} else if (obj.containsKey("session_key")) {
logger.info("调微信成功");
// 开始处理userInfo
String openId = obj.get("openid").toString();
Record tbMember = new Record();
tbMember.set("weixin_openid", openId);
System.out.println("openId==" + openId);
// 先查询openId存在不存在,存在不入库,不存在就入库
List<Record> memberList = tbMemberService.selectMember(tbMember);
if (memberList != null && memberList.size() > 0) {
logger.info("openId已经存在,不需要插入");
} else {
JSONObject rawDataJson = reqJson.getJSONObject("userInfo");
String nickName = rawDataJson.getString("nickName");
String avatarUrl = rawDataJson.getString("avatarUrl");
String gender = rawDataJson.getString("gender");
String province = rawDataJson.getString("province");
String city = rawDataJson.getString("city");
String country = rawDataJson.getString("country");
tbMember.set("gender", gender);
tbMember.set("nick_name", nickName);
tbMember.set("avatar_url", avatarUrl);
Long openId2 = tbMemberService.addMember(tbMember);
logger.info("openId不存在,插入数据库");
}
// (1) 获得sessionkey
String sessionKey = obj.get("session_key").toString();
logger.info("sessionKey==" + sessionKey);
logger.info("openId==" + openId);
// (2) 得到sessionkey以后存到缓存,key值采用不会重复的uuid
String rsession = UUID.randomUUID().toString();
Cache tokenCache = Redis.use("redis_00");
// (3) 首先根据openId,取出来之前存的openId对应的sessionKey的值。
String oldSeesionKey = tokenCache.getJedis().get(openId);
if (oldSeesionKey != null && !"".equals(oldSeesionKey)) {
logger.info("oldSeesionKey==" + oldSeesionKey);
// (4) 删除之前openId对应的缓存
tokenCache.getJedis().del(oldSeesionKey);
logger.info("老的openId删除以后==" + tokenCache.getJedis().get(oldSeesionKey));
}
// (5) 开始缓存新的sessionKey: key --> uuid, value --> sessionObj
JSONObject sessionObj = new JSONObject();
sessionObj.put("openId", openId);
sessionObj.put("sessionKey", sessionKey);
tokenCache.getJedis().set(rsession, sessionObj.toJSONString());
// (6) 开始缓存新的openId与session对应关系 : key --> openId , value --> rsession
tokenCache.getJedis().set(openId, rsession);
String newOpenId = tokenCache.getJedis().get(openId);
String newrSession = tokenCache.getJedis().get(rsession);
logger.info("新的openId==" + newOpenId);
logger.info("新的newrSession==" + newrSession);
// (7) 把新的sessionKey返回给小程序
JSONObject objret = new JSONObject();
objret.put("rdSessionKey", rsession);
objret.put("errno", 0);
renderJson(objret);
}
}
}
}
}
项目框架是我比较喜欢Jfinal,java轻量级急速开发框架,非常高效,也推荐给大家。可能有哪些遗漏的地方欢迎大家积极提出意见和批评。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于微信小程序的登陆流程
微信小程序之小豆瓣图书的介绍
以上就是java实现微信小程序登录态维护的详细内容,更多请关注php中文网其它相关文章!
小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。
关键词:java完成微信小程序登录态维护