login.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. import UserApi from "../apis/user"
  2. import { saveToken, saveUserInfo } from './storage'
  3. import EventEmitter from './eventEmitter'
  4. const app = getApp()
  5. function wxLogin() {
  6. return new Promise((resovle, reject) => {
  7. wx.login({
  8. success(res) {
  9. resovle(res.code)
  10. },
  11. fail(err) {
  12. wx.showModal({
  13. title: "登录失败",
  14. content: "异常,请重试",
  15. })
  16. reject(err)
  17. },
  18. })
  19. })
  20. }
  21. function checkSession() {
  22. return new Promise((resolve, reject) => {
  23. wx.checkSession({
  24. success: (res) => {
  25. resolve(res)
  26. },
  27. fail(err) {
  28. reject(err)
  29. },
  30. })
  31. })
  32. }
  33. function loginByPhone(data, isAgency) {
  34. const LoginApi = isAgency ? UserApi.loginByPhoneCodeAgency : UserApi.loginByPhoneCode
  35. return LoginApi(data).then(res => {
  36. const data = res.data
  37. data.user = data.user || data.agency
  38. data.user.user_id = data.user.user_id || data.user.agency_user_id
  39. saveToken(data.token)
  40. saveUserInfo(data.user)
  41. getApp().globalData.token = data.token
  42. getApp().globalData.userinfo = data.user
  43. EventEmitter.emit('login')
  44. return res
  45. })
  46. }
  47. function tips (res) {
  48. console.log(res)
  49. if (res.data.code == 3032) {
  50. wx.showToast({
  51. title: '经纪人未注册,请联系管理员',
  52. icon: 'none',
  53. duration: 2000,
  54. })
  55. return
  56. }
  57. if (res.data.code != 3008) {
  58. wx.showToast({
  59. title: res.data.msg,
  60. icon: 'none',
  61. duration: 2000,
  62. })
  63. return
  64. }
  65. }
  66. //获取用户信息接口
  67. function getUserProfile() {
  68. return new Promise((resovle, reject) => {
  69. wx.getUserProfile({
  70. desc: "用于完善用户资料",
  71. //异步请求:回调函数中调用下一个函数
  72. success (res) {
  73. resovle(res)
  74. },
  75. fail(err) {
  76. wx.showModal({
  77. title: "登录失败",
  78. content: "异常,请重试",
  79. })
  80. reject(err)
  81. },
  82. });
  83. })
  84. }
  85. export function Login(phone_data, code, isAgency) {
  86. const { encryptedData, iv } = phone_data.detail
  87. if (!encryptedData || !iv) {
  88. return new Promise((_, reject) => reject())
  89. }
  90. return new Promise((resolve, reject) => {
  91. checkSession()
  92. .then(() => {
  93. return loginByPhone({ phone_num: encryptedData, iv, wx_code: code }, isAgency).then(res => {
  94. resolve(res)
  95. })
  96. })
  97. .catch((err) => {
  98. // 登陆失败可能是code失效,故重新wx.login重新获取code
  99. tips(err)
  100. wxLogin().then((code) => {
  101. loginByPhone({ phone_num: encryptedData, iv, wx_code: code }, isAgency).then(res => {
  102. resolve(res)
  103. }).catch(err => {
  104. console.log(err, 'err')
  105. tips(err)
  106. })
  107. })
  108. })
  109. })
  110. }
  111. // export async function loginByUserInfo () {
  112. // wx.showLoading('登录中')
  113. // return new Promise(async (resolve, reject) => {
  114. // let code = await wxLogin()
  115. // wx.getUserInfo({
  116. // withCredentials: true,
  117. // success (res) {
  118. // console.log(res)
  119. // res.wx_code = code
  120. // UserApi.loginByUserInfo(res).then(loginRes => {
  121. // const data = loginRes.data
  122. // data.user = data.user || data.agency
  123. // data.user.user_id = data.user.user_id || data.user.agency_user_id
  124. // saveToken(data.token)
  125. // saveUserInfo(data.user)
  126. // getApp().globalData.token = data.token
  127. // getApp().globalData.userinfo = data.user
  128. // EventEmitter.emit('login')
  129. // wx.hideLoading()
  130. // resolve(res)
  131. // })
  132. // },
  133. // fail (err) {
  134. // wx.hideLoading()
  135. // reject(err)
  136. // }
  137. // })
  138. // })
  139. // }
  140. export async function loginByUserInfo () {
  141. // wx.showLoading('登录中')
  142. let UserProfile = await getUserProfile()
  143. let code = await wxLogin()
  144. console.log('************')
  145. console.log(UserProfile)
  146. return new Promise(async (resolve, reject) => {
  147. wx.getUserInfo({
  148. withCredentials: true,
  149. success (res) {
  150. res.wx_code = code
  151. res.userInfo = UserProfile.userInfo
  152. UserApi.loginByUserInfo(res).then(loginRes => {
  153. const data = loginRes.data
  154. console.log(data)
  155. data.user = data.user || data.agency
  156. UserProfile.userInfo.user_id = data.user.user_id || data.user.agency_user_id
  157. saveToken(data.token)
  158. getApp().globalData.token = data.token
  159. UserProfile.userInfo.name = UserProfile.userInfo.name || UserProfile.userInfo.nickName
  160. UserProfile.userInfo.avatar = UserProfile.userInfo.avatar || UserProfile.userInfo.avatarUrl
  161. getApp().globalData.userinfo =UserProfile.userInfo
  162. getApp().globalData.userinfo.agency_user_id =data.agency.agency_user_id
  163. getApp().globalData.userinfo.phone = data.agency.phone
  164. getApp().globalData.userinfo.agency_company_name = data.agency.agency_company_name
  165. saveUserInfo(UserProfile.userInfo)
  166. EventEmitter.emit('login')
  167. wx.hideLoading()
  168. resolve(res)
  169. })
  170. },
  171. fail (err) {
  172. wx.hideLoading()
  173. reject(err)
  174. }
  175. })
  176. })
  177. }