yangyin
2023-12-21 289d5b13184d519826ac0154452f0a79d331c636
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
let Constant = require('../utils/constant.js')
let app = getApp()
let API = (params)=>{
    // console.log(params,2)
    let tokenInfo = wx.getStorageSync('AccessToken')
    //  console.log(tokenInfo,3)
    let currentDateTime = new Date().getTime()
    if(tokenInfo == undefined || tokenInfo == null){
      wx.reLaunch({
        url: '/login/login/index',
      })
      return
    }
    //设置登录时间为七天 判断token是否失效
    if(currentDateTime - tokenInfo.ExpreTime > 7 * 60 * 60 * 24 * 1000 && tokenInfo.isNeedToken){
      console.log("缓存时间超过七天-----Token失效")
      wx.reLaunch({
        url: '/login/login/index',
      })
      return
    }
 
    let defaultParams = {
      url: '',
      method:"GET",
      data:"",
      header:{'content-type': 'application/json'},
      success:function(){},
      fail:function(){},
      complete:function(){}
    }
 
    let requestParam = Object.assign(defaultParams, params)
    if(tokenInfo.isNeedToken == true){
      requestParam.header.Authorization = 'Bearer ' + tokenInfo.Token
      // console.log(tokenInfo.Token,37)
      // requestParam.header.Authorization = 'Bearer ' + token
    }
    // console.log(requestParam,26)
    // console.log(requestParam.header,29)
    wx.request({
      url: requestParam.url,
      method:requestParam.method,
      data:requestParam.data,
      header:requestParam.header,
      success:res=>{
        let result = res.data
        if(result.data != undefined && result.data == 401){
          RefreshToken(params,API)
          return
        }
        requestParam.success(res)
      },
      fail:err=>{
        requestParam.fail(err)
      },
      complete:()=>{
        requestParam.complete()
      }
    })
}
const RefreshToken = (params,apiCb)=>{
  let that = this;
  if(wx.getStorageSync("AccountInfo") == null || wx.getStorageSync("AccountInfo") == undefined || wx.getStorageSync("AccountInfo") ==""){
    wx.reLaunch({
      url: '/login/login/index',
    })
    return
  }
  // 获取账户信息
  let accountInfo = JSON.parse(wx.getStorageSync("AccountInfo"))
 
  // console.log(accountInfo,60)
  // 获取登录的用户信息
  let userInfo = wx.getStorageSync("LoginUserInfo");
  let sysInfo = app.globalData.sysInfo;
  // console.log('打印userInfo', userInfo)
  let data={
    SoftType:Constant.SoftType,
    SoftTag:Constant.SoftTag,
    LoginName: accountInfo.LoginName,
    LoginPwd: accountInfo.LoginPwd,
    CorpID: Constant.CorpID,
    WxCode: accountInfo.WxCode,
    UJsCode: accountInfo.UJsCode, //是否就是jsCode有待确认
    UAvatarUrl: userInfo == null ? "" : userInfo.avatarUrl,
    UCity: userInfo == null ? "" : userInfo.city,
    UProvince: userInfo == null ? "" : userInfo.province,
    UNickName: userInfo == null ? "" : userInfo.nickName,
    UGender: userInfo == null ? "" : userInfo.gender + "",
    SBrand: sysInfo.brand,
    SModel: sysInfo.model,
    SPlatform: sysInfo.platform,
    SVersion: sysInfo.version
  }
  // console.log(JSON.stringify(data),110)
  wx.request({
    url: Constant.BASE_SERVER_URL + "User/UserLogin/FromCorpWechatApplet@V1.0",
    method: 'POST',
    data: data,
    header: {
      'content-type': 'application/json'
    },
    fail: function (err) { //请求失败
      wx.showModal({
        content: '网络信号不好',
        showCancel: false,
        confirmColor: "#39b5de"
      });
    },
    success: function (res) {
      console.log(res,"新的token信息")
 
      var result = res.data;
      // console.log(result);
      if (result.Code != 0) {
        wx.showToast({
          title: 'token获取失败,请重新登录',
          icon:"none",
          duration:2000
        })
        return;
      }
 
      var return_data = result.Data;
      if (return_data.Status != 0) {
        wx.showToast({
          title: 'token获取失败,请重新登录',
          icon:"none",
          duration:2000
        })
        return;
      }
      let Token = return_data.Token
      let isNeedToken = false //是否需要Token 当Token失效的时候 判断是否跳转登录
      if(Token){
        isNeedToken = true
      }
      let ExpreTime = new Date().getTime() //获取当前时间戳
 
      wx.setStorageSync('AccessToken', {
        Token:Token,
        ExpreTime:ExpreTime,
        isNeedToken:isNeedToken
      })
      wx.setStorageSync( "AccountInfo",JSON.stringify(data))
      // 获取新的token后重新调用接口
       apiCb(params)
    }
  });
}
export default API