From ce2b708f61de1855771d78f35309bd77df9d3b15 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期日, 09 八月 2020 23:28:08 +0800 Subject: [PATCH] 2020-08-09 --- src/api/index.js | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 230 insertions(+), 0 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index d917c41..bae643c 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -6,6 +6,32 @@ import Utils from '@/utils/utils.js' import options from '@/store/options.js' +let mkDB = null + +if (window.GLOB.webSqlUsable) { + let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : '' + try { + mkDB = openDatabase(`mkdb${service}`, '1', 'mk-pc-database', 50 * 1024 * 1024) + mkDB.transaction(tx => { + tx.executeSql('CREATE TABLE IF NOT EXISTS VERSIONS (id unique, version varchar(50), CDefine1 varchar(50), CDefine2 varchar(50), CDefine3 varchar(50))', [], () => { + + }, () => { + // eslint-disable-next-line + throw 'CREATE TABLE ERROR' + }) + tx.executeSql('CREATE TABLE IF NOT EXISTS CONFIGS (id unique, menuid varchar(50), userid varchar(50), openEdition varchar(50), webEdition varchar(50), LongParam text, LongParamUser text, CDefine1 varchar(50), CDefine2 varchar(50), CDefine3 varchar(50), CDefine4 varchar(50), CDefine5 varchar(50))', [], () => { + + }, () => { + // eslint-disable-next-line + throw 'CREATE TABLE ERROR' + }) + }) + } catch (e) { + console.warn(e) + mkDB = null + } +} + axios.defaults.crossDomain = true axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' axios.defaults.withCredentials = true @@ -199,6 +225,82 @@ } /** + * @description 鑾峰彇绯荤粺鍩烘湰璁剧疆锛屽惎鐢ㄦ垨鏇存柊websql + */ + getSystemStyle () { + // 鑾峰彇绯荤粺淇℃伅 + let param = { + func: 's_Get_style', + TypeCharOne: 'PC', + LText: `select '${window.GLOB.appkey}'`, + } + + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' + param.secretkey = Utils.encrypt(param.LText, param.timestamp) + + param.userid = sessionStorage.getItem('UserID') || '' + param.lang = localStorage.getItem('lang') || '' + param.SessionUid = localStorage.getItem('SessionUid') || '' + param.LoginUID = sessionStorage.getItem('LoginUID') || '' + param.appkey = window.GLOB.appkey || '' + + if (window.GLOB.mainSystemApi) { + param.rduri = window.GLOB.mainSystemApi + } + + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + let values = '' + keys.forEach(key => { + if (key === 'rduri' || key === 't') return + if (typeof(param[key]) === 'object') { + values += key + JSON.stringify(param[key]) + } else { + values += key + param[key] + } + }) + param.sign = md5(values) + param.t = new Date().getTime() + + return new Promise(resolve => { + axios({ + url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + data: param + }).then(res => { + if (mkDB) { + let version = res.app_version ? `${res.app_version}` : '1' + // mkDB.transaction(tx => { + // tx.executeSql('DROP TABLE CONFIGS') + // }) + + mkDB.transaction(tx => { + tx.executeSql('SELECT * FROM VERSIONS', [], (tx, results) => { + if (results.rows.length === 0) { + tx.executeSql('INSERT INTO VERSIONS (id, version) VALUES (?, ?)', ['pc', version]) + tx.executeSql('DELETE FROM CONFIGS') + } else if (results.rows.length === 1) { + let _ver = results.rows[0] + if (version !== _ver.version) { + tx.executeSql(`UPDATE VERSIONS SET version=${version}`) + tx.executeSql('DELETE FROM CONFIGS') + } + } else if (results.rows.length > 1) { + tx.executeSql('DELETE FROM VERSIONS') + tx.executeSql('INSERT INTO VERSIONS (id, version) VALUES (?, ?)', ['pc', version]) + tx.executeSql('DELETE FROM CONFIGS') + } + }, (tx, results) => { + console.warn(results) + }) + }) + } + resolve(res) + }) + }) + } + + /** * @description 鑾峰彇鎴栦慨鏀逛簯绔厤缃� */ getCloudConfig (param) { @@ -311,6 +413,133 @@ } /** + * @description 鑾峰彇绯荤粺閰嶇疆锛屽彇鍊间紭鍏堢瓑绾ebsql銆佺紦瀛樸�佹湇鍔″櫒 + * @param {Object} param 璇锋眰鍙傛暟 + */ + getCacheConfig (param) { + param.userid = sessionStorage.getItem('UserID') || '' + param.lang = localStorage.getItem('lang') || '' + param.SessionUid = localStorage.getItem('SessionUid') || '' + param.LoginUID = sessionStorage.getItem('LoginUID') || '' + param.appkey = window.GLOB.appkey || '' + + if (sessionStorage.getItem('isEditState') === 'true') { // 缂栬緫鐘舵�侊紝鍗曠偣鐧诲綍鏈嶅姟鍣ㄤ负浜戠 + if (options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟 + param.rduri = options.cloudServiceApi + param.userid = sessionStorage.getItem('CloudUserID') || '' + param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' + } + } else if (window.GLOB.mainSystemApi) { + param.rduri = window.GLOB.mainSystemApi + } + + let _param = JSON.parse(JSON.stringify(param)) // 缂撳瓨鏍¢獙锛屽幓闄ゆ椂闂村拰鍔犲瘑瀛楃 + delete _param.timestamp + delete _param.secretkey + delete _param.open_key + _param = JSON.stringify(_param) + _param = md5(_param) + + if (mkDB) { + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + let values = '' + keys.forEach(key => { + if (key === 'rduri' || key === 't') return + if (typeof(param[key]) === 'object') { + values += key + JSON.stringify(param[key]) + } else { + values += key + param[key] + } + }) + param.sign = md5(values) + param.t = new Date().getTime() + + return new Promise(resolve => { + mkDB.transaction(tx => { + tx.executeSql(`SELECT * FROM CONFIGS WHERE menuid='${param.MenuID}' and userid='${param.userid}'`, [], (tx, results) => { + let paramItem = results.rows[0] + if (paramItem) { + resolve({ + ErrCode: 'S', + ErrMesg: '', + LongParam: paramItem.LongParam, + LongParamUser: paramItem.LongParamUser, + message: '', + open_edition: paramItem.openEdition, + status: true, + web_edition: paramItem.webEdition + }) + } else { + axios({ + url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + data: param + }).then(res => { + if (res.status) { + this.writeInWebSql([param.MenuID, param.MenuID, param.userid, res.open_edition, res.web_edition, res.LongParam, res.LongParamUser]) + } + resolve(res) + }) + } + }, (tx, results) => { + axios({ + url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + data: param + }).then(res => { + if (res.status) { + window.GLOB.CacheMap.set(_param, res) + } + resolve(res) + }) + mkDB = null + console.warn(results) + }) + }) + }) + } else if (window.GLOB.CacheMap.has(_param)) { + return Promise.resolve(window.GLOB.CacheMap.get(_param)) + } else { + param.nonc = Utils.getuuid() + + let keys = Object.keys(param).sort() + let values = '' + keys.forEach(key => { + if (key === 'rduri' || key === 't') return + if (typeof(param[key]) === 'object') { + values += key + JSON.stringify(param[key]) + } else { + values += key + param[key] + } + }) + param.sign = md5(values) + param.t = new Date().getTime() + + return new Promise(resolve => { + axios({ + url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + data: param + }).then(res => { + if (res.status) { + window.GLOB.CacheMap.set(_param, res) + } + resolve(res) + }) + }) + } + } + + /** + * @description 灏嗘暟鎹啓鍏ebsql + */ + writeInWebSql (data) { + if (!mkDB) return + mkDB.transaction(tx => { + tx.executeSql('INSERT INTO CONFIGS (id, menuid, userid, openEdition, webEdition, LongParam, LongParamUser) VALUES (?, ?, ?, ?, ?, ?, ?)', data) + }) + } + + /** * @description 鑾峰彇绯荤粺閰嶇疆锛屼紭鍏堜粠缂撳瓨涓彇鍊硷紝澧炲姞appkey * @param {Object} param 璇锋眰鍙傛暟 * @param {Boolean} SSO 鏄惁涓哄崟鐐圭櫥褰曞湴鍧� @@ -335,6 +564,7 @@ let _param = JSON.parse(JSON.stringify(param)) // 缂撳瓨鏍¢獙锛屽幓闄ゆ椂闂村拰鍔犲瘑瀛楃 delete _param.timestamp delete _param.secretkey + delete _param.open_key _param = JSON.stringify(_param) _param = md5(_param) -- Gitblit v1.8.0