将请求

login.vue

  1. <template>
  2. <view>
  3. <image src="../../static/img/152x152.png" class="logo" mode=""></image>
  4. <!--open-type='getUserInfo' 一定要写这个,不让获取不到微信用户的信息 -->
  5. <button class="btn" @tap="handleTap" open-type='getUserInfo'>立即前往</button>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. };
  13. },
  14. methods:{
  15. handleTap:function(){
  16. let ref=this;
  17. //uni.login 获取微信平台返回的code
  18. uni.login({
  19. success:function(resp){
  20. // console.log(resp)
  21. let code=resp.code;
  22. //获取微信用户的信息 uni.getUserInfo
  23. uni.getUserInfo({
  24. success:function(resp){
  25. // console.log(resp)
  26. let rawData = JSON.parse(resp.rawData);
  27. let nickName = rawData.nickName; //昵称
  28. let avatarUrl = rawData.avatarUrl; //头像
  29. //发起ajax请求
  30. uni.request({
  31. //这里是全局变量,全局变量定义在main.js文件中
  32. url: ref.url.login,
  33. method:"post",
  34. data:{
  35. "code":code,
  36. "nickName":nickName,
  37. "photo":avatarUrl
  38. },
  39. success:function(resp){
  40. let token=resp.data.data.token;
  41. let expire=resp.data.data.expire;
  42. //保存到storage,无论是哪个页面都可以访问到,storage里存的数据是全局的
  43. uni.setStorageSync("token",token);
  44. uni.setStorageSync("expire",expire);
  45. console.log("================");
  46. console.log(token);
  47. console.log(expire);
  48. //页面跳转
  49. uni.switchTab({
  50. url:"/pages/index/index"
  51. })
  52. }
  53. })
  54. }
  55. })
  56. }
  57. })
  58. }
  59. },
  60. onLoad:function(){
  61. //检验系统的版本
  62. var ref = this;
  63. uni.getSystemInfo({
  64. success: function(res) {
  65. let OS = null;
  66. if (res.platform == "devtools") {
  67. OS = "PC"
  68. } else if (res.platform == "ios") {
  69. OS = "iOS"
  70. } else if (res.platform == "android") {
  71. OS = "安卓"
  72. }
  73. // console.log(OS)
  74. uni.setStorageSync("OS", OS);
  75. }
  76. })
  77. }
  78. }
  79. </script>
  80. <style lang="less">
  81. @import url("login.less");
  82. </style>

UserServiceImpl.java

  1. @Override
  2. public Map<String, Object> wxLogin(WechatLoginDTO dto) {
  3. HashMap map = new HashMap();
  4. map.put("appid", appId); //app_id
  5. map.put("secret", appSecret); //app_secret
  6. map.put("js_code", dto.getCode()); //微信code
  7. map.put("grant_type", "authorization_code"); // 默认参数
  8. String response = HttpUtil.post(UrlConstant.WECHAT_LOGIN, map);
  9. JSONObject json = JSONUtil.parseObj(response);
  10. String openId = json.get("openid", String.class);
  11. String sessionKey = json.get("session_key", String.class);
  12. // System.out.println(openId);
  13. // System.out.println(sessionKey);
  14. if (openId == null || openId.length() == 0) {
  15. throw new RenException("open_id不存在");
  16. }
  17. UserEntity user = new UserEntity();
  18. user.setOpenId(openId);
  19. QueryWrapper wrapper = new QueryWrapper();
  20. wrapper.setEntity(user);
  21. int count = baseDao.selectCount(wrapper);
  22. System.out.println(count);
  23. if (count == 0) {
  24. // Snowflake snowflake=new Snowflake();
  25. user = new UserEntity();
  26. user.setId(IdWorker.getId());
  27. user.setOpenId(openId);
  28. user.setNickName(dto.getNickName());
  29. user.setPhoto(dto.getPhoto());
  30. baseDao.insert(user);
  31. }
  32. user = new UserEntity();
  33. user.setOpenId(openId);
  34. wrapper = new QueryWrapper(user);
  35. user = baseDao.selectOne(wrapper);
  36. //获取登录token
  37. TokenEntity tokenEntity = tokenService.createToken(user.getId());
  38. Map<String, Object> map2 = new HashMap<>(2);
  39. map2.put("token", tokenEntity.getToken());
  40. map2.put("expire", tokenEntity.getExpireDate().getTime() - System.currentTimeMillis());
  41. return map2;
  42. }