diff --git a/src/jobs/jobs.js b/src/jobs/jobs.js index 0d610d9..b9dbcba 100644 --- a/src/jobs/jobs.js +++ b/src/jobs/jobs.js @@ -23,7 +23,24 @@ const { createAction } = require('../modules/action/action.handler'); const { createNewFund } = require('../modules/fund/fund.handler'); const tokenReleaseRate = 0.2; - +async function awardMine(user, fund, i) { + const released = fund.releasedAmout || 0; + if (released === fund.releasedAmout) { + await Fund.findByIdAndUpdate(fund.id, { + $set: { + [`fundList.${i}.status`]: 2 //标记失效 + } + }); + return 0; + } + const rewardMine = +fund.amount * tokenReleaseRate; + return rewardMine; +} +function awardInvite(user, fund, allInviteReward) { + const rewardInvite = allInviteReward - (fund.option.usedGroupReward || 0); // 求增量: 总额 - 已领取总额(fundSum) + // 挖矿奖励 = 充值金额奖励 + 社区奖励 + return rewardInvite; +} // fund.option.usedGroupReward : 已领取的社群奖励总额 const doReward = async (user, fund) => { // 1.对于充值的fundList的每一项,按照2%进行发放,累加到asset.vic,添加action,类型为1 @@ -32,19 +49,9 @@ const doReward = async (user, fund) => { const fundlist = fund.fundList; for (let i = 0, len = fundlist.length; i < len; ++i) { const fund = fundlist[i]; - const released = fund.releasedAmout || 0; - if (released === fund.releasedAmout) { - await Fund.findByIdAndUpdate(fund.id, { - $set: { - [`fundList.${i}.status`]: 2 //标记失效 - } - }); - continue; - } - const allInviteReward = (+user.group.length || 0) * 10; // 计算出从开始到现在邀请奖励总额 - const rewardInvite = allInviteReward - (fund.option.usedGroupReward || 0); // 求增量: 总额 - 已领取总额(fundSum) - // 挖矿奖励 = 充值金额奖励 + 社区奖励 - const rewardMine = +fund.amount * tokenReleaseRate; + const allInviteReward = (+user.group.length || 0) * 10; + const rewardMine = awardMine(user, fund, i); + const rewardInvite = awardInvite(user, fund, allInviteReward); const reward = rewardMine + rewardInvite; await Fund.findByIdAndUpdate(fund.id, { $inc: { @@ -55,7 +62,7 @@ const doReward = async (user, fund) => { 'asset.usdt': allInviteReward // 用来记录所有社群奖励总额 } }).then(() => { - createAction(1, { + rewardMine > 0 && createAction(1, { userId: fund.userId, tokenType: 'vic', amount: rewardMine, @@ -83,7 +90,8 @@ const jobs = [ if (typeof currentIndex !== 'number') { currentIndex = 0; await new system({ - key: currentIndex + key: 'userIndex4job', + value: currentIndex }).save(); }