|
|
/**
|
|
|
* @class UniIDUsers uni-id 用户模型
|
|
|
*/
|
|
|
const BaseMod = require('./base')
|
|
|
module.exports = class UniIDUsers extends BaseMod {
|
|
|
|
|
|
constructor() {
|
|
|
super()
|
|
|
this.tableName = 'uni-id-users'
|
|
|
this.tablePrefix = false
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取用户数
|
|
|
* @param {String} appid DCloud-appid
|
|
|
* @param {String} platform 平台
|
|
|
* @param {String} channel 渠道
|
|
|
* @param {String} version 版本
|
|
|
* @param {Object} registerTime 注册时间范围 例:{$gte:开始日期时间戳, $lte:结束日期时间戳}
|
|
|
* @return {Number}
|
|
|
*/
|
|
|
async getUserCount(appid, platform, channel, version, registerTime) {
|
|
|
if(!appid || !platform) {
|
|
|
return false
|
|
|
}
|
|
|
const condition = this.getCondition(appid, platform, channel, version, registerTime)
|
|
|
let userCount = 0
|
|
|
const userCountRes = await this.getCollection(this.tableName).where(condition).count()
|
|
|
if(userCountRes && userCountRes.total > 0) {
|
|
|
userCount = userCountRes.total
|
|
|
}
|
|
|
return userCount
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取用户编号列表
|
|
|
* @param {String} appid DCloud-appid
|
|
|
* @param {String} platform 平台
|
|
|
* @param {String} channel 渠道
|
|
|
* @param {String} version 版本
|
|
|
* @param {Object} registerTime 注册时间范围 例:{$gte:开始日期时间戳, $lte:结束日期时间戳}
|
|
|
* @return {Array}
|
|
|
*/
|
|
|
async getUserIds(appid, platform, channel, version, registerTime) {
|
|
|
if(!appid || !platform) {
|
|
|
return false
|
|
|
}
|
|
|
const condition = this.getCondition(appid, platform, channel, version, registerTime)
|
|
|
let uids = []
|
|
|
const uidsRes = await this.selectAll(this.tableName, condition, {
|
|
|
_id: 1
|
|
|
})
|
|
|
|
|
|
for (const u in uidsRes.data) {
|
|
|
uids.push(uidsRes.data[u]._id)
|
|
|
}
|
|
|
|
|
|
return uids
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取查询条件
|
|
|
* @param {String} appid DCloud-appid
|
|
|
* @param {String} platform 平台
|
|
|
* @param {String} channel 渠道
|
|
|
* @param {String} version 版本
|
|
|
* @param {Object} registerTime 注册时间范围 例:{$gte:开始日期时间戳, $lte:结束日期时间戳}
|
|
|
*/
|
|
|
getCondition(appid, platform, channel, version, registerTime) {
|
|
|
|
|
|
let condition = {
|
|
|
'register_env.appid': appid,//DCloud appid
|
|
|
'register_env.uni_platform': platform,//平台
|
|
|
'register_env.channel': channel ? channel : '1001', //渠道或场景值
|
|
|
'register_env.app_version' : version //应用版本区分
|
|
|
}
|
|
|
|
|
|
//原生应用平台
|
|
|
if(['android', 'ios'].includes(platform)) {
|
|
|
condition['register_env.uni_platform'] = 'app'//systemInfo中uniPlatform字段android和ios都用app表示,所以此处查询需要用osName区分一下
|
|
|
condition['register_env.os_name'] = platform //系统
|
|
|
}
|
|
|
|
|
|
//兼容vue2
|
|
|
if(channel === '1001') {
|
|
|
condition['register_env.channel'] = {$in:['', '1001']}
|
|
|
}
|
|
|
|
|
|
//注册时间
|
|
|
if(registerTime) {
|
|
|
condition.register_date = registerTime
|
|
|
}
|
|
|
|
|
|
return condition
|
|
|
}
|
|
|
|
|
|
}
|