miao-plugin/models/ProfileServ.js

90 lines
2.0 KiB
JavaScript

import lodash from 'lodash'
import Base from './Base.js'
import { Data } from '../components/index.js'
let { sysCfg, diyCfg } = await Data.importCfg('profile')
export default class ProfileServ extends Base {
constructor (cfg) {
super()
this._name = cfg.name
this.cfgKey = cfg.cfgKey || cfg.id
this.diyCfg = diyCfg[this.cfgKey] || {}
this.sysCfg = sysCfg[this.cfgKey] || {}
this._cfg = cfg
}
get name () {
let url = this.getCfg('url')
return this._name || url.replace('https://', '').replace('/', '').trim()
}
// 获取当前面板服务配置
getCfg (key, def = '') {
if (!lodash.isUndefined(this.diyCfg[key])) {
return this.diyCfg[key]
}
if (!lodash.isUndefined(this.sysCfg[key])) {
return this.sysCfg[key]
}
return def
}
// 请求当前面板服务
async getReqParam (uid) {
let url = this.getCfg('url')
let profileApi = this.getCfg('listApi')
let cfg = this._cfg
let api = profileApi({
url,
uid: uid,
diyCfg: this.diyCfg
})
let param = {}
// 获取请求参数
if (cfg.request) {
param = await cfg.request.call(this, api)
}
return {
url: param.api || api,
params: param.params || {}
}
}
async response (data, req) {
// 处理返回
let cfg = this._cfg
if (cfg.response) {
return await cfg.response.call(this, data, req)
}
}
execFn (fn, args = [], def = false) {
let { _cfg } = this
if (_cfg[fn]) {
return _cfg[fn].apply(this, args)
}
return def
}
getCdTime (data) {
const requestInterval = diyCfg.requestInterval || sysCfg.requestInterval || 5
let cdTime = requestInterval * 60
return Math.max(cdTime, this.execFn('cdTime', [data], 60))
}
getUserData (data) {
return this.execFn('userData', [data], {})
}
getProfileData (data) {
return this.execFn('profileData', [data], {})
}
}
ProfileServ.getServ = function ({ uid, serv }) {
return (diyCfg.getProfileServ || sysCfg.getProfileServ)({ uid, serv, diyCfg })
}