Order.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.izouma.nineth.domain;
  2. import com.fasterxml.jackson.annotation.JsonIgnore;
  3. import com.fasterxml.jackson.annotation.JsonProperty;
  4. import com.izouma.nineth.annotations.Searchable;
  5. import com.izouma.nineth.annotations.SearchableOne;
  6. import com.izouma.nineth.converter.FileObjectListConverter;
  7. import com.izouma.nineth.converter.PrivilegeListConverter;
  8. import com.izouma.nineth.converter.PropertyListConverter;
  9. import com.izouma.nineth.enums.*;
  10. import io.swagger.annotations.ApiModel;
  11. import io.swagger.annotations.ApiModelProperty;
  12. import lombok.AllArgsConstructor;
  13. import lombok.Builder;
  14. import lombok.Data;
  15. import lombok.NoArgsConstructor;
  16. import org.springframework.data.annotation.CreatedBy;
  17. import org.springframework.data.annotation.CreatedDate;
  18. import org.springframework.data.annotation.LastModifiedBy;
  19. import org.springframework.data.annotation.LastModifiedDate;
  20. import javax.persistence.*;
  21. import java.math.BigDecimal;
  22. import java.math.BigInteger;
  23. import java.time.LocalDateTime;
  24. import java.util.List;
  25. @Data
  26. @Entity
  27. @Table(name = "order_info", indexes = {
  28. @Index(columnList = "userId"),
  29. @Index(columnList = "status"),
  30. @Index(columnList = "assetId"),
  31. @Index(columnList = "collectionId"),
  32. @Index(columnList = "transactionId"),
  33. @Index(columnList = "minterId"),
  34. @Index(columnList = "createdAt")
  35. })
  36. @AllArgsConstructor
  37. @NoArgsConstructor
  38. @Builder
  39. @ApiModel("订单")
  40. public class Order extends BaseEntityNoID {
  41. @Id
  42. // @GenericGenerator(name = "custom-id", strategy = "com.izouma.nineth.utils.SnowflakeIdGenerator")
  43. // @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id")
  44. private Long id;
  45. @JsonIgnore
  46. @CreatedBy
  47. private String createdBy;
  48. @JsonIgnore
  49. @CreatedDate
  50. private LocalDateTime createdAt;
  51. @JsonIgnore
  52. @LastModifiedBy
  53. private String modifiedBy;
  54. @JsonIgnore
  55. @LastModifiedDate
  56. private LocalDateTime modifiedAt;
  57. private boolean del;
  58. @ApiModelProperty("用户ID")
  59. // @Searchable
  60. private Long userId;
  61. @Transient
  62. private String nickname;
  63. @ApiModelProperty("藏品ID")
  64. // @Searchable
  65. private Long collectionId;
  66. @ApiModelProperty("数量")
  67. private int qty;
  68. @ApiModelProperty("名称")
  69. @SearchableOne
  70. private String name;
  71. @ApiModelProperty("图片")
  72. @Convert(converter = FileObjectListConverter.class)
  73. @Column(columnDefinition = "TEXT")
  74. private List<FileObject> pic;
  75. @ApiModelProperty("详情")
  76. @Column(columnDefinition = "TEXT")
  77. private String detail;
  78. @Column(columnDefinition = "TEXT")
  79. @Convert(converter = PropertyListConverter.class)
  80. @ApiModelProperty("特性")
  81. private List<CollectionProperty> properties;
  82. @Column(columnDefinition = "TEXT")
  83. @Convert(converter = PrivilegeListConverter.class)
  84. @ApiModelProperty("特权")
  85. private List<Privilege> privileges;
  86. @ApiModelProperty("分类")
  87. private String category;
  88. @ApiModelProperty("是否可转售")
  89. private boolean canResale;
  90. @ApiModelProperty("版税比例")
  91. private int royalties;
  92. @ApiModelProperty("手续费比例")
  93. private int serviceCharge;
  94. @ApiModelProperty("类型")
  95. @Enumerated(EnumType.STRING)
  96. private CollectionType type;
  97. @ApiModelProperty("来源")
  98. @Enumerated(EnumType.STRING)
  99. private CollectionSource source;
  100. @ApiModelProperty("铸造者")
  101. // @Searchable
  102. private String minter;
  103. @ApiModelProperty("铸造者ID")
  104. // @Searchable
  105. private Long minterId;
  106. @ApiModelProperty("铸造者头像")
  107. private String minterAvatar;
  108. @ApiModelProperty("价格")
  109. @Column(precision = 10, scale = 2)
  110. private BigDecimal price;
  111. @ApiModelProperty("gas费")
  112. @Column(precision = 10, scale = 2)
  113. private BigDecimal gasPrice;
  114. @ApiModelProperty("总价")
  115. @Column(precision = 10, scale = 2)
  116. private BigDecimal totalPrice;
  117. @ApiModelProperty("状态")
  118. @Enumerated(EnumType.STRING)
  119. private OrderStatus status;
  120. @ApiModelProperty("支付方式")
  121. @Enumerated(EnumType.STRING)
  122. private PayMethod payMethod;
  123. @ApiModelProperty("交易ID")
  124. @Searchable
  125. @Column(length = 90)
  126. private String transactionId;
  127. @ApiModelProperty("支付时间")
  128. private LocalDateTime payTime;
  129. @ApiModelProperty("取消时间")
  130. private LocalDateTime cancelTime;
  131. @ApiModelProperty("交易hash")
  132. private String txHash;
  133. @ApiModelProperty("消耗gas")
  134. private BigInteger gasUsed;
  135. @ApiModelProperty("区块高度")
  136. private BigInteger blockNumber;
  137. @ApiModelProperty("收货人")
  138. private String contactName;
  139. @ApiModelProperty("收货电话")
  140. private String contactPhone;
  141. @ApiModelProperty("收货地址")
  142. private String address;
  143. private Long winCollectionId;
  144. private Long assetId;
  145. private Long resultAssetId;
  146. private boolean hide;
  147. private Long couponId;
  148. private Long invitor;
  149. private boolean opened;
  150. private String tokenId;
  151. @JsonProperty("createdAt")
  152. public LocalDateTime getCreatedAt() {
  153. return createdAt;
  154. }
  155. private String countId;
  156. @ApiModelProperty("是否vip")
  157. private boolean vip;
  158. @ApiModelProperty("vip积分购买")
  159. private Integer vipPoint;
  160. @ApiModelProperty("藏品数字码")
  161. private String numericCode;
  162. @ApiModelProperty("支付流水号")
  163. private String paySerialNumber;
  164. @ApiModelProperty("发行数量")
  165. private Integer totalCount;
  166. }