1.先上流程图
2.再上代码
@RequestMapping("/callback")
public void getUserInfo(HttpServletRequest req,HttpServletResponse resp){
JSONObject jsonObject = WeiXinUtil.getUserInfoByTokenAndOpenID(req)
System.out.println(jsonObject)
String openId = jsonObject.getString("openid")
System.err.println("openId:"+openId)
boolean flag = false
User user=null
if (openId!=null) {
// 遍历tb_user中的openId,看看当前的openId是否在数据库中
List<String> openIds = userService.listAllOpenId()
for (String open_id : openIds) {
if (openId.equals(open_id)) {//当前微信openId写入过数据库了
flag = true
}
}
// System.out.println("当前微信用户信息是否存入过数据库:"+flag)
if (flag) {//绑定过
try {
HttpSession session = req.getSession()
user = userService.getUserByOpenId(openId)
session.setAttribute(Const.SESSION_USER, user)
resp.sendRedirect(WeiXinUtil.DOMAIN+"/New_OPC_2/wxindex.html")
}
catch (IOException e) {
e.printStackTrace()
}
}
else {//没绑定过,当前微信为新用户,创建一个没有任何权限的新账号
try {//创建新用户(默认用户和密码,父用户Id为系统管理员28)
HttpSession session = req.getSession()
User newUser = new User()
newUser.setLoginname(openId.substring(5, 14))
newUser.setPassword("123456")
newUser.setParentId(28)
newUser.setOpenId(openId)
//创建新用户,将信息插入到数据库中(此方法在userService的实现类在此地运行报空指针,所以使用userMapper)
userService.insertUser(newUser)
newUser=userService.getUserByOpenId(openId)
session.setAttribute(Const.SESSION_USER,newUser )
resp.sendRedirect(WeiXinUtil.DOMAIN+"/New_OPC_2/wxindex.html")
} catch (IOException e) {
e.printStackTrace()
}
}
}
2.注意事项
- 新微信用户,登陆后,会在首页接收到提示信息”没有访问权限!”。
- 如果需要让微信新用户拥有一定的访问权限,就需要管理员在用户管理界面,设置相应的权限。