From 2b2bdc1dd4260d6a103424cd60b78cd9db7cfa0b Mon Sep 17 00:00:00 2001 From: OldHawk Date: Tue, 12 Sep 2017 10:53:42 +0800 Subject: [PATCH] feat(admin): add fields uptotal of users to count the uploaded torrent file numbers and get uptotal method --- config/env/torrents.js | 2 +- .../controllers/torrents.server.controller.js | 10 +++++++++ .../client/services/users.client.service.js | 10 +++++++++ .../controllers/admin.server.controller.js | 22 +++++++++++++++++++ .../users/server/models/user.server.model.js | 4 ++++ .../server/policies/admin.server.policy.js | 6 +++-- .../server/routes/admin.server.routes.js | 2 ++ 7 files changed, 53 insertions(+), 3 deletions(-) diff --git a/config/env/torrents.js b/config/env/torrents.js index 617835e3..6ddfc5c7 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -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 }, /** diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index ec8b4a5e..3812f6f2 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -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({ diff --git a/modules/users/client/services/users.client.service.js b/modules/users/client/services/users.client.service.js index a9536633..122eb25a 100644 --- a/modules/users/client/services/users.client.service.js +++ b/modules/users/client/services/users.client.service.js @@ -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; } }); diff --git a/modules/users/server/controllers/admin.server.controller.js b/modules/users/server/controllers/admin.server.controller.js index 41696ea1..a644fb44 100644 --- a/modules/users/server/controllers/admin.server.controller.js +++ b/modules/users/server/controllers/admin.server.controller.js @@ -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 */ diff --git a/modules/users/server/models/user.server.model.js b/modules/users/server/models/user.server.model.js index 0c0f6934..09880b10 100644 --- a/modules/users/server/models/user.server.model.js +++ b/modules/users/server/models/user.server.model.js @@ -147,6 +147,10 @@ var UserSchema = new Schema({ type: Number, default: 0 }, + uptotal: { + type: Number, + default: 0 + }, seeded: { type: Number, default: 0 diff --git a/modules/users/server/policies/admin.server.policy.js b/modules/users/server/policies/admin.server.policy.js index d6acdef5..4550e9bd 100644 --- a/modules/users/server/policies/admin.server.policy.js +++ b/modules/users/server/policies/admin.server.policy.js @@ -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']} ] } ] diff --git a/modules/users/server/routes/admin.server.routes.js b/modules/users/server/routes/admin.server.routes.js index 32cbcedf..e699f7b2 100644 --- a/modules/users/server/routes/admin.server.routes.js +++ b/modules/users/server/routes/admin.server.routes.js @@ -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);