Asset.java 6.2 KB

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