info
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user