feat(users): do not idle if users account level greater than fixed setting value

This commit is contained in:
OldHawk
2018-04-27 11:49:17 +08:00
parent 74d4f07a67
commit 419946ccb1
2 changed files with 40 additions and 1 deletions

View File

@@ -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: {

View File

@@ -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;
};