CompanyCollectionService.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.config.GeneralProperties;
  3. import com.izouma.nineth.domain.*;
  4. import com.izouma.nineth.dto.PageQuery;
  5. import com.izouma.nineth.dto.oasis.OasisDistrictCollectionDTO;
  6. import com.izouma.nineth.dto.oasis.OasisDistrictDTO;
  7. import com.izouma.nineth.enums.AssetStatus;
  8. import com.izouma.nineth.enums.CollectionSource;
  9. import com.izouma.nineth.enums.CollectionStatus;
  10. import com.izouma.nineth.enums.CollectionType;
  11. import com.izouma.nineth.exception.BusinessException;
  12. import com.izouma.nineth.repo.*;
  13. import com.izouma.nineth.utils.JpaUtils;
  14. import lombok.AllArgsConstructor;
  15. import org.apache.commons.lang3.ObjectUtils;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.data.domain.Page;
  18. import org.springframework.stereotype.Service;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Set;
  22. import java.util.stream.Collectors;
  23. @Service
  24. @AllArgsConstructor
  25. public class CompanyCollectionService {
  26. private CompanyCollectionRepo companyCollectionRepo;
  27. private CollectionRepo collectionRepo;
  28. private UserRepo userRepo;
  29. private CollectionPrivilegeRepo collectionPrivilegeRepo;
  30. private SysConfigService sysConfigService;
  31. private AssetRepo assetRepo;
  32. private GeneralProperties generalProperties;
  33. public Page<CompanyCollection> all(PageQuery pageQuery) {
  34. return companyCollectionRepo.findAll(JpaUtils.toSpecification(pageQuery, CompanyCollection.class), JpaUtils
  35. .toPageRequest(pageQuery));
  36. }
  37. public void audit(Long id, CollectionStatus status, String reason) {
  38. CompanyCollection companyCollection = companyCollectionRepo.findById(id)
  39. .orElseThrow(new BusinessException("无申请"));
  40. if (!CollectionStatus.PENDING.equals(companyCollection.getStatus())) {
  41. throw new BusinessException("已审核");
  42. }
  43. companyCollection.setStatus(status);
  44. companyCollection.setReason(reason);
  45. if (CollectionStatus.FAIL.equals(status)) {
  46. //存状态
  47. companyCollectionRepo.save(companyCollection);
  48. return;
  49. }
  50. CollectionPrivilege privilege = collectionPrivilegeRepo.findByCompanyCollectionId(id);
  51. if (ObjectUtils.isNotEmpty(privilege)) {
  52. return;
  53. }
  54. Collection collection = new Collection();
  55. BeanUtils.copyProperties(companyCollection, collection);
  56. collection.setSource(CollectionSource.COMPANY);
  57. collection.setType(CollectionType.DEFAULT);
  58. collection.setStock(companyCollection.getTotal());
  59. //铸造者/持有者
  60. Long userId = companyCollection.getUserId();
  61. User user = userRepo.findById(userId).orElseThrow(new BusinessException("无企业"));
  62. collection.setMinter(user.getNickname());
  63. collection.setMinterId(userId);
  64. collection.setMinterAvatar(user.getAvatar());
  65. collection.setOwner(user.getNickname());
  66. collection.setOwnerId(userId);
  67. collection.setOwnerAvatar(user.getAvatar());
  68. // Showroom showroom = showroomRepo.findFirstByUserId(userId);
  69. int royalties = sysConfigService.getInt("royalties");
  70. int serviceCharge = sysConfigService.getInt("service_charge");
  71. collection.setRoyalties(royalties);
  72. collection.setServiceCharge(serviceCharge);
  73. collection.setId(null);
  74. collection = collectionRepo.save(collection);
  75. //企业属性
  76. collectionPrivilegeRepo.save(CollectionPrivilege.builder()
  77. .collectionId(collection.getId())
  78. .companyCollectionId(id)
  79. .build());
  80. //存状态
  81. companyCollectionRepo.save(companyCollection);
  82. }
  83. public List<OasisDistrictCollectionDTO> oasisSearch(List<Long> oasisIds) {
  84. List<OasisDistrictCollectionDTO> oasisDistrictCollectionDTOS = new ArrayList<>();
  85. List<AssetStatus> assetStatuses = new ArrayList<>();
  86. assetStatuses.add(AssetStatus.NORMAL);
  87. assetStatuses.add(AssetStatus.AUCTION_TRADING);
  88. assetStatuses.add(AssetStatus.GIFTING);
  89. assetStatuses.add(AssetStatus.TRADING);
  90. assetStatuses.add(AssetStatus.MINTING);
  91. assetStatuses.add(AssetStatus.AUCTIONING);
  92. List<Asset> assets = assetRepo
  93. .findAllByOasisIdInAndStatusIn(oasisIds, assetStatuses);
  94. List<CompanyCollection> companyCollections = companyCollectionRepo
  95. .findAllByOasisIdInAndStatusNot(oasisIds, CollectionStatus.SUCCESS);
  96. List<CollectionSource> collectionSources = new ArrayList<>();
  97. collectionSources.add(CollectionSource.COMPANY);
  98. collectionSources.add(CollectionSource.OFFICIAL);
  99. List<Collection> officialCollections = collectionRepo
  100. .findAllByOasisIdInAndSourceInAndStockGreaterThan(oasisIds, collectionSources, 0);
  101. assets.forEach(asset -> {
  102. OasisDistrictCollectionDTO oasisDistrictCollectionDTO = new OasisDistrictCollectionDTO();
  103. oasisDistrictCollectionDTO.setOasisId(asset.getOasisId());
  104. oasisDistrictCollectionDTO.setCollectionName(asset.getName());
  105. oasisDistrictCollectionDTO.setOriginPrice(asset.getPrice());
  106. oasisDistrictCollectionDTO.setScanOnly(false);
  107. oasisDistrictCollectionDTO.setOwnerId(asset.getOwnerId());
  108. oasisDistrictCollectionDTO.setOwnerName(asset.getOwner());
  109. oasisDistrictCollectionDTO.setOwnerAvatar(asset.getOwnerAvatar());
  110. oasisDistrictCollectionDTO.setCollectionId(asset.getId());
  111. if (!asset.getStatus().equals(AssetStatus.NORMAL)) {
  112. oasisDistrictCollectionDTO.setStatus(asset.getStatus().getDescription());
  113. } else {
  114. if (asset.isPublicShow()) {
  115. Collection collection = collectionRepo.findFirstByOnShelfAndAssetId(true, asset.getId());
  116. oasisDistrictCollectionDTO.setUrl(
  117. generalProperties.getHost() + "/9th/productDetail/" + collection
  118. .getId() + "?id=" + collection.getId());
  119. if (asset.isConsignment()) {
  120. oasisDistrictCollectionDTO.setStatus("寄售中");
  121. } else {
  122. oasisDistrictCollectionDTO.setStatus("仅展示");
  123. }
  124. } else {
  125. oasisDistrictCollectionDTO.setStatus("未展示");
  126. }
  127. }
  128. oasisDistrictCollectionDTO.setSource("二手");
  129. oasisDistrictCollectionDTOS.add(oasisDistrictCollectionDTO);
  130. });
  131. officialCollections.forEach(collection -> {
  132. OasisDistrictCollectionDTO oasisDistrictCollectionDTO = new OasisDistrictCollectionDTO();
  133. oasisDistrictCollectionDTO.setOasisId(collection.getOasisId());
  134. oasisDistrictCollectionDTO.setCollectionName(collection.getName());
  135. oasisDistrictCollectionDTO.setOriginPrice(collection.getPrice());
  136. oasisDistrictCollectionDTO.setSalable(collection.isSalable());
  137. oasisDistrictCollectionDTO.setOwnerId(collection.getOwnerId());
  138. oasisDistrictCollectionDTO.setOwnerName(collection.getOwner());
  139. oasisDistrictCollectionDTO.setOwnerAvatar(collection.getOwnerAvatar());
  140. oasisDistrictCollectionDTO.setCollectionId(collection.getId());
  141. oasisDistrictCollectionDTO.setScanOnly(collection.isScanCode());
  142. oasisDistrictCollectionDTO.setSource("官方");
  143. if (collection.isOnShelf()) {
  144. oasisDistrictCollectionDTO.setUrl(
  145. generalProperties.getHost() + "/9th/productDetail/" + collection
  146. .getId() + "?id=" + collection.getId());
  147. if (collection.isSalable()) {
  148. oasisDistrictCollectionDTO.setStatus("在售");
  149. if (collection.getStock() == 0) {
  150. oasisDistrictCollectionDTO.setStatus("已有订单,订单处理中");
  151. }
  152. } else {
  153. oasisDistrictCollectionDTO.setStatus("仅展示");
  154. }
  155. } else {
  156. oasisDistrictCollectionDTO.setStatus("未上架");
  157. }
  158. oasisDistrictCollectionDTOS.add(oasisDistrictCollectionDTO);
  159. });
  160. companyCollections.forEach(companyCollection -> {
  161. OasisDistrictCollectionDTO oasisDistrictCollectionDTO = new OasisDistrictCollectionDTO();
  162. oasisDistrictCollectionDTO.setOasisId(companyCollection.getOasisId());
  163. oasisDistrictCollectionDTO.setCollectionName(companyCollection.getName());
  164. oasisDistrictCollectionDTO.setScanOnly(false);
  165. oasisDistrictCollectionDTO.setOriginPrice(companyCollection.getPrice());
  166. oasisDistrictCollectionDTO.setOwnerName(companyCollection.getMinter());
  167. oasisDistrictCollectionDTO.setCollectionId(companyCollection.getId());
  168. oasisDistrictCollectionDTO.setSalable(false);
  169. oasisDistrictCollectionDTO.setStatus("审核中");
  170. oasisDistrictCollectionDTO.setSource("官方");
  171. oasisDistrictCollectionDTOS.add(oasisDistrictCollectionDTO);
  172. });
  173. return oasisDistrictCollectionDTOS;
  174. }
  175. }