request.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. const app = getApp();
  2. // download.zhiqiyun.com 域名
  3. const env = {
  4. NODE_ENV: 'pota',
  5. dev: {
  6. apiUrl: 'https://unwx.e-chinalife.com'
  7. },
  8. prd: {
  9. apiUrl: 'https://apimall.zhiqiyun.com',
  10. },
  11. pota: {
  12. apiUrl: 'http://192.168.110.180:8098' ,//wjg
  13. }
  14. }
  15. var header = {
  16. 'content-type': 'application/x-www-form-urlencoded',
  17. /*--商户的appi通过参数传入--*/
  18. 'appId': '',
  19. // 'appId': 'ZQesLvuSYEejOJB', //测试
  20. // 'appId': 'ZQWYx7XoOOhv4Ns', //正式
  21. /*----*/
  22. }
  23. /**小程序配置 */
  24. const publics = {
  25. picUrls: 'https://zhiqiyun.oss-cn-hangzhou.aliyuncs.com/static/', //图片地址
  26. 'mapLBSKEY': 'XTABZ-5K3RW-MZVRD-3ZS33-GC5RE-YOBEG',
  27. }
  28. /*
  29. * 获取token
  30. */
  31. const getToken = (success) => {
  32. let token = getStorage('AUTH_TOKEN');
  33. if (token) {
  34. success.call(this, token);
  35. return false;
  36. } else {
  37. loadToken(data => {
  38. success.call(this, data);
  39. });
  40. }
  41. }
  42. const loadToken = (success) => {
  43. let that = this
  44. uni.request({
  45. url: env[env.NODE_ENV].apiUrl + '/api/access_token',
  46. data: {},
  47. method: 'get',
  48. header: header,
  49. success(json) {
  50. if (json.statusCode !== 200) return msg(json.data.message);
  51. if (json.data.code !== 0) return msg(json.data.msg)
  52. setStorage('AUTH_TOKEN', json.data.data);
  53. success.call(that, json.data.data);
  54. },
  55. fail() {
  56. msg('access_token 获取失败');
  57. }
  58. })
  59. }
  60. const clearValueEmpty = (data) => {
  61. let keyValue = {};
  62. for (let key in data) {
  63. let value = typeof data[key];
  64. if (value == 'string' && value) {
  65. if (data[key] != 'undefined' && data[key] != " " && data[key] != undefined && data[key] != null) {
  66. keyValue[key] = data[key];
  67. }
  68. } else if (value == 'number' && value != null) {
  69. keyValue[key] = data[key];
  70. } else if (value == 'boolean') {
  71. keyValue[key] = data[key];
  72. } else {
  73. if (data[key]) keyValue[key] = data[key];
  74. }
  75. }
  76. return keyValue;
  77. }
  78. /**
  79. * 公共请求
  80. *
  81. * @param {*} url 请求url
  82. * @param {*} data 请求参数
  83. * @param {*} method 请求方法
  84. * @param {*} success 成功函数
  85. * @param {*} isLoad 是否显示加载提示
  86. */
  87. const baseRequest = (url, data, method, success, isLoad) => {
  88. getToken(token => {
  89. if (isLoad) {
  90. load('加载中')
  91. }
  92. header.authorityToken = token;
  93. // if (url.indexOf('/v3') != -1 || url.indexOf('/paper/create') != -1) {
  94. // header['content-type'] = 'application/json;charset=UTF-8'
  95. // } else {
  96. // header['content-type'] = 'application/x-www-form-urlencoded'
  97. // }
  98. header['content-type'] = 'application/json;charset=UTF-8'
  99. try {
  100. var device_info = {};
  101. //第三放巨量投放渠道标记
  102. var pickleChannel = getStorage('pickleChannel');
  103. device_info.pickleChannel = pickleChannel;
  104. var packageChannel = getStorage('packageChannel');
  105. device_info.packageChannel = packageChannel;
  106. var deviceinfoString = JSON.stringify(device_info);
  107. deviceinfoString = deviceinfoString.replace(/{/g, '').replace(/}/g, '').replace(/:/g, '=')
  108. .replace(
  109. /,/g,
  110. ';').replace(/"/g,
  111. '');
  112. header['device-info'] = deviceinfoString;
  113. } catch (e) {}
  114. console.log('H5请求url===>',env[env.NODE_ENV].apiUrl + url,'请求方式 '+method)
  115. console.log('H5请求data===>',clearValueEmpty(data))
  116. uni.request({
  117. url: env[env.NODE_ENV].apiUrl + url,
  118. data: clearValueEmpty(data),
  119. method: method,
  120. header: header,
  121. success(json) {
  122. if (isLoad) {
  123. uni.hideLoading();
  124. }
  125. if (json.statusCode !== 200) return msg(json.data.message);
  126. if (json.data.code !== 0) {
  127. return msg(json.data.msg)
  128. }
  129. let data = json.data.data;
  130. if (typeof data === 'string' && data.indexOf("{") === 0) {
  131. data = JSON.parse(data);
  132. }
  133. console.log('H5请求返回===>',data)
  134. success.call(this, data);
  135. },
  136. fail() {
  137. if (isLoad) {
  138. uni.hideLoading();
  139. }
  140. },
  141. })
  142. })
  143. }
  144. const loadIng = (msg) => {
  145. uni.showLoading({
  146. title: msg,
  147. mask: true
  148. })
  149. }
  150. /**POST请求 */
  151. const postRequest = (url, data, success, isLoad) => {
  152. header['content-type'] = 'application/x-www-form-urlencoded'
  153. baseRequest(url, data, 'post', success, isLoad);
  154. }
  155. const postRequestLoding = (url, data, success, isLoding) => {
  156. header['content-type'] = 'application/x-www-form-urlencoded'
  157. baseRequest(url, data, 'post', success, false, isLoding);
  158. }
  159. /**GET请求 */
  160. const getRequest = (url, data, success, isLoad) => {
  161. header['content-type'] = 'application/x-www-form-urlencoded'
  162. baseRequest(url, data, 'get', success, isLoad);
  163. }
  164. /**Put请求 */
  165. const putRequest = (url, data, success, isLoad) => {
  166. header['content-type'] = 'application/x-www-form-urlencoded'
  167. baseRequest(url, data, 'put', success, isLoad)
  168. }
  169. const putRequestJson = (url, data, success, isLoad) => {
  170. header['content-type'] = 'application/json;charset=UTF-8'
  171. baseRequest(url, data, 'put', success, isLoad)
  172. }
  173. const uploadFile = (url, data, success) => {
  174. // console.log(env[env.NODE_ENV].apiUrl + url, data)
  175. getToken(token => {
  176. uni.uploadFile({
  177. url: env[env.NODE_ENV].apiUrl + url,
  178. filePath: data,
  179. name: 'file',
  180. header: {
  181. 'appId': header['appId'],
  182. 'authorityToken': token
  183. },
  184. success(res) {
  185. if (res.statusCode !== 200) return msg('文件上传失败');
  186. let data = JSON.parse(res.data);
  187. if (data.code !== 0) return msg(data.msg);
  188. success.call(this, data.data);
  189. },
  190. })
  191. })
  192. }
  193. /**弹窗 */
  194. const msg = (title, success) => {
  195. if (title) {
  196. uni.showToast({
  197. title: title,
  198. icon: 'none',
  199. success() {
  200. if (success) success.call(this);
  201. }
  202. });
  203. }
  204. return false;
  205. }
  206. const load = msg => {
  207. uni.showLoading({
  208. title: msg,
  209. mask: true
  210. })
  211. }
  212. // 去掉字符串中的特殊字符和转义字符
  213. const excludeSpecial = (s) => {
  214. // 去掉转义字符
  215. // s = s.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');
  216. const pattern = /[`~!@#$^&*()=|{}':;',\\\[\]\.<>\/?~!@#¥……&*()——|{}【】';:""' + - - _ % 。,、?\s]/g;
  217. if (s != undefined || s != null) {
  218. s = s.replace(pattern, "")
  219. }
  220. return s;
  221. }
  222. const setStorage = (key, value) => {
  223. uni.setStorageSync(env.NODE_ENV + "_" + key, value)
  224. }
  225. const getStorage = (key) => {
  226. return uni.getStorageSync(env.NODE_ENV + "_" + key)
  227. }
  228. const removeStorage = (key) => {
  229. return uni.removeStorageSync(env.NODE_ENV + "_" + key);
  230. }
  231. const silenceLogin = (saleNo) => {
  232. return new Promise((resolve, reject) => {
  233. let params = {
  234. saleNo: saleNo
  235. }
  236. // if(getStorage('userInfo')){
  237. // resolve();
  238. // }else{
  239. // postRequest('/api/h5/login', params, data => {
  240. // if(data) setStorage('userInfo', data);
  241. // if (data.token) setStorage('AUTH_TOKEN', data.token);
  242. // resolve();
  243. // });
  244. // }
  245. postRequest('/api/h5/login', params, data => {
  246. if(data) setStorage('userInfo', data);
  247. if (data.token) setStorage('AUTH_TOKEN', data.token);
  248. resolve();
  249. });
  250. });
  251. }
  252. module.exports = {
  253. setStorage: setStorage,
  254. getStorage: getStorage,
  255. postRequest: postRequest,
  256. postRequestLoding: postRequestLoding,
  257. getRequest: getRequest,
  258. putRequest: putRequest,
  259. putRequestJson: putRequestJson,
  260. msg: msg,
  261. load: load,
  262. getToken: getToken,
  263. loadIng: loadIng,
  264. removeStorage: removeStorage,
  265. public: publics,
  266. header: header,
  267. excludeSpecial: excludeSpecial,
  268. silenceLogin:silenceLogin,
  269. uploadFile:uploadFile
  270. }