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 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'); },
|
||||
|
||||
Reference in New Issue
Block a user