network.js_bak 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import {APP_NAME, SERVER_API_DOMAIN, SERVER_API_HTTP_TYPE, SERVER_API_PORT, SERVER_API_VERSION, REQUEST_URL} from "./config";
  2. import userInfo from './userInfo';
  3. import tool from './tool';
  4. import axios from './axiosPlugin'
  5. import ElementUI from 'element-ui'
  6. const network = {
  7. loginGetAccessToken(adminName, password){
  8. let promise = new Promise((resolve, reject) => {
  9. // if(userInfo.hasLogin()){
  10. // reject('E40005');
  11. // return false;
  12. // }
  13. axios.post(`${REQUEST_URL}oauths/login?suppress_response_code=1`, {
  14. LoginForm : {
  15. adminName,
  16. password
  17. }
  18. }).then(response => {
  19. // 更新本地accessToken
  20. userInfo.accessToken(response.accessToken);
  21. userInfo.accessTokenExpiresIn(response.accessTokenExpiresIn);
  22. userInfo.accessTokenUpdateAt(response.accessTokenUpdateAt);
  23. userInfo.refreshToken(response.refreshToken);
  24. userInfo.refreshTokenExpiresIn(response.refreshTokenExpiresIn);
  25. userInfo.refreshTokenUpdateAt(response.refreshTokenUpdateAt);
  26. userInfo.loginTimestamp(response.accessTokenUpdateAt);
  27. // 成功
  28. resolve(response);
  29. }).catch(error => {
  30. //console.log('登录获取数据错误');
  31. userInfo.clear();
  32. reject(error);
  33. });
  34. });
  35. return promise;
  36. },
  37. updateAccessToken(){
  38. let promise = new Promise((resolve, reject) => {
  39. if(!userInfo.hasLogin()){
  40. //console.log('尚未登录');
  41. //userInfo.clear();
  42. reject('E40004');
  43. return false;
  44. }
  45. // 比较本地accessToken是否还有效
  46. if(userInfo.accessToken() && userInfo.accessTokenExpiresIn() && parseInt(userInfo.accessTokenExpiresIn()) + parseInt(userInfo.accessTokenUpdateAt()) - 30 > parseInt(tool.getTimestamp())){
  47. // 有效
  48. //console.log('accessToken有效');
  49. resolve(userInfo.accessToken());
  50. return true;
  51. } else {
  52. // 已失效,去更新
  53. let refreshToken = userInfo.refreshToken();
  54. let refreshTokenExpiresIn = userInfo.refreshTokenExpiresIn();
  55. let refreshTokenUpdateAt = userInfo.refreshTokenUpdateAt();
  56. if(refreshToken && refreshTokenExpiresIn && parseInt(refreshTokenExpiresIn) - 30 + parseInt(refreshTokenUpdateAt) > parseInt(tool.getTimestamp())) {
  57. // 有效,去更新
  58. axios.get(`${REQUEST_URL}oauths/refresh-token?suppress_response_code=1&refresh-token=${refreshToken}`).then(response => {
  59. // 更新本地accessToken
  60. userInfo.accessToken(response.accessToken);
  61. userInfo.accessTokenExpiresIn(response.accessTokenExpiresIn);
  62. userInfo.accessTokenUpdateAt(response.accessTokenUpdateAt);
  63. userInfo.refreshToken(response.refreshToken);
  64. userInfo.refreshTokenExpiresIn(response.refreshTokenExpiresIn);
  65. userInfo.refreshTokenUpdateAt(response.refreshTokenUpdateAt);
  66. // 成功
  67. //console.log('accessToken更新成功,refreshToken更新为:'+userInfo.refreshToken());
  68. //console.log('accessToken更新成功,refreshToken的更新时间为:'+tool.formatDate(userInfo.refreshTokenUpdateAt()));
  69. //console.log('accessToken更新成功,refreshToken的有效时间为:'+userInfo.refreshTokenExpiresIn());
  70. resolve(response.accessToken);
  71. }).catch(error => {
  72. //userInfo.clear();
  73. //console.log(error);
  74. reject('E40001');
  75. });
  76. } else {
  77. //console.log('refreshToken已失效');
  78. userInfo.clear();
  79. // 失效
  80. reject('E40003');
  81. return false;
  82. }
  83. }
  84. });
  85. return promise;
  86. },
  87. getUserInfo(callback, errorback){
  88. let promise
  89. this.updateAccessToken().then(accessToken => {
  90. return promise = new Promise((resolve, reject) => {
  91. //let accessToken = userInfo.accessToken();
  92. axios.get(`${REQUEST_URL}oauths/info?suppress_response_code=1&access-token=${accessToken}`).then(response => {
  93. // 更新本地userInfo
  94. userInfo.userId(response.ID);
  95. userInfo.adminName(response.ADMIN_NAME);
  96. userInfo.baseData({roleId: response.ROLE_ID});
  97. // 成功
  98. resolve(response);
  99. }).catch( error => {
  100. reject(error);
  101. });
  102. });
  103. }).then(response => {
  104. callback(response);
  105. }).catch(error => {
  106. //console.log('获取信息失败');
  107. errorback(error);
  108. });
  109. //return promise;
  110. },
  111. getMenu(callback, errorback){
  112. let promise
  113. this.updateAccessToken().then(accessToken => {
  114. return promise = new Promise((resolve, reject) => {
  115. //let accessToken = userInfo.accessToken();
  116. axios.get(`${REQUEST_URL}oauths/menu?suppress_response_code=1&access-token=${accessToken}`).then(response => {
  117. // 成功
  118. resolve(response);
  119. }).catch( error => {
  120. reject(error);
  121. });
  122. });
  123. }).then(response => {
  124. callback(response);
  125. }).catch(error => {
  126. //console.log(error);
  127. errorback(error);
  128. });
  129. //return promise;
  130. },
  131. getData(route, callback, errorback){
  132. let promise
  133. this.updateAccessToken().then(accessToken => {
  134. return promise = new Promise((resolve, reject) => {
  135. //let accessToken = userInfo.accessToken();
  136. axios.get(`${REQUEST_URL}${route}?suppress_response_code=1&access-token=${accessToken}`).then(response => {
  137. // 成功
  138. resolve(response);
  139. }).catch( error => {
  140. reject(error);
  141. });
  142. });
  143. }).then(response => {
  144. callback(response);
  145. }).catch(error => {
  146. error = tool.errorHandle(error);
  147. ElementUI.Message.error(error.message);
  148. if(errorback !== undefined){
  149. errorback(error);
  150. }
  151. });
  152. },
  153. postData(route, data, callback, errorback){
  154. let promise
  155. this.updateAccessToken().then(accessToken => {
  156. return promise = new Promise((resolve, reject) => {
  157. //let accessToken = userInfo.accessToken();
  158. axios.post(`${REQUEST_URL}${route}?suppress_response_code=1&access-token=${accessToken}`, data).then(response => {
  159. // 成功
  160. resolve(response);
  161. }).catch( error => {
  162. reject(error);
  163. });
  164. });
  165. }).then(response => {
  166. callback(response);
  167. }).catch(error => {
  168. error = tool.errorHandle(error);
  169. ElementUI.Message.error(error.message);
  170. if(errorback !== undefined){
  171. errorback(error);
  172. }
  173. });
  174. }
  175. }
  176. export default network;