Commit 4aba2f23 authored by 陈家荣's avatar 陈家荣

开发前端收藏(板块,文章,用户)调用api

parent f6a98233
...@@ -159,3 +159,30 @@ router.post('/member/:mid/update', function(req, res, next) { ...@@ -159,3 +159,30 @@ router.post('/member/:mid/update', function(req, res, next) {
res.json(returnCode.WRONG_PARAM); 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'), ...@@ -5,70 +5,360 @@ var express = require('express'),
_ = require('lodash'); _ = require('lodash');
var mongoose = require('mongoose'); var mongoose = require('mongoose');
var forumUserService=require('../../service/forumUserService'); var forumUserService = require('../../service/forumUserService');
var forumThreadService=require('../../service/forumThreadService'); 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) { module.exports = function(app) {
app.use('/v1/forum', router); 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) { router.get('/user/:fid/get', function(req, res, next) {
var fid = req.params.fid || null; var fid = req.params.fid || null;
var rs = {}; var rs = {};
async.parallel([ async.parallel([
function(cb){ function(cb) {
forumUserService.getUserById(user.getMobileUser(req),function(err,entity){ forumUserService.getUserById(user.getMobileUser(req), function(err, entity) {
if (err) { if (err) {
cb(err,null); cb(err, null);
} else { } else {
cb(null,entity); cb(null, entity);
} }
}); });
}, },
function(cb){ function(cb) {
var conditions={ var conditions = {
ent_code:req.session.user.ent_code, ent_code: req.session.user.ent_code,
from:user.getMobileUser(req), from: user.getMobileUser(req),
status:1, status: 1,
info:fid info: fid
}; };
forumThreadService.getAllCountByFid(conditions,function(err,count){ forumThreadService.getAllCountByFid(conditions, function(err, count) {
if (err) { if (err) {
cb(err,null); cb(err, null);
} else { } else {
cb(null,count); cb(null, count);
} }
}); });
} }
],function(err,results){ ], function(err, results) {
if (err) { if (err) {
console.error(err); console.error(err);
res.json(returnCode.BUSY); res.json(returnCode.BUSY);
} else { } else {
rs.data = results[0] || {}; rs.data = results[0] || {};
rs.myThreadCount=results[1] || 0; rs.myThreadCount = results[1] || 0;
res.json(_.assign(rs, returnCode.SUCCESS)); res.json(_.assign(rs, returnCode.SUCCESS));
} }
}); });
}); });
//获取用户信息 //更新用户信息
router.post('/user/:uid/update', function(req, res, next) { router.post('/user/:uid/update', function(req, res, next) {
var uid=req.params.uid; var uid = req.params.uid;
if(uid){ if (uid) {
forumUserService.updateUserById(uid,req.body,function(err,result){ forumUserService.updateUserById(uid, req.body, function(err, result) {
if(err){ if (err) {
res.json(returnCode.BUSY); 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{ }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); 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{ }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); res.json(returnCode.WRONG_PARAM);
} }
}); });
\ No newline at end of file
...@@ -50,6 +50,10 @@ var ForumInfoSchema = new Schema({ ...@@ -50,6 +50,10 @@ var ForumInfoSchema = new Schema({
type: Object, type: Object,
default:{} default:{}
}, },
favor_by: [{ //被收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
created: { created: {
type: Date, type: Date,
required: true, required: true,
......
...@@ -118,6 +118,10 @@ var ForumThreadSchema = new Schema({ ...@@ -118,6 +118,10 @@ var ForumThreadSchema = new Schema({
require: true, require: true,
default: 100 default: 100
}, },
favor_by: [{ //被收藏用户列表
type: Schema.Types.ObjectId,
ref: 'ForumUser'
}],
created: { created: {
type: Date, type: Date,
required: true, required: true,
......
...@@ -56,6 +56,22 @@ var ForumUserSchema = new Schema({ ...@@ -56,6 +56,22 @@ var ForumUserSchema = new Schema({
type: Schema.Types.ObjectId, type: Schema.Types.ObjectId,
ref: 'ForumHonorTitle' 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: { created: {
type: Date, type: Date,
required: true, required: true,
......
...@@ -39,6 +39,18 @@ exports.updateInfoById=function(fid,entity,callback){ ...@@ -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更新论坛组 //根据ID更新论坛组
exports.deleteInfoById=function(fid,callback){ exports.deleteInfoById=function(fid,callback){
ForumInfo.remove({ _id: fid},function(err,result){ ForumInfo.remove({ _id: fid},function(err,result){
......
...@@ -1199,3 +1199,15 @@ exports.updateThread = function(condition, entity, callback) { ...@@ -1199,3 +1199,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'); ...@@ -7,70 +7,104 @@ var async = require('async');
var forumLimitOperationService = require('../service/forumLimitOperationService'); var forumLimitOperationService = require('../service/forumLimitOperationService');
//创建用户 //创建用户
exports.createUser=function(entity,callback){ exports.createUser = function(entity, callback) {
var forum = new ForumUser(entity); var forum = new ForumUser(entity);
forum.save(function(err, forum) { forum.save(function(err, forum) {
if (err) { if (err) {
console.error(err); console.error(err);
callback(err,null); callback(err, null);
} else { } else {
callback(null,forum); callback(null, forum);
} }
}); });
}; };
//根据Uid获取用户 //根据Uid获取用户
exports.getUserByUid=function(uid,callback){ exports.getUserByUid = function(uid, callback) {
ForumUser.findOne({uid:uid}).populate({ ForumUser.findOne({
uid: uid
}).populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
}).exec(function(err,result){ $ne: 0
if(err){ }
callback(err,null); },
}else{ options: {
if(result ){ sort: {
callback(null,result); order_idx: -1
}else{ }
callback(null,null); }
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
if (result) {
callback(null, result);
} else {
callback(null, null);
} }
} }
}); });
}; };
//根据id获取用户 //根据id获取用户
exports.getUserById=function(id,callback){ exports.getUserById = function(id, callback) {
ForumUser.findOne({_id:id}).populate({ ForumUser.findOne({
_id: id
}).populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
}).exec(function(err,result){ $ne: 0
if(err){ }
callback(err,null); },
}else{ options: {
if(result ){ sort: {
callback(null,result); order_idx: -1
}else{ }
callback(null,null); }
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
if (result) {
callback(null, result);
} else {
callback(null, null);
} }
} }
}); });
}; };
//根据ID更新用户信息 //根据ID更新用户信息
exports.updateUserById=function(uid,entity,callback){ exports.updateUserById = function(uid, entity, callback) {
ForumUser.update({ _id: uid}, entity,null,function(err,result){ 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) { if (err) {
console.error(err); console.error(err);
callback(err,null); callback(err, null);
} else { } 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) { then(function(cont) {
ForumUser.find(q).count(cont); ForumUser.find(q).count(cont);
}).then(function(cont, count) { }).then(function(cont, count) {
...@@ -78,8 +112,16 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){ ...@@ -78,8 +112,16 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){
var limit = count - skip > pageSize ? pageSize : (count - skip); var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({ ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, docs) { }).exec(function(err, docs) {
cont(err, count, docs); cont(err, count, docs);
}); });
...@@ -101,43 +143,68 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){ ...@@ -101,43 +143,68 @@ exports.searchMembers=function(pageNo, pageSize, q, callback){
}; };
//根据nickName查询用户 //根据nickName查询用户
exports.searchMembersByNickName=function(nickName, callback){ exports.searchMembersByNickName = function(nickName, callback) {
var name = { var name = {
$or : [ $or: [{
{nickName : { $regex: nickName, $options: 'i' }}, nickName: {
{displayName : { $regex: nickName, $options: 'i' }} $regex: nickName,
] $options: 'i'
}
}, {
displayName: {
$regex: nickName,
$options: 'i'
}
}]
}; };
ForumUser.find(name).populate({ ForumUser.find(name).populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
}).exec(function(err,result){ $ne: 0
if(err){ }
callback(err,null); },
}else{ options: {
callback(null,result); sort: {
order_idx: -1
}
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, result);
} }
}); });
}; };
//根据mid查询用户 //根据mid查询用户
exports.searchMembersByMid=function(mid, callback){ exports.searchMembersByMid = function(mid, callback) {
ForumUser.find({mid:mid}).populate({ ForumUser.find({
mid: mid
}).populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
}).exec(function(err,result){ $ne: 0
if(err){ }
callback(err,null); },
}else{ options: {
callback(null,result); 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) { then(function(cont) {
ForumUser.find(q).count(cont); ForumUser.find(q).count(cont);
}).then(function(cont, count) { }).then(function(cont, count) {
...@@ -145,8 +212,16 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){ ...@@ -145,8 +212,16 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
var limit = count - skip > pageSize ? pageSize : (count - skip); var limit = count - skip > pageSize ? pageSize : (count - skip);
ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({ ForumUser.find(q).skip(skip).limit(limit).sort('-created').populate({
path: 'honorTitles', path: 'honorTitles',
match: { status: { $ne: 0 }}, match: {
options: { sort:{order_idx:-1} } status: {
$ne: 0
}
},
options: {
sort: {
order_idx: -1
}
}
}).exec(function(err, docs) { }).exec(function(err, docs) {
cont(err, count, docs); cont(err, count, docs);
}); });
...@@ -160,14 +235,13 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){ ...@@ -160,14 +235,13 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
console.error(err); console.error(err);
callback(null, null); callback(null, null);
} else { } else {
if(forumLimitOperation){ if (forumLimitOperation) {
var limit_actions = forumLimitOperation.limit_actions; var limit_actions = forumLimitOperation.limit_actions;
var array = []; var array = [];
for (var i = 0; i < limit_actions.length; i += 1) { for (var i = 0; i < limit_actions.length; i += 1) {
var limit_action = limit_actions[i]; var limit_action = limit_actions[i];
var name = ''; var name = '';
switch(limit_action.limit_type) switch (limit_action.limit_type) {
{
case 1: case 1:
name = '禁言'; name = '禁言';
break; break;
...@@ -180,7 +254,7 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){ ...@@ -180,7 +254,7 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
member = member.toObject(); member = member.toObject();
member.limitActions = array; member.limitActions = array;
callback(null, member); callback(null, member);
}else{ } else {
callback(null, member); callback(null, member);
} }
} }
...@@ -221,13 +295,41 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){ ...@@ -221,13 +295,41 @@ exports.searchMembersAndLimitActions=function(pageNo, pageSize, q, callback){
//根据UID和entCode更新用户信息 //根据UID和entCode更新用户信息
exports.updateUserByUIdAndEntCode=function(condition,entity,callback){ exports.updateUserByUIdAndEntCode = function(condition, entity, callback) {
ForumUser.update(condition, entity,null,function(err,result){ ForumUser.update(condition, entity, null, function(err, result) {
if (err) { if (err) {
console.error(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',
options: {
sort: {created: -1},
populate:"info from" //继续查文章里面的板块信息
}
}).exec(function(err, result) {
if (err) {
callback(err, null);
} else { } 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