Commit 63ed2290 authored by strong's avatar strong

Merge commit 'c296a878' into newfunc_1009_memberlevel

parents e2c8aa70 c296a878
...@@ -14,6 +14,7 @@ var forumTagService=require('../../service/forumTagService'); ...@@ -14,6 +14,7 @@ var forumTagService=require('../../service/forumTagService');
var forumCommentService=require('../../service/forumCommentService'); var forumCommentService=require('../../service/forumCommentService');
var forumThreadAttendService = require('../../service/forumThreadAttendService'); var forumThreadAttendService = require('../../service/forumThreadAttendService');
var httpService = require('../../service/httpService'); var httpService = require('../../service/httpService');
var redisPraiseLog = require('../../utils/redisPraiseLog');
var user = require('../../utils/user'); var user = require('../../utils/user');
...@@ -153,9 +154,10 @@ router.get('/info/:fid/threads', function(req, res, next) { ...@@ -153,9 +154,10 @@ router.get('/info/:fid/threads', function(req, res, next) {
var pageNo = req.query.pageNo || 1; var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10; var pageSize = req.query.pageSize || 10;
var fid = req.params.fid; 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 = { var conditions = {
ent_code: req.session.user.ent_code, ent_code: ent_code,
level: 1, level: 1,
status:1 status:1
}; };
...@@ -192,7 +194,22 @@ router.get('/info/:fid/threads', function(req, res, next) { ...@@ -192,7 +194,22 @@ router.get('/info/:fid/threads', function(req, res, next) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { } else {
res.json(_.assign(results, returnCode.SUCCESS)); //判断是否已经点赞
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) { ...@@ -545,9 +562,9 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
var pageNo = req.query.pageNo || 1; var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10; var pageSize = req.query.pageSize || 10;
var content = req.query.content; var content = req.query.content;
var ent_code = req.session.user.ent_code;
var conditions = { var conditions = {
ent_code: req.session.user.ent_code, ent_code: ent_code,
status:1, status:1,
info: fid info: fid
}; };
...@@ -591,7 +608,22 @@ router.get('/info/:fid/serachThreads', function(req, res, next) { ...@@ -591,7 +608,22 @@ router.get('/info/:fid/serachThreads', function(req, res, next) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { } else {
res.json(_.assign(results, returnCode.SUCCESS)); //判断是否已经点赞
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({ ...@@ -35,6 +35,11 @@ var ForumPraiseLogSchema = new Schema({
type: String, type: String,
require: true require: true
}, },
status: { //状态,0点赞,1取消点赞
type: Number,
require: true,
default: 0
},
created: { //点赞时间 created: { //点赞时间
type: Date, type: Date,
require: true, require: true,
......
This diff is collapsed.
...@@ -24,7 +24,7 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){ ...@@ -24,7 +24,7 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){
if(cid){ if(cid){
conditions.comment=cid; conditions.comment=cid;
} }
ForumPraiseLog.find(conditions).exec(function(err,docs){ ForumPraiseLog.findOne(conditions).sort({created : -1}).exec(function(err,docs){
if(err){ if(err){
callback(err,null); callback(err,null);
}else{ }else{
...@@ -33,6 +33,21 @@ exports.queryPraiseLog=function(tid,cid,user,type,callback){ ...@@ -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){ exports.queryPraiseLogV2=function(conditions,callback){
ForumPraiseLog.find(conditions).populate('user').exec(function(err,docs){ ForumPraiseLog.find(conditions).populate('user').exec(function(err,docs){
...@@ -43,3 +58,14 @@ exports.queryPraiseLogV2=function(conditions,callback){ ...@@ -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) { ...@@ -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) { exports.updateThreadShareCount = function(threadId, callback) {
ForumThread.update({ 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