Order.java 5.2 KB

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