get-invited-user.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const {
  2. userCollection
  3. } = require('../../common/constants')
  4. const {
  5. coverMobile
  6. } = require('../../common/utils')
  7. /**
  8. * 获取受邀用户
  9. * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#get-invited-user
  10. * @param {Object} params
  11. * @param {Number} params.level 获取受邀用户的级数,1表示直接邀请的用户
  12. * @param {Number} params.limit 返回数据大小
  13. * @param {Number} params.offset 返回数据偏移
  14. * @param {Boolean} params.needTotal 是否需要返回总数
  15. * @returns
  16. */
  17. module.exports = async function (params = {}) {
  18. const schema = {
  19. level: 'number',
  20. limit: {
  21. required: false,
  22. type: 'number'
  23. },
  24. offset: {
  25. required: false,
  26. type: 'number'
  27. },
  28. needTotal: {
  29. required: false,
  30. type: 'boolean'
  31. }
  32. }
  33. this.middleware.validate(params, schema)
  34. const {
  35. level,
  36. limit = 20,
  37. offset = 0,
  38. needTotal = false
  39. } = params
  40. const uid = this.authInfo.uid
  41. const query = {
  42. [`inviter_uid.${level - 1}`]: uid
  43. }
  44. const getUserRes = await userCollection.where(query)
  45. .field({
  46. _id: true,
  47. avatar: true,
  48. avatar_file: true,
  49. username: true,
  50. nickname: true,
  51. mobile: true,
  52. invite_time: true
  53. })
  54. .orderBy('invite_time', 'desc')
  55. .skip(offset)
  56. .limit(limit)
  57. .get()
  58. const invitedUser = getUserRes.data.map(item => {
  59. return {
  60. uid: item._id,
  61. username: item.username,
  62. nickname: item.nickname,
  63. mobile: coverMobile(item.mobile),
  64. inviteTime: item.invite_time,
  65. avatar: item.avatar,
  66. avatarFile: item.avatar_file
  67. }
  68. })
  69. const result = {
  70. errCode: 0,
  71. invitedUser
  72. }
  73. if (needTotal) {
  74. const getTotalRes = await userCollection.where(query).count()
  75. result.total = getTotalRes.total
  76. }
  77. return result
  78. }