From 04b5222fcf0c8f24b3a577cf3a05fb57462982a5 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 11 八月 2020 09:18:27 +0800 Subject: [PATCH] 2020-08-11 --- src/api/index.js | 226 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 145 insertions(+), 81 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index bae643c..130f012 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -6,29 +6,34 @@ import Utils from '@/utils/utils.js' import options from '@/store/options.js' -let mkDB = null +let mkDataBase = null +let storUsable = false -if (window.GLOB.webSqlUsable) { +if (window.openDatabase) { 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))', [], () => { + mkDataBase = openDatabase(`mkdb${service}`, '1', 'mk-pc-database', 50 * 1024 * 1024) + mkDataBase.transaction(tx => { + tx.executeSql('CREATE TABLE IF NOT EXISTS VERSIONS (version varchar(50), createDate 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))', [], () => { + tx.executeSql('CREATE TABLE IF NOT EXISTS CONFIGS (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' }) }) + // mkDataBase.transaction(tx => { + // tx.executeSql('DROP TABLE VERSIONS') + // tx.executeSql('DROP TABLE CONFIGS') + // }) } catch (e) { console.warn(e) - mkDB = null + mkDataBase = null } } @@ -225,79 +230,137 @@ } /** - * @description 鑾峰彇绯荤粺鍩烘湰璁剧疆锛屽惎鐢ㄦ垨鏇存柊websql + * @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() + getAppVersion (_resolve, _reject) { + let appVersion = {} - 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]) + new Promise((resolve, reject) => { + if (!mkDataBase) { + reject() } 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) - }) + mkDataBase.transaction(tx => { + if (!mkDataBase) { + reject() + return + } + tx.executeSql('SELECT * FROM VERSIONS', [], (tx, results) => { + if (results.rows.length === 0) { + tx.executeSql('DELETE FROM CONFIGS') + resolve({version: '', createDate: ''}) + } else if (results.rows.length === 1) { + resolve(results.rows[0]) + } else if (results.rows.length > 1) { + tx.executeSql('DELETE FROM VERSIONS') + tx.executeSql('DELETE FROM CONFIGS') + resolve({version: '', createDate: ''}) + } + }, (tx, results) => { + reject() + console.warn(results) }) + }) + } + }).then(msg => { + if (msg.version) { + appVersion.oldVersion = msg.version + } + let curTime = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' + + let param = { + func: 's_get_app_version', + modifydate: msg.createDate || curTime, + } + + 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] } - resolve(res) }) - }) + param.sign = md5(values) + param.t = new Date().getTime() + + return new Promise((resolve, reject) => { + axios({ + url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + data: param + }).then(res => { + let version = res.app_version || '1.00' + appVersion.newVersion = version + appVersion.oldVersion = appVersion.oldVersion || version + + mkDataBase.transaction(tx => { + if (res.menu_data && res.menu_data.length > 0) { + let keys = res.menu_data.map(mid => `'${mid.menuid}'`) + tx.executeSql(`DELETE FROM CONFIGS where menuid in (${keys.join(',')})`, [], () => {}, () => { + reject() + }) + } + if (msg.version) { + tx.executeSql(`UPDATE VERSIONS SET createDate='${curTime}'`, [], () => { + resolve() + }, () => { + reject() + }) + } else { + tx.executeSql('INSERT INTO VERSIONS (version, createDate) VALUES (?, ?)', [version, curTime], () => { + resolve() + }, () => { + reject() + }) + } + }) + }) + }) + }, () => { + _reject() + mkDataBase = null + return Promise.reject() + }).then(() => { + storUsable = true + _resolve(appVersion) + }) + } + + /** + * @description 鏇存柊绯荤粺鐗堟湰淇℃伅锛屾竻绌洪厤缃俊鎭� + */ + updateAppVersion (newVersion) { + return new Promise(resolve => { + if (!mkDataBase) { + resolve({status: false}) + return + } + let curTime = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' + + mkDataBase.transaction(tx => { + tx.executeSql(`DELETE FROM CONFIGS`, [], () => {}, () => { + resolve({status: false}) + }) + tx.executeSql(`UPDATE VERSIONS SET version='${newVersion}', createDate='${curTime}'`, [], () => { + resolve({status: true}) + }, () => { + resolve({status: false}) + }) + }) + }) } /** @@ -440,7 +503,7 @@ _param = JSON.stringify(_param) _param = md5(_param) - if (mkDB) { + if (mkDataBase && storUsable) { param.nonc = Utils.getuuid() let keys = Object.keys(param).sort() @@ -457,7 +520,7 @@ param.t = new Date().getTime() return new Promise(resolve => { - mkDB.transaction(tx => { + mkDataBase.transaction(tx => { tx.executeSql(`SELECT * FROM CONFIGS WHERE menuid='${param.MenuID}' and userid='${param.userid}'`, [], (tx, results) => { let paramItem = results.rows[0] if (paramItem) { @@ -477,7 +540,7 @@ 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]) + this.writeInWebSql([param.MenuID, param.userid, res.open_edition, res.web_edition, res.LongParam, res.LongParamUser]) } resolve(res) }) @@ -492,7 +555,8 @@ } resolve(res) }) - mkDB = null + mkDataBase = null + storUsable = false console.warn(results) }) }) @@ -533,9 +597,9 @@ * @description 灏嗘暟鎹啓鍏ebsql */ writeInWebSql (data) { - if (!mkDB) return - mkDB.transaction(tx => { - tx.executeSql('INSERT INTO CONFIGS (id, menuid, userid, openEdition, webEdition, LongParam, LongParamUser) VALUES (?, ?, ?, ?, ?, ?, ?)', data) + if (!mkDataBase) return + mkDataBase.transaction(tx => { + tx.executeSql('INSERT INTO CONFIGS (menuid, userid, openEdition, webEdition, LongParam, LongParamUser) VALUES (?, ?, ?, ?, ?, ?)', data) }) } -- Gitblit v1.8.0