wangqifan 2 лет назад
Родитель
Сommit
31aea5a47e

+ 25 - 0
src/main/java/com/izouma/nineth/dto/nftdomain/DomainOrderDTO.java

@@ -0,0 +1,25 @@
+package com.izouma.nineth.dto.nftdomain;
+
+import com.izouma.nineth.converter.FileObjectListConverter;
+import com.izouma.nineth.domain.FileObject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Convert;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DomainOrderDTO {
+    private String           name;
+    private String           owner;
+    private String           ownerAvatar;
+    private BigDecimal       price;
+    @Convert(converter = FileObjectListConverter.class)
+    private List<FileObject> pic;
+    private LocalDate        payTime;
+}

+ 11 - 3
src/main/java/com/izouma/nineth/repo/AssetRepo.java

@@ -1,11 +1,13 @@
 package com.izouma.nineth.repo;
 
+import com.izouma.nineth.aspect.AssetSaveAspect;
 import com.izouma.nineth.domain.Asset;
 import com.izouma.nineth.dto.FuAssetDTO;
 import com.izouma.nineth.dto.MetaRestResult;
 import com.izouma.nineth.enums.AssetSource;
 import com.izouma.nineth.enums.AssetStatus;
 import com.izouma.nineth.enums.CollectionType;
+import org.jboss.marshalling.util.IdentityIntMap;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -37,9 +39,9 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
 
     List<Asset> findByCreatedAtBefore(LocalDateTime localDateTime);
 
-    Optional<Asset> findByCollectionIdAndStatus(Long collectionId,AssetStatus statuses );
+    Optional<Asset> findByCollectionIdAndStatus(Long collectionId, AssetStatus statuses);
 
-    Optional<Asset> findByIdAndStatus(Long collectionId,AssetStatus statuses );
+    Optional<Asset> findByIdAndStatus(Long collectionId, AssetStatus statuses);
 
     List<Asset> findByConsignmentTrue();
 
@@ -187,5 +189,11 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
 
     Asset findFirstByNameAndStatus(String name, AssetStatus status);
 
-    Asset findByNameAndStatusAndCategoryAndDel(String name, AssetStatus status, String categroy,boolean del);
+    Asset findByNameAndStatusAndCategoryAndDel(String name, AssetStatus status, String categroy, boolean del);
+
+    int countAllByPrefixNameAndStatusAndDel(String prefixName, AssetStatus assetStatus, boolean del);
+
+    int countAllByPrefixNameAndStatusAndConsignmentAndDel(String prefixName, AssetStatus assetStatus, boolean consignment, boolean del);
+
+    int countAllByPrefixNameAndStatusAndConsignmentAndPublicShowAndDel(String prefixName, AssetStatus assetStatus, boolean consignment, boolean publicShow, boolean del);
 }

+ 3 - 0
src/main/java/com/izouma/nineth/repo/OrderRepo.java

@@ -128,4 +128,7 @@ public interface OrderRepo extends JpaRepository<Order, Long>, JpaSpecificationE
     List<Map<String, Object>> newestDomainOrder();
 
     List<Order> findAllByParentOrderId(Long id);
+
+    @Query("select o from Order o join Asset a on o.id = a.id where o.status = 'FINISH' and a.prefixName = ?1 order by o.payTime desc ")
+    Page<Order> queryDomainOrder(String prefixName, Pageable pageable);
 }

+ 40 - 0
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -24,6 +24,7 @@ import com.izouma.nineth.domain.nftdomain.Cart;
 import com.izouma.nineth.dto.MarketSettlement;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.UserBankCard;
+import com.izouma.nineth.dto.nftdomain.DomainOrderDTO;
 import com.izouma.nineth.enums.*;
 import com.izouma.nineth.event.*;
 import com.izouma.nineth.exception.BusinessException;
@@ -33,6 +34,7 @@ import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.service.netease.NeteaseMessageService;
 import com.izouma.nineth.service.sms.SmsService;
 import com.izouma.nineth.utils.*;
+import com.sun.xml.bind.v2.runtime.NameBuilder;
 import io.github.bucket4j.Bandwidth;
 import io.github.bucket4j.Bucket;
 import io.github.bucket4j.BucketConfiguration;
