router.js
// 点赞朋友圈
router.post('/moment/like',controller.moment.like);
/app/controller/moment.js
// 点赞
async like() {
const { ctx, app } = this;
let current_user_id = ctx.authUser.id;
ctx.validate({
id: {
type: "int",
required: true,
desc: "朋友圈id"
}
});
let { 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 like = await app.model.MomentLike.findOne({
where: {
user_id: current_user_id,
moment_id: id
}
});
let message = {
avatar: ctx.authUser.avatar,
user_id: current_user_id,
type: "like"
}
if (like) {
await like.destroy();
ctx.apiSuccess(MomentTimeline.moment.moment_likes);
} else {
await app.model.MomentLike.create({
user_id: current_user_id,
moment_id: id
});
ctx.apiSuccess(MomentTimeline.moment.moment_likes);
}
// 通知作者
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');
}
});
}
如下图是我测试的截图
感谢大家观看,我们下次再见