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'),
// var forumLimitActionRefService = require('../../service/forumLimitActionRefService');
forumLimitOperationService = require('../../service/forumLimitOperationService'),
forumAboutMEService = require('../../service/forumAboutMEService'),
httpService = require('../../service/httpService');
httpService = require('../../service/httpService'),
redisThreadList = require('../../utils/redisThreadList');
var userUtil = require('../../utils/user');
var floorGenerator = require('../../utils/floorGenerator');
......@@ -1593,6 +1594,8 @@ router.post('/thread/:tid/essence', function(req, res, next) {
console.error(err);
res.json(returnCode.BUSY);
} else {
//更新推荐列表redis
redisThreadList.updateRedisEsenceThreads(ent_code, "", '_thread_essence', function() {});
res.json(returnCode.SUCCESS);
}
});
......@@ -1619,6 +1622,8 @@ router.post('/thread/:tid/unEssence', function(req, res, next) {
console.error(err);
res.json(returnCode.BUSY);
} else {
//更新推荐列表redis
redisThreadList.updateRedisEsenceThreads(ent_code, "", '_thread_essence', function() {});
res.json(returnCode.SUCCESS);
}
});
......
......@@ -17,23 +17,28 @@ module.exports = function(app) {
//查询单个头衔信息人员信息
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 honorTitleId = req.params.hid;
var user_conditions = {
var conditions = {
ent_code: ent_code,
honorTitles: {
$in: [honorTitleId]
}
honor: honorTitleId
};
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) {
console.error(err);
res.json(returnCode.BUSY);
cont(err, null);
} else {
var users = [];
_.forEach(results.datas, function(one, i) {
users.push(one.user);
});
results.datas = users;
res.json(_.assign(results, returnCode.SUCCESS));
}
});
......@@ -69,7 +74,7 @@ router.get('/honorTitle/list', function(req, res, next) {
$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) {
console.error(err);
cont(err, null);
......@@ -78,7 +83,7 @@ router.get('/honorTitle/list', function(req, res, next) {
list[i] = list[i].toObject();
}
var users = [];
_.forEach(results, function(one, i) {
_.forEach(results.datas, function(one, i) {
users.push(one.user);
});
list[i].users = users;
......
......@@ -24,6 +24,7 @@ var user = require('../../utils/user');
var floorGenerator = require('../../utils/floorGenerator');
var async = require('async');
var ForumModeratorApply = mongoose.model('ForumModeratorApply');
var redisThreadList = require('../../utils/redisThreadList');
module.exports = function(app) {
app.use('/v1/forum', router);
};
......@@ -1774,10 +1775,11 @@ router.post('/thread/:tid/disable', function(req, res, next) {
});
//获取推荐文章
router.get('/thread/getThreadWithEssence', function(req, res, next) {
//获取推荐文章 //旧的,无用 2016/1/28日后请删除
router.get('/thread/getThreadWithEssence_old', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var infoId = req.query.infoId || null;
var sort = '-new_recommend_time';
var ent_code = req.session.user.ent_code;
var today = new Date();
......@@ -1795,43 +1797,18 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
'event.eventStartTime' : {$lte : today}
}]
};
forumThreadService.getThreadWithNotPopulateComment(conditions, pageNo, pageSize, sort, function(err, results) {
if (err) {
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();
if(infoId){
conditions.info = infoId;
}
//设置帖子的活动
if(results.items[i].isEvent && results.items[i].isEvent == 1){
if(results.items[i].event.eventEndTime < today){
results.items[i].eventStatus = 2; //'已结束';
queryThread(conditions, pageNo, pageSize, sort, function(err, results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
results.items[i].eventStatus = 1; //'进行中';
}
}
//获取等级最高的荣誉
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));
util.loadLevel(ent_code, results.items, function() {
handleThreadList(req, results, ent_code, function(result){
res.json(_.assign(result, returnCode.SUCCESS));
});
});
}
......@@ -1842,6 +1819,7 @@ router.get('/thread/getThreadWithEssence', function(req, res, next) {
router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var infoId = req.query.infoId || null;
var sort = '-_id';
var ent_code = req.session.user.ent_code;
var today = new Date();
......@@ -1858,12 +1836,104 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) {
'event.eventStartTime' : {$lte : today}
}]
};
forumThreadService.getThreadWithNotPopulateComment(conditions, pageNo, pageSize, sort, function(err, results) {
if (err) {
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(req.session.user.ent_code, results.items, function() {
}else{
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) {
_.forEach(results.items, function(d, i) {
if (results.items[i].toObject) {
......@@ -1892,11 +1962,8 @@ router.get('/thread/getThreadWithNotPopulateComment', function(req, res, next) {
break;
}
};
});
res.json(_.assign(results, returnCode.SUCCESS));
});
});
}
callback(results);
});
});
\ No newline at end of file
}
......@@ -80,82 +80,30 @@ function countAll(conditions, callback) {
}
//分页查询
exports.getAll = function(pageNo, pageSize, conditions, fields, callback) {
// countAll(conditions, function(err, count) {
// if (err) {
// console.error(err);
// callback(err, null);
// } 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);
// });
// }
// });
exports.getAll = function(pageNo, pageSize, conditions, fields, sort, callback) {
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else{
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',
select: fields,
options: {
sort: {
created: -1
}
}
select: fields
}).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