@@ -52,6 +54,7 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.context.event.EventListener;
 import org.springframework.core.env.Environment;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.redis.core.BoundSetOperations;
 import org.springframework.data.redis.core.BoundValueOperations;
@@ -60,6 +63,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
+import javax.crypto.interfaces.PBEKey;
 import javax.persistence.criteria.Join;
 import javax.transaction.Transactional;
 import java.io.OutputStream;
@@ -1258,4 +1262,40 @@ public class OrderService {
             });
         }).get();
     }
+
+    public Map<String, Object> domainTransferInfo(String prefixName) {
+        //流通量
+        int transferringCount = assetRepo.countAllByPrefixNameAndStatusAndDel(prefixName, AssetStatus.NORMAL, false);
+        //寄售中
+        int consignment = assetRepo
+                .countAllByPrefixNameAndStatusAndConsignmentAndDel(prefixName, AssetStatus.NORMAL, true, false);
+        //仅展示
+        int publicShow = assetRepo
+                .countAllByPrefixNameAndStatusAndConsignmentAndPublicShowAndDel(prefixName, AssetStatus.NORMAL, false, true, false);
+        Map<String, Object> result = new HashMap<>();
+        result.put("transferringCount", transferringCount);
+        result.put("consignment", consignment);
+        result.put("publicShow", publicShow);
+        return result;
+    }
+
+    public Page<DomainOrderDTO> newestDomainTransfer(String prefix, Pageable pageable) {
+        Page<Order> orders = orderRepo.queryDomainOrder(prefix, pageable);
+        List<Order> orderContent = orders.getContent();
+        List<DomainOrderDTO> domainOrderDTOS = new ArrayList<>();
+        orderContent.forEach(order -> {
+            Asset asset = assetRepo.findById(order.getAssetId()).orElse(null);
+            if (asset != null) {
+                DomainOrderDTO domainOrderDTO = new DomainOrderDTO();
+                domainOrderDTO.setName(order.getName());
+                domainOrderDTO.setOwner(asset.getOwner());
+                domainOrderDTO.setOwnerAvatar(asset.getOwnerAvatar());
+                domainOrderDTO.setPrice(order.getPrice());
+                domainOrderDTO.setPayTime(order.getPayTime().toLocalDate());
+                domainOrderDTO.setPic(order.getPic());
+                domainOrderDTOS.add(domainOrderDTO);
+            }
+        });
+        return new PageImpl<>(domainOrderDTOS, orders.getPageable(), orders.getTotalElements());
+    }
 }

+ 13 - 2
src/main/java/com/izouma/nineth/web/OrderController.java

@@ -5,6 +5,7 @@ import com.izouma.nineth.domain.Order;
 import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.OrderDTO;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.nftdomain.DomainOrderDTO;
 import com.izouma.nineth.enums.*;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.AssetRepo;
@@ -78,8 +79,8 @@ public class OrderController extends BaseController {
         Page<Order> all = orderService.all(pageQuery);
         List<Long> userIds = all.getContent().stream().map(Order::getUserId).distinct().collect(Collectors.toList());
         Map<Long, String> userMap = userRepo.findAllById(userIds)
-                .stream()
-                .collect(Collectors.toMap(User::getId, User::getNickname));
+                                            .stream()
+                                            .collect(Collectors.toMap(User::getId, User::getNickname));
         return all.map(order -> {
             order.setNickname(userMap.get(order.getUserId()));
             return order;
@@ -247,5 +248,15 @@ public class OrderController extends BaseController {
     public void refundGas() throws ExecutionException, InterruptedException {
         orderService.refundGas();
     }
+
+    @PostMapping("/domainOrderStatistic")
+    public Map<String, Object> domainOrderStatistic(String prefixName) {
+        return orderService.domainTransferInfo(prefixName);
+    }
+
+    @PostMapping("/newestOrder")
+    public Page<DomainOrderDTO> domainOrderStatistic(String prefixName, Pageable pageable) {
+        return orderService.newestDomainTransfer(prefixName, pageable);
+    }
 }