Asset.java 6.4 KB

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