Collection.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package com.izouma.nineth.domain;
  2. import com.izouma.nineth.annotations.Searchable;
  3. import com.izouma.nineth.annotations.SearchableOne;
  4. import com.izouma.nineth.converter.FileObjectConverter;
  5. import com.izouma.nineth.converter.FileObjectListConverter;
  6. import com.izouma.nineth.converter.PrivilegeListConverter;
  7. import com.izouma.nineth.converter.PropertyListConverter;
  8. import com.izouma.nineth.enums.CollectionSource;
  9. import com.izouma.nineth.enums.CollectionType;
  10. import com.izouma.nineth.enums.SubscribeStatus;
  11. import io.swagger.annotations.ApiModel;
  12. import io.swagger.annotations.ApiModelProperty;
  13. import lombok.AllArgsConstructor;
  14. import lombok.Builder;
  15. import lombok.Data;
  16. import lombok.NoArgsConstructor;
  17. import org.hibernate.annotations.Formula;
  18. import javax.persistence.*;
  19. import java.math.BigDecimal;
  20. import java.time.LocalDateTime;
  21. import java.util.List;
  22. @Data
  23. @Entity
  24. @Table(name = "collection_info", indexes = {
  25. @Index(columnList = "type,source"),
  26. @Index(columnList = "minterId"),
  27. @Index(columnList = "onShelf"),
  28. @Index(columnList = "ownerId"),
  29. @Index(columnList = "assetId")
  30. })
  31. @AllArgsConstructor
  32. @NoArgsConstructor
  33. @Builder
  34. @ApiModel("藏品")
  35. public class Collection extends BaseEntity {
  36. @ApiModelProperty("名称")
  37. @Searchable
  38. private String name;
  39. @ApiModelProperty("图片")
  40. @Column(columnDefinition = "TEXT")
  41. @Convert(converter = FileObjectListConverter.class)
  42. private List<FileObject> pic;
  43. @Column(columnDefinition = "TEXT")
  44. @Convert(converter = FileObjectConverter.class)
  45. private FileObject model3d;
  46. @ApiModelProperty("铸造者")
  47. @SearchableOne
  48. private String minter;
  49. @ApiModelProperty("铸造者ID")
  50. private Long minterId;
  51. @ApiModelProperty("铸造者头像")
  52. private String minterAvatar;
  53. @ApiModelProperty("持有者")
  54. @SearchableOne
  55. private String owner;
  56. @ApiModelProperty("持有者者ID")
  57. private Long ownerId;
  58. @ApiModelProperty("铸造者头像")
  59. private String ownerAvatar;
  60. @ApiModelProperty("详情")
  61. @Column(columnDefinition = "TEXT")
  62. private String detail;
  63. @ApiModelProperty("类型")
  64. @Enumerated(EnumType.STRING)
  65. private CollectionType type;
  66. @Column(columnDefinition = "TEXT")
  67. @Convert(converter = PropertyListConverter.class)
  68. @ApiModelProperty("特性")
  69. private List<CollectionProperty> properties;
  70. @Column(columnDefinition = "TEXT")
  71. @Convert(converter = PrivilegeListConverter.class)
  72. @ApiModelProperty("特权")
  73. private List<Privilege> privileges;
  74. @ApiModelProperty("编号")
  75. private Integer number;
  76. @ApiModelProperty("是否可转售")
  77. private boolean canResale;
  78. @ApiModelProperty("版税比例")
  79. private int royalties;
  80. @ApiModelProperty("手续费比例")
  81. private int serviceCharge;
  82. @ApiModelProperty("分类")
  83. private String category;
  84. @ApiModelProperty("来源")
  85. @Enumerated(EnumType.STRING)
  86. private CollectionSource source;
  87. @ApiModelProperty("已售")
  88. private int sale;
  89. @ApiModelProperty("库存")
  90. private int stock;
  91. @ApiModelProperty("发行数量")
  92. private int total;
  93. @ApiModelProperty("点赞")
  94. private int likes;
  95. @ApiModelProperty("上架")
  96. private boolean onShelf;
  97. @ApiModelProperty("可售")
  98. private boolean salable = false;
  99. @ApiModelProperty("价格")
  100. @Column(precision = 10, scale = 2)
  101. private BigDecimal price;
  102. @ApiModelProperty("预约开始时间")
  103. private LocalDateTime startTime;
  104. private boolean scheduleSale;
  105. private int sort;
  106. private Long assetId;
  107. private BigDecimal originalPrice;
  108. private Integer currentNumber;
  109. @Formula(value = "if(stock <= 0, 1, 0)")
  110. private int soldOut;
  111. @ApiModelProperty("限购数量")
  112. private int maxCount;
  113. @ApiModelProperty("限购识别码")
  114. private String countId;
  115. private boolean scanCode;
  116. /*
  117. true: 没售罄
  118. false: 已售罄
  119. */
  120. @ApiModelProperty("手动售罄")
  121. private boolean noSoldOut;
  122. @ApiModelProperty("拉新任务指标")
  123. private int assignment;
  124. @ApiModelProperty("优惠券支付")
  125. private boolean couponPayment;
  126. @ApiModelProperty("分享背景")
  127. private String shareBg;
  128. @ApiModelProperty("注册背景")
  129. private String registerBg;
  130. @ApiModelProperty("总额度")
  131. private Integer totalQuota;
  132. @ApiModelProperty("剩余额度")
  133. private Integer vipQuota;
  134. @ApiModelProperty("延迟销售")
  135. private Boolean timeDelay;
  136. @ApiModelProperty("销售时间")
  137. private LocalDateTime saleTime;
  138. @ApiModelProperty("持有几天")
  139. private Integer holdDays;
  140. @ApiModelProperty("开启抢白名单")
  141. private Boolean openQuota;
  142. @ApiModelProperty("展厅背景")
  143. private String showroomBg;
  144. @ApiModelProperty("最多可放藏品数量")
  145. private Integer maxCollection;
  146. @ApiModelProperty("藏品类别")
  147. private String collectionCategory;
  148. @ApiModelProperty("藏品者的作品字段")
  149. private String collectionWorks;
  150. @ApiModelProperty("关注")
  151. private boolean follow;
  152. @ApiModelProperty("发行方")
  153. private String issuer;
  154. @ApiModelProperty("购买须知")
  155. private String purchaseInstructions;
  156. @ApiModelProperty("预约结束时间")
  157. private LocalDateTime endTime;
  158. @ApiModelProperty("购买资格公布时间")
  159. private LocalDateTime publishTime;
  160. @ApiModelProperty("购买时间")
  161. private LocalDateTime purchaseTime;
  162. @ApiModelProperty("是否有预约")
  163. private boolean hasSubscribe = false;
  164. @ApiModelProperty("是否预约成功")
  165. private boolean subscribed;
  166. @ApiModelProperty("是否有购买资格")
  167. private boolean purchaseQualifications;
  168. @ApiModelProperty("预约状态")
  169. @Enumerated(EnumType.STRING)
  170. private SubscribeStatus subscribeStatus;
  171. }