From dfdcdcb3dbd0b711bc0b77bb00fd1d39af91bd0b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 10 一月 2025 17:43:34 +0800
Subject: [PATCH] 2025-01-10

---
 src/api/index.js |  323 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 258 insertions(+), 65 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index a2ca5e0..426e70a 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) {
@@ -74,6 +75,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,28 +127,15 @@
   /**
    * @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 寰俊涓氬姟璇锋眰
@@ -160,7 +174,27 @@
   /**
    * @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 +202,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',
@@ -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,70 @@
     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) {
+                window.mkInfo('%c' + n, 'color: #f5222d')
+              } else {
+                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 +1024,65 @@
           }
         })
       })
+    } 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 = 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) {
+                window.mkInfo('%c' + n, 'color: #f5222d')
+              } else {
+                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') {
+              res.message = window.GLOB.dict['permission_deny'] || '鏃犲綋鍓嶈彍鍗曟垨鎸夐挳鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛�'
+              res.ErrMesg = window.GLOB.dict['permission_deny'] || '鏃犲綋鍓嶈彍鍗曟垨鎸夐挳鐨勮闂潈闄愶紝璇疯仈绯荤鐞嗗憳锛�'
+            }
+          }
+          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 +1096,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,26 +1164,45 @@
   /**
    * @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鏂囦欢涓婁紶
@@ -1069,7 +1260,7 @@
   /**
    * @description sql妫�楠�
    */
-  sDebug (sql) {
+  sDebug (sql, skip = false) {
     let param = {
       func: 's_debug_sql',
       exec_type: window.GLOB.execType || 'y',
@@ -1095,7 +1286,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