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.
73 lines
1.7 KiB
73 lines
1.7 KiB
1 year ago
|
/**
|
||
|
* @class StatEvent 事件统计模型
|
||
|
*/
|
||
|
const BaseMod = require('./base')
|
||
|
const {
|
||
|
DateTime
|
||
|
} = require('../lib')
|
||
|
module.exports = class StatEvent extends BaseMod {
|
||
|
constructor() {
|
||
|
super()
|
||
|
this.tableName = 'events'
|
||
|
this.defaultEvent = this.getConfig('event') || {
|
||
|
login: '登录',
|
||
|
register: '注册',
|
||
|
click: '点击',
|
||
|
share: '分享',
|
||
|
pay_success: '支付成功',
|
||
|
pay_fail: '支付失败'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取事件信息
|
||
|
* @param {String} appid: DCloud appid
|
||
|
* @param {String} eventKey 事件键值
|
||
|
*/
|
||
|
async getEvent(appid, eventKey) {
|
||
|
const cacheKey = 'uni-stat-event-' + appid + '-' + eventKey
|
||
|
let eventData = await this.getCache(cacheKey)
|
||
|
if (!eventData) {
|
||
|
const eventInfo = await this.getCollection(this.tableName).where({
|
||
|
appid: appid,
|
||
|
event_key: eventKey
|
||
|
}).get()
|
||
|
eventData = []
|
||
|
if (eventInfo.data.length > 0) {
|
||
|
eventData = eventInfo.data[0]
|
||
|
await this.setCache(cacheKey, eventData)
|
||
|
}
|
||
|
}
|
||
|
return eventData
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 获取事件信息不存在则创建
|
||
|
* @param {String} appid: DCloud appid
|
||
|
* @param {String} eventKey 事件键值
|
||
|
*/
|
||
|
async getEventAndCreate(appid, eventKey) {
|
||
|
const eventInfo = await this.getEvent(appid, eventKey)
|
||
|
if (eventInfo.length === 0) {
|
||
|
const thisTime = new DateTime().getTime()
|
||
|
const insertParam = {
|
||
|
appid: appid,
|
||
|
event_key: eventKey,
|
||
|
event_name: this.defaultEvent[eventKey] ? this.defaultEvent[eventKey] : '',
|
||
|
create_time: thisTime,
|
||
|
update_time: thisTime
|
||
|
}
|
||
|
const res = await this.insert(this.tableName, insertParam)
|
||
|
|
||
|
if (res && res.id) {
|
||
|
return Object.assign(insertParam, {
|
||
|
_id: res.id
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return eventInfo
|
||
|
}
|
||
|
}
|