CollectionServiceTest.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.izouma.nineth.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.izouma.nineth.ApplicationTests;
  4. import com.izouma.nineth.domain.BlindBoxItem;
  5. import com.izouma.nineth.domain.Collection;
  6. import com.izouma.nineth.domain.FileObject;
  7. import com.izouma.nineth.dto.CreateBlindBox;
  8. import com.izouma.nineth.enums.CollectionType;
  9. import com.izouma.nineth.exception.BusinessException;
  10. import com.izouma.nineth.repo.CollectionRepo;
  11. import com.izouma.nineth.repo.PrivilegeOptionRepo;
  12. import com.izouma.nineth.repo.UserRepo;
  13. import com.izouma.nineth.service.storage.StorageService;
  14. import org.apache.commons.io.FileUtils;
  15. import org.apache.commons.io.FilenameUtils;
  16. import org.apache.commons.lang3.RandomStringUtils;
  17. import org.junit.jupiter.api.Test;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import java.io.File;
  20. import java.io.FileInputStream;
  21. import java.io.IOException;
  22. import java.nio.file.Files;
  23. import java.text.SimpleDateFormat;
  24. import java.time.LocalDateTime;
  25. import java.util.*;
  26. import java.util.concurrent.atomic.AtomicInteger;
  27. import java.util.regex.Pattern;
  28. import java.util.stream.Collectors;
  29. class CollectionServiceTest extends ApplicationTests {
  30. @Autowired
  31. private CollectionService collectionService;
  32. @Autowired
  33. private CollectionRepo collectionRepo;
  34. @Autowired
  35. private StorageService storageService;
  36. @Autowired
  37. private UserRepo userRepo;
  38. @Autowired
  39. private PrivilegeOptionRepo privilegeOptionRepo;
  40. @Autowired
  41. private SysConfigService sysConfigService;
  42. @Test
  43. void toDTO() {
  44. Collection collection = collectionRepo.findById(951L).get();
  45. assert collection.getPic() != null;
  46. }
  47. @Test
  48. public void batchUpload() throws IOException {
  49. AtomicInteger num = new AtomicInteger(4001);
  50. List<BlindBoxItem> items = new ArrayList<>();
  51. String jsonStr = FileUtils.readFileToString(new File("/Users/drew/Downloads/003.json"), "UTF-8");
  52. Arrays.stream(new File("/Users/drew/Downloads/s5-1000").listFiles())
  53. .filter(f -> Pattern.matches("^BJ.*\\.png$", f.getName()))
  54. .parallel().forEach(file -> {
  55. try {
  56. Collection collection = JSON.parseObject(jsonStr, Collection.class);
  57. collection.setId(null);
  58. collection.setName(String.format("MAYBEMAN #%05d", num.getAndIncrement()));
  59. collection.setStock(1);
  60. collection.setTotal(1);
  61. collection.setSale(0);
  62. collection.setMinterId(8666L);
  63. collection.setOnShelf(false);
  64. collection.setSalable(false);
  65. collection.setPic(Collections.singletonList(new FileObject("", "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/image/s5/" + file.getName(), null, "png")));
  66. collectionRepo.save(collection);
  67. System.out.println("保存成功" + collection.getId());
  68. items.add(BlindBoxItem
  69. .builder()
  70. .collectionId(collection.getId())
  71. .total(1)
  72. .stock(1)
  73. .rare(false)
  74. .build());
  75. } catch (Exception e) {
  76. }
  77. });
  78. }
  79. @Test
  80. public void createBlindBox() throws IOException {
  81. List<Collection> items = collectionRepo.findByNameLike("MAYBEMAN #%").stream().filter(i -> {
  82. int num = Integer.parseInt(i.getName().substring("MAYBEMAN #".length()));
  83. return num > 4000 && num <= 5000;
  84. }).collect(Collectors.toList());
  85. String jsonStr = FileUtils.readFileToString(new File("/Users/drew/Downloads/003.json"), "UTF-8");
  86. Collection blindBox = JSON.parseObject(jsonStr, Collection.class);
  87. blindBox.setType(CollectionType.BLIND_BOX);
  88. blindBox.setId(null);
  89. blindBox.setOnShelf(false);
  90. blindBox.setSalable(false);
  91. blindBox.setMinterId(8666L);
  92. blindBox.setName("MAYBEMAN潮流艺术限定盲盒S5");
  93. blindBox.setPic(Arrays.asList(new FileObject(null, "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-01-07-10-08-30DpIYYBOv.jpg", null, null)));
  94. collectionService.createBlindBox(new CreateBlindBox(blindBox, items.stream().map(i -> {
  95. BlindBoxItem item = new BlindBoxItem();
  96. item.setCollectionId(i.getId());
  97. item.setTotal(1);
  98. return item;
  99. }).collect(Collectors.toList())));
  100. }
  101. public FileObject uploadFile(File file) throws IOException {
  102. String ext = Optional.of(FilenameUtils.getExtension(file.getName())).orElse("")
  103. .toLowerCase().replace("jpeg", "jpg");
  104. String basePath = Optional.ofNullable(Files.probeContentType(file.toPath())).orElse("application")
  105. .split("/")[0];
  106. String path = basePath + "/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
  107. + RandomStringUtils.randomAlphabetic(8)
  108. + "." + ext;
  109. return new FileObject("", storageService.uploadFromInputStream(new FileInputStream(file), path), null, ext);
  110. }
  111. @Test
  112. public void test1() {
  113. Long collectionId = 2570204L;
  114. Collection collection = collectionRepo.findById(collectionId).orElseThrow(new BusinessException("无藏品"));
  115. if (!collection.isOnShelf() || !collection.isSalable()) {
  116. collectionId = null;
  117. } else if (collection.isScheduleSale()) {
  118. if (collection.getStartTime().isAfter(LocalDateTime.now())){
  119. collectionId = null;
  120. }
  121. }
  122. System.out.println(collectionId);
  123. }
  124. }