diff --git a/config/lib/cron-job.js b/config/lib/cron-job.js index 01ac65c1..66b92e7c 100644 --- a/config/lib/cron-job.js +++ b/config/lib/cron-job.js @@ -2,6 +2,8 @@ var path = require('path'), config = require(path.resolve('./config/config')), + common = require(path.resolve('./config/lib/common')), + scoreLib = require(path.resolve('./config/lib/score')), mongoose = require('mongoose'), chalk = require('chalk'), CronJob = require('cron').CronJob, @@ -191,10 +193,13 @@ function checkUserAccountIdleStatus() { onTick: function () { console.log(chalk.green('checkUserAccountIdleStatus: process!')); + var safeScore = scoreLib.getScoreByLevel(signConfig.idle.notIdleSafeLevel); + User.update( { status: {$ne: 'idle'}, - last_signed: {$lt: Date.now() - signConfig.idle.accountIdleForTime} + last_signed: {$lt: Date.now() - signConfig.idle.accountIdleForTime}, + score: {$lt: safeScore} }, { $set: { diff --git a/config/lib/score.js b/config/lib/score.js index a6c8242e..b3e24dcc 100644 --- a/config/lib/score.js +++ b/config/lib/score.js @@ -9,6 +9,7 @@ var path = require('path'), var traceConfig = config.meanTorrentConfig.trace; var examinationConfig = config.meanTorrentConfig.examination; +var scoreConfig = config.meanTorrentConfig.score; /** * update @@ -47,3 +48,36 @@ module.exports.update = function (req, user, action, value) { } }; +/** + * getLevelByScore + * @param user + * @returns {{level object}} + */ +module.exports.getLevelByScore = function (user) { + var step = scoreConfig.levelStep; + + var level = {}; + var l = Math.floor(Math.sqrt(user.score / step)); + level.score = score; + + level.prevLevel = (l - 1) <= 0 ? 0 : l - 1; + level.currLevel = l; + level.nextLevel = l + 1; + + level.prevLevelValue = level.prevLevel * level.prevLevel * step; + level.currLevelValue = level.currLevel * level.currLevel * step; + level.nextLevelValue = level.nextLevel * level.nextLevel * step; + level.currPercent = Math.ceil((score - level.currLevelValue) / (level.nextLevelValue - level.currLevelValue) * 10000) / 100; + level.currPercentString = level.currPercent + '%'; + + return level; +}; + +/** + * getScoreByLevel + * @param l + * @returns {number} + */ +module.exports.getScoreByLevel = function (l) { + return l * l * scoreConfig.levelStep; +};