login.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import {
  2. imgServerUrl
  3. } from '../../config/config.js'
  4. import {
  5. getWxCode,
  6. getUserInfo
  7. } from '../../utils/wx.js'
  8. import {
  9. wxLogin,
  10. saveLogin
  11. } from '../../services/wx.js'
  12. import { saveHpUserLog } from '../../services/index'
  13. import {
  14. showToast
  15. } from '../../utils/tips.js'
  16. var app = getApp()
  17. Page({
  18. data: {
  19. canIUse: wx.canIUse('button.open-type.getUserInfo'),
  20. imgServerUrl: imgServerUrl,
  21. disabled: false,
  22. title: '登录开心工作'
  23. },
  24. onLoad: function () {
  25. },
  26. // 获取验证码
  27. toCheck(e) {
  28. const { phone } = e.detail;
  29. wx.navigateTo({
  30. url: `/pages/check-iphone/index?phone=${phone}&&title=${this.data.title}&&url=${'/pages/index/index'}&&auto_send=${true}`,
  31. })
  32. },
  33. //用户授权
  34. bindGetUserInfo: function (e) {
  35. var self = this;
  36. if (!self.data.disabled) {
  37. self.setData({
  38. disabled: true
  39. })
  40. //检查登录态
  41. wx.checkSession({
  42. success() {
  43. //session_key 未过期,并且在本生命周期一直有效
  44. getWxCode().then(code => {
  45. return wxLogin({
  46. code: code
  47. })
  48. })
  49. .then(res => {
  50. wx.aldPushSendOpenid(res.data.openId)
  51. app.globalData.openId = res.data.openId ? res.data.openId : '';
  52. app.globalData.sessionKey = res.data.sessionKey ? res.data.sessionKey : '';
  53. })
  54. .then(() => {
  55. if (e.detail.userInfo) {
  56. return getUserInfo()
  57. } else {
  58. }
  59. })
  60. .then(res => {
  61. if (res) {
  62. wx.setStorageSync("userInfo", res.userInfo);
  63. saveLogin({
  64. encryptedData: encodeURIComponent(res.encryptedData),
  65. iv: encodeURIComponent(res.iv),
  66. openid: app.globalData.openId,
  67. session_key: app.globalData.sessionKey
  68. }).then(data => {
  69. wx.setStorageSync("hpuser", data.data.hpUser);
  70. wx.setStorageSync("hpMember", data.data.hpMember);
  71. wx.setStorageSync("user_id", data.data.hpUser.id);
  72. wx.setStorageSync("member_id", data.data.hpMember.id);
  73. wx.setStorageSync("user_token", data.data.hpUser.userToken);
  74. wx.setStorageSync("phone", data.data.hpUser.phone);
  75. // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
  76. // 所以此处加入 callback 以防止这种情况
  77. if (app.userInfoReadyCallback) {
  78. app.userInfoReadyCallback(res)
  79. }
  80. showToast("登录成功");
  81. saveHpUserLog({
  82. user_id: data.data.hpUser.id,
  83. user_token: data.data.hpUser.userToken,
  84. member_id: data.data.hpMember.id,
  85. login_type: 0
  86. })
  87. setTimeout(function () {
  88. wx.navigateBack({
  89. fail: () => {
  90. wx.switchTab({
  91. url: '/pages/index/index',
  92. })
  93. }
  94. });
  95. }, 500)
  96. }).catch(data => {
  97. console.log("fgh", data)
  98. })
  99. }
  100. })
  101. },
  102. fail() {
  103. // session_key 已经失效,需要重新执行登录流程
  104. getWxCode().then(code => {
  105. return wxLogin({
  106. code: code
  107. })
  108. })
  109. .then(res => {
  110. app.globalData.openId = res.data.openId ? res.data.openId : '';
  111. app.globalData.sessionKey = res.data.sessionKey ? res.data.sessionKey : '';
  112. })
  113. .then(() => {
  114. if (e.detail.userInfo) {
  115. return getUserInfo()
  116. } else {
  117. }
  118. })
  119. .then(res => {
  120. if (res) {
  121. wx.setStorageSync("userInfo", res.userInfo);
  122. saveLogin({
  123. encryptedData: encodeURIComponent(res.encryptedData),
  124. iv: encodeURIComponent(res.iv),
  125. openid: app.globalData.openId,
  126. session_key: app.globalData.sessionKey
  127. }).then(data => {
  128. wx.setStorageSync("hpuser", data.data.hpUser);
  129. wx.setStorageSync("hpMember", data.data.hpMember);
  130. wx.setStorageSync("user_id", data.data.hpUser.id);
  131. wx.setStorageSync("member_id", data.data.hpMember.id);
  132. wx.setStorageSync("user_token", data.data.hpUser.userToken);
  133. wx.setStorageSync("phone", data.data.hpUser.phone);
  134. // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
  135. // 所以此处加入 callback 以防止这种情况
  136. if (app.userInfoReadyCallback) {
  137. app.userInfoReadyCallback(res)
  138. }
  139. showToast("登录成功");
  140. setTimeout(function () {
  141. wx.navigateBack({
  142. fail: () => {
  143. wx.switchTab({
  144. url: '/pages/index/index',
  145. })
  146. }
  147. });
  148. }, 500)
  149. }).catch(data => {
  150. console.log("fgh", data)
  151. })
  152. }
  153. })
  154. }
  155. })
  156. // 用户登录首页
  157. wx.aldPushSubscribeMessage({
  158. eventId: '5ea25b117739104342928e97'
  159. });
  160. }
  161. setTimeout(function () {
  162. self.setData({
  163. disabled: false
  164. })
  165. }, 1000)
  166. }
  167. })