Asset.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.izouma.nineth.domain;
  2. import com.izouma.nineth.annotations.Searchable;
  3. import com.izouma.nineth.converter.FileObjectListConverter;
  4. import com.izouma.nineth.converter.PrivilegeListConverter;
  5. import com.izouma.nineth.converter.PropertyListConverter;
  6. import com.izouma.nineth.enums.AssetStatus;
  7. import io.swagger.annotations.ApiModel;
  8. import io.swagger.annotations.ApiModelProperty;
  9. import lombok.AllArgsConstructor;
  10. import lombok.Builder;
  11. import lombok.Data;
  12. import lombok.NoArgsConstructor;
  13. import javax.persistence.*;
  14. import java.math.BigDecimal;
  15. import java.math.BigInteger;
  16. import java.util.List;
  17. @Data
  18. @Entity
  19. @AllArgsConstructor
  20. @NoArgsConstructor
  21. @Builder
  22. @ApiModel("资产")
  23. public class Asset extends BaseEntity {
  24. @ApiModelProperty("用户ID")
  25. private Long userId;
  26. @ApiModelProperty("持有者")
  27. private String ownerName;
  28. @ApiModelProperty("藏品ID")
  29. private Long collectionId;
  30. @ApiModelProperty("订单ID")
  31. private Long orderId;
  32. @ApiModelProperty("编号")
  33. private Integer number;
  34. @ApiModelProperty("名称")
  35. @Searchable
  36. private String name;
  37. @ApiModelProperty("详情")
  38. @Column(columnDefinition = "TEXT")
  39. private String detail;
  40. @Column(columnDefinition = "TEXT")
  41. @Convert(converter = PropertyListConverter.class)
  42. @ApiModelProperty("特性")
  43. private List<CollectionProperty> properties;
  44. @Column(columnDefinition = "TEXT")
  45. @Convert(converter = PrivilegeListConverter.class)
  46. @ApiModelProperty("特权")
  47. private List<Privilege> privileges;
  48. @ApiModelProperty("分类")
  49. private String category;
  50. @ApiModelProperty("是否可转售")
  51. private boolean canResale;
  52. @ApiModelProperty("版税比例")
  53. private int royalties;
  54. @ApiModelProperty("手续费比例")
  55. private int serviceCharge;
  56. @ApiModelProperty("铸造者")
  57. @Searchable
  58. private String minter;
  59. @ApiModelProperty("铸造者ID")
  60. private Long minterId;
  61. @ApiModelProperty("铸造者头像")
  62. private String minterAvatar;
  63. @ApiModelProperty("持有者")
  64. @Searchable
  65. private String owner;
  66. @ApiModelProperty("持有者ID")
  67. private Long ownerId;
  68. @ApiModelProperty("持有者头像")
  69. private String ownerAvatar;
  70. @ApiModelProperty("图片")
  71. @Convert(converter = FileObjectListConverter.class)
  72. @Column(columnDefinition = "TEXT")
  73. private List<FileObject> pic;
  74. @ApiModelProperty("tokenId")
  75. private String tokenId;
  76. @ApiModelProperty("购买hash")
  77. private String txHash;
  78. @ApiModelProperty("消耗gas")
  79. private BigInteger gasUsed;
  80. @ApiModelProperty("区块高度")
  81. private BigInteger blockNumber;
  82. @ApiModelProperty("ipfs地址")
  83. private String ipfsUrl;
  84. @ApiModelProperty("购买价格")
  85. @Column(precision = 10, scale = 2)
  86. private BigDecimal price;
  87. @ApiModelProperty("转让价格")
  88. @Column(precision = 10, scale = 2)
  89. private BigDecimal sellPrice;
  90. @ApiModelProperty("转让hash")
  91. private String outTxHash;
  92. @ApiModelProperty("转让订单ID")
  93. private Long outOrderId;
  94. @ApiModelProperty("状态")
  95. @Enumerated(EnumType.STRING)
  96. private AssetStatus status;
  97. @ApiModelProperty("是否公开展示")
  98. private boolean publicShow;
  99. @ApiModelProperty("是否寄售")
  100. private boolean consignment;
  101. private Long publicCollectionId;
  102. private int likes;
  103. private Long fromAssetId;
  104. public static Asset create(Collection collection, User user) {
  105. return Asset.builder()
  106. .userId(user.getId())
  107. .collectionId(collection.getId())
  108. .minter(collection.getMinter())
  109. .minterId(collection.getMinterId())
  110. .minterAvatar(collection.getMinterAvatar())
  111. .name(collection.getName())
  112. .detail(collection.getDetail())
  113. .pic(collection.getPic())
  114. .properties(collection.getProperties())
  115. .privileges(collection.getPrivileges())
  116. .category(collection.getCategory())
  117. .canResale(collection.isCanResale())
  118. .royalties(collection.getRoyalties())
  119. .serviceCharge(collection.getServiceCharge())
  120. .price(collection.getPrice())
  121. .status(AssetStatus.NORMAL)
  122. .owner(user.getNickname())
  123. .ownerId(user.getId())
  124. .ownerAvatar(user.getAvatar())
  125. .build();
  126. }
  127. public static Asset create(BlindBoxItem item, User user) {
  128. return Asset.builder()
  129. .userId(user.getId())
  130. .collectionId(item.getCollectionId())
  131. .minter(item.getMinter())
  132. .minterId(item.getMinterId())
  133. .minterAvatar(item.getMinterAvatar())
  134. .name(item.getName())
  135. .detail(item.getDetail())
  136. .pic(item.getPic())
  137. .properties(item.getProperties())
  138. .privileges(item.getPrivileges())
  139. .category(item.getCategory())
  140. .canResale(item.isCanResale())
  141. .royalties(item.getRoyalties())
  142. .serviceCharge(item.getServiceCharge())
  143. .price(item.getPrice())
  144. .status(AssetStatus.NORMAL)
  145. .owner(user.getNickname())
  146. .ownerId(user.getId())
  147. .ownerAvatar(user.getAvatar())
  148. .build();
  149. }
  150. }