feat(admin): add fields uptotal of users to count the uploaded torrent file numbers and get uptotal method

This commit is contained in:
OldHawk
2017-09-12 10:53:42 +08:00
parent 3302bf478d
commit 2b2bdc1dd4
7 changed files with 53 additions and 3 deletions

View File

@@ -57,7 +57,7 @@ module.exports = {
admin: 'admin@chd.im',
baseUrl: 'http://chd.im:3000',
clientBlackListUrl: 'http://chd.im:3000/client_black_list',
privateTorrentCmsMode: true
privateTorrentCmsMode: false
},
/**

View File

@@ -388,6 +388,11 @@ exports.create = function (req, res) {
scoreUpdate(req, req.user, scoreConfig.action.uploadTorrent);
//update user uptotal fields
req.user.update({
$inc: {uptotal: 1}
}).exec();
//scrape torrent status info in public cms mode
if (!config.meanTorrentConfig.announce.privateTorrentCmsMode && config.meanTorrentConfig.scrapeTorrentStatus.onTorrentUpload) {
scrape.doScrape(torrent);
@@ -755,6 +760,11 @@ exports.delete = function (req, res) {
torrent: torrent._id
});
//update user uptotal fields
torrent.user.update({
$inc: {uptotal: -1}
}).exec();
//remove the complete data and update user`s warning number if the torrent has H&R prop
removeTorrentHnRWarning(torrent._id);
Complete.remove({

View File

@@ -137,6 +137,13 @@
userId: '@userId',
userDownloaded: '@userDownloaded'
}
},
getUserUploadedTotal: {
method: 'GET',
url: '/api/users/:userId/uptotal',
params: {
userId: '@userId'
}
}
});
@@ -155,6 +162,9 @@
},
setUserDownloaded: function (params) {
return this.updateUserDownloaded(params).$promise;
},
countUserUploaded: function (params) {
return this.getUserUploadedTotal(params).$promise;
}
});

View File

@@ -8,6 +8,7 @@ var path = require('path'),
mongoose = require('mongoose'),
User = mongoose.model('User'),
Peer = mongoose.model('Peer'),
Torrent = mongoose.model('Torrent'),
Complete = mongoose.model('Complete'),
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
traceLogCreate = require(path.resolve('./config/lib/tracelog')).create;
@@ -317,6 +318,27 @@ exports.getUserWarning = function (req, res) {
});
};
/**
* getUserUploadedTotal
* @param req
* @param res
*/
exports.getUserUploadedTotal = function (req, res) {
Torrent.count({
user: req.user._id
}, function (err, count) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json({
total: count
});
}
});
};
/**
* User middleware
*/

View File

@@ -147,6 +147,10 @@ var UserSchema = new Schema({
type: Number,
default: 0
},
uptotal: {
type: Number,
default: 0
},
seeded: {
type: Number,
default: 0

View File

@@ -31,13 +31,15 @@ exports.invokeRolesPolicies = function () {
{resources: '/api/users/:userId/downloaded', permissions: '*'},
{resources: '/api/users/:userId/seeding', permissions: '*'},
{resources: '/api/users/:userId/leeching', permissions: '*'},
{resources: '/api/users/:userId/warning', permissions: '*'}
{resources: '/api/users/:userId/warning', permissions: '*'},
{resources: '/api/users/:userId/uptotal', permissions: '*'}
]
},
{
roles: ['user'],
allows: [
{resources: '/api/users/:userId', permissions: ['get']}
{resources: '/api/users/:userId', permissions: ['get']},
{resources: '/api/users/:userId/uptotal', permissions: ['get']}
]
}
]

View File

@@ -38,6 +38,8 @@ module.exports = function (app) {
.get(admin.getUserLeeching);
app.route('/api/users/:userId/warning').all(adminPolicy.isAllowed)
.get(admin.getUserWarning);
app.route('/api/users/:userId/uptotal').all(adminPolicy.isAllowed)
.get(admin.getUserUploadedTotal);
// Finish by binding the user middleware
app.param('userId', admin.userByID);