|
@@ -2,17 +2,19 @@ package com.izouma.nineth.service;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.izouma.nineth.domain.BalanceRecord;
|
|
|
import com.izouma.nineth.domain.Order;
|
|
import com.izouma.nineth.domain.Order;
|
|
|
|
|
+import com.izouma.nineth.domain.RechargeOrder;
|
|
|
import com.izouma.nineth.domain.User;
|
|
import com.izouma.nineth.domain.User;
|
|
|
|
|
+import com.izouma.nineth.enums.BalanceType;
|
|
|
import com.izouma.nineth.enums.CollectionSource;
|
|
import com.izouma.nineth.enums.CollectionSource;
|
|
|
import com.izouma.nineth.enums.OrderStatus;
|
|
import com.izouma.nineth.enums.OrderStatus;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
-import com.izouma.nineth.repo.OrderRepo;
|
|
|
|
|
-import com.izouma.nineth.repo.TokenHistoryRepo;
|
|
|
|
|
-import com.izouma.nineth.repo.UserRepo;
|
|
|
|
|
|
|
+import com.izouma.nineth.repo.*;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import javax.xml.stream.events.EndDocument;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
@@ -26,9 +28,10 @@ import java.util.stream.Collectors;
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
|
public class StatisticService {
|
|
public class StatisticService {
|
|
|
|
|
|
|
|
- private UserRepo userRepo;
|
|
|
|
|
- private OrderRepo orderRepo;
|
|
|
|
|
- private TokenHistoryRepo tokenHistoryRepo;
|
|
|
|
|
|
|
+ private UserRepo userRepo;
|
|
|
|
|
+ private OrderRepo orderRepo;
|
|
|
|
|
+ private TokenHistoryRepo tokenHistoryRepo;
|
|
|
|
|
+ private BalanceRecordRepo balanceRecordRepo;
|
|
|
|
|
|
|
|
public Map<String, Object> total(Long userId, Long companyId) {
|
|
public Map<String, Object> total(Long userId, Long companyId) {
|
|
|
User user1 = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
User user1 = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
@@ -39,6 +42,8 @@ public class StatisticService {
|
|
|
long user = userRepo.countAllByDelFalse();
|
|
long user = userRepo.countAllByDelFalse();
|
|
|
total.put("userNum", user);
|
|
total.put("userNum", user);
|
|
|
orders = orderRepo.findAllByStatusAndCompanyId(OrderStatus.FINISH, companyId);
|
|
orders = orderRepo.findAllByStatusAndCompanyId(OrderStatus.FINISH, companyId);
|
|
|
|
|
+ BigDecimal allRecharged = balanceRecordRepo.sumRechargeAll();
|
|
|
|
|
+ total.put("rechargePrice", allRecharged);
|
|
|
} else {
|
|
} else {
|
|
|
orders = orderRepo.findAllByStatusAndMinterId(OrderStatus.FINISH, userId);
|
|
orders = orderRepo.findAllByStatusAndMinterId(OrderStatus.FINISH, userId);
|
|
|
}
|
|
}
|
|
@@ -132,9 +137,20 @@ public class StatisticService {
|
|
|
|
|
|
|
|
User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
|
List<Order> orders;
|
|
List<Order> orders;
|
|
|
|
|
+ Map<String, Map<String, BigDecimal>> trend = new HashMap<>();
|
|
|
if (user.isAdmin()) {
|
|
if (user.isAdmin()) {
|
|
|
orders = orderRepo.findAllByCreatedAtIsAfterAndStatusInAndCompanyId(start,
|
|
orders = orderRepo.findAllByCreatedAtIsAfterAndStatusInAndCompanyId(start,
|
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH), companyId);
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH), companyId);
|
|
|
|
|
+ List<BalanceRecord> balanceRecords = balanceRecordRepo
|
|
|
|
|
+ .findByTypeAndCreatedAtBetween(BalanceType.RECHARGE, start, LocalDateTime.now());
|
|
|
|
|
+ Map<String, BigDecimal> recharged = null;
|
|
|
|
|
+ if (balanceRecords.size() > 0) {
|
|
|
|
|
+ recharged = balanceRecords.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(item -> DateTimeFormatter.ofPattern("yyyy-MM-dd")
|
|
|
|
|
+ .format(item.getCreatedAt()), Collectors.mapping(BalanceRecord::getAmount,
|
|
|
|
|
+ Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
|
|
|
|
+ }
|
|
|
|
|
+ trend.put("recharged", recharged);
|
|
|
} else {
|
|
} else {
|
|
|
orders = orderRepo.findAllByCreatedAtIsAfterAndMinterIdAndStatusIn(start, userId,
|
|
orders = orderRepo.findAllByCreatedAtIsAfterAndMinterIdAndStatusIn(start, userId,
|
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
|
|
@@ -161,7 +177,6 @@ public class StatisticService {
|
|
|
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
|
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Map<String, Map<String, BigDecimal>> trend = new HashMap<>();
|
|
|
|
|
trend.put("official", official);
|
|
trend.put("official", official);
|
|
|
trend.put("transfer", transfer);
|
|
trend.put("transfer", transfer);
|
|
|
return trend;
|
|
return trend;
|
|
@@ -179,14 +194,16 @@ public class StatisticService {
|
|
|
|
|
|
|
|
User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("无用户"));
|
|
|
List<Order> orders;
|
|
List<Order> orders;
|
|
|
|
|
+ Map<String, BigDecimal> map = new HashMap<>();
|
|
|
if (user.isAdmin()) {
|
|
if (user.isAdmin()) {
|
|
|
orders = orderRepo.findAllByCreatedAtBetweenAndStatusInAndCompanyId(start, end,
|
|
orders = orderRepo.findAllByCreatedAtBetweenAndStatusInAndCompanyId(start, end,
|
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH), companyId);
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH), companyId);
|
|
|
|
|
+ BigDecimal allRecharged = balanceRecordRepo.sumRechargeToday(start, end);
|
|
|
|
|
+ map.put("recharged", allRecharged);
|
|
|
} else {
|
|
} else {
|
|
|
orders = orderRepo.findAllByCreatedAtBetweenAndMinterIdAndStatusIn(start, end, userId,
|
|
orders = orderRepo.findAllByCreatedAtBetweenAndMinterIdAndStatusIn(start, end, userId,
|
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
|
|
Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
|
|
|
}
|
|
}
|
|
|
- Map<String, BigDecimal> map = new HashMap<>();
|
|
|
|
|
map.put("official", orders.stream().filter(order -> order.getSource().equals(CollectionSource.OFFICIAL))
|
|
map.put("official", orders.stream().filter(order -> order.getSource().equals(CollectionSource.OFFICIAL))
|
|
|
.map(Order::getPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
|
|
.map(Order::getPrice).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
|
|
|
map.put("transfer", orders.stream().filter(order -> order.getSource().equals(CollectionSource.TRANSFER))
|
|
map.put("transfer", orders.stream().filter(order -> order.getSource().equals(CollectionSource.TRANSFER))
|