loginSchedule.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. const request = require('./WXHttpRequest.js');
  2. const url = require('./const.js');
  3. const util = require('./util.js');
  4. const HOST = url.apiUrl;
  5. const HOSTTwo = url.apiUrlTwo;
  6. function genAPIUrl(action) {
  7. return HOST + action;
  8. }
  9. // 登录
  10. function wxLogin(successcallback, failcallback) {
  11. wx.showToast({
  12. title: '登录中...',
  13. icon: 'loading',
  14. duration: 1500
  15. })
  16. wx.login({
  17. success: function(res) {
  18. if (res.code) {
  19. // 获取openid
  20. let url = genAPIUrl('wx/ucenter/openId')
  21. let data = { code: res.code }
  22. return request.getInstance().url(url).data(data).send().success(successcallback).fail(failcallback);
  23. } else {
  24. console.log('获取用户登录态失败!' + res.errMsg)
  25. }
  26. }
  27. })
  28. }
  29. // 获取原来的 openid 和 session_key
  30. function getOpenidSessionKey(successcallback, failcallback, loginType) {
  31. if (wx.getStorageSync('user')) {
  32. successcallback(
  33. wx.getStorageSync('user'),
  34. //分享小程序按钮
  35. wx.showShareMenu({
  36. withShareTicket: true
  37. })
  38. );
  39. //登陆成功后,统计用户登录时长,暂时使用定时器60秒后调用后台接口,比较耗性能,可以优化。。。。
  40. let loginTime = wx.getStorageSync('loginTime') || 0;
  41. let fn = () => {
  42. let timeNum = setInterval( () => {
  43. loginTime++;
  44. wx.setStorage({
  45. key:"loginTime",
  46. data:loginTime
  47. })
  48. if(loginTime >= 60) {
  49. clearInterval(timeNum);
  50. //统计后台调用
  51. let url = genAPIUrl('wx/statistics/onlineTime');
  52. let uid = wx.getStorageSync('user').data.data.uid
  53. request.getInstance().url(url).header({
  54. uid,
  55. }).method('POST').send().success(res => {
  56. console.log('成功')
  57. });
  58. loginTime = 0;
  59. fn();
  60. }
  61. //console.log(loginTime)
  62. },1000)
  63. }
  64. fn();
  65. return;
  66. }
  67. wxLogin(function(res) {
  68. //console.log('获取sessionKey等内容'+JSON.stringify(res.data));
  69. let sessionKey = JSON.parse(res.data).session_key;
  70. let openId = JSON.parse(res.data).openid;
  71. getLoginSchedule(sessionKey, openId, successcallback, failcallback, false, loginType);
  72. },function(res) {
  73. failcallback(res);
  74. })
  75. }
  76. // 获取另一个的 openid 和 session_key
  77. function getOpenidSessionKeyTwo(successcallback, failcallback) {
  78. if (wx.getStorageSync('userInfo')) {
  79. successcallback(
  80. wx.getStorageSync('userInfo'),
  81. //分享小程序按钮
  82. wx.showShareMenu({
  83. withShareTicket: true
  84. })
  85. );
  86. return;
  87. }
  88. wxLogin(function(res) {
  89. //console.log('获取sessionKey等内容'+JSON.stringify(res.data));
  90. let sessionKey = JSON.parse(res.data).session_key;
  91. let openId = JSON.parse(res.data).openid;
  92. getLoginSchedule(sessionKey, openId, successcallback, failcallback, true);
  93. },function(res) {
  94. failcallback(res);
  95. })
  96. }
  97. //登录
  98. function getLoginSchedule(sessionKey, openId, successcallback, failcallback, affirm, loginType) {
  99. wx.getSetting({
  100. success: function(res) {
  101. // 已经授权,可以直接调用 getUserInfo 获取头像昵称
  102. wx.getUserInfo({
  103. success: function (res) {
  104. let userInfo = res.userInfo;
  105. if(affirm) {
  106. let nickName = userInfo.nickName
  107. let avatarUrl = userInfo.avatarUrl
  108. let dataUrl = `openId=${openId}&nickName=${encodeURIComponent(nickName)}&avatar=${avatarUrl}`
  109. wx.request({
  110. url: `${HOSTTwo}wx/user`,
  111. data: dataUrl,
  112. method: 'POST',
  113. header: {
  114. 'content-type': 'application/x-www-form-urlencoded'
  115. },
  116. success: function(res) {
  117. console.log(res.data.data, '----注册返回----')
  118. wx.setStorageSync('userInfo', res.data.data)
  119. util.hideToast()
  120. util.showToast('登录中成功', true, 'success', 500)
  121. successcallback(res);
  122. },
  123. fail: function(res) {
  124. console.log(res, '----注册失败返回----')
  125. failcallback(res);
  126. }
  127. })
  128. }else {
  129. let url = genAPIUrl('wx/ucenter/user/loginRegist');
  130. const userData = {
  131. encryptedData: res.encryptedData,
  132. sessionKey: sessionKey,
  133. iv: res.iv,
  134. dist: '1133',
  135. headimgurl: userInfo.avatarUrl,
  136. loginType
  137. }
  138. request.getInstance().url(url).data(userData).method('GET').send().success(res => {
  139. wx.hideToast()
  140. wx.showToast({
  141. title: '登录成功',
  142. icon: 'success',
  143. duration: 1500
  144. })
  145. wx.setStorageSync('uid', res.data.data.uid)
  146. wx.setStorageSync('user', res)
  147. successcallback(res)
  148. });
  149. }
  150. },
  151. fail: function(res) {
  152. failcallback(res)
  153. }
  154. })
  155. }
  156. })
  157. }
  158. module.exports = {
  159. getOpenidSessionKey,
  160. getOpenidSessionKeyTwo
  161. }