diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TeamPerformanceSortVo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TeamPerformanceSortVo.java index 8df9e9750ba4ad8bb48fee91be7ac5e8e2da9921..63f0b19773aa4f0109140ed43b964e2672941028 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TeamPerformanceSortVo.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TeamPerformanceSortVo.java @@ -10,5 +10,7 @@ import lombok.Data; public class TeamPerformanceSortVo { private Double growthRate; + private Double monthPerformance; + private TeamPerformance teamPerformance; } diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java index 39a59ee63eac3a4edb61de61057c3c29a10c0d6d..77bfc97a5b1931e2ef4134c7de00195968d4d4a2 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java @@ -13,7 +13,6 @@ import cn.wisenergy.service.Manager.AccountManager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -160,10 +159,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo> //5ã€èŽ·å–所有用户,如果会员ç‰çº§æ˜¯é»„金以上,计算月度收益 List<User> userList = usersMapper.getAllGoldUser(); for (User user : userList) { - boolean bool = monthlyIncome(totalMoney, user); - if (!bool) { - continue; - } + monthlyIncome(totalMoney, user); } } return R.ok(0, true); @@ -192,10 +188,11 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo> //1ã€åˆ¤æ–当å‰æœˆæ˜¯å¦æ˜¯ä¸šç»©å¼€å§‹çš„第一个月 List<TeamPerformance> teamPerformances = teamPerformanceMapper.getByBeforeTime(new Date()); + //获å–å½“æœˆæ‰€æœ‰äººä¸šç»©æ€»é¢ + Double totalMoney = teamPerformanceMapper.countByTime(new Date()); + //2ã€é›†åˆä¸ºç©º 是业绩开始的第一个月 if (CollectionUtils.isEmpty(teamPerformances)) { - //获å–å½“æœˆæ‰€æœ‰äººä¸šç»©æ€»é¢ - Double totalMoney = teamPerformanceMapper.countByTime(new Date()); double number = Math.floor(totalMoney / 3980 / 12); if (number != 0) { //获å–月业绩å‰20用户 @@ -261,6 +258,13 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo> } } teamVo.setGrowthRate(growthRate); + double monthPerformance; + if (null == teamPerformance.getMonthTeamPerformance()) { + monthPerformance = 0.00; + } else { + monthPerformance = teamPerformance.getMonthTeamPerformance().doubleValue(); + } + teamVo.setMonthPerformance(monthPerformance); teamVo.setTeamPerformance(teamPerformance); listVo.add(teamVo); } @@ -268,10 +272,59 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo> //对集åˆè¿›è¡ŒæŽ’åº listVo.sort(Comparator.comparing(TeamPerformanceSortVo::getGrowthRate).reversed()); - //å–排åå‰20çš„ - listVo.subList(0, 20); - return R.ok(0,true); + if (listVo.size() >= 20) { + //计算å‰20的总业绩 + double total = listVo.stream().mapToDouble(TeamPerformanceSortVo::getMonthPerformance).sum(); + double number = Math.floor(totalMoney / 3980 / 12); + + //å–排åå‰20çš„ + listVo.subList(0, 20); + for (TeamPerformanceSortVo sortVo : listVo) { + String userId = sortVo.getTeamPerformance().getUserId(); + Integer userLevel = sortVo.getTeamPerformance().getUserLevel(); + //获å–最大进æ¥å¥– 百分比 + MemberPercent memberPercent = memberPercentMapper.getByLevelAndType(userLevel, 3); + + //计算收益 + double userTeamPerformance = sortVo.getTeamPerformance().getMonthTeamPerformance().doubleValue(); + double percent = memberPercent.getPercent().doubleValue(); + + double income = number * 3980 * percent * userTeamPerformance / total; + //获å–è´¦æˆ·ä¿¡æ¯ + AccountInfo accountInfo = accountMapper.getByUserId(userId); + accountInfo.setPerformanceMonth(new BigDecimal(income)); + + //更新用户账户表 + accountMapper.updateById(accountInfo); + } + return R.ok(0, true); + } else { + //计算总业绩 + double total = listVo.stream().mapToDouble(TeamPerformanceSortVo::getMonthPerformance).sum(); + double number = Math.floor(totalMoney / 3980 / 12); + + for (TeamPerformanceSortVo sortVo : listVo) { + String userId = sortVo.getTeamPerformance().getUserId(); + Integer userLevel = sortVo.getTeamPerformance().getUserLevel(); + //获å–最大进æ¥å¥– 百分比 + MemberPercent memberPercent = memberPercentMapper.getByLevelAndType(userLevel, 3); + + //计算收益 + double userTeamPerformance = sortVo.getTeamPerformance().getMonthTeamPerformance().doubleValue(); + double percent = memberPercent.getPercent().doubleValue(); + + double income = number * 3980 * percent * userTeamPerformance / total; + + //获å–è´¦æˆ·ä¿¡æ¯ + AccountInfo accountInfo = accountMapper.getByUserId(userId); + accountInfo.setPerformanceMonth(new BigDecimal(income)); + + //更新用户账户表 + accountMapper.updateById(accountInfo); + } + } + return R.ok(0, true); } public void getUser(List<User> list, String userId) {