network.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. import {ACCESS_TOKEN_PREFIX} from './config'
  2. import userInfo from './userInfo'
  3. import tool from './tool'
  4. import axiosObj from './axiosPlugin'
  5. import ElementUI from 'element-ui'
  6. import baseInfo from './baseInfo'
  7. import store from './vuexStore'
  8. const updateToken = function (callback, errorBack) {
  9. if (!userInfo.hasLogin()) {
  10. //console.log('尚未登录');
  11. //userInfo.clear();
  12. errorBack('E40004')
  13. return false
  14. }
  15. // 比较本地accessToken是否还有效
  16. if (userInfo.accessToken() && userInfo.accessTokenExpiresIn() && parseInt(userInfo.accessTokenExpiresIn()) + parseInt(userInfo.accessTokenUpdateAt()) - 30 > parseInt(tool.getTimestamp())) {
  17. // 有效
  18. //console.log('accessToken有效');
  19. callback(userInfo.accessToken())
  20. return true
  21. } else {
  22. // 已失效,去更新
  23. let refreshToken = userInfo.refreshToken()
  24. let refreshTokenExpiresIn = userInfo.refreshTokenExpiresIn()
  25. let refreshTokenUpdateAt = userInfo.refreshTokenUpdateAt()
  26. if (refreshToken && refreshTokenExpiresIn && parseInt(refreshTokenExpiresIn) - 30 + parseInt(refreshTokenUpdateAt) > parseInt(tool.getTimestamp())) {
  27. // 有效,去更新
  28. axiosObj.get(`oauth/refresh-token?refresh-token=${refreshToken}`).then(response => {
  29. // 更新本地accessToken
  30. userInfo.accessToken(response.accessToken)
  31. userInfo.accessTokenExpiresIn(response.accessTokenExpiresIn)
  32. userInfo.accessTokenUpdateAt(response.accessTokenUpdateAt)
  33. userInfo.refreshToken(response.refreshToken)
  34. userInfo.refreshTokenExpiresIn(response.refreshTokenExpiresIn)
  35. userInfo.refreshTokenUpdateAt(response.refreshTokenUpdateAt)
  36. // 成功
  37. callback(userInfo.accessToken())
  38. return true
  39. }).catch(error => {
  40. //userInfo.clear();
  41. //console.log(error);
  42. errorBack('E40001')
  43. return false
  44. })
  45. } else {
  46. //console.log('refreshToken已失效');
  47. userInfo.clear()
  48. // 失效
  49. errorBack('E40003')
  50. return false
  51. }
  52. }
  53. }
  54. const network = {
  55. loginGetAccessToken (userName, password, route = `oauth/login`, data = null) {
  56. let promise = new Promise((resolve, reject) => {
  57. // if(userInfo.hasLogin()){
  58. // reject('E40005');
  59. // return false;
  60. // }
  61. if (data === null) {
  62. data = {
  63. userName,
  64. password,
  65. }
  66. }
  67. axiosObj.post(route, data).then(response => {
  68. // 更新本地accessToken
  69. userInfo.updateLoginAllInfo(response)
  70. // 成功
  71. resolve(response)
  72. }).catch(error => {
  73. // console.log('登录获取数据错误');
  74. userInfo.clear()
  75. reject(error)
  76. })
  77. })
  78. return promise
  79. },
  80. updateToken () {
  81. let promise = new Promise((resolve, reject) => {
  82. updateToken(function (accessToken) {
  83. resolve(accessToken)
  84. }, function (error) {
  85. reject(error)
  86. })
  87. })
  88. return promise
  89. },
  90. getUserInfo () {
  91. let promise = new Promise((resolve, reject) => {
  92. updateToken(function (accessToken) {
  93. axiosObj.get(`oauth/info`, {
  94. headers: {
  95. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  96. }
  97. }).then(response => {
  98. // 更新本地userInfo
  99. userInfo.userId(response.ID)
  100. userInfo.userName(response.USER_NAME)
  101. userInfo.userEmail(response.EMAIL)
  102. userInfo.baseData({AVATAR: response.AVATAR,VERIFIED: response.VERIFIED,DEC_LV: response.DEC_LV,EMP_LV: response.EMP_LV,PROVINCE: response.PROVINCE,CITY: response.CITY,COUNTY: response.COUNTY})
  103. // 成功
  104. resolve(response)
  105. }).catch(error => {
  106. reject(error)
  107. })
  108. }, function (error) {
  109. reject(error)
  110. })
  111. })
  112. return promise
  113. },
  114. getBaseInfo () {
  115. let promise = new Promise((resolve, reject) => {
  116. updateToken(function (accessToken) {
  117. axiosObj.get(`site/base-info`, {
  118. headers: {
  119. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  120. }
  121. }).then(response => {
  122. // 更新本地baseInfo
  123. baseInfo.clear()
  124. baseInfo.set(response)
  125. // 成功
  126. resolve(response)
  127. }).catch(error => {
  128. reject(error)
  129. })
  130. }, function (error) {
  131. reject(error)
  132. })
  133. })
  134. return promise
  135. },
  136. getData (route, data = null) {
  137. if (data === null) {
  138. data = {}
  139. }
  140. let promise = new Promise((resolve, reject) => {
  141. updateToken(function (accessToken) {
  142. axiosObj.get(`${route}`, {
  143. params: data,
  144. headers: {
  145. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  146. }
  147. }).then(response => {
  148. // 成功
  149. resolve(response)
  150. }).catch(error => {
  151. error = tool.errorHandle(error)
  152. ElementUI.Message.error(error.message)
  153. reject(error)
  154. })
  155. }, function (error) {
  156. error = tool.errorHandle(error)
  157. ElementUI.Message.error(error.message)
  158. reject(error)
  159. })
  160. })
  161. return promise
  162. },
  163. postData (route, data) {
  164. let promise = new Promise((resolve, reject) => {
  165. updateToken(function (accessToken) {
  166. axiosObj.post(`${route}`, data, {
  167. headers: {
  168. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  169. }
  170. }).then(response => {
  171. // 成功
  172. resolve(response)
  173. }).catch(error => {
  174. error = tool.errorHandle(error)
  175. ElementUI.Message.error(error.message)
  176. reject(error)
  177. })
  178. }, function (error) {
  179. error = tool.errorHandle(error)
  180. ElementUI.Message.error(error.message)
  181. reject(error)
  182. })
  183. })
  184. return promise
  185. },
  186. getPageData (obj, path, page, pageSize, data = null, callback = null) {
  187. obj.loading = true
  188. if (page === undefined) page = 1
  189. if (pageSize === undefined) pageSize = 20
  190. let paramsData = {
  191. page: page,
  192. pageSize: pageSize,
  193. }
  194. if (data !== null) {
  195. paramsData = Object.assign(paramsData, data)
  196. }
  197. network.getData(path, paramsData).then(response => {
  198. obj.tableData = response.list
  199. obj.loading = false
  200. obj.currentPage = page
  201. obj.totalPages = parseInt(response.totalPages)
  202. obj.totalCount = parseInt(response.totalCount)
  203. obj.pageSize = pageSize
  204. if (callback !== null) {
  205. callback(response)
  206. }
  207. }).catch(response => {
  208. obj.loading = false
  209. })
  210. },
  211. getDaysDiff () {
  212. let promise = new Promise((resolve, reject) => {
  213. axiosObj.get(`site/days-diff`).then(response => {
  214. // 更新本地baseInfo
  215. baseInfo.setDaysDiff(response.daysDiff)
  216. // 成功
  217. resolve(response)
  218. }).catch(error => {
  219. reject(error)
  220. })
  221. })
  222. return promise
  223. },
  224. getSiteInfo() {
  225. let promise = new Promise((resolve, reject) => {
  226. axiosObj.get(`site/config`).then(response => {
  227. if (response.siteClose) {
  228. document.body.innerHTML = response.siteCloseInfo
  229. } else {
  230. document.title = response.siteTitle
  231. }
  232. // 成功
  233. resolve(response)
  234. }).catch(error => {
  235. reject(error)
  236. })
  237. })
  238. return promise
  239. },
  240. getUnreadMessage () {
  241. let promise = new Promise((resolve, reject) => {
  242. network.getData(`message/unread-num`).then(response => {
  243. store.state.baseInfo.messageUnreadNum = Number.parseInt(response)
  244. // 成功
  245. resolve(response)
  246. }).catch(error => {
  247. reject(error)
  248. })
  249. })
  250. return promise
  251. },
  252. }
  253. export default network