const db = uniCloud.database(); const dbCmd = db.command; const conversation = 'uni-im-conversation'; module.exports = { // 查询当前用户是否是客服 async isCustomer(params) { const dbFJ = uniCloud.databaseForJQL({ clientInfo: this.getClientInfo() }) const res = await dbFJ.collection('uni-id-users').doc(params.id).field('_id, isCustomerService').get(); return res.data && res.data[0] }, async getCustomerServiceList(params) { const { data, affectedDocs } = await db.collection('uni-id-users').where(params).get(); return { data, total: affectedDocs }; }, // 更新客服信息 async updateCustomer(params) { const { mobile, ...rest } = params; const res = await db.collection('uni-id-users').where({ "mobile": mobile }).update(rest); return res; }, // 删除客服 async deleteCustomer(params) { const res = await db.collection('uni-id-users').where(params).remove(); return res; }, // 编辑客服 async editCustomer(params) { const { id, ...rest } = params; const res = await db.collection('uni-id-users').doc(id).update(rest); return res; }, // 查询客服的沟通列表 async getConversationList(params) { const { page, filter } = params; let filterParams = filter; if(filter.time) { filterParams = { user_id: filter.user_id, create_time: dbCmd.gt(filter.time.startTime), update_time: dbCmd.lt(filter.time.endTime) } } // 分页 偏移量 let offSet = page.pageCurrent > 1 ? (page.pageCurrent - 1) * page.pageSize : 0; let { total } = await db.collection(conversation).where(filterParams).count(); const { data } = await db.collection(conversation) .aggregate() .match(filterParams) .lookup({ from: 'uni-id-users', localField: 'friend_uid', foreignField: '_id', as: 'userInfo' }) .unwind('$userInfo') .project({ _id: 1, id: 1, create_time: 1, 'userInfo.nickname': 1, 'userInfo.defaultCompany': 1, "userInfo.defaultJob": 1, "userInfo.mobile": 1 }) .skip(offSet) .limit(page.pageSize || 100) .end(); return { data, total } } }