router.js

// 评论朋友圈
router.post('/moment/comment',controller.moment.comment);

app/controller/moment.js

// 朋友圈评论
async comment() {
const { ctx, app } = this;
let current_user_id = ctx.authUser.id;

ctx.validate({
id: {
type: "int",
required: true,
desc: "朋友圈id"
},
content: {
type: "string",
required: true,
desc: "评论内容"
},
reply_id: {
type: "int",
required: true,
defValue: 0,
desc: "回复id"
}
});

let { id, content, reply_id } = ctx.request.body;

let MomentTimeline = await app.model.MomentTimeline.findOne({
where: {
user_id: current_user_id,
moment_id: id
},
include: [{
model: app.model.Moment,
attributes: ['user_id'],
include: [{
model: app.model.MomentLike,
attributes: ['user_id']
}]
}]
});

if (!MomentTimeline) {
return ctx.apiFail('朋友圈消息不存在');
}

let comment = await app.model.MomentComment.create({
user_id: current_user_id,
moment_id: id,
content,
reply_id
});

ctx.apiSuccess(comment);

let message = {
avatar: ctx.authUser.avatar,
user_id: current_user_id,
type: "comment"
}
// 通知作者
if (MomentTimeline.moment.user_id && MomentTimeline.moment.user_id !== current_user_id) {
ctx.sendAndSaveMessage(MomentTimeline.moment.user_id, message, 'moment');
}
// 通知相关人
MomentTimeline.moment.moment_likes.forEach(item => {
if (item.user_id !== current_user_id) {
ctx.sendAndSaveMessage(item.user_id, message, 'moment');
}
});

// 通知被回复人
if (reply_id > 0) {
let index = MomentTimeline.moment.moment_likes.findIndex(item => {
return item.user_id === reply_id
});

if (index === -1) {
ctx.sendAndSaveMessage(reply_id, message, 'moment');
}
}

}
下图是我测试的截图

uni-app 145评论朋友圈api开发(二)_javascript

感谢大家观看,我们下次见