81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
|
const {
|
|||
|
userCollection
|
|||
|
} = require('../../common/constants')
|
|||
|
const {
|
|||
|
coverMobile
|
|||
|
} = require('../../common/utils')
|
|||
|
|
|||
|
/**
|
|||
|
* 获取受邀用户
|
|||
|
* @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#get-invited-user
|
|||
|
* @param {Object} params
|
|||
|
* @param {Number} params.level 获取受邀用户的级数,1表示直接邀请的用户
|
|||
|
* @param {Number} params.limit 返回数据大小
|
|||
|
* @param {Number} params.offset 返回数据偏移
|
|||
|
* @param {Boolean} params.needTotal 是否需要返回总数
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
module.exports = async function (params = {}) {
|
|||
|
const schema = {
|
|||
|
level: 'number',
|
|||
|
limit: {
|
|||
|
required: false,
|
|||
|
type: 'number'
|
|||
|
},
|
|||
|
offset: {
|
|||
|
required: false,
|
|||
|
type: 'number'
|
|||
|
},
|
|||
|
needTotal: {
|
|||
|
required: false,
|
|||
|
type: 'boolean'
|
|||
|
}
|
|||
|
}
|
|||
|
this.middleware.validate(params, schema)
|
|||
|
const {
|
|||
|
level,
|
|||
|
limit = 20,
|
|||
|
offset = 0,
|
|||
|
needTotal = false
|
|||
|
} = params
|
|||
|
const uid = this.authInfo.uid
|
|||
|
const query = {
|
|||
|
[`inviter_uid.${level - 1}`]: uid
|
|||
|
}
|
|||
|
const getUserRes = await userCollection.where(query)
|
|||
|
.field({
|
|||
|
_id: true,
|
|||
|
avatar: true,
|
|||
|
avatar_file: true,
|
|||
|
username: true,
|
|||
|
nickname: true,
|
|||
|
mobile: true,
|
|||
|
invite_time: true
|
|||
|
})
|
|||
|
.orderBy('invite_time', 'desc')
|
|||
|
.skip(offset)
|
|||
|
.limit(limit)
|
|||
|
.get()
|
|||
|
|
|||
|
const invitedUser = getUserRes.data.map(item => {
|
|||
|
return {
|
|||
|
uid: item._id,
|
|||
|
username: item.username,
|
|||
|
nickname: item.nickname,
|
|||
|
mobile: coverMobile(item.mobile),
|
|||
|
inviteTime: item.invite_time,
|
|||
|
avatar: item.avatar,
|
|||
|
avatarFile: item.avatar_file
|
|||
|
}
|
|||
|
})
|
|||
|
const result = {
|
|||
|
errCode: 0,
|
|||
|
invitedUser
|
|||
|
}
|
|||
|
if (needTotal) {
|
|||
|
const getTotalRes = await userCollection.where(query).count()
|
|||
|
result.total = getTotalRes.total
|
|||
|
}
|
|||
|
return result
|
|||
|
}
|