|
|
@@ -1,13 +1,12 @@
|
|
|
package com.izouma.jiashanxia.service;
|
|
|
|
|
|
import com.izouma.jiashanxia.domain.OrderInfo;
|
|
|
+import com.izouma.jiashanxia.domain.Withdraw;
|
|
|
import com.izouma.jiashanxia.domain.WxFee;
|
|
|
import com.izouma.jiashanxia.dto.StatisticDTO;
|
|
|
import com.izouma.jiashanxia.enums.OrderInfoStatus;
|
|
|
-import com.izouma.jiashanxia.repo.CompanyRepo;
|
|
|
-import com.izouma.jiashanxia.repo.OrderInfoRepo;
|
|
|
-import com.izouma.jiashanxia.repo.UserRepo;
|
|
|
-import com.izouma.jiashanxia.repo.WxFeeRepo;
|
|
|
+import com.izouma.jiashanxia.enums.WithdrawStatus;
|
|
|
+import com.izouma.jiashanxia.repo.*;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -22,10 +21,11 @@ import java.util.Map;
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class StatisticService {
|
|
|
- private UserRepo userRepo;
|
|
|
- private CompanyRepo companyRepo;
|
|
|
- private OrderInfoRepo orderInfoRepo;
|
|
|
- private WxFeeRepo wxFeeRepo;
|
|
|
+ private final UserRepo userRepo;
|
|
|
+ private final CompanyRepo companyRepo;
|
|
|
+ private final OrderInfoRepo orderInfoRepo;
|
|
|
+ private final WxFeeRepo wxFeeRepo;
|
|
|
+ private final WithdrawRepo withdrawRepo;
|
|
|
|
|
|
/*
|
|
|
数据总揽
|
|
|
@@ -53,6 +53,7 @@ public class StatisticService {
|
|
|
LocalDateTime start = LocalDateTime.of(now.toLocalDate().minusDays(day - 1), LocalTime.MIN);
|
|
|
List<OrderInfo> orderInfos = orderInfoRepo.findAllByPaidAtBetweenAndStatus(start, now, OrderInfoStatus.PAID);
|
|
|
List<WxFee> wxFees = wxFeeRepo.findAllByCreatedAtBetween(start, now);
|
|
|
+ List<Withdraw> withdraws = withdrawRepo.findAllByStatus(WithdrawStatus.SUCCESS);
|
|
|
|
|
|
while (day > 0) {
|
|
|
LocalDateTime end = start.plusDays(1);
|
|
|
@@ -64,11 +65,16 @@ public class StatisticService {
|
|
|
.filter(wxFee -> !finalStart.isAfter(wxFee.getCreatedAt()) && end.isAfter(wxFee.getCreatedAt()))
|
|
|
.map(WxFee::getAmount)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal withdraw = withdraws.stream()
|
|
|
+ .filter(wxFee -> !finalStart.isAfter(wxFee.getAuditTime()) && end.isAfter(wxFee.getAuditTime()))
|
|
|
+ .map(Withdraw::getAmount)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
dtos.add(StatisticDTO.builder()
|
|
|
.date(finalStart.toLocalDate())
|
|
|
.dayOrder(order)
|
|
|
.dayFee(fee)
|
|
|
+ .dayWithdraw(withdraw)
|
|
|
.build());
|
|
|
day--;
|
|
|
start = end;
|