CollectionServiceTest.java 5.1 KB

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