| | |
| | | @GetMapping("/commissionDetail") |
| | | @ApiOperation(value = "分佣统计", tags = "管理后台-首页统计") |
| | | public R<CommissionDetail> commissionDetail(CommissionDetail cd) { |
| | | Long userid = tokenService.getLoginUser().getUserid(); |
| | | SysUser sysUser = sysUserClient.getSysUser(userid).getData(); |
| | | LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0); |
| | | if(sysUser.getRoleType() == 2){ |
| | | queryWrapper.eq(AppUser::getShopId, sysUser.getObjectId()); |
| | | } |
| | | LocalDateTime startTime = cd.getStartTime(); |
| | | LocalDateTime endTime = cd.getEndTime(); |
| | | queryWrapper.ge(null != startTime, AppUser::getCreateTime, startTime); |
| | | queryWrapper.le(null != endTime, AppUser::getCreateTime, endTime); |
| | | queryWrapper.orderByAsc(AppUser::getCreateTime); |
| | | List<AppUser> appUserList = appUserService.list(queryWrapper); |
| | | if (appUserList.isEmpty()) { |
| | | return R.ok(new CommissionDetail()); |
| | | } |
| | | BigDecimal totalCommission = BigDecimal.ZERO; |
| | | BigDecimal totalServiceFee = BigDecimal.ZERO; |
| | | BigDecimal totalUserCommission = BigDecimal.ZERO; |
| | | Map<Integer, BigDecimal> vipCommissions = new HashMap<>(); |
| | | Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>(); |
| | | for (AppUser appUser : appUserList) { |
| | | BigDecimal distributionAmount = Optional.ofNullable(appUser.getTotalDistributionAmount()).orElse(BigDecimal.ZERO); |
| | | totalCommission = totalCommission.add(distributionAmount); |
| | | Integer vipId = appUser.getVipId(); |
| | | if (vipId != null && vipId >= 1 && vipId <= 7) { |
| | | vipCommissions.merge(vipId, distributionAmount, BigDecimal::add); |
| | | |
| | | String dateKey = appUser.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) |
| | | .merge(vipId, distributionAmount, BigDecimal::add); |
| | | } |
| | | } |
| | | List<Shop> data = shopClient.getAllShop().getData(); |
| | | if(sysUser.getRoleType() == 2){ |
| | | data = Arrays.asList(shopClient.getShopById(sysUser.getObjectId()).getData()); |
| | | } |
| | | for (Shop shop : data) { |
| | | totalServiceFee = totalServiceFee.add(shop.getServerGiveawayMoney()); |
| | | totalUserCommission = totalUserCommission.add(shop.getGiveawayMoney()); |
| | | } |
| | | |
| | | R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), null); |
| | | List<ShopBalanceStatement> data1 = r.getData(); |
| | | if (!CollectionUtils.isEmpty(data1)){ |
| | | for (ShopBalanceStatement shopBalanceStatement : data1) { |
| | | String dateKey = shopBalanceStatement.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | Integer type = shopBalanceStatement.getType(); |
| | | if (type == 1){ |
| | | type = 8; |
| | | }else if (type == 2){ |
| | | type = 9; |
| | | }else { |
| | | type = 10; |
| | | } |
| | | dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) |
| | | .merge(type, shopBalanceStatement.getVariableAmount(), BigDecimal::add); |
| | | } |
| | | } |
| | | |
| | | |
| | | CommissionDetail commissionDetail = new CommissionDetail(); |
| | | commissionDetail.setTotalCommission(totalCommission); |
| | | commissionDetail.setTotalServiceFee(totalServiceFee); |
| | | commissionDetail.setTotalUserCommission(totalUserCommission); |
| | | |
| | | commissionDetail.setTotalNormalCommission(vipCommissions.getOrDefault(1, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalGoldCommission(vipCommissions.getOrDefault(2, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalDiamondCommission(vipCommissions.getOrDefault(3, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalAgentCommission(vipCommissions.getOrDefault(4, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalSuperAgentCommission(vipCommissions.getOrDefault(5, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalTopAgentCommission(vipCommissions.getOrDefault(6, BigDecimal.ZERO)); |
| | | commissionDetail.setTotalPartnerCommission(vipCommissions.getOrDefault(7, BigDecimal.ZERO)); |
| | | |
| | | List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream() |
| | | .map(entry -> { |
| | | CommissionDate commissionDate = new CommissionDate(); |
| | | commissionDate.setDate(entry.getKey()); |
| | | Map<Integer, BigDecimal> dailyCommissions = entry.getValue(); |
| | | commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO)); |
| | | commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO)); |
| | | commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO)); |
| | | commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO)); |
| | | commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO)); |
| | | commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO)); |
| | | commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO)); |
| | | BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission()) |
| | | .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission()); |
| | | commissionDate.setTotalCommission(add); |
| | | |
| | | commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO)); |
| | | commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO)); |
| | | commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO)); |
| | | return commissionDate; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | |
| | | commissionDetail.setCommissionDateList(commissionDateList); |
| | | return R.ok(commissionDetail); |
| | | } |
| | | |
| | | |
| | | public R<CommissionDetail> commissionDetail2(CommissionDetail cd) { |
| | | if (cd.getStartTime() == null || cd.getEndTime() == null) { |
| | | return R.fail("请选择时间"); |
| | | } |
| | |
| | | } |
| | | } |
| | | }); |
| | | return null; |
| | | |
| | | |
| | | BigDecimal totalCommission = BigDecimal.ZERO; |
| | | BigDecimal totalNormalCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalGoldCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalDiamondCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalAgentCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalSuperAgentCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalTopAgentCommission = BigDecimal.ZERO; |
| | | |
| | | BigDecimal totalPartnerCommission = BigDecimal.ZERO; |
| | | |
| | | List<AppUser> allAppUserList = appUserService.list(); |
| | | for (AppUser appUser : allAppUserList) { |
| | | BigDecimal totalDistributionAmount = appUser.getTotalDistributionAmount(); |
| | | totalCommission = totalCommission.add(totalDistributionAmount); |
| | | if (appUser.getVipId() == 1){ |
| | | totalNormalCommission = totalNormalCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 2){ |
| | | totalGoldCommission = totalGoldCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 3){ |
| | | totalDiamondCommission = totalDiamondCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 4){ |
| | | totalAgentCommission = totalAgentCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 5){ |
| | | totalSuperAgentCommission = totalSuperAgentCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 6){ |
| | | totalTopAgentCommission = totalTopAgentCommission.add(totalDistributionAmount); |
| | | } |
| | | if (appUser.getVipId() == 7){ |
| | | totalPartnerCommission = totalPartnerCommission.add(totalDistributionAmount); |
| | | } |
| | | } |
| | | |
| | | R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics(); |
| | | Map<String, BigDecimal> data = shopStatistics.getData(); |
| | | BigDecimal totalServiceFee = BigDecimal.ZERO; |
| | | BigDecimal totalUserCommission = BigDecimal.ZERO; |
| | | if (data != null){ |
| | | totalServiceFee = data.get("serverGiveawayMoney"); |
| | | totalUserCommission = data.get("lowerLevelGiveawayMoney"); |
| | | } |
| | | |
| | | CommissionDetail commissionDetail = new CommissionDetail(); |
| | | commissionDetail.setTotalCommission(totalCommission); |
| | | commissionDetail.setTotalServiceFee(totalServiceFee); |
| | | commissionDetail.setTotalUserCommission(totalUserCommission); |
| | | |
| | | commissionDetail.setTotalNormalCommission(totalNormalCommission); |
| | | commissionDetail.setTotalGoldCommission(totalGoldCommission); |
| | | commissionDetail.setTotalDiamondCommission(totalDiamondCommission); |
| | | commissionDetail.setTotalAgentCommission(totalAgentCommission); |
| | | commissionDetail.setTotalSuperAgentCommission(totalSuperAgentCommission); |
| | | commissionDetail.setTotalTopAgentCommission(totalTopAgentCommission); |
| | | commissionDetail.setTotalPartnerCommission(totalPartnerCommission); |
| | | |
| | | |
| | | List<CommissionDate> commissionDateList = dailyVipCommissions.entrySet().stream() |
| | | .map(entry -> { |
| | | CommissionDate commissionDate = new CommissionDate(); |
| | | commissionDate.setDate(entry.getKey()); |
| | | Map<Integer, BigDecimal> dailyCommissions = entry.getValue(); |
| | | commissionDate.setNormalCommission(dailyCommissions.getOrDefault(1, BigDecimal.ZERO)); |
| | | commissionDate.setGoldCommission(dailyCommissions.getOrDefault(2, BigDecimal.ZERO)); |
| | | commissionDate.setDiamondCommission(dailyCommissions.getOrDefault(3, BigDecimal.ZERO)); |
| | | commissionDate.setAgentCommission(dailyCommissions.getOrDefault(4, BigDecimal.ZERO)); |
| | | commissionDate.setSuperAgentCommission(dailyCommissions.getOrDefault(5, BigDecimal.ZERO)); |
| | | commissionDate.setTopAgentCommission(dailyCommissions.getOrDefault(6, BigDecimal.ZERO)); |
| | | commissionDate.setPartnerCommission(dailyCommissions.getOrDefault(7, BigDecimal.ZERO)); |
| | | BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission()) |
| | | .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission()); |
| | | commissionDate.setTotalCommission(add); |
| | | |
| | | commissionDate.setServiceChargeCommission(dailyCommissions.getOrDefault(10, BigDecimal.ZERO)); |
| | | commissionDate.setAssociatedUserCommission(dailyCommissions.getOrDefault(8, BigDecimal.ZERO)); |
| | | commissionDate.setBindLowerLevelStoresCommission(dailyCommissions.getOrDefault(9, BigDecimal.ZERO)); |
| | | return commissionDate; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | |
| | | commissionDetail.setCommissionDateList(commissionDateList); |
| | | |
| | | return R.ok(commissionDetail); |
| | | } |
| | | |
| | | |