From 668f0a7df41bf0cd8bceb4ef31dfc77737c7b475 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Fri, 8 Sep 2017 10:57:50 +0800 Subject: [PATCH] feat(announce): write upload & download data size and seed time to H&R torrent complete record and update user`s H&R warning numbers --- config/env/torrents.js | 1 + .../announces.server.controller.js | 46 +++++++++++-------- .../controllers/torrents.server.controller.js | 5 ++ .../server/models/complete.server.model.js | 2 +- 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/config/env/torrents.js b/config/env/torrents.js index bd6d8e67..0bf7c7e0 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -264,6 +264,7 @@ module.exports = { forbiddenDownloadMinWarningNumber: 5, scoreToRemoveWarning: 10000 }, + userStatus: { name: 'STATUS', value: [ diff --git a/modules/announce/server/controllers/announces.server.controller.js b/modules/announce/server/controllers/announces.server.controller.js index be5c12dd..7cb86ce2 100644 --- a/modules/announce/server/controllers/announces.server.controller.js +++ b/modules/announce/server/controllers/announces.server.controller.js @@ -294,6 +294,7 @@ exports.announce = function (req, res) { var comp = new Complete(); comp.torrent = req.torrent._id; comp.user = req.passkeyuser._id; + comp.complete = req.seeder ? true : false; comp.save(function (err) { if (err) { @@ -398,6 +399,8 @@ exports.announce = function (req, res) { writeUpDownData uploaded,downloaded update complete data if completeTorrent is exist + if has upload and download data size, write data size, + write time of seed(complete) whether or not u/d is 0 ---------------------------------------------------------------*/ function (done) { console.log('---------------WRITE_UP_DOWN_DATA----------------'); @@ -407,36 +410,43 @@ exports.announce = function (req, res) { if (req.currentPeer !== undefined) { var curru = query.uploaded - req.currentPeer.peer_uploaded; var currd = query.downloaded - req.currentPeer.peer_downloaded; + var u = Math.round(curru * udr.ur); var d = Math.round(currd * udr.dr); - if (req.passkeyuser.isVip) { - u = u * config.meanTorrentConfig.torrentSalesValue.vip.Ur; - d = d * config.meanTorrentConfig.torrentSalesValue.vip.Dr; - } - req.passkeyuser.update({ - $inc: {uploaded: u, downloaded: d} - }).exec(); - - //write complete data to completeTorrent - if (req.completeTorrent) { - req.completeTorrent.update({ - $inc: { - total_uploaded: curru, - total_downloaded: currd - } + if (curru > 0 || currd > 0) { + if (req.passkeyuser.isVip) { + u = u * config.meanTorrentConfig.torrentSalesValue.vip.Ur; + d = d * config.meanTorrentConfig.torrentSalesValue.vip.Dr; + } + req.passkeyuser.update({ + $inc: {uploaded: u, downloaded: d} }).exec(); - //only add seed time for completed torrent - if (req.completeTorrent.complete) { + //write complete data to completeTorrent + if (req.completeTorrent) { req.completeTorrent.update({ $inc: { - total_seed_time: config.meanTorrentConfig.announce.announceInterval + total_uploaded: curru, + total_downloaded: currd } }).exec(); } } + //only add seed time for completed torrent + if (req.completeTorrent && req.completeTorrent.complete) { + req.completeTorrent.update({ + $inc: { + total_seed_time: config.meanTorrentConfig.announce.announceInterval + } + }).exec(); + } + //update warning status + if (req.completeTorrent) { + req.completeTorrent.countHnRWarning(req.passkeyuser); + } + //create trace log if (curru > 0 || currd > 0) { traceLogCreate(req, traceConfig.action.userAnnounceData, { diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index e5c036bc..222912fa 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -505,6 +505,9 @@ exports.toggleHnRStatus = function (req, res) { res.json(torrent); } }); + + //TODO: remove the complete data and update user`s warning number when the H&R prop to false + }; /** @@ -728,6 +731,8 @@ exports.delete = function (req, res) { torrent: torrent._id }); + //TODO: remove the complete data and update user`s warning number if the torrent has H&R prop + torrent.remove(function (err) { if (err) { return res.status(422).send({ diff --git a/modules/torrents/server/models/complete.server.model.js b/modules/torrents/server/models/complete.server.model.js index eaf2861d..c2858724 100644 --- a/modules/torrents/server/models/complete.server.model.js +++ b/modules/torrents/server/models/complete.server.model.js @@ -109,7 +109,7 @@ function countSeedDay(t) { */ CompleteSchema.methods.countHnRWarning = function (u) { if (this.complete) { - if (this.total_seed_day >= hnrConfig.condition.seedTime || this.total_ratio >= hnrConfig.condition.ratio) { + if (this.total_seed_day >= hnrConfig.condition.seedTime || this.total_ratio === -1 || this.total_ratio >= hnrConfig.condition.ratio) { if (this.hnr_warning) { this.update({ $set: {hnr_warning: false}