api.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. import Vue from 'vue'
  2. import __config from 'config/env';
  3. import util from 'utils/util';
  4. import {
  5. validatenull
  6. } from './validate';
  7. const request = (url, method, data, showLoading) => {
  8. let _url = url;
  9. //#ifndef H5
  10. _url = __config.basePath + url
  11. //#endif
  12. _url = __config.basePath + url
  13. let tokenName = uni.getStorageSync(__config.tokenNameKey)
  14. let tokenValue = uni.getStorageSync(__config.tokenValueKey)
  15. let shopId = uni.getStorageSync(__config.shopIdSessionKey)
  16. let headerTokenObj = {}
  17. if (tokenName && tokenValue) {
  18. headerTokenObj[tokenName ? tokenName : 'rs-auth-token'] = tokenValue ? tokenValue : ''
  19. }
  20. return new Promise((resolve, reject) => {
  21. if (showLoading) {
  22. uni.showLoading({
  23. title: '加载中'
  24. });
  25. }
  26. uni.request({
  27. url: _url,
  28. method: method,
  29. data: data,
  30. withCredentials: true,
  31. header: Object.assign({
  32. 'tenant-id': __config.tenantId,
  33. //#ifdef H5
  34. // 'client-type': util.isWeiXinBrowser() ? 'H5-WX' : 'H5', //客户端类型普通H5或微信H5
  35. 'app-id': getApp().globalData.appId ? getApp().globalData.appId :
  36. '', //微信h5有appId
  37. 'client-type': validatenull(shopId) ? 'LSD-HALL' :
  38. 'LSD-SHOP', //点餐机类型 大厅的/门店内
  39. // 'device-id': getApp().globalData.deviceId, //点餐机-唯一设备编号
  40. 'device-id': "1f82c7ab30405ebf", //点餐机-唯一设备编号
  41. //#endif
  42. //#ifdef APP-PLUS
  43. /* 点餐机模式 */
  44. 'client-type': validatenull(shopId) ? 'LSD-HALL' :
  45. 'LSD-SHOP', //点餐机类型 大厅的/门店内
  46. 'device-id': getApp().globalData.deviceId, //点餐机-唯一设备编号
  47. 'switch-token': null, //临时用户身份凭证
  48. 'shop-id': shopId, //店铺ID
  49. //#endif
  50. }, headerTokenObj),
  51. success(res) {
  52. if (res.statusCode == 200) {
  53. if (res.data.code != 200) {
  54. if (res.data.code == 60001 || res.data.code == 406) {
  55. if (!getApp().globalData.logining) {
  56. getApp().globalData.logining = true //防止同时多个接口触发登录
  57. if (util.isMiniPg() || (getApp().globalData.appId && util
  58. .isWeiXinBrowser())) {
  59. //小程序或公众号H5,删除wx_token_name|wx_token_value重新登录
  60. uni.removeStorageSync(__config.tokenNameKey);
  61. uni.removeStorageSync(__config.tokenValueKey);
  62. getApp().doLogin().then(res => {
  63. var pages = getCurrentPages(); // 获取页面栈
  64. var currPage = pages[pages.length - 1]; // 当前页面
  65. currPage.onLoad(currPage.options)
  66. currPage.onShow()
  67. });
  68. } else {
  69. util.backLoginPage()
  70. }
  71. setTimeout(function() {
  72. getApp().globalData.logining = false;
  73. }, 2000);
  74. }
  75. reject("session过期重新登录");
  76. } else if (res.data.code == 60003) {
  77. if (!getApp().globalData.logining2) {
  78. getApp().globalData.logining2 = true //防止同时多个接口触发登录
  79. util.backLoginPage()
  80. setTimeout(function() {
  81. getApp().globalData.logining2 = false;
  82. }, 2000);
  83. }
  84. reject("请先登录系统");
  85. } else {
  86. // uni.showModal({
  87. // title: '提示',
  88. // content: res.data.msg + '',
  89. // success() {},
  90. // complete() {
  91. // }
  92. // });
  93. // reject(res.data.msg);
  94. }
  95. }
  96. resolve(res.data);
  97. } else if (res.statusCode == 404) {
  98. uni.showModal({
  99. title: '提示',
  100. content: '接口请求出错,请检查手机网络',
  101. success(res) {}
  102. });
  103. reject();
  104. } else if (res.statusCode == 502) {
  105. console.log(502)
  106. uni.showModal({
  107. title: '提示',
  108. content: '服务器维护中,请稍后再来',
  109. success(res) {}
  110. });
  111. reject();
  112. } else if (res.statusCode == 503) {
  113. console.log(503)
  114. uni.showModal({
  115. title: '提示',
  116. content: '503错误,服务未启动',
  117. success(res) {}
  118. });
  119. reject();
  120. } else {
  121. console.log(res);
  122. uni.showModal({
  123. title: '提示',
  124. content: '错误:' + res.data.msg,
  125. success(res) {}
  126. });
  127. reject();
  128. }
  129. },
  130. fail(error) {
  131. console.log(error);
  132. uni.showModal({
  133. title: '提示',
  134. content: '接口请求出错:' + error.errMsg,
  135. success(res) {}
  136. });
  137. reject(error);
  138. },
  139. complete(res) {
  140. uni.hideLoading();
  141. }
  142. });
  143. });
  144. };
  145. // 登录成功后需要进行的统一操作
  146. const loginSuccess = (request) => {
  147. return new Promise((resolve, reject) => {
  148. request.then((res) => {
  149. if (res && res.data.id) { // 登录成功
  150. console.log("************登录成功************");
  151. let userInfo = res.data;
  152. uni.setStorageSync('third_session', userInfo.thirdSession);
  153. uni.setStorageSync('user_info', userInfo);
  154. getApp().userOnlineHeartbeat()
  155. }
  156. resolve(res)
  157. }).catch((err) => {
  158. reject(err)
  159. })
  160. })
  161. }
  162. // 退出登录后需要进行的统一操作
  163. const logoutSuccess = (request) => {
  164. return new Promise((resolve, reject) => {
  165. request.then((res) => {
  166. //退出登录成功
  167. console.log("************退出登录成功************");
  168. getApp().userOnlineHeartbeat(true)
  169. resolve(res)
  170. }).catch((err) => {
  171. reject(err)
  172. })
  173. })
  174. }
  175. module.exports = {
  176. request,
  177. doGet: function(url, params, isShowLoading = true) {
  178. return request(url, 'get', params, isShowLoading);
  179. },
  180. doPost: function(url, params, isShowLoading = true) {
  181. return request(url, 'post', params, isShowLoading);
  182. },
  183. doPut: function(url, params, isShowLoading = true) {
  184. return request(url, 'put', params, isShowLoading);
  185. },
  186. doDelete: function(url, params, isShowLoading = true) {
  187. return request(url, 'delete', params, isShowLoading);
  188. },
  189. deviceReport: (data) => {
  190. // 点餐机设备信息上报
  191. return new Promise((resolve, reject) => {
  192. request('/mallapi/deviceReport/add', 'post', data, false).then(res => {
  193. resolve(res)
  194. }).catch(error => {
  195. reject(error)
  196. })
  197. })
  198. },
  199. userInfoGet: () => {
  200. //查询点餐平台用户信息
  201. //小程序获取当前登录用户信息
  202. return new Promise((resolve, reject) => {
  203. request('/openapi/ma/common/getCurrentUser', 'get', null, false).then(res => {
  204. /**
  205. * 缓存用户信息
  206. */
  207. let wxMemberInfo = util.parseUser(res.data)
  208. uni.setStorageSync(__config.loginWxUserInfoKey, wxMemberInfo)
  209. res.data = wxMemberInfo
  210. resolve(res)
  211. }).catch(error => {
  212. console.error('小程序获取当前登录用户信息出错: ' + error)
  213. reject(error)
  214. })
  215. })
  216. },
  217. getCurrentUserSync: (data) => {
  218. //小程序获取当前登录用户信息
  219. return new Promise((resolve, reject) => {
  220. request('/openapi/ma/common/getCurrentUser', 'get', data, false).then(res => {
  221. /**
  222. * 缓存用户信息
  223. */
  224. let wxMemberInfo = util.parseUser(res.data)
  225. uni.setStorageSync(__config.loginWxUserInfoKey, wxMemberInfo)
  226. res.data = wxMemberInfo
  227. resolve(res)
  228. }).catch(error => {
  229. console.error('小程序获取当前登录用户信息出错: ' + error)
  230. reject(error)
  231. })
  232. })
  233. },
  234. /* 小程序文件上传方法 */
  235. uploadFile: (params, filePath) => {
  236. uni.showLoading({
  237. title: '文件上传中...'
  238. });
  239. let tokenName = uni.getStorageSync(__config.tokenNameKey)
  240. let tokenValue = uni.getStorageSync(__config.tokenValueKey)
  241. let headerTokenObj = {}
  242. if (tokenName && tokenValue) {
  243. headerTokenObj[tokenName ? tokenName : 'rs-auth-token'] = tokenValue ? tokenValue : ''
  244. }
  245. headerTokenObj = Object.assign({
  246. "Content-Type": "multipart/form-data"
  247. }, headerTokenObj)
  248. if (!params) {
  249. params = {
  250. dir: '/uploads/',
  251. }
  252. }
  253. //小程序上传文件
  254. return new Promise((resolve, reject) => {
  255. uni.uploadFile({
  256. url: __config.basePath + '/openapi/storage/upload?dir=' + params.dir,
  257. filePath: filePath,
  258. name: 'file',
  259. header: headerTokenObj,
  260. //formData: params,
  261. success: (res) => {
  262. resolve(JSON.parse(res.data))
  263. },
  264. fail: (err) => {
  265. reject(err)
  266. },
  267. complete(res) {
  268. uni.hideLoading();
  269. }
  270. })
  271. })
  272. },
  273. getDictByKey: data => {
  274. //获取字典信息(根据字典编码)
  275. return request('/openapi/common/getDictByKey/' + data, 'get', null, false);
  276. },
  277. getConfigByKey: data => {
  278. //获取字典信息(根据字典编码)
  279. return request('/openapi/common/getConfigByKey/' + data, 'get', null, false);
  280. },
  281. deviceReport: data => {
  282. //上报设备(大屏)信息接口
  283. return new Promise((resolve, reject) => {
  284. request('/mallapi/deviceReport/addScreenDevice', 'post', data, false).then(res => {
  285. resolve(res)
  286. })
  287. })
  288. },
  289. };