base.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. import { Config } from "./config.js";
  2. import { Token } from "./token.js";
  3. class Base {
  4. constructor() {
  5. this.baseRequestUrl = Config.userUrl;
  6. this.serviceRequestUrl = Config.serviceUrl;
  7. this.jgRequestUrl = Config.jgUrl;
  8. }
  9. // 文件上传
  10. uploadFileByServer(params, noRefetch,name = "image") {
  11. var that = this;
  12. var url = this.serviceRequestUrl + params.url;
  13. if (!params.type) {
  14. params.type = "GET";
  15. }
  16. if (params.queryString) {
  17. params.queryString = params.queryString;
  18. } else {
  19. params.queryString = "";
  20. }
  21. uni.uploadFile({
  22. url: url + params.queryString,
  23. filePath: params.filePath,
  24. name: name,
  25. header: {
  26. "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"),
  27. "content-type": "application/json"
  28. },
  29. success: function(res) {
  30. if (res.data.code == "401") {
  31. //token过期
  32. if (!noRefetch) {
  33. that._refetch(params);
  34. }
  35. }
  36. //根据http状态码判断本次http请求调用是否成功
  37. var code = res.statusCode.toString();
  38. var startChar = code.charAt(0);
  39. if (startChar == "2") { //http调用是成功的
  40. params.sCallBack && params.sCallBack(res);
  41. } else {
  42. //处理请求错误 原因:token可能是失效的
  43. //但是这种情况只能发生一次
  44. if (code == "500") { //因为token失效服务器返回的状态码
  45. //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验
  46. if (!noRefetch) {
  47. that._refetch(params);
  48. }
  49. }
  50. params.sCallBack && params.sCallBack(res);
  51. }
  52. },
  53. fail: function(err) {
  54. //网络中断或者网络异常导致的错误
  55. console.log(err);
  56. console.log("服务器走神了...");
  57. }
  58. });
  59. }
  60. // 文件上传
  61. uploadFile(params, noRefetch) {
  62. var that = this;
  63. var url = this.baseRequestUrl + params.url;
  64. if (!params.type) {
  65. params.type = "GET";
  66. }
  67. if (params.queryString) {
  68. params.queryString = params.queryString;
  69. } else {
  70. params.queryString = "";
  71. }
  72. uni.uploadFile({
  73. url: url + params.queryString,
  74. filePath: params.filePath,
  75. name: "photo",
  76. header: {
  77. "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"),
  78. "content-type": "application/json"
  79. },
  80. success: function(res) {
  81. if (res.data.code == "401") {
  82. //token过期
  83. if (!noRefetch) {
  84. that._refetch(params);
  85. }
  86. }
  87. //根据http状态码判断本次http请求调用是否成功
  88. var code = res.statusCode.toString();
  89. var startChar = code.charAt(0);
  90. if (startChar == "2") { //http调用是成功的
  91. params.sCallBack && params.sCallBack(res);
  92. } else {
  93. //处理请求错误 原因:token可能是失效的
  94. //但是这种情况只能发生一次
  95. if (code == "500") { //因为token失效服务器返回的状态码
  96. //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验
  97. if (!noRefetch) {
  98. that._refetch(params);
  99. }
  100. }
  101. params.sCallBack && params.sCallBack(res);
  102. }
  103. },
  104. fail: function(err) {
  105. //网络中断或者网络异常导致的错误
  106. console.log(err);
  107. console.log("服务器走神了...");
  108. // reject(err);
  109. }
  110. });
  111. }
  112. // 服务端请求
  113. serviceRequest(params, noRefetch) {
  114. var that = this;
  115. var url = params.url.includes("http") ? params.url : (this.serviceRequestUrl + params.url);
  116. if (!params.type) {
  117. params.type = "GET";
  118. }
  119. if (params.queryString) {
  120. params.queryString = params.queryString;
  121. } else {
  122. params.queryString = "";
  123. }
  124. uni.request({
  125. url: url + params.queryString,
  126. data: params.data,
  127. method: params.type,
  128. header: {
  129. "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"),
  130. "content-type": "application/json",
  131. ...params.header
  132. },
  133. success: function(res) {
  134. if (res.data.code == "401") {
  135. console.log("登录过期");
  136. // 过期跳转登录页
  137. wx.redirectTo({
  138. url: "/pages/login/index"
  139. });
  140. //token过期
  141. if (!noRefetch) {
  142. that._refetch(params);
  143. }
  144. }
  145. //根据http状态码判断本次http请求调用是否成功
  146. var code = res.statusCode.toString();
  147. var startChar = code.charAt(0);
  148. if (startChar == "2") { //http调用是成功的
  149. params.sCallBack && params.sCallBack(res);
  150. } else {
  151. if (code == "500") { //因为token失效服务器返回的状态码
  152. //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验
  153. if (!noRefetch) {
  154. that._refetch(params);
  155. }
  156. }
  157. params.sCallBack && params.sCallBack(res);
  158. }
  159. },
  160. fail: function(err) {
  161. //网络中断或者网络异常导致的错误
  162. console.log(err);
  163. console.log("服务器走神了...");
  164. }
  165. });
  166. }
  167. //用户端请求
  168. //当noRefetch为true时,不做未授权重制机制
  169. request(params, noRefetch) {
  170. var that = this;
  171. var url = params.url.includes("http") ? params.url : (this.baseRequestUrl + params.url);
  172. if (!params.type) {
  173. params.type = "GET";
  174. }
  175. if (params.queryString) {
  176. params.queryString = params.queryString;
  177. } else {
  178. params.queryString = "";
  179. }
  180. uni.request({
  181. url: url + params.queryString,
  182. data: params.data,
  183. method: params.type,
  184. header: {
  185. "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"),
  186. "content-type": "application/json",
  187. ...params.header
  188. },
  189. success: function(res) {
  190. if (res.data.code == "401") {
  191. // 过期跳转登录页
  192. wx.redirectTo({
  193. url: "pages/login/index"
  194. });
  195. //token过期
  196. if (!noRefetch) {
  197. that._refetch(params);
  198. }
  199. }
  200. //根据http状态码判断本次http请求调用是否成功
  201. var code = res.statusCode.toString();
  202. var startChar = code.charAt(0);
  203. if (startChar == "2") { //http调用是成功的
  204. params.sCallBack && params.sCallBack(res);
  205. } else {
  206. if (code == "500") { //因为token失效服务器返回的状态码
  207. //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验
  208. if (!noRefetch) {
  209. that._refetch(params);
  210. }
  211. }
  212. params.sCallBack && params.sCallBack(res);
  213. }
  214. },
  215. fail: function(err) {
  216. //网络中断或者网络异常导致的错误
  217. console.log(err);
  218. console.log("服务器走神了...");
  219. }
  220. });
  221. }
  222. jgRequest(params, noRefetch) {
  223. var that = this;
  224. var url = params.url.includes("http") ? params.url : (this.jgRequestUrl + params.url);
  225. if (!params.type) {
  226. params.type = "GET";
  227. }
  228. if (params.queryString) {
  229. params.queryString = params.queryString;
  230. } else {
  231. params.queryString = "";
  232. }
  233. uni.request({
  234. url: url + params.queryString,
  235. data: params.data,
  236. method: params.type,
  237. header: {
  238. "Authorization": uni.getStorageSync("tokenHead") + uni.getStorageSync("token"),
  239. "content-type": "application/json",
  240. ...params.header
  241. },
  242. success: function(res) {
  243. if (res.data.code == "401") {
  244. //token过期
  245. if (!noRefetch) {
  246. that._refetch(params);
  247. }
  248. }
  249. //根据http状态码判断本次http请求调用是否成功
  250. var code = res.statusCode.toString();
  251. var startChar = code.charAt(0);
  252. if (startChar == "2") { //http调用是成功的
  253. params.sCallBack && params.sCallBack(res.data);
  254. } else {
  255. if (code == "500") { //因为token失效服务器返回的状态码
  256. //1.获取新的令牌 2.获取完成以后继续调用本接口 3.只能请求一次 不能反复校验
  257. if (!noRefetch) {
  258. that._refetch(params);
  259. }
  260. }
  261. params.sCallBack && params.sCallBack(res.data);
  262. }
  263. },
  264. fail: function(err) {
  265. //网络中断或者网络异常导致的错误
  266. console.log(err);
  267. console.log("服务器走神了...");
  268. }
  269. });
  270. }
  271. //token失效的时候,重新刷一下token
  272. _refetch(params) {
  273. var token = new Token();
  274. token.getTokenFromServer((token) => {
  275. this.request(params, true);
  276. });
  277. }
  278. }
  279. export { Base };