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