From 5da4f9970754a0c8dc9efd24a999e9fdebb7bdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A3=95?= <1798488403@qq.com> Date: Mon, 10 Oct 2022 21:29:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9E=8B.png=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E5=92=8C=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/数据模型.png | Bin 0 -> 19709 bytes .../com/example/demo/common/HttpGetUtil.java | 73 +++++++++++++ .../com/example/demo/common/WechatUtil.java | 4 +- .../com/example/demo/controller/Demmo.java | 99 +++++++++++++++++- .../demo/controller/UserController.java | 30 +++--- .../java/com/example/demo/domain/User.java | 24 ++++- 6 files changed, 210 insertions(+), 20 deletions(-) create mode 100644 model/数据模型.png create mode 100644 src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java diff --git a/model/数据模型.png b/model/数据模型.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6e0308e9463822c4c2ff90dd2801e9c820ee1 GIT binary patch literal 19709 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 literal 0 HcmV?d00001 diff --git a/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java b/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java new file mode 100644 index 0000000..420d91f --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java @@ -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; + } + +} diff --git a/src/demo/src/main/java/com/example/demo/common/WechatUtil.java b/src/demo/src/main/java/com/example/demo/common/WechatUtil.java index 79d8345..65e19b8 100644 --- a/src/demo/src/main/java/com/example/demo/common/WechatUtil.java +++ b/src/demo/src/main/java/com/example/demo/common/WechatUtil.java @@ -30,9 +30,9 @@ public class WechatUtil { Map requestUrlParam = new HashMap<>(); // https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=164113089&lang=zh_CN //小程序appId - requestUrlParam.put("wx08c675f6ba5b2cdc", "小程序appId"); + requestUrlParam.put("wx08c675f6ba5b2cdc", "wx08c675f6ba5b2cdc"); //小程序secret - requestUrlParam.put("0c28388c09ff373d391fe66d085dd39d", "小程序secret"); + requestUrlParam.put("0c28388c09ff373d391fe66d085dd39d", "0c28388c09ff373d391fe66d085dd39d"); //小程序端返回的code requestUrlParam.put("js_code", code); //默认参数 diff --git a/src/demo/src/main/java/com/example/demo/controller/Demmo.java b/src/demo/src/main/java/com/example/demo/controller/Demmo.java index 1107105..f39e237 100644 --- a/src/demo/src/main/java/com/example/demo/controller/Demmo.java +++ b/src/demo/src/main/java/com/example/demo/controller/Demmo.java @@ -1,12 +1,107 @@ 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.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 { @RequestMapping("/index") public String first(){ 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 skeymap = new HashMap(); + 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 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); + + } + } diff --git a/src/demo/src/main/java/com/example/demo/controller/UserController.java b/src/demo/src/main/java/com/example/demo/controller/UserController.java index 78949da..9e9d427 100644 --- a/src/demo/src/main/java/com/example/demo/controller/UserController.java +++ b/src/demo/src/main/java/com/example/demo/controller/UserController.java @@ -53,21 +53,21 @@ public class UserController { // 4.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey) String signature2 = DigestUtils.sha1Hex(rawData + sessionKey); - if (!signature.equals(signature2)) { - return GlobalResult.build(500, "签名校验失败", null); - } +// if (!signature.equals(signature2)) { +// return GlobalResult.build(500, "签名校验失败", null); +// } // 5.根据返回的User实体类,判断用户是否是新用户,是的话,将用户信息存到数据库;不是的话,更新最新登录时间 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"); +// 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); @@ -75,12 +75,12 @@ public class UserController { 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); +// 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 { diff --git a/src/demo/src/main/java/com/example/demo/domain/User.java b/src/demo/src/main/java/com/example/demo/domain/User.java index c291a0e..6a65ea3 100644 --- a/src/demo/src/main/java/com/example/demo/domain/User.java +++ b/src/demo/src/main/java/com/example/demo/domain/User.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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 org.springframework.format.annotation.DateTimeFormat; @@ -16,11 +18,12 @@ import java.util.Date; */ @Data @TableName("user") -public class User { +public class User extends Wrapper { private static final long serialVersionUID = 1L; /** * open_id */ + @TableId(value = "open_id",type = IdType.INPUT) private String openId; /** @@ -90,4 +93,23 @@ public class User { @TableField("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; + } }