fix: profit calculate

This commit is contained in:
chaosBreaking
2019-10-26 23:36:47 +08:00
parent 6018713179
commit 1c77c324f3

View File

@@ -37,41 +37,41 @@ const User = require('../modules/user/user.model');
const Fund = require('../modules/fund/fund.model');
const system = require('../modules/system/system.model');
const { createAction } = require('../modules/action/action.handler');
const revenueLadderSheet = [
{amount: 10000, rate: 0.001},
{amount: 40000, rate: 0.003},
{amount: 50000, rate: 0.006},
{amount: 100000, rate: 0.01},
{amount: 300000, rate: 0.015},
{amount: 500000, rate: 0.018},
{amount: NaN, rate: 0.02}
];
const getProfitRate = base => {
if (base > 0 && base <= 10000) {
return 0.001;
} else if (base > 10000 && base <= 50000) {
return 0.003;
} else if (base > 50000 && base <= 100000) {
return 0.006;
} else if (base > 100000 && base <= 200000) {
return 0.01;
} else if (base > 200000 && base <= 500000) {
return 0.015;
} else if (base > 500000 && base <= 1000000) {
return 0.018;
} else if (base > 1000000 && base <= 10000000) {
return 0.02;
} else return 0;
};
const probe = {
currentIndex: 0
};
function awardMine(user, fund) {
if (!user || !fund || fund.vicFundSum === 0) return 0;
const base = +fund.vicFundSum;
const rate = getProfitRate(base);
return base * rate;
function awardMine(fund) {
if (!fund || fund.vicFundSum === 0) return 0;
let rest = +fund.vicFundSum;
let revenue = 0;
for (let level of revenueLadderSheet) {
if (rest - level.amount > 0) {
revenue += level.amount * level.rate;
rest -= level.amount;
} else {
revenue += rest * level.rate;
break;
}
}
return revenue;
}
// fund.option.usedGroupReward : 已领取的社群奖励总额
const doReward = async (user, fund) => {
if (!user || !fund) return 0;
const rewardMine = awardMine(user, fund);
const rewardMine = awardMine(fund);
if (rewardMine === 0) return 0;
const rewardInviter = +user.vicFundSum > 10000 ? rewardMine * 0.04 : 0;
const rewardInviter = +user.vicFundSum > 10000 ? rewardMine * 0.1 : 0;
mylog.info('挖矿奖励: ', rewardMine);
rewardMine && await Fund.findByIdAndUpdate(fund.id, {
$inc: {
@@ -103,6 +103,7 @@ const doReward = async (user, fund) => {
}
});
};
const mock = {
touch: () => { mylog.info('-----------------\n'); },
done: () => { mylog.info('done'); },