From a5f099ba0850a2e0c0fac40ccfaa1b46eb481ab0 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 15 五月 2025 10:52:05 +0800 Subject: [PATCH] 2025-05-15 --- src/api/index.js | 413 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 301 insertions(+), 112 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index a2ca5e0..5e61e12 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -15,7 +15,8 @@ window.GLOB.$error = false let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : '' -let lang = sessionStorage.getItem('lang') !== 'zh-CN' ? sessionStorage.getItem('lang') : '' +let lang = sessionStorage.getItem('lang') || 'zh-CN' +lang = lang !== 'zh-CN' ? lang : '' let db = `mkdb${service + lang}` if (window.indexedDB) { @@ -47,10 +48,12 @@ okText: '鐭ラ亾浜�', onOk: () => { window.GLOB.$error = false - sessionStorage.clear() - if (!!(window.history && window.history.pushState)) { - window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login') - window.location.reload() + if (!/#\/login/.test(window.location.href)) { + sessionStorage.clear() + if (!!(window.history && window.history.pushState)) { + window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login') + window.location.reload() + } } } }) @@ -58,6 +61,15 @@ return Promise.reject(response.data) } else { + if (response.data.ErrCode === 'E') { + if (/姝婚攣|灏氭湭浠庢睜涓幏鍙栬繛鎺�/.test(response.data.message)) { + response.data.message = (window.GLOB.dict['server_busy'] || '鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庨噸璇曪紒') + (/姝婚攣/.test(response.data.message) ? '01' : '02') + response.data.ErrMesg = response.data.message + } else if (/鏃犳硶鎵撳紑鐧诲綍鎵�璇锋眰鐨勬暟鎹簱|鍦ㄤ笌\s*SQL\s+Server\s*寤虹珛杩炴帴鏃跺嚭鐜�/.test(response.data.message)) { + response.data.message = '鏈嶅姟鍣ㄩ摼鎺ヤ笉鍙敤锛岃鍏抽棴娴忚鍣ㄩ噸鏂版墦寮�锛�' + response.data.ErrMesg = response.data.message + } + } if (response.config.requestId) { response.data.$requestId = response.config.requestId } @@ -66,7 +78,15 @@ }, (error) => { let response = error.response || '' - if (response && response.status) { + if (!response) { + notification.error({ + className: 'notification-custom-error', + bottom: 0, + message: error.message.includes('Network Error') && sessionStorage.getItem('lang') === 'zh-CN' ? '缃戠粶杩炴帴澶辫触锛�' : error.message, + placement: 'bottomRight', + duration: 15 + }) + } else if (response && response.status) { notification.error({ className: 'notification-custom-error', bottom: 0, @@ -74,6 +94,32 @@ placement: 'bottomRight', duration: 15 }) + if ([500, 504].includes(response.status) && error.config && error.config.url && error.config.data) { + window.mkInfo(error.config.url) + window.mkInfo(error.config.data) + if (window.GLOB.errorLog && !sessionStorage.getItem('local_error')) { + let urlReg = new RegExp('^(' + window.GLOB.baseurl + '|/)webapi/(exstars|dostars)', 'ig') + if (urlReg.test(error.config.url) && !/s_special_error_note_log/.test(error.config.url)) { + let res = null + try { + let data = JSON.parse(error.config.data) + if (!data.rduri) { + res = { + api_url: error.config.url, + error_code: response.status, + error_time: moment().format('YYYY-MM-DD HH:mm:ss'), + api_param: error.config.data + } + } + } catch (e) { + res = null + } + if (res) { + sessionStorage.setItem('local_error', JSON.stringify(res)) + } + } + } + } } return Promise.reject(response) @@ -100,67 +146,50 @@ /** * @description 寰俊涓氬姟璇锋眰 鍘熸帴鍙� 'wxpay/getaccesstoken' */ - wxAccessToken (appId, domain = '') { - let _url = domain || window.GLOB.baseurl + // wxAccessToken (appId, domain = '') { + // let _url = domain || window.GLOB.baseurl - return new Promise(resolve => { - if (window.GLOB.accessToken.appId === appId && window.GLOB.accessToken.accessTime && (parseInt(new Date().getTime() / 1000) - window.GLOB.accessToken.accessTime < 30)) { - resolve(window.GLOB.accessToken) - } else { - window.GLOB.accessToken = {appId} - axios({ - url: _url + 'wechat/getaccesstoken', - method: 'post', - data: JSON.stringify({app_id: appId}) - }).then(res => { - if (res.access_token) { - window.GLOB.accessToken.accessTime = parseInt(new Date().getTime() / 1000) - window.GLOB.accessToken.access_token = res.access_token - } - resolve(res) - }) - } - }) - } + // return axios({ + // url: _url + 'wechat/getaccesstoken', + // method: 'post', + // data: JSON.stringify({app_id: appId}) + // }) + // } /** - * @description 寰俊涓氬姟璇锋眰 - * 39涓� qingqiumarket.cn|cloud.mk9h.cn|sso.mk9h.cn + * @description 蹇�掓煡璇� */ - wxNginxRequest (url, method, param) { - let _url = url - - if (!/^http/.test(url)) { - _url = window.GLOB.location + '/' + url - if (process.env.NODE_ENV === 'production') { - _url = document.location.origin + '/' + url - } - } - if (/qingqiumarket.cn|cloud.mk9h.cn/.test(_url)) { - _url = _url.replace('http://qingqiumarket.cn/', 'http://qingqiumarket.cn:8080/') - _url = _url.replace('http://cloud.mk9h.cn/', 'http://cloud.mk9h.cn:8080/') - _url = _url.replace('https://qingqiumarket.cn/', 'https://qingqiumarket.cn:8443/') - _url = _url.replace('https://cloud.mk9h.cn/', 'https://cloud.mk9h.cn:8443/') - } - - if (param) { - return axios({ - url: _url, - method, - data: param - }) - } - + expressRequest (url) { return axios({ - url: _url, - method + url: window.GLOB.location + '/' + url, + method: 'get' }) } /** * @description 鐩存帴璇锋眰 */ - directRequest (params) { + directRequest (params, script, position) { + if (script) { + try { + // eslint-disable-next-line + let func = new Function('axios', 'Api', 'param', 'position', 'systemType', 'notification', script) + let promise = func(axios, this, params, position, window.GLOB.systemType, notification) + + if (promise instanceof Promise) { + return promise + } + } catch (e) { + console.warn(e) + } + + return Promise.resolve({ + status: false, + message: '鑷畾涔夎剼鏈墽琛岄敊璇�', + ErrCode: 'E' + }) + } + return axios(params) } @@ -168,12 +197,7 @@ * @description 娓稿鐧诲綍 */ getTouristMsg (binding_type, appid, openid, memberid, scanId) { - let _SessionUid = localStorage.getItem('SessionUid') - - if (!_SessionUid) { // 鎵嬪姩娓呴櫎SessionUid鏃讹紝瀹炴椂鐢熸垚 - _SessionUid = Utils.getuuid() - localStorage.setItem('SessionUid', _SessionUid) - } + let _SessionUid = localStorage.getItem('SessionUid') || '' let param = { func: 's_visitor_login', @@ -209,6 +233,9 @@ } else { param.linkurl = window.GLOB.linkurl } + } else if (binding_type === 'cloud') { // 鐧诲綍浜戠 + delete param.rduri + url = window.atob('aHR0cHM6Ly9jbG91$mkZC5tazloLmNu'.replace('$mk', '')) + '/webapi/dologon/s_visitor_login' } param.LText = md5(window.btoa(_SessionUid + param.timestamp + (param.linkurl || ''))) @@ -242,7 +269,8 @@ login_id_address: sessionStorage.getItem('ipAddress') || '', kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host)), device_id: localStorage.getItem('SessionUid'), - appkey: window.GLOB.appkey || '' + appkey: window.GLOB.appkey || '', + lang: sessionStorage.getItem('lang') || '' } let url = '/webapi/dologon' @@ -280,7 +308,8 @@ kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host)), device_id: localStorage.getItem('SessionUid'), timestamp: moment().add(shim, 'seconds').format('YYYY-MM-DD HH:mm:ss'), - appkey: window.GLOB.appkey || '' + appkey: window.GLOB.appkey || '', + lang: sessionStorage.getItem('lang') || '' } // Type: 'S' 鏃� @@ -427,7 +456,7 @@ CacheUtils.delIndexDBConfig(list) this.delCacheConfig('all') - if (reHome) { + if (reHome && reload !== 'home_page_id') { MKEmitter.emit('reloadMenuView', 'home_page_id') } } @@ -485,26 +514,26 @@ /** * @description 鑾峰彇鎴栦慨鏀圭郴缁熼厤缃紝澧炲姞appkey */ - getSystemFuncs (time) { - let param = { - func: 's_get_func_base_sso', - update_date: time, - userid: sessionStorage.getItem('UserID') || '', - lang: sessionStorage.getItem('lang') || '', - SessionUid: localStorage.getItem('SessionUid') || '', - LoginUID: sessionStorage.getItem('LoginUID') || '', - appkey: window.GLOB.appkey - } + // getSystemFuncs (time) { + // let param = { + // func: 's_get_func_base_sso', + // update_date: time, + // userid: sessionStorage.getItem('UserID') || '', + // lang: sessionStorage.getItem('lang') || '', + // SessionUid: localStorage.getItem('SessionUid') || '', + // LoginUID: sessionStorage.getItem('LoginUID') || '', + // appkey: window.GLOB.appkey + // } - let url = window.GLOB.mainSystemApi || '/webapi/dostars' - param = this.encryptParam(param) + // let url = window.GLOB.mainSystemApi || '/webapi/dostars' + // param = this.encryptParam(param) - return axios({ - url: `${url}/${param.func}`, - method: 'post', - data: JSON.stringify(param) - }) - } + // return axios({ + // url: `${url}/${param.func}`, + // method: 'post', + // data: JSON.stringify(param) + // }) + // } /** * @description 鑾峰彇鎴栦慨鏀圭郴缁熼厤缃紝澧炲姞appkey @@ -663,6 +692,69 @@ param.SessionUid = localStorage.getItem('SessionUid') || '' param.LoginUID = param.LoginUID || sessionStorage.getItem('LoginUID') || '' param.appkey = window.GLOB.appkey || '' + + if (param.$backend) { + delete param.$backend + + let id = '' + if (cache) { + id = param.data[0].id + + if (window.GLOB.CacheMap.has(id)) { + return Promise.resolve(window.GLOB.CacheMap.get(id)) + } + } + + param.username = sessionStorage.getItem('User_Name') || '' + param.fullname = sessionStorage.getItem('Full_Name') || '' + param.s_debug = window.GLOB.debugger ? 'Y' : '' + param.data_md5 = param.data_md5 || '' + param.time_limit = param.time_limit || 0 + + let url = '/webapi/exstars' + if (param.rduri) { + param.rduri = param.rduri.replace(/dostars/ig, 'exstars') + if (!window.GLOB.transfer) { + url = param.rduri + delete param.rduri + } + } + + if (param.$type) { + url += '/' + param.$type + } + + delete param.$type + + param = this.encryptParam(param) + + return new Promise((resolve) => { + axios({ + url: url, + method: 'post', + data: JSON.stringify(param) + }).then(res => { + if (res.mksqls) { + res.mksqls.forEach(n => { + n = n.replace(/(UNION ALL\s+)?SELECT obj_name='[\S\s]+sub_field=''\s+/ig, '') + if (!res.status && param.data[0] && param.data[0].menuname) { + window.mkInfo('%c' + param.data[0].menuname, 'color: #f5222d') + } + window.mkInfo(n) + }) + } + delete res.mksqls + if (res.ErrCode === 'version_error') { + res.ErrCode = '-2' + MKEmitter.emit('reloadTabs') + } + if (res.status && id) { + window.GLOB.CacheMap.set(id, res) + } + resolve(res) + }) + }) + } let url = '/webapi/dostars' if (param.rduri && !window.GLOB.transfer) { @@ -931,9 +1023,73 @@ } }) }) + } else if (param.$backend) { + delete param.$backend + + let url = '/webapi/exstars' + if (param.rduri) { + param.rduri = param.rduri.replace(/dostars/ig, 'exstars') + if (!window.GLOB.transfer) { + url = param.rduri + delete param.rduri + } + } + + if (param.$type) { + url += '/' + param.$type + } + + delete param.$type + + param.username = sessionStorage.getItem('User_Name') || '' + param.fullname = sessionStorage.getItem('Full_Name') || '' + param.s_debug = window.GLOB.debugger ? 'Y' : '' + param.data_md5 = param.data_md5 || '' + param.time_limit = param.time_limit || 0 + + param.data.forEach(item => { + item.exps.forEach(cell => { + if (typeof(cell.value) === 'number') { + cell.value = cell.value + '' + } + }) + }) + + param = this.encryptParam(param) + + return new Promise((resolve) => { + axios({ + url: url, + method: 'post', + data: JSON.stringify(param), + requestId + }).then(res => { + if (res.mksqls) { + res.mksqls.forEach(n => { + n = n.replace(/(UNION ALL\s+)?SELECT obj_name='[\S\s]+sub_field=''\s+/ig, '') + if (!res.status && param.data[0] && param.data[0].menuname) { + window.mkInfo('%c' + param.data[0].menuname, 'color: #f5222d') + } + window.mkInfo(n) + }) + } + delete res.mksqls + if (!res.status) { + if (res.ErrCode === 'version_error') { + res.ErrCode = '-2' + MKEmitter.emit('reloadTabs') + } else if (res.message === 'permission deny') { + let isBtn = url.indexOf('s_TableData_InUpDe') > -1 + res.message = window.GLOB.dict['permission_deny'] || `鏃犲綋鍓�${isBtn ? '鎸夐挳' : '鑿滃崟'}鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛乣 + res.ErrMesg = res.message + } + } + resolve(res) + }) + }) } else { let url = '/webapi/dostars' - if (param.rduri && !window.GLOB.transfer && /\/dostars/.test(param.rduri) && param.func !== 'webapi_ChangeUser') { + if (param.rduri && (!window.GLOB.transfer || /https:\/\/sso.mk9h.cn/.test(param.rduri)) && /\/dostars/.test(param.rduri) && param.func !== 'webapi_ChangeUser') { url = param.rduri delete param.rduri } @@ -947,6 +1103,29 @@ requestId }) } + } + + /** + * @description 娓呯┖鍚庣缂撳瓨 + */ + cacheInterface (param) { + param.appkey = window.GLOB.appkey || '' + param.userid = param.userid || sessionStorage.getItem('UserID') || '' + param.LoginUID = param.LoginUID || sessionStorage.getItem('LoginUID') || '' + + let url = '/webapi/excache' + if (param.rduri && !window.GLOB.transfer) { + url = param.rduri + delete param.rduri + } + + param = this.encryptParam(param) + + return axios({ + url: url, + method: 'post', + data: JSON.stringify(param), + }) } /** @@ -992,44 +1171,52 @@ /** * @description 澶ф枃浠朵笂浼� */ - getLargeFileUpload (param) { - return axios({ - url: '/webapi/doupload', - method: 'post', - headers: { 'Content-Type': 'multipart/form-data' }, - data: param + getFileUpload (param) { + param.append('shardingCnt', 1) + param.append('LoginUID', sessionStorage.getItem('LoginUID') || '') + param.append('UserID', sessionStorage.getItem('UserID') || '') + + return new Promise((resolve, reject) => { + axios({ + url: '/webapi/doupload', + method: 'post', + headers: { 'Content-Type': 'multipart/form-data' }, + data: param + }).then(res => { + if (res.status && res.urlPath) { + if (!/Content\/images/.test(res.urlPath)) { + let key = CryptoJS.enc.Utf8.parse('D1185ED7B32568C9') + let wordArray = CryptoJS.enc.Base64.parse(res.urlPath) + let decryptedWordArray = CryptoJS.AES.decrypt({ ciphertext: wordArray }, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) + res.urlPath = CryptoJS.enc.Utf8.stringify(decryptedWordArray) + } + if (!/^http/.test(res.urlPath)) { + res.urlPath = window.GLOB.baseurl + res.urlPath + } + } + resolve(res) + }) }) } /** * @description 鏌ヨ鏂囦欢鏄惁宸蹭笂浼� */ - getFilePreUpload (param) { - return axios({ - url: '/webapi/dopreload', - method: 'post', - headers: { 'Content-Type': 'multipart/form-data' }, - data: param - }) - } + // getFilePreUpload (param) { + // return axios({ + // url: '/webapi/dopreload', + // method: 'post', + // headers: { 'Content-Type': 'multipart/form-data' }, + // data: param + // }) + // } /** * @description oss鏂囦欢涓婁紶 */ fileOssUpload (param) { - let _url = window.GLOB.location + '/file/oss/upload' - if (process.env.NODE_ENV === 'production') { - _url = document.location.origin + '/file/oss/upload' - } - if (/qingqiumarket.cn|cloud.mk9h.cn/.test(_url)) { - _url = _url.replace('http://qingqiumarket.cn/', 'http://qingqiumarket.cn:8080/') - _url = _url.replace('http://cloud.mk9h.cn/', 'http://cloud.mk9h.cn:8080/') - _url = _url.replace('https://qingqiumarket.cn/', 'https://qingqiumarket.cn:8443/') - _url = _url.replace('https://cloud.mk9h.cn/', 'https://cloud.mk9h.cn:8443/') - } - return axios({ - url: _url, + url: window.GLOB.location + '/file/oss/upload', method: 'post', headers: { 'Content-Type': 'multipart/form-data' }, data: param @@ -1069,7 +1256,7 @@ /** * @description sql妫�楠� */ - sDebug (sql) { + sDebug (sql, skip = false) { let param = { func: 's_debug_sql', exec_type: window.GLOB.execType || 'y', @@ -1095,7 +1282,9 @@ sql = sql.replace(/@db@/ig, window.GLOB.externalDatabase) } - console.info(`/* sql 楠岃瘉 */\n${sql.replace(/\n\s{6,20}/ig, '\n')}`) + window.mkInfo(`/* sql 楠岃瘉 */\n${sql.replace(/\n\s{6,20}/ig, '\n')}`) + + if (skip) return sql = sql.replace(/\n/ig, ' ') -- Gitblit v1.8.0