Commit 8efcbaec authored by strong's avatar strong

Merge commit 'b30b1406'

# Conflicts:
#	app/models/forumThread.js
parents 2741cdb0 b30b1406
......@@ -159,3 +159,30 @@ router.post('/member/:mid/update', function(req, res, next) {
res.json(returnCode.WRONG_PARAM);
}
});
//获取用户收藏记录
router.get('/member/:uid/favors', function(req, res, next) {
var uid = req.params.uid || null;
var ent_code = req.session.user.ent_code;
if (uid) {
var condition = {
_id : uid,
ent_code : ent_code
}
forumUserService.getFavors(condition,function(err,result){
if(err){
console.log(err);
res.json(returnCode.BUSY);
}else{
var rs ={data : result};
res.json(_.assign(rs, returnCode.SUCCESS));
}
});
} else {
console.error('params error');
res.json({
result: false,
err: 'params error'
});
}
});
\ No newline at end of file
......@@ -5,70 +5,360 @@ var express = require('express'),
_ = require('lodash');
var mongoose = require('mongoose');
var forumUserService=require('../../service/forumUserService');
var forumThreadService=require('../../service/forumThreadService');
var forumUserService = require('../../service/forumUserService');
var forumThreadService = require('../../service/forumThreadService');
var forumInfoService = require('../../service/forumInfoService');
var async=require('async');
var async = require('async');
var user=require('../../utils/user');
var user = require('../../utils/user');
module.exports = function(app) {
app.use('/v1/forum', router);
};
//更新用户收藏信息
var updateuser = function(condition, entity, callback){
forumUserService.updateByIdWithOptions(condition, entity, {upsert: false}, function(err, user_id) {
if (err) {
callback(err, null);
} else {
callback(null, user_id);
}
});
};
//查询用户是否已收藏(板块/文章/用户)
var queryIsFavor = function(userID, field, condition, callback){
forumUserService.getUserById(userID, function(err, doc) {
if (err) {
callback(err, null);
} else {
if(doc){
var list = doc[field];
if (list.indexOf(condition) > -1) {
callback(1);
} else {
callback(null);
}
}else{
callback('查询用户信息错误');
}
}
});
};
//获取用户信息
router.get('/user/:fid/get', function(req, res, next) {
var fid = req.params.fid || null;
var rs = {};
async.parallel([
function(cb){
forumUserService.getUserById(user.getMobileUser(req),function(err,entity){
function(cb) {
forumUserService.getUserById(user.getMobileUser(req), function(err, entity) {
if (err) {
cb(err,null);
cb(err, null);
} else {
cb(null,entity);
cb(null, entity);
}
});
},
function(cb){
var conditions={
ent_code:req.session.user.ent_code,
from:user.getMobileUser(req),
status:1,
info:fid
function(cb) {
var conditions = {
ent_code: req.session.user.ent_code,
from: user.getMobileUser(req),
status: 1,
info: fid
};
forumThreadService.getAllCountByFid(conditions,function(err,count){
forumThreadService.getAllCountByFid(conditions, function(err, count) {
if (err) {
cb(err,null);
cb(err, null);
} else {
cb(null,count);
cb(null, count);
}
});
}
],function(err,results){
], function(err, results) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
rs.data = results[0] || {};
rs.myThreadCount=results[1] || 0;
rs.myThreadCount = results[1] || 0;
res.json(_.assign(rs, returnCode.SUCCESS));
}
});
});
//获取用户信息
//更新用户信息
router.post('/user/:uid/update', function(req, res, next) {
var uid=req.params.uid;
if(uid){
forumUserService.updateUserById(uid,req.body,function(err,result){
if(err){
var uid = req.params.uid;
if (uid) {
forumUserService.updateUserById(uid, req.body, function(err, result) {
if (err) {
res.json(returnCode.BUSY);
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//收藏板块
router.post('/user/favorInfo/:infoID', function(req, res, next) {
var userID = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var infoID = req.params.infoID;
if (userID && infoID) {
async.waterfall([
function(callback) {
queryIsFavor(userID, 'favor_infos', infoID, callback);
},
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $push: { "favor_infos": infoID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新板块
var info_condition = { _id : infoID, ent_code : ent_code};
var info_entity = { $push: { "favor_by": user_id} };
forumInfoService.updateByIdWithOptions(info_condition, info_entity, {upsert: true}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
if(err == 1){
var rs = {
'errorcode': 1,
'errormsg': '已收藏'
}
res.json(rs);
}else{
res.json(returnCode.BUSY);
}
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//取消收藏板块
router.post('/user/disfavorInfo/:infoID', function(req, res, next) {
var userID = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var infoID = req.params.infoID;
if (userID && infoID) {
async.waterfall([
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $pull: { "favor_infos": infoID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新板块
var info_condition = { _id : infoID, ent_code : ent_code};
var info_entity = { $pull: { "favor_by": user_id} };
forumInfoService.updateByIdWithOptions(info_condition, info_entity, {upsert: true}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
res.json(returnCode.BUSY);
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//收藏文章
router.post('/user/favorThread/:threadID', function(req, res, next) {
var userID = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var threadID = req.params.threadID;
if (userID && threadID) {
async.waterfall([
function(callback) {
queryIsFavor(userID, 'favor_threads', threadID, callback);
},
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $push: { "favor_threads": threadID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新文章
var thread_condition = { _id : threadID, ent_code : ent_code};
var thread_entity = { $push: { "favor_by": user_id} };
forumThreadService.updateByIdWithOptions(thread_condition, thread_entity, {upsert: true}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
if(err == 1){
var rs = {
'errorcode': 1,
'errormsg': '已收藏'
}
res.json(rs);
}else{
res.json(returnCode.BUSY);
}
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//取消收藏文章
router.post('/user/disfavorThread/:threadID', function(req, res, next) {
var userID = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var threadID = req.params.threadID;
if (userID && threadID) {
async.waterfall([
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $pull: { "favor_threads": threadID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新文章
var thread_condition = { _id : threadID, ent_code : ent_code};
var thread_entity = { $pull: { "favor_by": user_id} };
forumThreadService.updateByIdWithOptions(thread_condition, thread_entity, {upsert: true}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
res.json(returnCode.BUSY);
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//收藏用户
router.post('/user/favorUser/:favorUserID', function(req, res, next) {
var userID = user.getMobileUser(req);// 收藏的用户
var ent_code = req.session.user.ent_code;
var favorUserID = req.params.favorUserID; //被收藏的用户
if (userID && favorUserID) {
async.waterfall([
function(callback) {
queryIsFavor(userID, 'favor_users', favorUserID, callback);
},
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $push: { "favor_users": favorUserID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新被收藏用户
var favor_condition = { _id : favorUserID, ent_code : ent_code};
var favor_entity = { $push: { "favor_by": user_id} };
forumUserService.updateByIdWithOptions(favor_condition, favor_entity, {upsert: false}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
if(err == 1){
var rs = {
'errorcode': 1,
'errormsg': '已收藏'
}
res.json(rs);
}else{
res.json(returnCode.BUSY);
}
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
//取消收藏用户
router.post('/user/disfavorUser/:favorUserID', function(req, res, next) {
var userID = user.getMobileUser(req);// 收藏的用户
var ent_code = req.session.user.ent_code;
var favorUserID = req.params.favorUserID; //被收藏的用户
if (userID && favorUserID) {
async.waterfall([
function(callback) {
//更新用户
var user_condition = { _id : userID, ent_code : ent_code};
var user_entity = { $pull: { "favor_users": favorUserID} };
updateuser(user_condition, user_entity, callback);
},
function(user_id, callback) {
//更新被收藏用户
var favor_condition = { _id : favorUserID, ent_code : ent_code};
var favor_entity = { $pull: { "favor_by": user_id} };
forumUserService.updateByIdWithOptions(favor_condition, favor_entity, {upsert: true}, function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, null);
}
});
}
], function (err, result) {
if (err) {
res.json(returnCode.BUSY);
} else {
res.json(returnCode.SUCCESS);
}
});
} else {
res.json(returnCode.WRONG_PARAM);
}
});
\ No newline at end of file
......@@ -50,6 +50,10 @@ var ForumInfoSchema = new Schema({
type: Object,
default:{}
},
favor_by: [{ //被收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
created: {
type: Date,
required: true,
......
......@@ -126,6 +126,10 @@ var ForumThreadSchema = new Schema({
new_recommend_time:{//推荐时间
type: Date
},
favor_by: [{ //被收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
created: {
type: Date,
required: true,
......
......@@ -56,6 +56,22 @@ var ForumUserSchema = new Schema({
type: Schema.Types.ObjectId,
ref: 'ForumHonorTitle'
}],
favor_by: [{ //被收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
favor_users: [{ //收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
favor_infos: [{ //收藏板块列表
type: Schema.Types.ObjectId,
ref: 'ForumInfo'
}],
favor_threads: [{ //收藏文章列表
type: Schema.Types.ObjectId,
ref: 'ForumThread'
}],
created: {
type: Date,
required: true,
......
......@@ -39,6 +39,18 @@ exports.updateInfoById=function(fid,entity,callback){
});
};
//根据ID更新论坛板块2
exports.updateByIdWithOptions=function(condition, entity, options, callback){
ForumInfo.findOneAndUpdate(condition, entity, options, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//根据ID更新论坛组
exports.deleteInfoById=function(fid,callback){
ForumInfo.remove({ _id: fid},function(err,result){
......
......@@ -1242,3 +1242,15 @@ exports.updateThread = function(condition, entity, callback) {
}
});
};
//根据ID更新文章2
exports.updateByIdWithOptions = function(condition, entity, options, callback) {
ForumThread.findOneAndUpdate(condition, entity, options, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
\ No newline at end of file
......@@ -7,70 +7,104 @@ var async = require('async');
var forumLimitOperationService = require('../service/forumLimitOperationService');
//创建用户
exports.createUser=function(entity,callback){
exports.createUser = function(entity, callback) {
var forum = new ForumUser(entity);
forum.save(function(err, forum) {
if (err) {
console.error(err);
callback(err,null);
callback(err, null);
} else {
callback(null,forum);
callback(null, forum);
}
});
};
//根据Uid获取用户
exports.getUserByUid=function(uid,callback){
ForumUser.findOne({uid:uid}).populate({
exports.getUserByUid = function(uid, callback) {
ForumUser.findOne({
uid: uid
}).populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
}).exec(function(err,result){
if(err){
callback(err,null);
}else{
if(result ){
callback(null,result);
}else{
callback(null,null);
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
if (result) {
callback(null, result);
} else {
callback(null, null);
}
}
});
};
//根据id获取用户
exports.getUserById=function(id,callback){
ForumUser.findOne({_id:id}).populate({
exports.getUserById = function(id, callback) {
ForumUser.findOne({
_id: id
}).populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
}).exec(function(err,result){
if(err){
callback(err,null);
}else{
if(result ){
callback(null,result);
}else{
callback(null,null);
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
if (result) {
callback(null, result);
} else {
callback(null, null);
}
}
});
};
//根据ID更新用户信息
exports.updateUserById=function(uid,entity,callback){
ForumUser.update({ _id: uid}, entity,null,function(err,result){
exports.updateUserById = function(uid, entity, callback) {
ForumUser.update({
_id: uid
}, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//根据ID更新用户信息2
exports.updateByIdWithOptions = function(condition, entity, options, callback) {
ForumUser.findOneAndUpdate(condition, entity, options, function(err, result) {
if (err) {
console.error(err);
callback(err,null);
callback(err, null);
} else {
callback(null,null);
callback(null, result._id);
}
});
};
//查询用户信息
exports.searchMembers=function(pageNo, pageSize, q, callback){
exports.searchMembers = function(pageNo, pageSize, q, callback) {
then(function(cont) {
ForumUser.find(q).count(cont);
}).then(function(cont, count) {
......@@ -78,8 +112,16 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){
var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, docs) {
cont(err, count, docs);
});
......@@ -101,43 +143,68 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){
};
//根据nickName查询用户
exports.searchMembersByNickName=function(nickName, callback){
exports.searchMembersByNickName = function(nickName, callback) {
var name = {
$or : [
{nickName : { $regex: nickName, $options: 'i' }},
{displayName : { $regex: nickName, $options: 'i' }}
]
$or: [{
nickName: {
$regex: nickName,
$options: 'i'
}
}, {
displayName: {
$regex: nickName,
$options: 'i'
}
}]
};
ForumUser.find(name).populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
}).exec(function(err,result){
if(err){
callback(err,null);
}else{
callback(null,result);
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, result);
}
});
};
//根据mid查询用户
exports.searchMembersByMid=function(mid, callback){
ForumUser.find({mid:mid}).populate({
exports.searchMembersByMid = function(mid, callback) {
ForumUser.find({
mid: mid
}).populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
}).exec(function(err,result){
if(err){
callback(err,null);
}else{
callback(null,result);
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, result);
}
});
};
//查询用户和行为限制信息
exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
exports.searchMembersAndLimitActions = function(pageNo, pageSize, q, callback) {
then(function(cont) {
ForumUser.find(q).count(cont);
}).then(function(cont, count) {
......@@ -145,8 +212,16 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({
path: 'honorTitles',
match: { status: { $ne: 0 }},
options: { sort:{order_idx:-1} }
match: {
status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, docs) {
cont(err, count, docs);
});
......@@ -160,14 +235,13 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
console.error(err);
callback(null, null);
} else {
if(forumLimitOperation){
if (forumLimitOperation) {
var limit_actions = forumLimitOperation.limit_actions;
var array = [];
for (var i = 0; i < limit_actions.length; i += 1) {
var limit_action = limit_actions[i];
var name = '';
switch(limit_action.limit_type)
{
switch (limit_action.limit_type) {
case 1:
name = '禁言';
break;
......@@ -180,7 +254,7 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
member = member.toObject();
member.limitActions = array;
callback(null, member);
}else{
} else {
callback(null, member);
}
}
......@@ -221,13 +295,41 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
//根据UID和entCode更新用户信息
exports.updateUserByUIdAndEntCode=function(condition,entity,callback){
ForumUser.update(condition, entity,null,function(err,result){
exports.updateUserByUIdAndEntCode = function(condition, entity, callback) {
ForumUser.update(condition, entity, null, function(err, result) {
if (err) {
console.error(err);
callback(err,null);
callback(err, null);
} else {
callback(null, null);
}
});
};
//查询用户收藏记录
exports.getFavors = function(condition, callback) {
ForumUser.findOne(condition).populate({
path: 'favor_by',
select: '_id nickName displayName'
}).populate({
path: 'favor_users',
select: '_id nickName displayName'
}).populate({
path: 'favor_infos',
select: '_id name',
options: {sort: {created: -1}}
}).populate({
path: 'favor_threads',
select: '_id title info from created status type',
options: {
sort: {created: -1},
populate:"info from" //继续查文章里面的板块信息
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null,null);
callback(null, result);
}
});
};
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