import axios from 'axios'
|
import md5 from 'md5'
|
import jsSHA from 'jssha'
|
import { notification } from 'antd'
|
|
window.GLOB.WebSql = null
|
|
if (window.openDatabase) {
|
let service = window.GLOB.service ? '-' + window.GLOB.service.replace('/', '') : ''
|
try {
|
window.GLOB.WebSql = openDatabase(`mkdb${service}`, '1', 'mk-pc-database', 50 * 1024 * 1024)
|
window.GLOB.WebSql.transaction(tx => {
|
tx.executeSql('CREATE TABLE IF NOT EXISTS INTERFACES (uuid varchar(50), createDate varchar(50), method varchar(50), interface text, params text, headers text, active varchar(50), raw text, formData text, CDefine1 varchar(50), CDefine2 varchar(50), CDefine3 varchar(50), CDefine4 varchar(50), CDefine5 text)', [], () => {
|
|
}, () => {
|
// eslint-disable-next-line
|
throw 'CREATE TABLE ERROR'
|
})
|
})
|
} catch (e) {
|
console.warn('WebSql 初始化失败!')
|
window.GLOB.WebSql = null
|
}
|
}
|
|
axios.defaults.crossDomain = true
|
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
|
axios.defaults.withCredentials = false
|
|
axios.interceptors.request.use((config) => {
|
return config
|
}, (error) => {
|
return Promise.reject(error)
|
})
|
|
axios.interceptors.response.use((response) => {
|
return Promise.resolve(response)
|
}, (error) => {
|
return Promise.reject(error)
|
})
|
|
class Api {
|
/**
|
* @description 登录系统, 获取用户信息
|
*/
|
dologon (url, method, header, n) {
|
let config = {
|
url,
|
method
|
}
|
|
if (header) {
|
config.headers = header
|
}
|
|
if (n) {
|
let _param = JSON.parse(n)
|
let param = {}
|
|
Object.keys(_param).forEach(key => {
|
param[key.toLowerCase()] = _param[key]
|
})
|
|
if (param.type && param.username && param.password && param.timestamp) {
|
if (param.type === 'S') {
|
let shaObj = new jsSHA('SHA-1', 'TEXT')
|
shaObj.update(param.password)
|
param.password = shaObj.getHash('HEX').toUpperCase()
|
param.password = md5(param.username + param.password + param.timestamp)
|
} else if (/^mk_/ig.test(param.type)) {
|
let shaObj = new jsSHA('SHA-1', 'TEXT')
|
shaObj.update(param.password)
|
param.password = shaObj.getHash('HEX').toUpperCase()
|
param.password = md5(param.privatekey + param.username + param.password + param.timestamp)
|
|
delete param.privatekey
|
}
|
}
|
|
config.data = JSON.stringify(param)
|
}
|
|
return axios(config)
|
}
|
|
/**
|
* @description 通用请求
|
*/
|
normalRequest (url, method, header, n) {
|
let config = {
|
url,
|
method
|
}
|
|
if (header) {
|
config.headers = header
|
}
|
if (n) {
|
config.data = n
|
}
|
|
return axios(config)
|
}
|
|
writeInWebSql (data) {
|
if (!window.GLOB.WebSql) {
|
notification.warning({ top: 92, message: 'WebSql开启失败!', duration: 5 })
|
return
|
}
|
return new Promise((resolve, reject) => {
|
window.GLOB.WebSql.transaction(tx => {
|
tx.executeSql(`INSERT INTO INTERFACES (uuid, createDate, method, interface, params, headers, active, raw, formData) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, data, (tx, results) => {
|
resolve(results)
|
}, () => {
|
resolve()
|
})
|
})
|
})
|
}
|
|
getInterfaces () {
|
if (!window.GLOB.WebSql) {
|
notification.warning({ top: 92, message: 'WebSql开启失败!', duration: 5 })
|
return
|
}
|
return new Promise((resolve, reject) => {
|
window.GLOB.WebSql.transaction(tx => {
|
tx.executeSql(`SELECT * FROM INTERFACES`, [], (tx, results) => {
|
// let paramItem = results.rows[0]
|
resolve(results)
|
}, () => {
|
window.GLOB.WebSql = null
|
reject()
|
})
|
})
|
})
|
}
|
|
delInterface (uuid) {
|
if (!window.GLOB.WebSql) {
|
notification.warning({ top: 92, message: 'WebSql开启失败!', duration: 5 })
|
return
|
}
|
return new Promise((resolve, reject) => {
|
window.GLOB.WebSql.transaction(tx => {
|
tx.executeSql(`DELETE FROM INTERFACES where uuid = '${uuid}'`, [], (tx, results) => {
|
resolve(results)
|
}, () => {
|
resolve()
|
})
|
})
|
})
|
}
|
|
/**
|
* @description 清空接口调用记录
|
*/
|
clearInterfaces () {
|
if (!window.GLOB.WebSql) {
|
notification.warning({ top: 92, message: 'WebSql开启失败!', duration: 5 })
|
return
|
}
|
return new Promise((resolve, reject) => {
|
window.GLOB.WebSql.transaction(tx => {
|
tx.executeSql(`DELETE FROM INTERFACES`, [], (tx, results) => {
|
resolve(results)
|
}, () => {
|
resolve()
|
})
|
})
|
})
|
}
|
}
|
|
export default new Api()
|