Commit 3d210033 authored by 刘文胜's avatar 刘文胜

黑名单

parent 068e2633
'use strict';
var express = require('express'),
router = express.Router(),
returnCode = require('../../utils/returnCode'),
_ = require('lodash');
var ForumBlackListService=require('../../service/forumBlackListService');
var ForumUserService=require('../../service/forumUserService');
module.exports = function(app) {
app.use('/admin/forum', router);
};
//增加黑名单
router.post('/blacklist', function(req, res, next) {
var ent_code=req.session.user.ent_code;
ForumBlackListService.addBlack(req.body,ent_code,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(_.assign(result, returnCode.SUCCESS));
}
});
});
//导入黑名单excel
router.post('/importExcelBlacklist', function(req, res, next) {
var blacks = req.body.blacks;
var ent_code=req.session.user.ent_code;
ForumBlackListService.addBlacks(blacks,ent_code,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(_.assign(result, returnCode.SUCCESS));
}
});
});
//获取黑名单分页列表
router.get('/blacklist', function(req, res, next) {
var pageNo = req.query.pageNo || 1;
var pageSize = req.query.pageSize || 10;
var status=req.query.status;
var blackOpenId = req.query.blackOpenId;
var conditions={
ent_code:req.session.user.ent_code
};
if(status){
conditions.status = status;
}
if(blackOpenId){
conditions.blackOpenId = {
$regex: blackOpenId,
$options: 'i'
};
}
ForumBlackListService.getBlackPageList(conditions,pageNo,pageSize,function(err,results){
if(err){
console.error(err);
res.json(returnCode.BUSY);
}else{
res.json(_.assign(results, returnCode.SUCCESS));
}
});
});
//获取黑名单根据id
router.get('/blacklist/:id', function(req, res, next) {
var id = req.params.id;
ForumBlackListService.getBlackById(id,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(_.assign(result, returnCode.SUCCESS));
}
});
});
//删除黑名单根据id
router.get('/blacklist/:id/del', function(req, res, next) {
var id = req.params.id;
ForumBlackListService.removeBlackById(id,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(_.assign(result, returnCode.SUCCESS));
}
});
});
//更新
router.post('/blacklist/:id', function(req, res, next) {
var id = req.params.id;
ForumBlackListService.updateBlackById(id,req.body,function(err,result){
if(err){
res.json(returnCode.BUSY);
}else{
res.json(_.assign(result, returnCode.SUCCESS));
}
});
});
router.get('/userList', function(req, res, next) {
var obj={};
obj.items=[];
ForumUserService.getUsers(function(err,results){
if(err){
res.json(returnCode.BUSY);
}else{
obj.items = results;
res.json(_.assign(obj, returnCode.SUCCESS));
}
});
});
\ No newline at end of file
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
//黑名单
var BlackListSchema = new Schema({
ent_code: {
type: Number,
require: true,
index: true
},
blackOpenId:{//被加入黑名单的openid
type: String,
require: false,
index: true
},
blackUser: { //被加入黑名单的user
type: Schema.Types.ObjectId,
require: false,
index: true,
ref: 'ForumUser'
},
reason: { //加入黑名单的原因
type: String,
require: false
},
begin: {//黑名单有效时间
type: Date,
require: false
},
end: {//黑名单有效时间
type: Date,
required: false
},
created: {
type: Date,
required: true,
default:Date.now
},
status:{//是否可用 1/0
type: Number,
require: true,
index: true,
default:1
}
}, {
'collection': 'pisns_forum_blacklist'
});
module.exports = mongoose.model('BlackList', BlackListSchema);
\ No newline at end of file
'use strict';
var mongoose = require('mongoose');
var BlackList = mongoose.model('BlackList');
var ForumUserService = require("./forumUserService");
var async=require('async');
exports.getBlackPageList=function(condition,pageNo,pageSize,callback){
var _condition = condition || {};
var pageNo = Number(pageNo) || 1;
var pageSize = pageSize || 10;
var obj={};
obj.total=0;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.items=[];
var search = function(count){
var skip = (pageNo - 1) * pageSize;
skip = skip >0 ? skip :0;
var limit = pageSize;
BlackList.find(_condition)
.populate('blackUser').limit(limit)
.skip(skip).sort('-created').exec(function(err,blackUsers){
if(err){
console.error(err);
return callback && callback(err,null);
}
obj.total=count;
obj.pageNo=pageNo;
obj.pageSize=pageSize;
obj.items=blackUsers;
return callback && callback(null,obj);
});
};
BlackList.count(_condition, function (err, count) {
if(err){
return callback && callback(err,null);
}
if(!!!count){
return callback && callback(null,obj);
}
return search(count);
});
};
exports.addBlack = function(blackList,entcode,callback){
if(!!!blackList ||
(!!!blackList.blackOpenId && !!!blackList.uid)){
return callback && callback('bad args');
}
blackList.ent_code = entcode;
async.waterfall([function(cb) {
var uid =blackList.uid;
delete blackList.uid;
if(!!!uid){
return cb();
}
ForumUserService.getUserById(uid,
function(err,result){
if(!!!err && result){
blackList.blackUser = result;
}
cb();
});
},
function(n, cb) {
var _blackList= new BlackList(blackList);
_blackList.save(function(err, black) {
if(err){
console.error(err);
return callback && callback(err);
}
return callback && callback(null,black);
});
}],
function(err, result) {
return callback && callback(err);
});
};
exports.addBlacks = function(blacks,entcode,callback){
if(!!!blacks ||
!!!blacks.length){
return callback && callback('bad args');
}
var asyncTasks = [];
blacks.forEach(function(black){
asyncTasks.push(function(callback) {
exports.addBlack(black,entcode,function(err,result){
callback(null, !!err ? {err:err} : result);
});
});
});
async.parallel(asyncTasks, function(err, results) {
if (err || !!!results || !!!results.length) {
return callback && callback(err || "操作失败!");
}
var sucs = [];
var errs = [];
results.forEach(function(result){
if(result){
if(result.err){
errs.push(result.err);
}else{
sucs.push(result);
}
}
});
return callback && callback(null,{sucs:sucs,errs:errs});
});
};
exports.getBlackById = function(id,callback){
BlackList.findById(id).populate('blackUser').exec(function(err, black) {
if (err) {
return callback && callback(err,null);
}
return callback && callback(null,black);
});
};
//根据ID更新黑名单
exports.updateBlackById=function(id,entity,callback){
if(!!!id ||!!!entity){
return callback && callback('bad args');
}
async.waterfall([function(cb) {
var uid =entity.uid;
delete entity.uid;
delete entity.blackUser;
if(!!!uid){
return cb();
}
ForumUserService.getUserById(uid,
function(err,result){
if(!!!err && result){
entity.blackUser = result._id;
}
cb();
});
},
function(n, cb) {
BlackList.update({ _id: id}, entity,null,function(err,result){
if (err) {
console.error(err);
return callback && callback(err,null);
}
return callback && callback(null,result);
});
}],
function(err, result) {
return callback && callback(err);
});
};
exports.removeBlackById = function(id,callback){
BlackList.remove({ _id: id},function(err,result){
if (err) {
return callback && callback(err,null);
}
return callback && callback(null,result);
});
}
\ No newline at end of file
...@@ -56,3 +56,18 @@ exports.updateUserById=function(uid,entity,callback){ ...@@ -56,3 +56,18 @@ exports.updateUserById=function(uid,entity,callback){
} }
}); });
}; };
exports.getUsers=function(callback){
ForumUser.find({}).exec(function(err,results){
if(err){
callback(err,null);
}else{
if(results){
callback(null,results);
}else{
callback(null,null);
}
}
});
};
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