util.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. var api = require('../config/api.js');
  2. function formatTime(date) {
  3. var year = date.getFullYear()
  4. var month = date.getMonth() + 1
  5. var day = date.getDate()
  6. var hour = date.getHours()
  7. var minute = date.getMinutes()
  8. var second = date.getSeconds()
  9. return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  10. }
  11. function formatNumber(n) {
  12. n = n.toString()
  13. return n[1] ? n : '0' + n
  14. }
  15. /**
  16. * 封封微信的的request
  17. */
  18. function request(url, data = {}, method = "GET") {
  19. let that = this
  20. let token = wx.getStorageSync('token')
  21. return new Promise(function (resolve, reject) {
  22. wx.request({
  23. url: url,
  24. data: data,
  25. method: method,
  26. header: {
  27. 'Content-Type': 'application/json',
  28. 'Authorization': token
  29. },
  30. success: function (res) {
  31. console.log("success");
  32. if (res.statusCode == 200) {
  33. if (res.data.errno == 3003 || res.data.errno == 3004 || res.data.errno == 3005) {
  34. console.log(res.data.errmsg)
  35. //TOKEN_IS_EMPTY
  36. //需要登录后才可以操作
  37. wx.getSetting({
  38. success: res => {
  39. if (res.authSetting['scope.userInfo']) {
  40. // // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
  41. that.getUserInfo().then((res) => {
  42. that.backendLogin(res).then(()=>{
  43. that.request(url,data,method)
  44. })
  45. })
  46. }else{
  47. wx.navigateTo({
  48. url: '/pages/auth/auth'
  49. })
  50. }
  51. }
  52. })
  53. } else {
  54. resolve(res.data);
  55. }
  56. } else {
  57. reject(res.errMsg);
  58. }
  59. },
  60. fail: function (err) {
  61. reject(err)
  62. console.log("failed")
  63. }
  64. })
  65. });
  66. }
  67. /**
  68. * 检查微信会话是否过期
  69. */
  70. function checkSession() {
  71. return new Promise(function (resolve, reject) {
  72. wx.checkSession({
  73. success: function () {
  74. resolve(true);
  75. },
  76. fail: function () {
  77. reject(false);
  78. }
  79. })
  80. });
  81. }
  82. /**
  83. * 在后端服务器进行登录
  84. */
  85. function backendLogin(detail) {
  86. console.log("在后端服务器进行登录" + detail)
  87. let that = this;
  88. let code = null;
  89. return new Promise(function (resolve, reject) {
  90. return that.login().then((res) => {
  91. code = res.code;
  92. }).then(() => {
  93. //登录远程服务器
  94. that.request(api.AuthLoginByWeixin, {
  95. code: code,
  96. detail: detail
  97. }, 'POST').then(res => {
  98. if (res.errno === 0) {
  99. //存储用户信息
  100. wx.setStorageSync('userInfo', res.data.userInfo);
  101. wx.setStorageSync('token', res.data.token);
  102. resolve(res.data.userInfo);
  103. } else {
  104. reject(res.data.userInfo);
  105. }
  106. }).catch((err) => { //request
  107. reject(err);
  108. });
  109. }).catch((err) => { //login
  110. reject(err);
  111. })
  112. });
  113. }
  114. /**
  115. * 调用微信登录
  116. */
  117. function login() {
  118. return new Promise(function (resolve, reject) {
  119. wx.login({
  120. success: function (res) {
  121. if (res.code) {
  122. //登录远程服务器
  123. console.log(res)
  124. resolve(res);
  125. } else {
  126. reject(res);
  127. }
  128. },
  129. fail: function (err) {
  130. reject(err);
  131. }
  132. });
  133. });
  134. }
  135. function getUserInfo() {
  136. return new Promise(function (resolve, reject) {
  137. wx.getUserInfo({
  138. withCredentials: true,
  139. success: function (res) {
  140. console.log(res)
  141. resolve(res);
  142. },
  143. fail: function (err) {
  144. reject(err);
  145. }
  146. })
  147. });
  148. }
  149. function redirect(url) {
  150. //判断页面是否需要登录
  151. if (false) {
  152. wx.redirectTo({
  153. url: '/pages/auth/login/login'
  154. });
  155. return false;
  156. } else {
  157. wx.redirectTo({
  158. url: url
  159. });
  160. }
  161. }
  162. function showErrorToast(msg) {
  163. wx.showToast({
  164. title: msg,
  165. image: '/static/images/icon_error.png'
  166. })
  167. }
  168. module.exports = {
  169. formatTime,
  170. request,
  171. redirect,
  172. showErrorToast,
  173. checkSession,
  174. login,
  175. getUserInfo,
  176. backendLogin,
  177. }