common.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import * as API_Passport from '../api/passport.js'
  2. import * as API_Shop from '../api/shop.js'
  3. const app = getApp()
  4. /** 自动登录 */
  5. export async function hasUserInfoAutoLogin() {
  6. console.log('autologintest',app.globalData.authorInfo)
  7. const authorInfo=app.globalData.authorInfo
  8. if(Object.keys(authorInfo).length>0){
  9. if(authorInfo.bool_o2o===1){
  10. wx.switchTab({
  11. url: '/pages/store/index',
  12. })
  13. }else{
  14. wx.redirectTo({
  15. url: '/pages/noshop/index',
  16. })
  17. }
  18. return
  19. }
  20. // 检测是否登录 如果已经登录 或者登录结果为账户未发现 则不再进行自动登录
  21. if (wx.getStorageSync('login_result') === 'account_not_found') {
  22. wx.redirectTo({
  23. url: '/pages/login/login',
  24. })
  25. return
  26. }
  27. let final = {}
  28. const code= await wxlogin()
  29. const uuid =wx.getStorageSync('uuid')
  30. const mp_type = 'miniprogramo2oseller'
  31. const result=await API_Passport.autoLogin({
  32. code,
  33. uuid,
  34. mini_program_type:mp_type
  35. })
  36. if(result.reson === 'account_not_found'){ //没有绑定账号 跳到登录页面
  37. wx.setStorageSync('login_result', result.reson)
  38. wx.redirectTo({
  39. url: '/pages/login/login',
  40. })
  41. }
  42. if (result.reson === 'unionid_not_found') { // unionid_not_found 如果已经进行过用户授权但是没有获取到unionID
  43. let {
  44. encryptedData,
  45. iv
  46. } = await wxgetUserInfo({
  47. withCredentials: true,
  48. lang: 'zh_CN'
  49. })
  50. final = await API_Passport.accessUnionID({
  51. code,
  52. uuid,
  53. encrypted_data: encryptedData,
  54. iv
  55. })
  56. }
  57. if(final.reson === 'account_not_found'){ //没有绑定账号 跳到登录页面
  58. wx.setStorageSync('login_result', result.reson)
  59. wx.redirectTo({
  60. url: '/pages/login/login',
  61. })
  62. }
  63. const res=result.access_token ? result : final
  64. const {
  65. access_token_timeout,
  66. refresh_token_timeout,
  67. } = res
  68. //
  69. let now = Math.round(new Date() / 1000)
  70. if (res.access_token && res.refresh_token && res.uid) {
  71. app.globalData.authorInfo={...res,'refresh_token_timeout':now+refresh_token_timeout-500,'access_token_timeout':now+access_token_timeout-500}
  72. //登录信息写入本地存储,删除登录结果标记
  73. wx.removeStorageSync('login_result')
  74. wx.setStorageSync('authorInfo', app.globalData.authorInfo)
  75. //登录成功 跳转到店铺首页
  76. console.log('bool_o2o',app.globalData.authorInfo.bool_o2o)
  77. if(app.globalData.authorInfo.bool_o2o===0){
  78. wx.redirectTo({
  79. url: '/pages/noshop/index',
  80. })
  81. }else{
  82. wx.switchTab({
  83. url: '/pages/store/index',
  84. })
  85. }
  86. }
  87. }
  88. export async function toAutoLogin(){
  89. //尝试自动登录之前判断有没有授权用户信息,没有授权用户信息直接跳回到欢迎页
  90. const setting=await wxgetSetting()
  91. if (!setting.authSetting['scope.userInfo']) {
  92. wx.removeStorageSync('welcome')
  93. wx.removeStorageSync('hasAuthorize')
  94. wx.redirectTo({
  95. url: '/pages/welcome/index',
  96. })
  97. return
  98. }
  99. await hasUserInfoAutoLogin()
  100. }
  101. // 同步获取登录code
  102. function wxlogin(){
  103. return new Promise((resolve,reject)=>{
  104. wx.login({
  105. complete: (res) => {resolve(res.code)}
  106. })
  107. })
  108. }
  109. // 同步获取用户信息
  110. function wxgetUserInfo(option){
  111. return new Promise((resolve,reject)=>{
  112. wx.getUserInfo({
  113. ...option,
  114. complete: (res) => {
  115. console.log(res)
  116. resolve(res)
  117. }
  118. })
  119. })
  120. }
  121. //同步获取用授权设置
  122. function wxgetSetting(){
  123. return new Promise((resolve,reject)=>{
  124. wx.getSetting({
  125. complete: (res) => {
  126. resolve(res)
  127. }
  128. })
  129. })
  130. }
  131. /** 获取当前店铺信息 */
  132. export function getCurrentShopData(){
  133. return new Promise((resolve, reject)=>{
  134. // const authorInfo=app.globalData.authorInfo
  135. // if(authorInfo===null||authorInfo===''){
  136. // wx.redirectTo({
  137. // url:'/pages/login/login'
  138. // })
  139. // return
  140. // }
  141. // if (authorInfo.bool_o2o===1){
  142. Promise.all([
  143. /**当前店铺信息 */
  144. API_Shop.getShopData(),
  145. /** 店铺订单统计信息 */
  146. API_Shop.getDashboardData()
  147. ])
  148. .then(res => {
  149. app.globalData.sellerShop = res[0]
  150. wx.setStorageSync('sellerShop', res[0])
  151. app.globalData.saleOrderTotal = res[1].after_sale_order_num
  152. app.globalData.orderNum = res[1].wait_ship_order_num
  153. app.globalData.todayOrderNum = res[1].today_order_num
  154. app.globalData.todayOrderTotal=res[1].today_order_total
  155. resolve(res[0])
  156. }).catch(err=>{
  157. reject(err)
  158. })
  159. // }else{
  160. // wx.redirectTo({
  161. // url:'/pages/noshop/index'
  162. // })
  163. // }
  164. })
  165. }