From 3350809003b1e92cbc8852de1c2e16fe716858a8 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 02 二月 2024 17:16:33 +0800
Subject: [PATCH] 2024-02-02

---
 src/api/index.js |  194 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 154 insertions(+), 40 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index ff77975..cc5223d 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -82,7 +82,6 @@
   
   /**
    * @description 浣跨敤dostar鎺ュ彛锛岃烦杩囬獙璇�
-   * @param {Object} param 鏌ヨ鍙婃彁浜ゅ弬鏁�
    */
   dostarInterface (param) {
     param.userid = param.userid || ''
@@ -522,11 +521,7 @@
     param.appkey = param.appkey || window.GLOB.appkey
 
     let url = '/webapi/dostars'
-    if (window.GLOB.mkHS && window.GLOB.cloudServiceApi) { // HS涓嬶紝涓斿瓨鍦ㄤ簯绔湴鍧�
-      url = window.GLOB.cloudServiceApi
-      param.userid = sessionStorage.getItem('CloudUserID') || ''
-      param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
-    } else if (window.GLOB.mainSystemApi) {
+    if (window.GLOB.mainSystemApi) {
       if (!window.GLOB.transfer) {
         url = window.GLOB.mainSystemApi
       } else {
@@ -554,13 +549,7 @@
     param.appkey = param.appkey || window.GLOB.appkey || ''
 
     let url = '/webapi/dostars'
-    if (window.GLOB.mkHS) {          // HS涓嬶紝鍗曠偣鐧诲綍鏈嶅姟鍣ㄤ负浜戠
-      if (window.GLOB.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟
-        url = window.GLOB.cloudServiceApi
-        param.userid = sessionStorage.getItem('CloudUserID') || ''
-        param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
-      }
-    } else if (window.GLOB.mainSystemApi) {
+    if (window.GLOB.mainSystemApi) {
       if (!window.GLOB.transfer) {
         url = window.GLOB.mainSystemApi
       } else {
@@ -656,7 +645,7 @@
     param.sign = md5(values)
     param.t = new Date().getTime();
 
-    ['arr_field', 'LText_field', 'custom_script', 'LText1', 'LText', 'LText2', 'DateCount'].forEach(key => {
+    ['arr_field', 'custom_script', 'LText', 'DateCount'].forEach(key => {
       if (param[key]) {
         let val = param[key]
         delete param[key]
@@ -670,7 +659,7 @@
   /**
    * @description 鑾峰彇绯荤粺閰嶇疆锛屼紭鍏堜粠缂撳瓨涓彇鍊硷紝澧炲姞appkey
    * @param {Object}  param   璇锋眰鍙傛暟
-   * @param {Boolean} SSO     鏄惁涓哄崟鐐圭櫥褰曞湴鍧�
+   * @param {Boolean} cache   鏄惁浣跨敤缂撳瓨
    */
   getSystemCacheConfig (param, cache = true) {
     param.userid = param.userid || sessionStorage.getItem('UserID') || ''
@@ -715,7 +704,7 @@
     }
   }
 
-  visitOuterSystem (param, _resolve) {
+  visitOuterSystem (param, _resolve, _reject) {
     let token = param.$token
     delete param.$token
 
@@ -766,11 +755,13 @@
       param = this.encryptParam(param)
 
       axios({
-        url: token.interface,
+        url: `${token.interface}${param.func ? '/' + param.func : ''}`,
         method: 'post',
         data: JSON.stringify(param)
       }).then(res => {
         _resolve(res)
+      }, () => {
+        _reject()
       })
     } else {
       let _param = {
@@ -813,14 +804,27 @@
           param = this.encryptParam(param)
 
           axios({
-            url: token.interface,
+            url: `${token.interface}${param.func ? '/' + param.func : ''}`,
             method: 'post',
             data: JSON.stringify(param)
           }).then(res => {
             _resolve(res)
+          }, () => {
+            _reject()
           })
         } else {
           _resolve(result)
+        }
+      }, (e) => {
+        if (!e || !e.status) {
+          let msg = '缃戠粶杩炴帴涓嶆甯搞��'
+
+          if (/^http:/.test(token.interface) && /https:/.test(window.location.protocol)) {
+            msg = '缃戠粶杩炴帴涓嶆甯革紝鎺ュ彛鍦板潃鍙兘涓嶆敮鎸乭ttps銆�'
+          }
+          _resolve({status: false, ErrCode: 'E', message: msg})
+        } else {
+          _reject()
         }
       })
     }
@@ -830,7 +834,7 @@
    * @description 鑾峰彇涓氬姟閫氱敤鎺ュ彛
    * 璁块棶 'https://sso.mk9h.cn/webapi/dostars'鎴栦簯绔椂锛屼紶鍏serid銆丩oginUID
    */
-  genericInterface (param) {
+  genericInterface (param, script = '', position) {
     param.userid = param.userid || sessionStorage.getItem('UserID') || ''
     param.lang = param.lang || sessionStorage.getItem('lang') || ''
     param.SessionUid = localStorage.getItem('SessionUid') || ''
@@ -840,16 +844,13 @@
     if (param.$token === '') {
       return Promise.resolve({status: false, ErrCode: 'token_error', message: '鎺ュ彛鍦板潃灏氭湭璁剧疆锛�'})
     } else if (param.$token) {
-      return new Promise(resolve => this.visitOuterSystem(param, resolve))
+      return new Promise((resolve, reject) => this.visitOuterSystem(param, resolve, reject))
     }
 
     if (['sPC_TableData_InUpDe', 'sPC_TableData_InUpDe_debug'].includes(param.func)) {
       param.username = sessionStorage.getItem('User_Name') || ''
       param.fullname = sessionStorage.getItem('Full_Name') || ''
     }
-
-    let login = false
-    let rduri = null
 
     if (param.rduri && /\s|\n/.test(param.rduri)) {
       param.rduri = param.rduri.replace(/\s|\n/g, '')
@@ -858,31 +859,50 @@
       }
     }
 
-    if (param.$login && !window.GLOB.transfer) {
-      login = true
-      rduri = param.rduri || ''
-    }
-    delete param.$login
+    if (script) {
+      try {
+        // eslint-disable-next-line
+        let func = new Function('axios', 'Api', 'param', 'position', 'systemType', script)
+        let promise = func(axios, this, param, position, window.GLOB.systemType)
 
-    let url = '/webapi/dostars'
+        if (promise instanceof Promise) {
+          return promise
+        }
+      } catch (e) {
+        console.warn(e)
+      }
 
-    if (param.rduri && !window.GLOB.transfer && /\/dostars/.test(param.rduri) && param.func !== 'webapi_ChangeUser') {
-      url = param.rduri
+      return Promise.resolve({
+        status: false,
+        message: '鑷畾涔夎剼鏈墽琛岄敊璇�',
+        ErrCode: 'E'
+      })
+    } else if (param.$login) {
+      let rduri = param.rduri || ''
+
+      delete param.$login
       delete param.rduri
-    }
 
-    param = this.encryptParam(param)
+      param = this.encryptParam(param)
 
-    if (login) {
       let time = +sessionStorage.getItem(rduri)
       let c_time = Math.round(new Date().getTime() / 1000)
 
-      if (time && c_time - time <= 60) {
+      if (time && c_time - time <= 1800) {
         sessionStorage.setItem(rduri, c_time)
-        return axios({
-          url: `${url}${param.func ? '/' + param.func : ''}`,
-          method: 'post',
-          data: JSON.stringify(param)
+        return new Promise((resolve, reject) => {
+          axios({
+            url: `${rduri}${param.func ? '/' + param.func : ''}`,
+            method: 'post',
+            data: JSON.stringify(param)
+          }).then(result => {
+            if (result && result.ErrCode === 'LoginError') {
+              sessionStorage.removeItem(rduri)
+            }
+            resolve(result)
+          }, () => {
+            reject()
+          })
         })
       }
 
@@ -891,18 +911,39 @@
           if (res.status) {
             sessionStorage.setItem(rduri, c_time)
             axios({
-              url: `${url}${param.func ? '/' + param.func : ''}`,
+              url: `${rduri}${param.func ? '/' + param.func : ''}`,
               method: 'post',
               data: JSON.stringify(param)
             }).then(result => {
               resolve(result)
+            }, () => {
+              reject()
             })
           } else {
             resolve(res)
           }
+        }, (e) => {
+          if (!e || !e.status) {
+            let msg = '缃戠粶杩炴帴涓嶆甯搞��'
+
+            if (/^http:/.test(rduri) && /https:/.test(window.location.protocol)) {
+              msg = '缃戠粶杩炴帴涓嶆甯革紝鎺ュ彛鍦板潃鍙兘涓嶆敮鎸乭ttps銆�'
+            }
+            resolve({status: false, ErrCode: 'E', message: msg})
+          } else {
+            reject()
+          }
         })
       })
     } else {
+      let url = '/webapi/dostars'
+      if (param.rduri && !window.GLOB.transfer && /\/dostars/.test(param.rduri) && param.func !== 'webapi_ChangeUser') {
+        url = param.rduri
+        delete param.rduri
+      }
+
+      param = this.encryptParam(param)
+
       return axios({
         url: `${url}${param.func ? '/' + param.func : ''}`,
         method: 'post',
@@ -1023,6 +1064,79 @@
       data: qs.stringify(data)
     })
   }
+
+  /**
+   * @description sql妫�楠�
+   */
+  sDebug (sql, rduri = null) {
+    let param = {
+      func: 's_debug_sql',
+      exec_type: 'y',
+      timestamp: moment().format('YYYY-MM-DD HH:mm:ss'),
+      userid: sessionStorage.getItem('UserID') || '',
+      lang: sessionStorage.getItem('lang') || '',
+      SessionUid: localStorage.getItem('SessionUid') || '',
+      LoginUID: sessionStorage.getItem('LoginUID') || '',
+      appkey: window.GLOB.appkey || ''
+    }
+
+    let id = Utils.getuuid()
+    sql = sql.replace(/@time_id@/ig, `'${id}'`)
+    if (window.GLOB.externalDatabase !== null) {
+      sql = sql.replace(/@db@/ig, window.GLOB.externalDatabase)
+    }
+
+    console.info(`/* sql 楠岃瘉 */\n${sql.replace(/\n\s{6,20}/ig, '\n')}`)
+
+    sql = sql.replace(/\n/ig, ' ')
+
+    param.LText = Utils.formatOptions(sql)
+    param.secretkey = Utils.encrypt('', param.timestamp)
+
+    param = this.encryptParam(param)
+
+    let url = '/webapi/dostars'
+
+    if (rduri) {
+      url = rduri
+    }
+
+    let timer = setTimeout(() => {
+      let _param = {
+        func: 's_debug_sql_cancel',
+        userid: sessionStorage.getItem('UserID') || '',
+        lang: sessionStorage.getItem('lang') || '',
+        SessionUid: localStorage.getItem('SessionUid') || '',
+        LoginUID: sessionStorage.getItem('LoginUID') || '',
+        appkey: window.GLOB.appkey || ''
+      }
+      _param = this.encryptParam(_param)
+      axios({
+        url: `${url}/s_debug_sql_cancel`,
+        method: 'post',
+        data: JSON.stringify(_param)
+      })
+    }, 20000)
+
+    return new Promise(resolve => {
+      axios({
+        url: `${url}/s_debug_sql`,
+        method: 'post',
+        data: JSON.stringify(param)
+      }).then(res => {
+        clearTimeout(timer)
+        if (/Shared Memory Provider|浼氳瘽澶勪簬缁堟鐘舵�亅褰撳墠鍛戒护鍙戠敓浜嗕弗閲嶉敊璇�/.test(res.message)) {
+          res.message = '楠岃瘉澶辫触锛岃妫�鏌QL涓槸鍚﹀瓨鍦ㄦ寰幆銆�'
+        } else if (res.message.indexOf('EXECUTE 鍚庣殑浜嬪姟璁℃暟鎸囩ず BEGIN 鍜� COMMIT 璇彞鐨勬暟鐩笉鍖归厤銆備笂涓�璁℃暟 = 1锛屽綋鍓嶈鏁� = 0') > -1) {
+          res.ErrCode = '-2'
+        }
+        resolve(res)
+      }, () => {
+        clearTimeout(timer)
+        resolve({status: false, ErrCode: 'E', message: '楠岃瘉澶辫触锛�1璇锋鏌QL涓槸鍚﹀瓨鍦ㄦ寰幆锛�2璇锋鏌ョ綉缁滆繛鎺ユ槸鍚︽甯搞��'})
+      })
+    })
+  }
 }
 
 export default new Api()
\ No newline at end of file

--
Gitblit v1.8.0