Files
PetCommunity/cloudfunctions/getMessages/index.js
chenwu b02e26f602 chore: 清理冗余代码并补全私信/搜索/故事/通知功能
- 删除未使用的空组件目录、死代码导出(clearAuth/calcDistance/COLORS/
  AVATAR_GRADIENTS/Message/TabBarItem/deletePost/uploadImage/getFileURL/
  _initLogin),确保程序仍可正常运行
- 新增 8 个云函数并补全对应页面逻辑:getMessages/sendMessage(私信聊天)、
  getHotTopics/searchPosts/searchUsers(搜索)、getStory(故事,复用 posts
  集合)、getNotifications/markAllRead(基于点赞评论聚合的通知系统)
- 在 cloudbaserc.json 中注册全部新云函数,并通过 --deployMode zip 完成部署

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 16:27:28 +08:00

47 lines
1.4 KiB
JavaScript

const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
const _ = db.command
const PAGE_SIZE = 30
exports.main = async (event, context) => {
const { OPENID } = cloud.getWXContext()
const { peerId, page = 0 } = event || {}
try {
const meRes = await db.collection('users').where({ openid: OPENID }).get()
if (meRes.data.length === 0) return { code: -1, message: '用户不存在' }
const myId = meRes.data[0]._id
let list = []
if (peerId) {
const skip = page * PAGE_SIZE
const msgRes = await db.collection('messages')
.where(_.or([
{ fromId: myId, toId: peerId },
{ fromId: peerId, toId: myId },
]))
.orderBy('createdAt', 'desc')
.skip(skip)
.limit(PAGE_SIZE)
.get()
list = msgRes.data.reverse().map(m => ({ ...m, isMe: m.fromId === myId }))
// 把对方发来的未读消息标记为已读
const unreadIds = msgRes.data.filter(m => m.toId === myId && !m.isRead).map(m => m._id)
if (unreadIds.length) {
await db.collection('messages').where({ _id: _.in(unreadIds) }).update({ data: { isRead: true } })
}
}
const unreadRes = await db.collection('messages')
.where({ toId: myId, isRead: _.neq(true) })
.count()
return { code: 0, data: { list, unreadCount: unreadRes.total } }
} catch (e) {
return { code: -1, message: e.message }
}
}