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
|
||
}
|