Commit 33d3f3ba authored by 陈家荣's avatar 陈家荣

用户收藏和个人小站接口

parent 6463fd2d
...@@ -16,6 +16,8 @@ var forumCommentService = require('../../service/forumCommentService'); ...@@ -16,6 +16,8 @@ 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 redisPraiseLog = require('../../utils/redisPraiseLog');
var forumUserService = require('../../service/forumUserService');
var forumFollowInfoService = require('../../service/forumFollowInfoService');
var user = require('../../utils/user'); var user = require('../../utils/user');
...@@ -953,3 +955,88 @@ router.get('/info/serachThreads', function(req, res, next) { ...@@ -953,3 +955,88 @@ router.get('/info/serachThreads', function(req, res, next) {
} }
}); });
}); });
//获取用户收藏的帖子,活动贴
router.get('/info/getUserFavorInfo', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var userId = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var q = {
ent_code: ent_code,
from: userId
};
forumFollowInfoService.findAll(q, null, function(err, doc){
if(err || !doc){
console.error(err);
res.json(returnCode.BUSY);
}else {
var info_ids = [];
for(var i = doc.length - 1; i >= 0; i--){
info_ids.push(doc[i].info);
}
var rs = {};
var today = new Date();
async.waterfall([
function(callback) {
var info_condition = {
ent_code: ent_code,
_id:{$in:info_ids}
}
forumInfoService.getAllByGid(info_condition, pageNo, pageSize, function(err, datas) {
callback(err, datas.items);
});
},
function(infos, callback) { //获取用户
var asyncTasks = [];
_.forEach(infos, function(info, i) {
asyncTasks.push(function(cont) {
var conditions = {
ent_code: ent_code,
info: info._id,
level: 1,
status: 1,
$or: [{
isEvent: {
$ne:1
}
}, {
isEvent: 1,
'event.eventStartTime' : {$lte : today}
}]
};
forumThreadService.getAllCountByFid(conditions, function(err, count) {
if (err) {
console.error(err);
cont(err, null);
} else {
if (infos[i].toObject) {
infos[i] = infos[i].toObject();
}
infos[i].favor_by = infos[i].favor_by.length;
infos[i].threadCount = count;
cont(null, info);
}
});
});
});
then.parallel(asyncTasks).then(function(cont, datas) {
callback(null, infos);
}).fail(function(err, cont) {
callback(err, null);
});
}
], function(err, result) {
if (err) {
console.error(err);
res.json(returnCode.BUSY);
} else {
rs.data = result;
res.json(_.assign(rs, returnCode.SUCCESS));
}
});
}
});
});
\ No newline at end of file
...@@ -30,6 +30,10 @@ var ForumModeratorApply = mongoose.model('ForumModeratorApply'); ...@@ -30,6 +30,10 @@ var ForumModeratorApply = mongoose.model('ForumModeratorApply');
var forumModeratorApplyService = require('../../service/forumModeratorApplyService'); var forumModeratorApplyService = require('../../service/forumModeratorApplyService');
var redisThreadList = require('../../utils/redisThreadList'); var redisThreadList = require('../../utils/redisThreadList');
var forumFollowThreadService = require('../../service/forumFollowThreadService');
var forumFollowInfoService = require('../../service/forumFollowInfoService');
var forumFollowUserService = require('../../service/forumFollowUserService');
module.exports = function(app) { module.exports = function(app) {
app.use('/v1/forum', router); app.use('/v1/forum', router);
}; };
...@@ -2139,7 +2143,7 @@ router.get('/thread/:tid/get/subThreads/:type', function(req, res, next) { ...@@ -2139,7 +2143,7 @@ router.get('/thread/:tid/get/subThreads/:type', function(req, res, next) {
if(type == 1){ //最新 if(type == 1){ //最新
sort = '-created'; sort = '-created';
}else if(type == 2){ //最热 }else if(type == 2){ //最热
sort = '-praise_count -comment_count'; sort = '-praise_count -comment_count -created';
} }
if (tid) { if (tid) {
...@@ -2209,8 +2213,6 @@ router.get('/thread/:tid/get/subThreads/:type', function(req, res, next) { ...@@ -2209,8 +2213,6 @@ router.get('/thread/:tid/get/subThreads/:type', function(req, res, next) {
} }
}); });
//H5创建子话题文章 //H5创建子话题文章
router.post('/h5/thread/create', function(req, res, next) { router.post('/h5/thread/create', function(req, res, next) {
var pid = req.body.pid; var pid = req.body.pid;
...@@ -2295,3 +2297,81 @@ router.post('/h5/thread/create', function(req, res, next) { ...@@ -2295,3 +2297,81 @@ router.post('/h5/thread/create', function(req, res, next) {
res.json(returnCode.WRONG_PARAM); res.json(returnCode.WRONG_PARAM);
} }
}); });
//获取用户收藏的帖子,活动贴
router.get('/thread/getUserFavorThread/:type', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var type = req.params.type || null;
var userId = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var q = {
ent_code: ent_code,
from: userId
};
forumFollowThreadService.findAll(q, null, 'thread', function(err, doc){
if(err || !doc){
console.error(err);
res.json(returnCode.BUSY);
}else {
var thread_ids = [];
for(var i = doc.length - 1; i >= 0; i--){
thread_ids.push(doc[i].thread);
}
var today = new Date();
var conditions = {
ent_code: ent_code,
_id:{$in:thread_ids}
};
if(type == 1){
conditions.isEvent = {
$ne:1
}
}else if(type == 2){
conditions.isEvent = 1;
conditions['event.eventStartTime'] = {$lte : today};
}
queryThread(conditions, pageNo, pageSize, null, 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));
});
});
}
});
}
});
});
//获取用户收藏的帖子的ID return Map
router.get('/thread/getUserFavorAllThread', function(req, res, next) {
var userId = user.getMobileUser(req);
var ent_code = req.session.user.ent_code;
var q = {
ent_code: ent_code,
from: userId
};
forumFollowThreadService.findAll(q, null, 'thread', function(err, results){
if(err || !results){
console.error(err);
res.json(returnCode.BUSY);
}else {
var map = { //返回map对象,方便前端查找
data:{}
};
_.forEach(results, function(d){
map.data[d.thread] = 1;
});
res.json(_.assign(map, returnCode.SUCCESS));
}
});
});
\ No newline at end of file
This diff is collapsed.
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//收藏的板块
var ForumFollowInfoSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
from: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumUser'
},
info: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumInfo'
},
created: {
type: Date,
required: true,
default:Date.now
}
}, {
'collection': 'pisns_forum_follow_info'
});
module.exports = mongoose.model('ForumFollowInfo', ForumFollowInfoSchema);
\ No newline at end of file
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//收藏的帖子
var ForumFollowThreadSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
from: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumUser'
},
thread: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumThread'
},
created: {
type: Date,
required: true,
default:Date.now
}
}, {
'collection': 'pisns_forum_follow_thread'
});
module.exports = mongoose.model('ForumFollowThread', ForumFollowThreadSchema);
\ No newline at end of file
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//收藏的用户
var ForumFollowUserSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
from: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumUser'
},
to: {
type: Schema.Types.ObjectId,
require: true,
index: true,
ref: 'ForumUser'
},
created: {
type: Date,
required: true,
default:Date.now
}
}, {
'collection': 'pisns_forum_follow_user'
});
module.exports = mongoose.model('ForumFollowUser', ForumFollowUserSchema);
\ No newline at end of file
...@@ -164,10 +164,8 @@ var ForumThreadSchema = new Schema({ ...@@ -164,10 +164,8 @@ var ForumThreadSchema = new Schema({
required: true, required: true,
default:Date.now default:Date.now
} }
}, { }, {
'collection': 'pisns_forum_thread' 'collection': 'pisns_forum_thread'
}); });
module.exports = mongoose.model('ForumThread', ForumThreadSchema); module.exports = mongoose.model('ForumThread', ForumThreadSchema);
\ No newline at end of file
'use strict';
var mongoose = require('mongoose');
var ForumFollowInfo = mongoose.model('ForumFollowInfo');
exports.create=function(entity,callback){
var forum = new ForumFollowInfo(entity);
forum.save(function(err, doc) {
if (err) {
console.error(err);
callback(err,null);
} else {
callback(null,doc);
}
});
};
exports.remove=function(conditions,callback){
ForumFollowInfo.remove(conditions, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//获取数量
function countAll(conditions,callback) {
ForumFollowInfo.count(conditions, function (err, count) {
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,count);
}
});
}
//分页查询
exports.find= function(pageNo, pageSize, conditions, sort, 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);
var sortby = "-_id";
if(sort){
sortby = sort;
}
ForumFollowInfo.find(conditions).skip(skip).limit(pageSize).sort(sortby).exec(function(err, docs){
if (err) {
console.error(err);
callback(err,null);
} else {
var obj={};
obj.total=count;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.items=docs;
callback(null,obj);
}
});
}
});
};
//获取列表
exports.findAll=function(conditions, sort, callback){
var sortby = "-_id";
if(sort){
sortby = sort;
}
ForumFollowInfo.find(conditions).sort(sortby).exec(function(err, docs){
if (err) {
console.error(err);
callback(err,null);
} else {
callback(null,docs);
}
});
};
exports.isNotFollow= function(conditions, callback) {
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else if(count > 0){
callback(1);
}else{
callback(null);
}
});
};
//获取列表数量
exports.count=function(conditions, callback){
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,count);
}
});
};
'use strict';
var mongoose = require('mongoose');
var ForumFollowThread = mongoose.model('ForumFollowThread');
exports.create = function(entity, callback) {
var forum = new ForumFollowThread(entity);
forum.save(function(err, doc) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, doc);
}
});
};
exports.remove = function(conditions, callback) {
ForumFollowThread.remove(conditions, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//获取数量
function countAll(conditions, callback) {
ForumFollowThread.count(conditions, function(err, count) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, count);
}
});
}
//分页查询
exports.find = function(pageNo, pageSize, conditions, sort, 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);
var sortby = "-_id";
if (sort) {
sortby = sort;
}
ForumFollowThread.find(conditions).skip(skip).limit(pageSize).sort(sortby).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
} else {
var obj = {};
obj.total = count;
obj.pageNo = pageNo;
obj.pageSize = pageSize;
obj.items = docs;
callback(null, obj);
}
});
}
});
};
//获取列表
exports.findAll = function(conditions, sort, fields, callback) {
var sortby = "-_id";
if (sort) {
sortby = sort;
}
ForumFollowThread.find(conditions).select(fields).sort(sortby).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, docs);
}
});
};
exports.isNotFollow = function(conditions, callback) {
countAll(conditions, function(err, count) {
if (err) {
console.error(err);
callback(err, null);
} else if (count > 0) {
callback(1);
} else {
callback(null);
}
});
};
//获取列表数量
exports.count = function(conditions, callback) {
countAll(conditions, function(err, count) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, count);
}
});
};
//获取列表
exports.findWithThread = function(conditions, subFields, callback) {
ForumFollowThread.find(conditions).populate({
path: 'thread',
select: subFields
}).exec(function(err, docs) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, docs);
}
});
};
'use strict';
var mongoose = require('mongoose');
var ForumFollowUser = mongoose.model('ForumFollowUser');
exports.create=function(entity,callback){
var forum = new ForumFollowUser(entity);
forum.save(function(err, doc) {
if (err) {
console.error(err);
callback(err,null);
} else {
callback(null,doc);
}
});
};
exports.remove=function(conditions,callback){
ForumFollowUser.remove(conditions, function(err, result) {
if (err) {
console.error(err);
callback(err, null);
} else {
callback(null, null);
}
});
};
//获取数量
function countAll(conditions,callback) {
ForumFollowUser.count(conditions, function (err, count) {
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,count);
}
});
}
//分页查询
exports.find= function(pageNo, pageSize, conditions, sort, 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);
var sortby = "-_id";
if(sort){
sortby = sort;
}
ForumFollowUser.find(conditions).populate({
path: 'to',
select: 'uid mid nickName icon honorTitles'
}).skip(skip).limit(pageSize).sort(sortby).exec(function(err, docs){
if (err) {
console.error(err);
callback(err,null);
} else {
var obj={};
obj.total=count;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.items=docs;
callback(null,obj);
}
});
}
});
};
//获取列表
exports.findAll=function(conditions, sort, callback){
var sortby = "-_id";
if(sort){
sortby = sort;
}
ForumFollowUser.find(conditions).sort(sortby).exec(function(err, docs){
if (err) {
console.error(err);
callback(err,null);
} else {
callback(null,docs);
}
});
};
exports.isNotFollow= function(conditions, callback) {
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else if(count > 0){
callback(1);
}else{
callback(null);
}
});
};
//获取列表
exports.count=function(conditions, callback){
countAll(conditions,function(err,count){
if(err){
console.error(err);
callback(err,null);
}else{
callback(null,count);
}
});
};
\ No newline at end of file
...@@ -19,6 +19,21 @@ exports.createUser = function(entity, callback) { ...@@ -19,6 +19,21 @@ exports.createUser = function(entity, callback) {
}); });
}; };
//根据Uid获取用户
exports.getByConditionsSelectyField = function(conditions, fields, callback) {
ForumUser.findOne(conditions).select(fields).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
if (result) {
callback(null, result);
} else {
callback(null, null);
}
}
});
};
//根据Uid获取用户 //根据Uid获取用户
exports.getUserByUid = function(uid, callback) { exports.getUserByUid = function(uid, callback) {
ForumUser.findOne({ ForumUser.findOne({
...@@ -381,3 +396,14 @@ exports.searchMembersWithFields = function(q, fields, sort, callback) { ...@@ -381,3 +396,14 @@ exports.searchMembersWithFields = function(q, fields, sort, callback) {
callback(err, docs); callback(err, docs);
}); });
}; };
//查询用户收藏记录
exports.getUserFavorThreadIds = function(q, fields, callback) {
ForumUser.findOne(q).select(fields).exec(function(err, result) {
if (err) {
callback(err, null);
} else {
callback(null, result);
}
});
};
\ No newline at end of file
'use strict'; 'use strict';
var _ = require('lodash');
var request = require('request');
var env = process.env.NODE_ENV;
var API_ADDRESS = 'http://localhost:8080';
if (env == 'sandbox') {
API_ADDRESS = 'http://rest.wxpai.cn';
} else if (env == 'production') {
API_ADDRESS = 'https://rest.wxpai.cn';
}
var forumUserService=require('../service/forumUserService'); var forumUserService=require('../service/forumUserService');
exports.getMobileUser=function(req){ exports.getMobileUser=function(req){
return req.session.mobileForumUser.userId; return req.session.mobileForumUser.userId;
// return '55015675868b65a028187c49';
} }
exports.getOpenId=function(req){ exports.getOpenId=function(req){
...@@ -84,3 +94,21 @@ exports.identifyUser=function() { ...@@ -84,3 +94,21 @@ exports.identifyUser=function() {
} }
} }
exports.findMember=function(ent_code, mid, callback){
var url = API_ADDRESS + '/v1.0/internal/member/infoAndRankInfo';
request.post({
url: url,
json: {
entCode:ent_code,
ids:[mid]
}
}, function(e, r, body) {
if (e) {
console.log(e)
callback(e, null);
}else{
callback(null, body.data);
}
});
}
\ 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