Commit aa700ba2 authored by 陈志良's avatar 陈志良

评论下载

parent e2c8aa70
'use strict'; 'use strict';
//插件
var express = require('express'), var express = require('express'),
router = express.Router(), router = express.Router(),
returnCode = require('../../utils/returnCode'), returnCode = require('../../utils/returnCode'),
_ = require('lodash'), _ = require('lodash'),
then = require('thenjs'), then = require('thenjs'),
moment = require('moment'), moment = require('moment'),
nodeExcel = require('excel-export'); nodeExcel = require('excel-export'),
var mongoose = require('mongoose'); mongoose = require('mongoose'),
async = require('async');
//模型
var ForumThread = mongoose.model('ForumThread'), var ForumThread = mongoose.model('ForumThread'),
ForumPVLog = mongoose.model('ForumPVLog'); ForumPVLog = mongoose.model('ForumPVLog');
var forumThreadService = require('../../service/forumThreadService'); //服务
var forumRolePermissionService = require('../../service/forumRolePermissionService'); var forumThreadService = require('../../service/forumThreadService'),
var forumPraiseLogService = require('../../service/forumPraiseLogService'); forumRolePermissionService = require('../../service/forumRolePermissionService'),
var forumShareLogService = require('../../service/forumShareLogService'); forumPraiseLogService = require('../../service/forumPraiseLogService'),
var forumCommentService = require('../../service/forumCommentService'); forumShareLogService = require('../../service/forumShareLogService'),
var forumTagService = require('../../service/forumTagService'); forumCommentService = require('../../service/forumCommentService'),
var forumUserService = require('../../service/forumUserService'); forumTagService = require('../../service/forumTagService'),
forumUserService = require('../../service/forumUserService'),
// var forumLimitActionRefService = require('../../service/forumLimitActionRefService'); // var forumLimitActionRefService = require('../../service/forumLimitActionRefService');
var forumLimitOperationService = require('../../service/forumLimitOperationService'); forumLimitOperationService = require('../../service/forumLimitOperationService'),
var forumAboutMEService = require('../../service/forumAboutMEService'); forumAboutMEService = require('../../service/forumAboutMEService'),
var httpService = require('../../service/httpService'); httpService = require('../../service/httpService');
var userUtil = require('../../utils/user'); var userUtil = require('../../utils/user');
var async = require('async');
module.exports = function(app) { module.exports = function(app) {
app.use('/admin/forum', router); app.use('/admin/forum', router);
...@@ -1020,121 +1023,130 @@ router.get('/thread/:tid/spreadchain', function(req, res, next) { ...@@ -1020,121 +1023,130 @@ router.get('/thread/:tid/spreadchain', function(req, res, next) {
// 导出文章评论内容 // 导出文章评论内容
router.get('/thread/:tid/exportComments', function(req, res, next) { router.get('/thread/:tid/exportComments', function(req, res, next) {
var tid = req.params.tid || null; var tid = req.params.tid || null,
var ent_code = req.query.ent_code || null; ent_code = req.query.ent_code || null;
then(function(cont){
if(tid && ent_code){ if(tid && ent_code){
var conditions = { var conditions = {
ent_code: ent_code, ent_code: ent_code,
thread: tid, thread: tid,
level:1 level:1
}; };
//查询所有评论
//查询所有评论 forumCommentService.getAllCommentByThread(conditions, function(err, docs) {
forumCommentService.getAllCommentByThread(conditions, function(err, results) { cont(err,docs);
if (err) { });
console.log(err); }else{
res.json(returnCode.BUSY); cont('params error');
} else { }
//查询每个一级评论点赞 }).then(function(cont,comments){
var asyncTasks = []; //获取点赞信息
_.forEach(results, function(e) { var asyncTasks = [];
asyncTasks.push(function(cb) { _.forEach(comments, function(e) {
if (e.level != 1) { asyncTasks.push(function(cb) {
cb(null, e); var conditions = {
} else { ent_code:ent_code,
var con = { thread:tid,
ent_code:ent_code, type:2,
thread:tid, comment:e._id
type:2, }
comment:e._id forumPraiseLogService.queryPraiseLogV2(conditions, function(err, results){
} if(err){
console.log(err);
forumPraiseLogService.queryPraiseLogV2(con, function(err, results){ cb(null, e);
if(err){ }else{
console.log(err); if(results){
cb(null, e); var praiseNames = [];
}else{ var praiseOpenIds = [];
if(results){ _.forEach(results, function(e2) {
var praiseNames = []; if(e2.user){
var praiseOpenIds = []; praiseNames.push(e2.user.nickName || '游客');
_.forEach(results, function(e2) { praiseOpenIds.push(e2.user.uid);
praiseNames.push(e2.user.nickName || '游客');
praiseOpenIds.push(e2.user.uid);
});
e.praiseNames = praiseNames;
e.praiseOpenIds = praiseOpenIds;
e.praiseCount = results.length;
}
cb(null, e);
} }
}); });
e.praiseNames = praiseNames;
e.praiseOpenIds = praiseOpenIds;
e.praiseCount = results.length;
} }
}); cb(null, e);
}); }
async.parallel(asyncTasks, function(err, items) {
//表头
var conf = {};
conf.cols = [
{caption:'楼层', type:'string'},
{caption:'发布时间', type:'Date'},
{caption:'openId', type:'string'},
{caption:'会员名', type:'string'},
{caption:'内容', type:'string'},
{caption:'点赞数', type:'number'},
{caption:'点赞人', type:'string'},
{caption:'点赞人openId', type:'string'}
];
//内容
var rows = [];
for (var i = items.length - 1; i >= 0; i--) {
var comment = items[i];
var floor = comment.floor,
time = date_format(comment.created),
openId = comment.from.uid || '',
nickName = comment.from.nickName || '游客',
content = comment.content || '',
praiseCount = comment.praiseCount || 0,
praiseNames = '',
praiseOpenIds = '';
if(comment.praiseNames){
praiseNames = comment.praiseNames.toString();
praiseOpenIds = comment.praiseOpenIds.toString();
}
var this_row = [floor + '', time,openId, nickName, content, praiseCount, praiseNames,praiseOpenIds];
rows.push(this_row);
if(comment.comments.length > 0){
for (var k = 0; k < comment.comments.length; k++) {
var sub_comment = comment.comments[k];
var time = date_format(sub_comment.created);
var openId = sub_comment.from.uid || '';
var nickName = sub_comment.from.nickName || '游客';
var content = sub_comment.content || '';
var this_row = ['回复', time,openId, nickName, content, null, null,null];
rows.push(this_row);
};
}
};
conf.rows = rows;
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.ms-excel');
res.setHeader('Content-Disposition', 'attachment; filename=commentsReport.xlsx');
res.end(result, 'binary');
}); });
} });
}); });
}else{ async.parallel(asyncTasks, function(err, items) {
res.json(returnCode.WRONG_PARAM); cont(err,items);
} });
}).then(function(cont,items){
//表头
var conf = {};
conf.cols = [
{caption:'楼层', type:'string'},
{caption:'发布时间', type:'Date'},
{caption:'openId', type:'string'},
{caption:'会员名', type:'string'},
{caption:'内容', type:'string'},
{caption:'点赞数', type:'number'},
{caption:'点赞人', type:'string'},
{caption:'点赞人openId', type:'string'}
];
//内容
var rows = [];
for (var i = items.length - 1; i >= 0; i--) {
var comment = items[i];
var floor = comment.floor,
time = date_format(comment.created),
openId = '',
nickName = '',
content = comment.content || '',
praiseCount = comment.praiseCount || 0,
praiseNames = '',
praiseOpenIds = '';
if(comment.praiseNames){
praiseNames = comment.praiseNames.toString();
praiseOpenIds = comment.praiseOpenIds.toString();
}
if(comment.from){
openId = comment.from.uid || '';
nickName = comment.from.nickName || '游客';
}
var this_row = [floor + '', time,openId, nickName, content, praiseCount, praiseNames,praiseOpenIds];
rows.push(this_row);
if(comment.comments.length > 0){
for (var k = 0; k < comment.comments.length; k++) {
var sub_comment = comment.comments[k];
var time = date_format(sub_comment.created),
openId = '',
nickName = '',
content = sub_comment.content || '',
to = '';
if(comment.from){
openId = sub_comment.from.uid || '';
nickName = sub_comment.from.nickName || '游客';
}
if(comment.to){
to = sub_comment.to.nickName || '游客';
}
var this_row = [nickName + ' 回复 ' + to, time,openId, nickName, content, 0, null,null];
rows.push(this_row);
};
}
};
conf.rows = rows;
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.ms-excel');
res.setHeader('Content-Disposition', 'attachment; filename=commentsReport.xlsx');
res.end(result, 'binary');
}).fail(function(cont,err){
console.error(err);
if(err === 'params error'){
res.json(returnCode.WRONG_PARAM);
}else{
res.json(returnCode.BUSY);
}
});
}); });
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