MintActivityController.java 5.5 KB

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