|
@@ -1,5 +1,6 @@
|
|
|
package com.izouma.nineth.service;
|
|
package com.izouma.nineth.service;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
@@ -20,7 +21,9 @@ import com.huifu.adapay.model.Refund;
|
|
|
import com.izouma.nineth.config.*;
|
|
import com.izouma.nineth.config.*;
|
|
|
import com.izouma.nineth.domain.Collection;
|
|
import com.izouma.nineth.domain.Collection;
|
|
|
import com.izouma.nineth.domain.*;
|
|
import com.izouma.nineth.domain.*;
|
|
|
|
|
+import com.izouma.nineth.dto.MarketSettlement;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
|
|
+import com.izouma.nineth.dto.UserBankCard;
|
|
|
import com.izouma.nineth.enums.*;
|
|
import com.izouma.nineth.enums.*;
|
|
|
import com.izouma.nineth.event.CreateAssetEvent;
|
|
import com.izouma.nineth.event.CreateAssetEvent;
|
|
|
import com.izouma.nineth.event.CreateOrderEvent;
|
|
import com.izouma.nineth.event.CreateOrderEvent;
|
|
@@ -34,6 +37,7 @@ import com.izouma.nineth.utils.AESEncryptUtil;
|
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
|
import com.izouma.nineth.utils.SnowflakeIdWorker;
|
|
import com.izouma.nineth.utils.SnowflakeIdWorker;
|
|
|
|
|
+import com.izouma.nineth.utils.excel.ExcelUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.codec.EncoderException;
|
|
import org.apache.commons.codec.EncoderException;
|
|
@@ -54,6 +58,7 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.ui.Model;
|
|
|
|
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.time.Duration;
|
|
import java.time.Duration;
|
|
@@ -63,6 +68,7 @@ import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
@@ -94,6 +100,8 @@ public class OrderService {
|
|
|
private ShowCollectionRepo showCollectionRepo;
|
|
private ShowCollectionRepo showCollectionRepo;
|
|
|
private ShowroomService showroomService;
|
|
private ShowroomService showroomService;
|
|
|
private CollectionPrivilegeRepo collectionPrivilegeRepo;
|
|
private CollectionPrivilegeRepo collectionPrivilegeRepo;
|
|
|
|
|
+ private UserBankCardRepo userBankCardRepo;
|
|
|
|
|
+ private IdentityAuthRepo identityAuthRepo;
|
|
|
|
|
|
|
|
public Page<Order> all(PageQuery pageQuery) {
|
|
public Page<Order> all(PageQuery pageQuery) {
|
|
|
return orderRepo.findAll(JpaUtils.toSpecification(pageQuery, Order.class), JpaUtils.toPageRequest(pageQuery));
|
|
return orderRepo.findAll(JpaUtils.toSpecification(pageQuery, Order.class), JpaUtils.toPageRequest(pageQuery));
|
|
@@ -912,4 +920,36 @@ public class OrderService {
|
|
|
public void releaseOrderLock(Long orderId) {
|
|
public void releaseOrderLock(Long orderId) {
|
|
|
redisTemplate.delete(RedisKeys.ORDER_LOCK + orderId);
|
|
redisTemplate.delete(RedisKeys.ORDER_LOCK + orderId);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public void calcSettle(LocalDateTime start, LocalDateTime end) {
|
|
|
|
|
+ List<Order> orders = orderRepo.findByCreatedAtBetweenAndSourceAndStatusIn(start, end, CollectionSource.TRANSFER, Arrays.asList(OrderStatus.PROCESSING, OrderStatus.FINISH));
|
|
|
|
|
+ List<Asset> assets = assetRepo.findAllById(orders.stream().map(Order::getAssetId).collect(Collectors.toSet()));
|
|
|
|
|
+ List<UserBankCard> bankCards = userBankCardRepo.findByUserIdIn(assets.stream().map(Asset::getUserId).collect(Collectors.toSet()));
|
|
|
|
|
+ List<MarketSettlement> settlements = new ArrayList<>();
|
|
|
|
|
+ for (Order order : orders) {
|
|
|
|
|
+ BigDecimal amount = order.getTotalPrice()
|
|
|
|
|
+ .subtract(order.getGasPrice())
|
|
|
|
|
+ .multiply(new BigDecimal("100")
|
|
|
|
|
+ .subtract(BigDecimal.valueOf(order.getServiceCharge()))
|
|
|
|
|
+ .subtract(BigDecimal.valueOf(order.getRoyalties()))
|
|
|
|
|
+ .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP))
|
|
|
|
|
+ .setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
+ Long userId = assets.stream().filter(a -> a.getId().equals(order.getAssetId())).map(Asset::getUserId).findAny().orElse(null);
|
|
|
|
|
+ if (userId != null) {
|
|
|
|
|
+ UserBankCard userBankCard = bankCards.stream().filter(b -> b.getUserId().equals(userId)).findAny().orElse(null);
|
|
|
|
|
+ MarketSettlement marketSettlement = settlements.stream().filter(s -> s.getUserId().equals(userId)).findAny().orElse(null);
|
|
|
|
|
+ if (marketSettlement == null) {
|
|
|
|
|
+ marketSettlement = new MarketSettlement(userId,
|
|
|
|
|
+ Optional.ofNullable(userBankCard).map(UserBankCard::getRealName).orElse(null),
|
|
|
|
|
+ Optional.ofNullable(userBankCard).map(UserBankCard::getBankNo).orElse(null),
|
|
|
|
|
+ amount);
|
|
|
|
|
+ settlements.add(marketSettlement);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ marketSettlement.setAmount(marketSettlement.getAmount()
|
|
|
|
|
+ .add(amount));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ EasyExcel.write(new File("/Users/drew/Downloads/结算.xlsx"), MarketSettlement.class).sheet("sheet").doWrite(settlements);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|