MintActivityController.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. package com.izouma.nineth.web;
  2. import com.izouma.nineth.domain.Collection;
  3. import com.izouma.nineth.domain.MintActivity;
  4. import com.izouma.nineth.domain.Tag;
  5. import com.izouma.nineth.dto.MintActivityRule;
  6. import com.izouma.nineth.dto.nftdomain.CreateCollection;
  7. import com.izouma.nineth.dto.nftdomain.CreateCollectionDTO;
  8. import com.izouma.nineth.enums.CollectionType;
  9. import com.izouma.nineth.repo.CollectionRepo;
  10. import com.izouma.nineth.service.MintActivityService;
  11. import com.izouma.nineth.dto.PageQuery;
  12. import com.izouma.nineth.exception.BusinessException;
  13. import com.izouma.nineth.repo.MintActivityRepo;
  14. import com.izouma.nineth.service.SysConfigService;
  15. import com.izouma.nineth.utils.ObjUtils;
  16. import com.izouma.nineth.utils.excel.ExcelUtils;
  17. import freemarker.ext.beans.BeansWrapper;
  18. import lombok.AllArgsConstructor;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.cache.annotation.Cacheable;
  21. import org.springframework.data.domain.Page;
  22. import org.springframework.security.access.prepost.PreAuthorize;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.io.IOException;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.List;
  29. import java.util.Set;
  30. import java.util.stream.Collectors;
  31. @Slf4j
  32. @RestController
  33. @RequestMapping("/mintActivity")
  34. @AllArgsConstructor
  35. public class MintActivityController extends BaseController {
  36. private MintActivityService mintActivityService;
  37. private MintActivityRepo mintActivityRepo;
  38. private CollectionRepo collectionRepo;
  39. private SysConfigService sysConfigService;
  40. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  41. @PostMapping("/save")
  42. public MintActivity save(@RequestBody MintActivity record) {
  43. if (record.getRule() != null) mintActivityService.checkRule(record.getRule());
  44. // List<CreateCollection> createCollections = new ArrayList<>();
  45. // record.getTargetCollectionIds().forEach(collection -> {
  46. // double hour = collection.getDelayHours();
  47. // int minutes = (int) (hour * 60);
  48. //// collection.setMinutes(minutes);
  49. // createCollections.add(collection);
  50. // });
  51. // record.setTargetCollectionIds(createCollections);
  52. if (record.getId() != null) {
  53. MintActivity orig = mintActivityRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  54. orig.setName(record.getName());
  55. orig.setCover(record.getCover());
  56. orig.setMinterId(record.getMinterId());
  57. orig.setMinter(record.getMinter());
  58. orig.setMinterAvatar(record.getMinterAvatar());
  59. orig.setDetail(record.getDetail());
  60. orig.setAudit(record.isAudit());
  61. orig.setNum(record.getNum());
  62. orig.setCollectionName(record.getCollectionName());
  63. orig.setRule(record.getRule());
  64. orig.setConsume(record.isConsume());
  65. orig.setGasPrice(record.getGasPrice());
  66. orig.setAirDrop(record.isAirDrop());
  67. orig.setAutoDrop(record.isAutoDrop());
  68. orig.setOnShelf(record.isOnShelf());
  69. orig.setScheduleSale(record.isScheduleSale());
  70. orig.setStartTime(record.getStartTime());
  71. orig.setAutoDrop(record.isAutoDrop());
  72. orig.setAirDropCollectionId(record.getAirDropCollectionId());
  73. orig.setScheduleEnd(record.isScheduleEnd());
  74. orig.setEndTime(record.getEndTime());
  75. orig.setTargetCollectionIds(record.getTargetCollectionIds());
  76. orig = mintActivityRepo.save(orig);
  77. mintActivityService.syncStock(record.getId());
  78. return orig;
  79. } else {
  80. record.setStock(record.getTotal());
  81. record = mintActivityRepo.save(record);
  82. mintActivityService.syncStock(record.getId());
  83. return record;
  84. }
  85. }
  86. //@PreAuthorize("hasRole('ADMIN')")
  87. @PostMapping("/all")
  88. public Page<MintActivity> all(@RequestBody PageQuery pageQuery) {
  89. return mintActivityService.all(pageQuery);
  90. }
  91. @GetMapping("/get/{id}")
  92. // @Cacheable(cacheNames = "mintActivity", key = "#id")
  93. public MintActivity get(@PathVariable Long id) {
  94. MintActivity mintActivity = mintActivityRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  95. // String mintCountCollection = sysConfigService.getString("mint_countCollection");
  96. // String regex = ",";
  97. // String[] split = mintCountCollection.split(regex);
  98. // if (Arrays.asList(split).contains(String.valueOf(id))) {
  99. // // Id在split数组中
  100. // return mintActivity;
  101. // } else {
  102. // // Id不在split数组中
  103. // List<Long> tags = mintActivity.getHoldingTags();
  104. // tags.forEach(tagId -> {
  105. // List<Collection> collections = collectionRepo.findByTag(tagId);
  106. // if (collections.stream().anyMatch(collection -> collection.getType().equals(CollectionType.BLIND_BOX)))
  107. // });
  108. try {
  109. MintActivityRule mintActivityRule = mintActivity.getRule();
  110. List<MintActivityRule> and = mintActivityRule.getAnd();
  111. mintActivityRule.setAnd(mintActivityService.mintActivityRules(and, mintActivity.getId()));
  112. mintActivity.setRule(mintActivityRule);
  113. if (mintActivity.getTargetCollectionIds() != null) {
  114. if (!mintActivity.getTargetCollectionIds().isEmpty()) {
  115. List<CreateCollectionDTO> dtos = new ArrayList<>();
  116. mintActivity.getTargetCollectionIds().forEach(createCollection -> {
  117. CreateCollectionDTO dto = new CreateCollectionDTO();
  118. dto.setCollection(collectionRepo.findById(createCollection.getId())
  119. .orElse(null));
  120. dto.setNum(createCollection.getNum());
  121. dtos.add(dto);
  122. });
  123. mintActivity.setAirDropCollection(dtos);
  124. }
  125. }
  126. } catch (Exception e) {
  127. log.error("生成铸造内容出错" + id, e);
  128. }
  129. mintActivity.setVTotal(mintActivity.getTotal());
  130. mintActivity.setTotal(0);
  131. return mintActivity;
  132. // }
  133. }
  134. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  135. @PostMapping("/del/{id}")
  136. public void del(@PathVariable Long id) {
  137. mintActivityRepo.softDelete(id);
  138. }
  139. @GetMapping("/excel")
  140. @ResponseBody
  141. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  142. List<MintActivity> data = all(pageQuery).getContent();
  143. ExcelUtils.export(response, data);
  144. }
  145. }