Commit c296a878 authored by 陈家荣's avatar 陈家荣

获取点赞记录,添加取消点赞功能

parent 8666689d
......@@ -14,6 +14,7 @@ var forumTagService=require('../../service/forumTagService');
var forumCommentService=require('../../service/forumCommentService');
var forumThreadAttendService = require('../../service/forumThreadAttendService');
var httpService = require('../../service/httpService');
var redisPraiseLog = require('../../utils/redisPraiseLog');
var user = require('../../utils/user');
......@@ -153,9 +154,10 @@ router.get('/info/:fid/threads', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var fid = req.params.fid;
var sort = '-top -topTime -created'
var sort = '-top -topTime -created';
var ent_code = req.session.user.ent_code;
var conditions = {
ent_code: req.session.user.ent_code,
ent_code: ent_code,
level: 1,
status:1
};
......@@ -192,7 +194,22 @@ router.get('/info/:fid/threads', function(req, res, next) {
console.error(err);
res.json(returnCode.BUSY);
} else {
//判断是否已经点赞
redisPraiseLog.get(ent_code,user.getMobileUser(req),'thread', function(error, docs){
_.forEach(results.items, function(d,i) {
if(results.items[i].toObject){
results.items[i] = results.items[i].toObject();
}
results.items[i].isPraise = false;
for (var k = docs.length - 1; k >= 0; k--) {
if(results.items[i]._id == docs[k]){
results.items[i].isPraise = true;
break;
}
};
});
res.json(_.assign(results, returnCode.SUCCESS));
});
}
});
}
......@@ -545,9 +562,9 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var content = req.query.content;
var ent_code = req.session.user.ent_code;
var conditions = {
ent_code: req.session.user.ent_code,
ent_code: ent_code,
status:1,
info: fid
};
......@@ -591,7 +608,22 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
console.error(err);
res.json(returnCode.BUSY);
} else {
//判断是否已经点赞
redisPraiseLog.get(ent_code,user.getMobileUser(req),'thread', function(error, docs){
_.forEach(results.items, function(d,i) {
if(results.items[i].toObject){
results.items[i] = results.items[i].toObject();
}
results.items[i].isPraise = false;
for (var k = docs.length - 1; k >= 0; k--) {
if(results.items[i]._id == docs[k]){
results.items[i].isPraise = true;
break;
}
};
});
res.json(_.assign(results, returnCode.SUCCESS));
});
}
});
}
......
This diff is collapsed.
......@@ -35,6 +35,11 @@ var ForumPraiseLogSchema = new Schema({
type: String,
require: true
},
status: { //状态,0点赞,1取消点赞
type: Number,
require: true,
default: 0
},
created: { //点赞时间
type: Date,
require: true,
......
This diff is collapsed.
......@@ -24,7 +24,7 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
if(cid){
conditions.comment=cid;
}
ForumPraiseLog.find(conditions).exec(function(err,docs){
ForumPraiseLog.findOne(conditions).sort({created : -1}).exec(function(err,docs){
if(err){
callback(err,null);
}else{
......@@ -33,6 +33,21 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
});
};
//更新
exports.updatePraiseLog=function(id, status,callback){
ForumPraiseLog.findOneAndUpdate({
_id: id
}, {
status: status
}, function(err, doc) {
if (err) {
callback(err, null);
} else {
callback(null, doc);
}
});
};
exports.queryPraiseLogV2=function(conditions,callback){
ForumPraiseLog.find(conditions).populate('user').exec(function(err,docs){
......@@ -43,3 +58,14 @@ exports.queryPraiseLogV2=function(conditions,callback){
}
});
};
exports.queryPraiseLogV3=function(conditions,callback){
ForumPraiseLog.find(conditions).exec(function(err,docs){
if(err){
callback(err,null);
}else{
callback(null,docs);
}
});
};
......@@ -882,6 +882,28 @@ exports.updateThreadRaiseCount = function(threadId, callback) {
});
};
//减少文章点赞数
exports.updateThreadRaiseCountDec = function(threadId, callback) {
ForumThread.update({
_id: threadId
}, {
$inc: {
praise_count: -1
}
}, {
w: 1,
safe: true
},
function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//更新文章分享数
exports.updateThreadShareCount = function(threadId, callback) {
ForumThread.update({
......
'use strict';
var redis=global.redis;
var prefix = '_userPraiseLog_';
var expire = 60*60*12;
var _ = require('lodash');
var then = require('thenjs');
var forumPraiseLogService=require('../service/forumPraiseLogService');
function getKey(entcode,userId,type){
var key = entcode + userId + prefix + type;
return key;
}
function setToRedis(entcode,userId,type,value){
var key = getKey(entcode,userId,type);
if(!redis){
console.log('redis error');
return 'error'
}
redis.set(key, value, function(error, res){
redis.expire(key, expire);
return 'success'
});
}
exports.get=function(entcode,userId,type,callback){
var key = getKey(entcode,userId,type);
if(!redis){
console.log('redis error');
return callback && callback('error');
}
redis.get(key, function(error, res){
if(!res){
//不存在,先获取再返回
getPraiseLogs(entcode, userId, function(err){
redis.get(key, function(error, res){
return callback && callback(error, res.split(",") || 0);
});
});
}else{
return callback && callback(error, res.split(",") || 0);
}
});
};
exports.set=function(entcode,userId,type,value,callback){
var key = getKey(entcode,userId,type);
if(!redis){
console.log('redis error');
return callback && callback('error');
}
redis.set(key, value, function(error, res){
redis.expire(key, expire);
return callback && callback(error, 'success');
});
};
exports.clear = function(entcode,userId,type,callback){
var key = getKey(entcode,userId,type);
if(!redis){
console.log('redis error');
return callback && callback('error');
}
redis.del(key, function(error, res){
return callback && callback(error, !!res);
});
};
function getPraiseLogs(ent_code,userId,callback){
if(userId && ent_code){
var conditions = {
user:userId,
ent_code:ent_code,
status:{$ne : 1}
}
then.parallel([
function(cont) { //查询帖子点赞
conditions.type = 1;
forumPraiseLogService.queryPraiseLogV3(conditions, function(err, docs){
var threads = [];
_.forEach(docs, function(e) {
threads.push(e.thread);
});
cont(err, threads);
});
},
function(cont) { //查询评论点赞
conditions.type = 2;
forumPraiseLogService.queryPraiseLogV3(conditions, function(err, docs){
var comments = [];
_.forEach(docs, function(d) {
comments.push(d.comment);
});
cont(err, comments);
});
}
]).then(function(cont, results) {
setToRedis(ent_code,userId,'thread',results[0]);
setToRedis(ent_code,userId,'comment',results[1]);
callback(null);
}).fail(function(cont, err) {
console.error(err);
callback(err);
});
}else{
callback('err');
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment