user.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /**
  2. * 用户相关服务
  3. */
  4. import store from '@/store'
  5. import request from '@/common/request'
  6. /**
  7. * Promise封装wx.checkSession
  8. */
  9. function checkSession() {
  10. return new Promise(function(resolve, reject) {
  11. wx.checkSession({
  12. success: function() {
  13. resolve(true);
  14. },
  15. fail: function() {
  16. reject(false);
  17. }
  18. })
  19. });
  20. }
  21. /**
  22. * Promise封装wx.login
  23. */
  24. function login() {
  25. return new Promise(function(resolve, reject) {
  26. wx.login({
  27. success: function(res) {
  28. if (res.code) {
  29. resolve(res);
  30. } else {
  31. reject(res);
  32. }
  33. },
  34. fail: function(err) {
  35. reject(err);
  36. }
  37. });
  38. });
  39. }
  40. /**
  41. * 调用微信登录
  42. */
  43. function loginByWeixinCode() {
  44. return new Promise(function(resolve, reject) {
  45. return login().then((res) => {
  46. var code = res.code;
  47. //登录远程服务器
  48. request.post('/api/v1/common/wxLogin', {
  49. wechat_code: code
  50. }).then(res => {
  51. if (res.code == 200) {
  52. if (res.data.token) {
  53. store.commit('setJwt', res.data.token);
  54. store.commit('setUser', res.data);
  55. store.commit('login');
  56. resolve(res);
  57. } else {
  58. uni.showToast({
  59. title: '登录失败',
  60. icon: "none"
  61. })
  62. reject(res);
  63. }
  64. } else {
  65. reject(res);
  66. }
  67. }).catch((err) => {
  68. reject(err);
  69. });
  70. }).catch((err) => {
  71. reject(err);
  72. })
  73. });
  74. }
  75. /**
  76. * 调用微信登录
  77. */
  78. function loginByWeixin(detail) {
  79. return new Promise(function(resolve, reject) {
  80. return login().then((res) => {
  81. var code = res.code;
  82. //登录远程服务器
  83. request.post('/api/v1/common/wxLogin', {
  84. // up_id: uni.getStorageSync("up_id"),
  85. wechat_code: code,
  86. nickname: detail.userInfo.nickName,
  87. avatar: detail.userInfo.avatarUrl,
  88. iv:detail.iv,
  89. encryptData:detail.encryptedData
  90. }).then(res => {
  91. if (res.status == 0) {
  92. if (res.data.token) {
  93. store.commit('setJwt', res.data.token);
  94. store.commit('setUser', res.data);
  95. store.commit('login');
  96. resolve(res);
  97. } else {
  98. reject(res);
  99. }
  100. } else {
  101. reject(res);
  102. }
  103. }).catch((err) => {
  104. reject(err);
  105. });
  106. }).catch((err) => {
  107. reject(err);
  108. })
  109. });
  110. }
  111. /**
  112. * 判断用户是否登录
  113. */
  114. function checkLogin() {
  115. return new Promise(function(resolve, reject) {
  116. if (store.getters['verifyJwt']) {
  117. checkSession().then(() => {
  118. resolve(true);
  119. }).catch(() => {
  120. reject(false);
  121. });
  122. } else {
  123. reject(false);
  124. }
  125. });
  126. }
  127. function islogin(res) {
  128. console.log(res)
  129. if (res.status != 0) {
  130. uni.showModal({
  131. title: "提示",
  132. content: "暂未登录,请登录",
  133. confirmText: "去登录",
  134. success: (re) => {
  135. if (re.confirm) {
  136. uni.navigateTo({
  137. url: "/pages/login/login",
  138. })
  139. } else if (re.cancel) {
  140. uni.switchTab({
  141. url: "/pages/index/index"
  142. })
  143. }
  144. },
  145. })
  146. } else {
  147. return true
  148. }
  149. }
  150. module.exports = {
  151. loginByWeixin,
  152. loginByWeixinCode,
  153. checkLogin,
  154. islogin
  155. };