diff --git a/src/jobs/mine.js b/src/jobs/mine.js index b3b148c..9c24099 100644 --- a/src/jobs/mine.js +++ b/src/jobs/mine.js @@ -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'); },