licailing 3 年之前
父节点
当前提交
f933b83ff0

+ 16 - 0
src/main/java/com/izouma/nineth/dto/AirDropExcelDTO.java

@@ -0,0 +1,16 @@
+package com.izouma.nineth.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AirDropExcelDTO {
+    @ExcelProperty("phone")
+    private String phone;
+    @ExcelProperty("name")
+    private String name;
+}

+ 1 - 1
src/main/java/com/izouma/nineth/dto/CollectionInfoDTO.java

@@ -25,7 +25,7 @@ public class CollectionInfoDTO extends Collection {
     private Integer maxCollection;
 
     @ApiModelProperty("vip特权藏品")
-    private Boolean vip;
+    private boolean vip;
 
     public CollectionInfoDTO(Collection c, CollectionPrivilege cp) {
         if (ObjectUtils.isNotEmpty(cp)){

+ 31 - 0
src/main/java/com/izouma/nineth/service/AirDropService.java

@@ -143,4 +143,35 @@ public class AirDropService {
             log.error("空投出错", e);
         }
     }
+
+    public void drop(List<Collection> collections, String phone, LocalDateTime time) {
+//        List<Collection> collections = collectionRepo.findAllById(collectionId);
+        User user = userRepo.findByPhoneAndDelFalse(phone).orElseThrow(new BusinessException("用户不存在"));
+        try {
+            for (Collection collection : collections) {
+                Asset asset;
+                if (collection.getType() == CollectionType.BLIND_BOX) {
+                    BlindBoxItem winItem = collectionService.draw(collection.getId());
+                    asset = assetService.createAsset(winItem, user, 0L, collection.getPrice(), "出售",
+                            winItem.getTotal() > 1 ? collectionService.getNextNumber(winItem.getCollectionId()) : null,
+                            collection.getHoldDays());
+                } else {
+                    asset = assetService.createAsset(collection, user, 0L, collection.getPrice(), "出售",
+                            collection.getTotal() > 1 ? collectionService.getNextNumber(collection.getId()) : null);
+                }
+                assetRepo.flush();
+                tokenHistoryRepo.flush();
+
+                asset.setCreatedAt(time.plusSeconds((long) (Math.random() * 120)));
+                assetRepo.save(asset);
+
+                for (TokenHistory tokenHistory : tokenHistoryRepo.findByTokenIdOrderByCreatedAtDesc(asset.getTokenId())) {
+                    tokenHistory.setCreatedAt(asset.getCreatedAt());
+                    tokenHistoryRepo.save(tokenHistory);
+                }
+            }
+        } catch (Exception e) {
+            log.error("空投出错", e);
+        }
+    }
 }

+ 29 - 0
src/main/java/com/izouma/nineth/utils/excel/UploadDataListener.java

@@ -0,0 +1,29 @@
+package com.izouma.nineth.utils.excel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UploadDataListener<T> extends AnalysisEventListener<T> {
+    private final List<T> data;
+
+    public UploadDataListener() {
+        this.data = new ArrayList<>();
+    }
+
+    public List<T> getData() {
+        return data;
+    }
+
+    @Override
+    public void invoke(T t, AnalysisContext analysisContext) {
+        data.add(t);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+}

+ 4 - 2
src/main/java/com/izouma/nineth/web/CollectionController.java

@@ -56,14 +56,16 @@ public class CollectionController extends BaseController {
         }
 
         collectionPrivilegeRepo.update(collectionPrivilege.getId(), record.getId(), record.getHeadBg(),
-                record.getMaxCollection(), record.getShowroomBg(), record.getVip());
+                record.getMaxCollection(), record.getShowroomBg(), record.isVip());
         return collection;
     }
 
     @PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/create")
     public Collection create(@RequestBody CollectionInfoDTO record) {
-        Collection collection = collectionService.create(record);
+        Collection collection = new Collection();
+        BeanUtils.copyProperties(record,collection);
+        collection = collectionService.create(collection);
         CollectionPrivilege collectionPrivilege = new CollectionPrivilege();
         BeanUtils.copyProperties(record, collectionPrivilege);
         collectionPrivilege.setCollectionId(collection.getId());

+ 19 - 0
src/test/java/com/izouma/nineth/service/AirDropServiceTest.java

@@ -1,10 +1,15 @@
 package com.izouma.nineth.service;
 
+import com.alibaba.excel.EasyExcel;
 import com.izouma.nineth.ApplicationTests;
+import com.izouma.nineth.dto.AirDropExcelDTO;
+import com.izouma.nineth.utils.excel.UploadDataListener;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.io.File;
 import java.time.LocalDateTime;
+import java.util.List;
 
 import static org.junit.Assert.*;
 
@@ -18,4 +23,18 @@ public class AirDropServiceTest extends ApplicationTests {
         airDropService.drop(4235490L, 4273750L, 498,
                 LocalDateTime.of(2022, 3, 25, 17, 30));
     }
+
+    @Test
+    public void excel(){
+        File file = new File("/Users/qiufangchao/Desktop/RaexDrop.xlsx");
+        UploadDataListener<AirDropExcelDTO> listener = new UploadDataListener<>();
+        List<AirDropExcelDTO> dtos = EasyExcel.read(file, AirDropExcelDTO.class, listener)
+                .sheet()
+                .doReadSync();
+//        System.out.println(dtos);
+
+        dtos.forEach(dto->{
+
+        });
+    }
 }