fix: profit calculate
This commit is contained in:
@@ -37,41 +37,41 @@ const User = require('../modules/user/user.model');
|
|||||||
const Fund = require('../modules/fund/fund.model');
|
const Fund = require('../modules/fund/fund.model');
|
||||||
const system = require('../modules/system/system.model');
|
const system = require('../modules/system/system.model');
|
||||||
const { createAction } = require('../modules/action/action.handler');
|
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 = {
|
const probe = {
|
||||||
currentIndex: 0
|
currentIndex: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
function awardMine(user, fund) {
|
function awardMine(fund) {
|
||||||
if (!user || !fund || fund.vicFundSum === 0) return 0;
|
if (!fund || fund.vicFundSum === 0) return 0;
|
||||||
const base = +fund.vicFundSum;
|
let rest = +fund.vicFundSum;
|
||||||
const rate = getProfitRate(base);
|
let revenue = 0;
|
||||||
return base * rate;
|
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 : 已领取的社群奖励总额
|
// fund.option.usedGroupReward : 已领取的社群奖励总额
|
||||||
const doReward = async (user, fund) => {
|
const doReward = async (user, fund) => {
|
||||||
if (!user || !fund) return 0;
|
if (!user || !fund) return 0;
|
||||||
const rewardMine = awardMine(user, fund);
|
const rewardMine = awardMine(fund);
|
||||||
if (rewardMine === 0) return 0;
|
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);
|
mylog.info('挖矿奖励: ', rewardMine);
|
||||||
rewardMine && await Fund.findByIdAndUpdate(fund.id, {
|
rewardMine && await Fund.findByIdAndUpdate(fund.id, {
|
||||||
$inc: {
|
$inc: {
|
||||||
@@ -103,6 +103,7 @@ const doReward = async (user, fund) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const mock = {
|
const mock = {
|
||||||
touch: () => { mylog.info('-----------------\n'); },
|
touch: () => { mylog.info('-----------------\n'); },
|
||||||
done: () => { mylog.info('done'); },
|
done: () => { mylog.info('done'); },
|
||||||
|
|||||||
Reference in New Issue
Block a user