Commit f9fab099 authored by 刘文胜's avatar 刘文胜

Merge branch 'remould_0120_page_style' of...

Merge branch 'remould_0120_page_style' of git.wxpai.cn:scrmgroup/pisns-forum-api into remould_0120_page_style
parents c02326f9 26fb8d99
...@@ -23,7 +23,8 @@ var forumThreadService = require('../../service/forumThreadService'), ...@@ -23,7 +23,8 @@ var forumThreadService = require('../../service/forumThreadService'),
// var forumLimitActionRefService = require('../../service/forumLimitActionRefService'); // var forumLimitActionRefService = require('../../service/forumLimitActionRefService');
forumLimitOperationService = require('../../service/forumLimitOperationService'), forumLimitOperationService = require('../../service/forumLimitOperationService'),
forumAboutMEService = require('../../service/forumAboutMEService'), forumAboutMEService = require('../../service/forumAboutMEService'),
httpService = require('../../service/httpService'); httpService = require('../../service/httpService'),
redisThreadList = require('../../utils/redisThreadList');
var userUtil = require('../../utils/user'); var userUtil = require('../../utils/user');
var floorGenerator = require('../../utils/floorGenerator'); var floorGenerator = require('../../utils/floorGenerator');
...@@ -1593,6 +1594,8 @@ router.post('/thread/:tid/essence', function(req, res, next) { ...@@ -1593,6 +1594,8 @@ router.post('/thread/:tid/essence', function(req, res, next) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { } else {
//更新推荐列表redis
redisThreadList.updateRedisEsenceThreads(ent_code, "", '_thread_essence', function() {});
res.json(returnCode.SUCCESS); res.json(returnCode.SUCCESS);
} }
}); });
...@@ -1619,6 +1622,8 @@ router.post('/thread/:tid/unEssence', function(req, res, next) { ...@@ -1619,6 +1622,8 @@ router.post('/thread/:tid/unEssence', function(req, res, next) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { } else {
//更新推荐列表redis
redisThreadList.updateRedisEsenceThreads(ent_code, "", '_thread_essence', function() {});
res.json(returnCode.SUCCESS); res.json(returnCode.SUCCESS);
} }
}); });
......
...@@ -17,23 +17,28 @@ module.exports = function(app) { ...@@ -17,23 +17,28 @@ module.exports = function(app) {
//查询单个头衔信息人员信息 //查询单个头衔信息人员信息
router.get('/honorTitle/:hid/list', function(req, res, next) { router.get('/honorTitle/:hid/list', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 4;
var ent_code = req.session.user.ent_code; var ent_code = req.session.user.ent_code;
var honorTitleId = req.params.hid; var honorTitleId = req.params.hid;
var user_conditions = { var conditions = {
ent_code: ent_code, ent_code: ent_code,
honorTitles: { honor: honorTitleId
$in: [honorTitleId]
}
}; };
var fields = "nickName icon"; var fields = "nickName icon";
forumUserService.searchMembersAndFields(1, 10000, user_conditions,fields, function(err, results) { forumUserHonorTimeLineService.getAll(pageNo, pageSize, conditions, fields,'_id', function(err, results) {
if (err) { if (err) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); cont(err, null);
} else { } else {
var users = [];
_.forEach(results.datas, function(one, i) {
users.push(one.user);
});
results.datas = users;
res.json(_.assign(results, returnCode.SUCCESS)); res.json(_.assign(results, returnCode.SUCCESS));
} }
}); });
...@@ -69,7 +74,7 @@ router.get('/honorTitle/list', function(req, res, next) { ...@@ -69,7 +74,7 @@ router.get('/honorTitle/list', function(req, res, next) {
$in: [one._id] $in: [one._id]
} }
}; };
forumUserHonorTimeLineService.getAll(pageNo, pageSize, user_conditions,fields, function(err, results) { forumUserHonorTimeLineService.getAll(pageNo, pageSize, user_conditions,fields,'-_id', function(err, results) {
if (err) { if (err) {
console.error(err); console.error(err);
cont(err, null); cont(err, null);
...@@ -78,7 +83,7 @@ router.get('/honorTitle/list', function(req, res, next) { ...@@ -78,7 +83,7 @@ router.get('/honorTitle/list', function(req, res, next) {
list[i] = list[i].toObject(); list[i] = list[i].toObject();
} }
var users = []; var users = [];
_.forEach(results, function(one, i) { _.forEach(results.datas, function(one, i) {
users.push(one.user); users.push(one.user);
}); });
list[i].users = users; list[i].users = users;
......
...@@ -24,6 +24,7 @@ var user = require('../../utils/user'); ...@@ -24,6 +24,7 @@ var user = require('../../utils/user');
var floorGenerator = require('../../utils/floorGenerator'); var floorGenerator = require('../../utils/floorGenerator');
var async = require('async'); var async = require('async');
var ForumModeratorApply = mongoose.model('ForumModeratorApply'); var ForumModeratorApply = mongoose.model('ForumModeratorApply');
var redisThreadList = require('../../utils/redisThreadList');
module.exports = function(app) { module.exports = function(app) {
app.use('/v1/forum', router); app.use('/v1/forum', router);
}; };
...@@ -1774,10 +1775,11 @@ router.post('/thread/:tid/disable', function(req, res, next) { ...@@ -1774,10 +1775,11 @@ router.post('/thread/:tid/disable', function(req, res, next) {
}); });
//获取推荐文章 //获取推荐文章 //旧的,无用 2016/1/28日后请删除
router.get('/thread/getThreadWithEssence', function(req, res, next) { router.get('/thread/getThreadWithEssence_old', 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 infoId = req.query.infoId || null;
var sort = '-new_recommend_time'; var sort = '-new_recommend_time';
var ent_code = req.session.user.ent_code; var ent_code = req.session.user.ent_code;
var today = new Date(); var today = new Date();
...@@ -1795,43 +1797,18 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) { ...@@ -1795,43 +1797,18 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
'event.eventStartTime' : {$lte : today} 'event.eventStartTime' : {$lte : today}
}] }]
}; };
forumThreadService.getThreadWithNotPopulateComment(conditions, pageNo, pageSize, sort, function(err, results) { if(infoId){
if (err) { conditions.info = infoId;
console.error(err);
res.json(returnCode.BUSY);
} else {
util.loadLevel(req.session.user.ent_code, results.items, function() {
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();
} }
//设置帖子的活动 queryThread(conditions, pageNo, pageSize, sort, function(err, results){
if(results.items[i].isEvent && results.items[i].isEvent == 1){ if(err){
if(results.items[i].event.eventEndTime < today){ console.error(err);
results.items[i].eventStatus = 2; //'已结束'; res.json(returnCode.BUSY);
}else{ }else{
results.items[i].eventStatus = 1; //'进行中'; util.loadLevel(ent_code, results.items, function() {
} handleThreadList(req, results, ent_code, function(result){
} res.json(_.assign(result, returnCode.SUCCESS));
//获取等级最高的荣誉
if(results.items[i].from.honorTitles && results.items[i].from.honorTitles.length > 0){
var temp_honorTitles = _.sortBy(results.items[i].from.honorTitles, 'order_idx')
results.items[i].from.honorTitles = temp_honorTitles[temp_honorTitles.length - 1];
}
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));
}); });
}); });
} }
...@@ -1842,6 +1819,7 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) { ...@@ -1842,6 +1819,7 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) { router.get('/thread/getThreadWithNotPopulateComment', 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 infoId = req.query.infoId || null;
var sort = '-_id'; var sort = '-_id';
var ent_code = req.session.user.ent_code; var ent_code = req.session.user.ent_code;
var today = new Date(); var today = new Date();
...@@ -1858,12 +1836,104 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) { ...@@ -1858,12 +1836,104 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) {
'event.eventStartTime' : {$lte : today} 'event.eventStartTime' : {$lte : today}
}] }]
}; };
forumThreadService.getThreadWithNotPopulateComment(conditions, pageNo, pageSize, sort, function(err, results) { if(infoId){
if (err) { conditions.info = infoId;
}
queryThread(conditions, pageNo, pageSize, sort, function(err, results){
if(err){
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { }else{
util.loadLevel(req.session.user.ent_code, results.items, function() { util.loadLevel(ent_code, results.items, function() {
handleThreadList(req, results, ent_code, function(result){
res.json(_.assign(result, returnCode.SUCCESS));
});
});
}
});
});
//获取推荐文章
router.get('/thread/getThreadWithEssence', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var infoId = req.query.infoId || null;
var ent_code = req.session.user.ent_code;
var skip = (pageNo - 1) * pageSize;
var redis_type = '_thread_essence';
var sort = '-new_recommend_time';
var today = new Date();
var conditions = {
ent_code: ent_code,
level: 1,
status: 1,
new_recommend: 1,
$or: [{
isEvent: 0
}, {
isEvent: null
}, {
isEvent: 1,
'event.eventStartTime' : {$lte : today}
}]
};
if((pageNo * pageSize) > redisThreadList.getThreadRedisCount() || infoId){
if(infoId){
conditions.info = infoId;
}
queryThread(conditions, pageNo, pageSize, sort, function(err, results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
util.loadLevel(ent_code, results.items, function() {
handleThreadList(req, results, ent_code, function(result){
res.json(_.assign(result, returnCode.SUCCESS));
});
});
}
});
}else{
//更新推荐列表redis
redisThreadList.get(ent_code, "", redis_type, function(error, docs) {
var results = JSON.parse(docs);
if(results.items == null){ //如果不存在,继续重新获取
redisThreadList.getRedisEsenceThreads(ent_code, "", redis_type, function(error, docs){
if(error){
console.error(err);
res.json(returnCode.BUSY);
}else{
docs = JSON.parse(docs);
docs.items = docs.items.slice(skip, skip+pageSize);
handleThreadList(req, docs, ent_code, function(result){
res.json(_.assign(result, returnCode.SUCCESS));
});
}
});
}else{ //只取缓存里面
results.items = results.items.slice(skip, Number(skip) + Number(pageSize));
handleThreadList(req, results, ent_code, function(result){
res.json(_.assign(result, returnCode.SUCCESS));
});
}
});
}
});
//查询帖子
function queryThread(conditions, pageNo, pageSize, sort,callback){
forumThreadService.getThreadWithNotPopulateComment(conditions, pageNo, pageSize, sort, function(err, results) {
callback(err, results);
});
}
//处理帖子
function handleThreadList(req, results, ent_code, callback){
var today = new Date();
redisPraiseLog.get(ent_code, user.getMobileUser(req), 'thread', function(error, docs) { redisPraiseLog.get(ent_code, user.getMobileUser(req), 'thread', function(error, docs) {
_.forEach(results.items, function(d, i) { _.forEach(results.items, function(d, i) {
if (results.items[i].toObject) { if (results.items[i].toObject) {
...@@ -1892,11 +1962,8 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) { ...@@ -1892,11 +1962,8 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) {
break; break;
} }
}; };
}); });
res.json(_.assign(results, returnCode.SUCCESS)); callback(results);
});
});
}
}); });
}); }
\ No newline at end of file
...@@ -80,82 +80,30 @@ function countAll(conditions, callback) { ...@@ -80,82 +80,30 @@ function countAll(conditions, callback) {
} }
//分页查询 //分页查询
exports.getAll = function(pageNo, pageSize, conditions, fields, callback) { exports.getAll = function(pageNo, pageSize, conditions, fields, sort, callback) {
// countAll(conditions, function(err, count) { countAll(conditions,function(err,count){
// if (err) { if(err){
// console.error(err); console.error(err);
// callback(err, null); callback(err,null);
// } else { }else{
// var skip = (pageNo - 1) * pageSize;
// var limit = count - skip > pageSize ? pageSize : (count - skip);
// ForumUserHonorTimeLine.find(conditions).skip(skip).limit(limit).select(fields).sort('-created').populate({
// path: 'user',
// select: fields,
// options: {
// sort: {
// created: -1
// }
// }
// }).exec(function(err, docs) {
// callback(err, count, docs);
// });
// }
// });
var skip = (pageNo - 1) * pageSize; var skip = (pageNo - 1) * pageSize;
ForumUserHonorTimeLine.find(conditions).skip(skip).limit(pageSize).sort('-created').populate({ var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumUserHonorTimeLine.find(conditions).skip(skip).limit(limit).sort(sort).populate({
path: 'user', path: 'user',
select: fields, select: fields
options: {
sort: {
created: -1
}
}
}).exec(function(err, docs) { }).exec(function(err, docs) {
callback(err, docs); var obj={};
obj.total=count;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.datas=docs;
callback(null,obj);
}); });
};
//获取列表
exports.find = function(conditions, callback) {
ForumUserHonorTimeLine.find(conditions).sort({
order_idx: -1
}).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, docs);
} }
}); });
}; };
exports.getAllOrderIDX = function(conditions, callback) {
ForumUserHonorTimeLine.find(conditions).select('_id order_idx').sort({
order_idx: -1
}).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, docs);
}
});
};
//修改序号
exports.updateIdx = function(id, idx, callback) {
ForumUserHonorTimeLine.update({
_id: id
}, {
order_idx: idx
}, null,
function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, true);
}
});
};
'use strict';
var redis=global.redis;
var expire = 60*60*3;
//缓存数量
var ThreadRedisCount = 50;
var _ = require('lodash');
var then = require('thenjs');
var forumThreadService=require('../service/forumThreadService');
var redisPraiseLog=require('./redisPraiseLog');
var util=require('./util');
function getKey(ent_code,keyID,type){
var key = ent_code + keyID + type;
return key;
}
function setToRedis(ent_code,keyID,type,value){
var key = getKey(ent_code,keyID,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(ent_code,keyID,type,callback){
var key = getKey(ent_code,keyID,type);
if(!redis){
console.log('redis error');
return callback && callback('error');
}
redis.get(key, function(error, res){
if(!res){
//不存在,先获取再返回
getEsenceThreads(ent_code, keyID, type,function(err){
redis.get(key, function(error, res){
return callback && callback(error, res.split(","));
});
});
}else{
return callback && callback(error, res);
}
});
};
exports.set=function(ent_code,keyID,type,value,callback){
var key = getKey(ent_code,keyID,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(ent_code,keyID,type,callback){
var key = getKey(ent_code,keyID,type);
if(!redis){
console.log('redis error');
return callback && callback('error');
}
redis.del(key, function(error, res){
return callback && callback(error, !!res);
});
};
function getEsenceThreads(ent_code,keyID,type,callback){
var sort = '-new_recommend_time';
var today = new Date();
var conditions = {
ent_code: ent_code,
level: 1,
status: 1,
new_recommend: 1,
$or: [{
isEvent: 0
}, {
isEvent: null
}, {
isEvent: 1,
'event.eventStartTime' : {$lte : today}
}]
};
forumThreadService.getThreadWithNotPopulateComment(conditions, 1, ThreadRedisCount, sort, function(err, results) {
if (err) {
console.error(err);
callback(err);
} else {
util.loadLevel(ent_code, results.items, function() {
setToRedis(ent_code,keyID,type,JSON.stringify(results));
callback(null);
});
}
});
};
//获取缓存列表
exports.getRedisEsenceThreads = function(ent_code,keyID,type,callback){
var key = getKey(ent_code,keyID,type);
getEsenceThreads(ent_code, keyID,type, function(err){
redis.get(key, function(error, res){
return callback && callback(error, res.split(","));
});
});
};
//更新缓存列表
exports.updateRedisEsenceThreads = function(ent_code,keyID,type,callback){
var key = getKey(ent_code,keyID,type);
getEsenceThreads(ent_code, keyID,type, function(err){
callback();
});
};
//获取缓存数值
exports.getThreadRedisCount = function(){
return ThreadRedisCount;
};
\ 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