数据模型.png

用户登录和用户绑定接口
wangh_branch
王壕 3 years ago
parent d8a155e1f1
commit 5da4f99707

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@ -0,0 +1,73 @@
package com.example.demo.common;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class HttpGetUtil {
public static String httpRequestToString(String url,
Map params) {
String result = null;
try {
InputStream is = httpRequestToStream(url, params);
BufferedReader in = new BufferedReader(new InputStreamReader(is,
"UTF-8"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
result = buffer.toString();
} catch (Exception e) {
return null;
}
System.out.println(result);
return result;
}
private static InputStream httpRequestToStream(String url,
Map params) {
InputStream is = null;
try {
String parameters = "";
boolean hasParams = false;
for(Object key : params.keySet()){
String value = URLEncoder.encode((String) params.get(key), "UTF-8");
parameters += key +"="+ value +"&";
hasParams = true;
}
if(hasParams){
parameters = parameters.substring(0, parameters.length()-1);
}
url += "?"+ parameters;
System.out.println(url);
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setConnectTimeout(50000);
conn.setReadTimeout(50000);
conn.setDoInput(true);
//设置请求方式默认为GET
conn.setRequestMethod("GET");
is = conn.getInputStream();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
}

@ -30,9 +30,9 @@ public class WechatUtil {
Map<String, String> requestUrlParam = new HashMap<>(); Map<String, String> requestUrlParam = new HashMap<>();
// https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=164113089&lang=zh_CN // https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=164113089&lang=zh_CN
//小程序appId //小程序appId
requestUrlParam.put("wx08c675f6ba5b2cdc", "小程序appId"); requestUrlParam.put("wx08c675f6ba5b2cdc", "wx08c675f6ba5b2cdc");
//小程序secret //小程序secret
requestUrlParam.put("0c28388c09ff373d391fe66d085dd39d", "小程序secret"); requestUrlParam.put("0c28388c09ff373d391fe66d085dd39d", "0c28388c09ff373d391fe66d085dd39d");
//小程序端返回的code //小程序端返回的code
requestUrlParam.put("js_code", code); requestUrlParam.put("js_code", code);
//默认参数 //默认参数

@ -1,12 +1,107 @@
package com.example.demo.controller; package com.example.demo.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.common.HttpGetUtil;
import com.example.demo.domain.User;
import com.example.demo.mapper.UserMapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
@Controller import javax.management.Query;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.*;
@Tag(name = "真·用户接口",description = "用户登录,")
@RestController
public class Demmo { public class Demmo {
@RequestMapping("/index") @RequestMapping("/index")
public String first(){ public String first(){
return "index"; return "index";
} }
@Autowired
private UserMapper userMapper;
@GetMapping("atlogin")
@Operation(summary = "真·微信登录接口")
public Map getOpenId( HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "code", required = false) String code) throws UnsupportedEncodingException {
response.setContentType("text/html");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Map params = new HashMap();
params.put("appid", "wx08c675f6ba5b2cdc");
params.put("secret", "0c28388c09ff373d391fe66d085dd39d");
params.put("js_code", code);
params.put("grant_type", "authorization_code");
System.out.println(params);
String result = HttpGetUtil.httpRequestToString(
"https://api.weixin.qq.com/sns/jscode2session", params);
JSONObject jsonObject = JSONObject.parseObject(result);
String openid = jsonObject.get("openid").toString();
System.out.println("得到的openid为:"+openid);
String sessionKey=jsonObject.get("session_key").toString();
User user = this.userMapper.selectById(openid);
// uuid生成唯一key用于维护微信小程序用户与服务端的会话
String skey = UUID.randomUUID().toString();
if (user == null) {
// 用户信息入库
// String nickName = rawDataJson.getString("nickName");
// String avatarUrl = rawDataJson.getString("avatarUrl");
// String gender = rawDataJson.getString("gender");
// String city = rawDataJson.getString("city");
// String country = rawDataJson.getString("country");
// String province = rawDataJson.getString("province");
user = new User();
user.setOpenId(openid);
user.setSkey(skey);
user.setCreateTime(new Date());
user.setLastVisitTime(new Date());
user.setSessionKey(sessionKey);
// user.setCity(city);
// user.setProvince(province);
// user.setCountry(country);
// user.setAvatarUrl(avatarUrl);
// user.setGender(Integer.parseInt(gender));
// user.setNickName(nickName);
this.userMapper.insert(user);
} else {
// 已存在,更新用户登录时间
user.setLastVisitTime(new Date());
// 重新设置会话skey
user.setSkey(skey);
this.userMapper.updateById(user);
}
Map<String, Object> skeymap = new HashMap<String, Object>();
skeymap.put("skey",skey);
return skeymap;
}
@RequestMapping("/atbind")
@Operation(summary = "用户绑定接口")
public void atbind(@RequestParam(value = "studentnumber",required = true) String studentnumber,
@RequestParam(value = "name",required = true) String name,
@RequestParam(value = "skey",required = true) String skey)
{
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.like("skey",skey);
User user = this.userMapper.selectOne(queryWrapper);
user.setStudent_Number(studentnumber);
user.setName(name);
this.userMapper.updateById(user);
System.out.println(user);
}
} }

@ -53,21 +53,21 @@ public class UserController {
// 4.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey) // 4.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey)
String signature2 = DigestUtils.sha1Hex(rawData + sessionKey); String signature2 = DigestUtils.sha1Hex(rawData + sessionKey);
if (!signature.equals(signature2)) { // if (!signature.equals(signature2)) {
return GlobalResult.build(500, "签名校验失败", null); // return GlobalResult.build(500, "签名校验失败", null);
} // }
// 5.根据返回的User实体类判断用户是否是新用户是的话将用户信息存到数据库不是的话更新最新登录时间 // 5.根据返回的User实体类判断用户是否是新用户是的话将用户信息存到数据库不是的话更新最新登录时间
User user = this.userMapper.selectById(openid); User user = this.userMapper.selectById(openid);
// uuid生成唯一key用于维护微信小程序用户与服务端的会话 // uuid生成唯一key用于维护微信小程序用户与服务端的会话
String skey = UUID.randomUUID().toString(); String skey = UUID.randomUUID().toString();
if (user == null) { if (user == null) {
// 用户信息入库 // 用户信息入库
String nickName = rawDataJson.getString("nickName"); // String nickName = rawDataJson.getString("nickName");
String avatarUrl = rawDataJson.getString("avatarUrl"); // String avatarUrl = rawDataJson.getString("avatarUrl");
String gender = rawDataJson.getString("gender"); // String gender = rawDataJson.getString("gender");
String city = rawDataJson.getString("city"); // String city = rawDataJson.getString("city");
String country = rawDataJson.getString("country"); // String country = rawDataJson.getString("country");
String province = rawDataJson.getString("province"); // String province = rawDataJson.getString("province");
user = new User(); user = new User();
user.setOpenId(openid); user.setOpenId(openid);
@ -75,12 +75,12 @@ public class UserController {
user.setCreateTime(new Date()); user.setCreateTime(new Date());
user.setLastVisitTime(new Date()); user.setLastVisitTime(new Date());
user.setSessionKey(sessionKey); user.setSessionKey(sessionKey);
user.setCity(city); // user.setCity(city);
user.setProvince(province); // user.setProvince(province);
user.setCountry(country); // user.setCountry(country);
user.setAvatarUrl(avatarUrl); // user.setAvatarUrl(avatarUrl);
user.setGender(Integer.parseInt(gender)); // user.setGender(Integer.parseInt(gender));
user.setNickName(nickName); // user.setNickName(nickName);
this.userMapper.insert(user); this.userMapper.insert(user);
} else { } else {

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -16,11 +18,12 @@ import java.util.Date;
*/ */
@Data @Data
@TableName("user") @TableName("user")
public class User { public class User extends Wrapper<User> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* open_id * open_id
*/ */
@TableId(value = "open_id",type = IdType.INPUT) @TableId(value = "open_id",type = IdType.INPUT)
private String openId; private String openId;
/** /**
@ -90,4 +93,23 @@ public class User {
@TableField("power") @TableField("power")
private int power; private int power;
@Override
public User getEntity() {
return null;
}
@Override
public MergeSegments getExpression() {
return null;
}
@Override
public String getCustomSqlSegment() {
return null;
}
@Override
public String getSqlSegment() {
return null;
}
} }

Loading…
Cancel
Save