|
|
@@ -54,13 +54,13 @@ public class CommissionService {
|
|
|
total = total.add(commissionRecord.getAmount());
|
|
|
}
|
|
|
return CommissionOverview.builder()
|
|
|
- .total(total)
|
|
|
- .withdraw(withdraw)
|
|
|
- .available(available)
|
|
|
- .juniorCount(juniors.size())
|
|
|
- .orderCount(commissionRecordRepo.countByUserId(userId))
|
|
|
- .superior(Optional.ofNullable(superior).map(User::getNickname).orElse(null))
|
|
|
- .build();
|
|
|
+ .total(total)
|
|
|
+ .withdraw(withdraw)
|
|
|
+ .available(available)
|
|
|
+ .juniorCount(juniors.size())
|
|
|
+ .orderCount(commissionRecordRepo.countByUserId(userId))
|
|
|
+ .superior(Optional.ofNullable(superior).map(User::getNickname).orElse(null))
|
|
|
+ .build();
|
|
|
}
|
|
|
|
|
|
public CommissionDetail detail(Long userId) {
|
|
|
@@ -84,24 +84,24 @@ public class CommissionService {
|
|
|
predicates.add(criteriaBuilder.equal(root.join("order").get("status"), OrderStatus.NOT_PAID));
|
|
|
} else if ("PAID".equals(status)) {
|
|
|
predicates.add(root.join("order").get("status")
|
|
|
- .in(OrderStatus.NOT_CONFIRMED,
|
|
|
- OrderStatus.CONFIRMED,
|
|
|
- OrderStatus.NOT_SHIPPED,
|
|
|
- OrderStatus.SHIPPED,
|
|
|
- OrderStatus.SELLING,
|
|
|
- OrderStatus.SOLD_NOT_PAID,
|
|
|
- OrderStatus.SOLD_NOT_CONFIRMED,
|
|
|
- OrderStatus.SOLD,
|
|
|
- OrderStatus.NOT_SHIPPED,
|
|
|
- OrderStatus.SHIPPED,
|
|
|
- OrderStatus.RECEIVED));
|
|
|
+ .in(OrderStatus.NOT_CONFIRMED,
|
|
|
+ OrderStatus.CONFIRMED,
|
|
|
+ OrderStatus.NOT_SHIPPED,
|
|
|
+ OrderStatus.SHIPPED,
|
|
|
+ OrderStatus.SELLING,
|
|
|
+ OrderStatus.SOLD_NOT_PAID,
|
|
|
+ OrderStatus.SOLD_NOT_CONFIRMED,
|
|
|
+ OrderStatus.SOLD,
|
|
|
+ OrderStatus.NOT_SHIPPED,
|
|
|
+ OrderStatus.SHIPPED,
|
|
|
+ OrderStatus.RECEIVED));
|
|
|
} else if ("FINISH".equals(status)) {
|
|
|
predicates.add(root.join("order").get("status")
|
|
|
- .in(OrderStatus.CONFIRMED, OrderStatus.SELLING, OrderStatus.SOLD,
|
|
|
- OrderStatus.NOT_SHIPPED, OrderStatus.SHIPPED, OrderStatus.RECEIVED));
|
|
|
+ .in(OrderStatus.CONFIRMED, OrderStatus.SELLING, OrderStatus.SOLD,
|
|
|
+ OrderStatus.NOT_SHIPPED, OrderStatus.SHIPPED, OrderStatus.RECEIVED));
|
|
|
}
|
|
|
return criteriaQuery.where(predicates.toArray(new Predicate[0]))
|
|
|
- .orderBy(criteriaBuilder.desc(root.get("createdAt"))).getRestriction();
|
|
|
+ .orderBy(criteriaBuilder.desc(root.get("createdAt"))).getRestriction();
|
|
|
}, pageable);
|
|
|
List<CommissionOrder> commissionOrders = new ArrayList<>();
|
|
|
for (CommissionRecord commissionRecord : page.getContent()) {
|
|
|
@@ -110,14 +110,15 @@ public class CommissionService {
|
|
|
Product product = productRepo.findById(order.getProductId()).orElse(null);
|
|
|
if (product != null) {
|
|
|
CommissionOrder commissionOrder = CommissionOrder.builder()
|
|
|
- .orderId(commissionRecord.getOrderId())
|
|
|
- .createdAt(order.getCreatedAt())
|
|
|
- .juniorId(commissionRecord.getJuniorId())
|
|
|
- .commission(commissionRecord.getAmount())
|
|
|
- .pic(product.getPic().isEmpty() ? null : product.getPic().get(0))
|
|
|
- .name(product.getName())
|
|
|
- .price(order.getTotalPrice())
|
|
|
- .build();
|
|
|
+ .orderId(commissionRecord.getOrderId())
|
|
|
+ .createdAt(order.getCreatedAt())
|
|
|
+ .juniorId(commissionRecord.getJuniorId())
|
|
|
+ .commission(commissionRecord.getAmount())
|
|
|
+ .pic(product.getPic().isEmpty()
|
|
|
+ ? null : product.getPic().get(0))
|
|
|
+ .name(product.getName())
|
|
|
+ .price(order.getTotalPrice())
|
|
|
+ .build();
|
|
|
commissionOrders.add(commissionOrder);
|
|
|
}
|
|
|
}
|
|
|
@@ -126,22 +127,24 @@ public class CommissionService {
|
|
|
}
|
|
|
|
|
|
public void doCommission(Long userId, Order sellerOrder, BigDecimal commissionRate) {
|
|
|
- User user = userRepo.findById(userId).orElseThrow(new BusinessException(Translator.toLocale("record.not_found")));
|
|
|
+ User user = userRepo.findById(userId)
|
|
|
+ .orElseThrow(new BusinessException(Translator.toLocale("record.not_found")));
|
|
|
if (user.getSuperiorId() != null) {
|
|
|
User superior = userRepo.findById(user.getSuperiorId()).orElse(null);
|
|
|
if (superior != null) {
|
|
|
BigDecimal money = sellerOrder.getTotalPrice().multiply(commissionRate)
|
|
|
- .setScale(2, RoundingMode.HALF_UP);
|
|
|
- userBalanceService.modify(superior.getId(), null, money, Constants.BalanceRemark.COMMISSION, null);
|
|
|
+ .setScale(2, RoundingMode.HALF_UP);
|
|
|
+ userBalanceService.modify(superior.getId(), null, money, Constants.BalanceRemark.COMMISSION,
|
|
|
+ null, null, null);
|
|
|
commissionRecordRepo.save(CommissionRecord.builder()
|
|
|
- .userId(superior.getId())
|
|
|
- .juniorId(userId)
|
|
|
- .orderId(sellerOrder.getId())
|
|
|
- .amount(money)
|
|
|
- .build());
|
|
|
+ .userId(superior.getId())
|
|
|
+ .juniorId(userId)
|
|
|
+ .orderId(sellerOrder.getId())
|
|
|
+ .amount(money)
|
|
|
+ .build());
|
|
|
|
|
|
JuniorContribution juniorContribution = juniorContributionRepo.findByUserIdAndJuniorId(superior.getId(), userId)
|
|
|
- .orElse(new JuniorContribution(superior.getId(), userId));
|
|
|
+ .orElse(new JuniorContribution(superior.getId(), userId));
|
|
|
juniorContribution.setOrderNum(juniorContribution.getOrderNum() + 1);
|
|
|
juniorContribution.setOrderSum(juniorContribution.getOrderSum().add(sellerOrder.getTotalPrice()));
|
|
|
juniorContribution.setCommissionNum(juniorContribution.getCommissionNum() + 1);
|
|
|
@@ -149,7 +152,7 @@ public class CommissionService {
|
|
|
juniorContributionRepo.save(juniorContribution);
|
|
|
|
|
|
CommissionStat commissionStat = commissionStatRepo.findByUserId(superior.getId())
|
|
|
- .orElse(new CommissionStat(superior.getId()));
|
|
|
+ .orElse(new CommissionStat(superior.getId()));
|
|
|
commissionStat.setCommissionNum(commissionStat.getCommissionNum() + 1);
|
|
|
commissionStat.setCommissionSum(commissionStat.getCommissionSum().add(money));
|
|
|
commissionStatRepo.save(commissionStat);
|
|
|
@@ -160,12 +163,12 @@ public class CommissionService {
|
|
|
|
|
|
public void invite(Long superiorId, Long juniorId) {
|
|
|
CommissionStat commissionStat = commissionStatRepo.findByUserId(superiorId)
|
|
|
- .orElse(new CommissionStat(superiorId));
|
|
|
+ .orElse(new CommissionStat(superiorId));
|
|
|
commissionStat.setInviteNum((int) userRepo.countBySuperiorId(superiorId));
|
|
|
commissionStatRepo.save(commissionStat);
|
|
|
|
|
|
JuniorContribution juniorContribution = juniorContributionRepo.findByUserIdAndJuniorId(superiorId, juniorId)
|
|
|
- .orElse(new JuniorContribution(superiorId, juniorId));
|
|
|
+ .orElse(new JuniorContribution(superiorId, juniorId));
|
|
|
juniorContributionRepo.save(juniorContribution);
|
|
|
}
|
|
|
|
|
|
@@ -185,10 +188,10 @@ public class CommissionService {
|
|
|
List<User> users = userRepo.findAllById(userIds);
|
|
|
page.getContent().forEach(commissionRecord -> {
|
|
|
users.stream().filter(user -> user.getId().equals(commissionRecord.getJuniorId()))
|
|
|
- .findFirst().ifPresent(user -> {
|
|
|
- JuniorDTO dto = new JuniorDTO(user);
|
|
|
- commissionRecord.setJunior(dto);
|
|
|
- });
|
|
|
+ .findFirst().ifPresent(user -> {
|
|
|
+ JuniorDTO dto = new JuniorDTO(user);
|
|
|
+ commissionRecord.setJunior(dto);
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -197,7 +200,7 @@ public class CommissionService {
|
|
|
List<Order> orders = orderRepo.findAllById(orderIds);
|
|
|
page.getContent().forEach(commissionRecord -> {
|
|
|
orders.stream().filter(order -> order.getId().equals(commissionRecord.getOrderId()))
|
|
|
- .findFirst().ifPresent(commissionRecord::setOrder);
|
|
|
+ .findFirst().ifPresent(commissionRecord::setOrder);
|
|
|
});
|
|
|
}
|
|
|
return page;
|
|
|
@@ -205,15 +208,16 @@ public class CommissionService {
|
|
|
|
|
|
public Page<JuniorContribution> juniorContributions(Long userId, Pageable pageable) {
|
|
|
Page<JuniorContribution> page = juniorContributionRepo.findByUserId(userId, pageable);
|
|
|
- List<Long> userIds = page.getContent().stream().map(JuniorContribution::getJuniorId).collect(Collectors.toList());
|
|
|
+ List<Long> userIds = page.getContent().stream().map(JuniorContribution::getJuniorId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
if (!userIds.isEmpty()) {
|
|
|
List<User> users = userRepo.findAllById(userIds);
|
|
|
page.getContent().forEach(juniorContribution -> {
|
|
|
users.stream().filter(user -> user.getId().equals(juniorContribution.getJuniorId()))
|
|
|
- .findFirst().ifPresent(user -> {
|
|
|
- JuniorDTO dto = new JuniorDTO(user);
|
|
|
- juniorContribution.setJunior(dto);
|
|
|
- });
|
|
|
+ .findFirst().ifPresent(user -> {
|
|
|
+ JuniorDTO dto = new JuniorDTO(user);
|
|
|
+ juniorContribution.setJunior(dto);
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
return page;
|