request.js 7.7 KB

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