UserController.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.hhsx.minigame.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.hhsx.minigame.constant.Constant;
  6. import com.hhsx.minigame.entity.User;
  7. import com.hhsx.minigame.service.UserService;
  8. import com.hhsx.minigame.utils.HttpKit;
  9. import com.hhsx.minigame.utils.HttpRespMsg;
  10. import io.swagger.annotations.ApiOperation;
  11. import org.apache.commons.lang3.StringEscapeUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import javax.servlet.http.HttpServletResponse;
  18. import java.io.IOException;
  19. import java.security.KeyManagementException;
  20. import java.security.NoSuchAlgorithmException;
  21. import java.security.NoSuchProviderException;
  22. import java.util.Date;
  23. /**
  24. * <p>
  25. * 前端控制器
  26. * </p>
  27. *
  28. * @author 吴涛涛
  29. * @since 2019-09-18
  30. */
  31. @RestController
  32. @RequestMapping("/user")
  33. public class UserController {
  34. @Autowired
  35. private UserService userService;
  36. /**
  37. * 微信授权登录
  38. * 参数:
  39. * type:授权类型,0-微信,1-微博
  40. * code:平台返回的code值
  41. *
  42. * @return
  43. */
  44. @ApiOperation("微信/微博网页授权")
  45. @RequestMapping(value = "weiXinLogin")
  46. @ResponseBody
  47. public Object weiXinLogin(@RequestParam String code, Integer type,
  48. HttpServletResponse response) throws Exception, KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException, IOException {
  49. HttpRespMsg msg = new HttpRespMsg();
  50. if (type == 0) {
  51. String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + Constant.WECHAT_APPID + "&secret=" + Constant.WECHAT_APPSECRET + "&code=" + code + "&grant_type=authorization_code";
  52. String resp = HttpKit.get(url, true);
  53. resp = StringEscapeUtils.unescapeJava(resp);
  54. System.out.println(resp);
  55. JSONObject json = (JSONObject) JSON.parse(resp);
  56. if (!json.containsKey("errcode")) {
  57. String openId = json.getString("openid");
  58. String accessToken = json.getString("access_token");
  59. User user = new User();
  60. user.setType(type);
  61. user.setVoucherId(openId);
  62. String url1 = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN";
  63. //获取用户基本信息
  64. resp = HttpKit.get(url1, true);
  65. resp = StringEscapeUtils.unescapeJava(resp);
  66. System.out.println(resp);
  67. json = (JSONObject) JSON.parse(resp);
  68. if(!json.containsKey("errcode")){
  69. user.setNickName(json.getString("nickname"));
  70. user.setHeaderPic(json.getString("headimgurl"));
  71. }
  72. QueryWrapper<User> qw = new QueryWrapper<>();
  73. qw.eq("voucher_id", openId).eq("type", type);
  74. if (userService.count(qw) == 0) {
  75. userService.save(user);
  76. } else {
  77. //列表中已包含当前用户,
  78. user = userService.getOne(qw);
  79. }
  80. msg.data = user;
  81. } else {
  82. msg.setError(json.getString("errmsg"));
  83. }
  84. }else if(type == 1){
  85. // String url = "https://api.weibo.com/oauth2/authorize?client_id="+Constant.MICROBLOG_APPKEY +"&response_type=code&redirect_uri="+callbackURL;
  86. }
  87. response.setContentType("application/json");
  88. response.setCharacterEncoding("UTF-8");
  89. return msg;
  90. }
  91. }