You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
canteen/uniCloud-aliyun/cloudfunctions/common/uni-stat/stat/mod/version.js

74 lines
1.9 KiB

/**
* @class Version 应用版本模型
*/
const BaseMod = require('./base')
const {
DateTime
} = require('../lib')
module.exports = class Version extends BaseMod {
constructor() {
super()
this.tableName = 'opendb-app-versions'
this.tablePrefix = false
this.cacheKeyPre = 'uni-stat-app-version-'
}
/**
* 获取版本信息
* @param {String} appid DCloud-appid
* @param {String} platformId 平台编号
* @param {String} appVersion 平台版本号
*/
async getVersion(appid, platform, appVersion) {
const cacheKey = this.cacheKeyPre + appid + '-' + platform + '-' + appVersion
let versionData = await this.getCache(cacheKey)
if (!versionData) {
const versionInfo = await this.getCollection(this.tableName).where({
appid: appid,
uni_platform: platform,
type: 'native_app',
version: appVersion
}).limit(1).get()
versionData = []
if (versionInfo.data.length > 0) {
versionData = versionInfo.data[0]
await this.setCache(cacheKey, versionData)
}
}
return versionData
}
/**
* 获取版本信息没有则进行创建
* @param {String} appid DCloud-appid
* @param {String} platform 平台代码
* @param {String} appVersion 平台版本号
*/
async getVersionAndCreate(appid, platform, appVersion) {
const versionInfo = await this.getVersion(appid, platform, appVersion)
if (versionInfo.length === 0) {
if (appVersion.length > 0 && !appVersion.includes('}')) {
const thisTime = new DateTime().getTime()
const insertParam = {
appid: appid,
platform: [],
uni_platform: platform,
type: 'native_app',
version: appVersion,
stable_publish: false,
create_env: 'uni-stat',
create_date: thisTime
}
const res = await this.insert(this.tableName, insertParam)
if (res && res.id) {
return Object.assign(insertParam, {
_id: res.id
})
}
}
}
return versionInfo
}
}