request.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import util, { isFunc } from './util.js'
  2. class request {
  3. //本地的
  4. // static BASE_URL = 'http://localhost:8014/'
  5. // pre环境的
  6. // 正式的
  7. static BASE_URL = 'https://menu-coupon-api.overseasdragon.com.cn/'
  8. // @todo需要修改正式的域名
  9. static HEAD = {
  10. "Content-Type": "application/json",
  11. "SIGN":'',
  12. "NONCE":'',
  13. "TIMESTAMP":'',
  14. }
  15. static constructor() {
  16. }
  17. /**
  18. * 设置统一的异常处理
  19. */
  20. static setErrorHandler(handler) {
  21. this._errorHandler = handler
  22. }
  23. /**
  24. * GET类型的网络请求
  25. */
  26. static getRequest(url, data ) {
  27. let headerSign = this.getSignHead();
  28. return this.requestAll(url, data, headerSign, 'GET')
  29. }
  30. /**
  31. * POST类型的网络请求
  32. */
  33. static postRequest(url, data, notUseLoading, catchErrorFunc) {
  34. let headerSign = this.getSignHead();
  35. return this.requestAll(url, data, headerSign, 'POST', notUseLoading, catchErrorFunc)
  36. }
  37. static upload(url, name, path, ortherData, header = this.HEAD){
  38. return new Promise((resolve, reject) => {
  39. wx.uploadFile({
  40. url: url,
  41. header: header,
  42. filePath: path,
  43. name: name,
  44. formData: ortherData,
  45. success: (res => {
  46. res.data = JSON.parse(res.data);
  47. if (res.data.code === 200) {
  48. //200: 服务端业务处理正常结束
  49. resolve(res.data)
  50. } else {
  51. wx.showToast({
  52. title: res.data.msg,
  53. })
  54. //其它错误,提示用户错误信息
  55. if (this._errorHandler != null) {
  56. //如果有统一的异常处理,就先调用统一异常处理函数对异常进行处理
  57. this._errorHandler(res)
  58. }
  59. reject(res)
  60. }
  61. }),
  62. fail: (res => {
  63. if (this._errorHandler != null) {
  64. this._errorHandler(res)
  65. }
  66. wx.showToast({
  67. title: '网络异常请,稍后再试~',
  68. })
  69. reject(res)
  70. })
  71. })
  72. })
  73. }
  74. static getSignHead(){
  75. let timestamp = parseInt(Date.now()/1000);
  76. let nonce = Math.floor(Math.random() * 1000).toString()
  77. let signStr = timestamp+nonce+""+"U6Watb875eCiX4Lq";
  78. let sign = util.sha1(signStr).toString();
  79. let signHeadInfo = {
  80. "SIGN":sign,
  81. "NONCE":nonce,
  82. "TIMESTAMP":timestamp,
  83. "Content-Type": "application/json"
  84. }
  85. return signHeadInfo;
  86. }
  87. /**
  88. * 网络请求
  89. */
  90. static requestAll(url, data, header, method, notUseLoading, catchErrorFunc) {
  91. if (!notUseLoading) {
  92. getApp().showLoading()
  93. }
  94. return new Promise((resolve, reject) => {
  95. wx.request({
  96. url: url,
  97. data: data,
  98. header: header,
  99. method: method,
  100. success: (res => {
  101. if (res?.data.code === 200) {
  102. //200: 服务端业务处理正常结束
  103. let jsondata = JSON.stringify(res.data.data)
  104. let signStr = jsondata+"menu20220422";
  105. let sign = util.sha1(signStr).toString();
  106. if(sign != res.data.sign){
  107. wx.showModal({
  108. title: "提示",
  109. content: "数据走丢了"
  110. })
  111. return
  112. }
  113. resolve(res?.data)
  114. } else {
  115. if (catchErrorFunc) {
  116. if (isFunc(catchErrorFunc)) {
  117. catchErrorFunc(res?.data)
  118. }
  119. } else {
  120. wx.showToast({
  121. title: res?.data?.msg,
  122. icon: "none"
  123. })
  124. }
  125. //其它错误,提示用户错误信息
  126. if (this._errorHandler != null) {
  127. //如果有统一的异常处理,就先调用统一异常处理函数对异常进行处理
  128. this._errorHandler(res)
  129. }
  130. reject(res)
  131. }
  132. }),
  133. fail: (res => {
  134. if (this._errorHandler != null) {
  135. this._errorHandler(res)
  136. }
  137. wx.showToast({
  138. title: '网络异常请稍后',
  139. })
  140. reject(res)
  141. }),
  142. complete: _ => {
  143. getApp().hideLoading()
  144. }
  145. })
  146. })
  147. }
  148. }
  149. export default request