package com.izouma.nineth.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.izouma.nineth.annotations.Searchable; import com.izouma.nineth.annotations.SearchableOne; import com.izouma.nineth.converter.FileObjectListConverter; import com.izouma.nineth.converter.PrivilegeListConverter; import com.izouma.nineth.converter.PropertyListConverter; import com.izouma.nineth.enums.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; import javax.persistence.*; import java.math.BigDecimal; import java.math.BigInteger; import java.time.LocalDateTime; import java.util.List; @Data @Entity @Table(name = "order_info", indexes = { @Index(columnList = "userId"), @Index(columnList = "status"), @Index(columnList = "assetId"), @Index(columnList = "collectionId"), @Index(columnList = "transactionId"), @Index(columnList = "minterId"), @Index(columnList = "createdAt") }) @AllArgsConstructor @NoArgsConstructor @Builder @ApiModel("订单") public class Order extends BaseEntityNoID { @Id // @GenericGenerator(name = "custom-id", strategy = "com.izouma.nineth.utils.SnowflakeIdGenerator") // @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id") private Long id; @JsonIgnore @CreatedBy private String createdBy; @JsonIgnore @CreatedDate private LocalDateTime createdAt; @JsonIgnore @LastModifiedBy private String modifiedBy; @JsonIgnore @LastModifiedDate private LocalDateTime modifiedAt; private boolean del; @ApiModelProperty("用户ID") // @Searchable private Long userId; @Transient private String nickname; @ApiModelProperty("藏品ID") // @Searchable private Long collectionId; @ApiModelProperty("数量") private int qty; @ApiModelProperty("名称") @SearchableOne private String name; @ApiModelProperty("图片") @Convert(converter = FileObjectListConverter.class) @Column(columnDefinition = "TEXT") private List pic; @ApiModelProperty("详情") @Column(columnDefinition = "TEXT") private String detail; @Column(columnDefinition = "TEXT") @Convert(converter = PropertyListConverter.class) @ApiModelProperty("特性") private List properties; @Column(columnDefinition = "TEXT") @Convert(converter = PrivilegeListConverter.class) @ApiModelProperty("特权") private List privileges; @ApiModelProperty("分类") private String category; @ApiModelProperty("是否可转售") private boolean canResale; @ApiModelProperty("版税比例") private int royalties; @ApiModelProperty("手续费比例") private int serviceCharge; @ApiModelProperty("类型") @Enumerated(EnumType.STRING) private CollectionType type; @ApiModelProperty("来源") @Enumerated(EnumType.STRING) private CollectionSource source; @ApiModelProperty("铸造者") // @Searchable private String minter; @ApiModelProperty("铸造者ID") // @Searchable private Long minterId; @ApiModelProperty("铸造者头像") private String minterAvatar; @ApiModelProperty("价格") @Column(precision = 10, scale = 2) private BigDecimal price; @ApiModelProperty("gas费") @Column(precision = 10, scale = 2) private BigDecimal gasPrice; @ApiModelProperty("总价") @Column(precision = 10, scale = 2) private BigDecimal totalPrice; @ApiModelProperty("状态") @Enumerated(EnumType.STRING) private OrderStatus status; @ApiModelProperty("支付方式") @Enumerated(EnumType.STRING) private PayMethod payMethod; @ApiModelProperty("交易ID") @Searchable @Column(length = 90) private String transactionId; @ApiModelProperty("支付时间") private LocalDateTime payTime; @ApiModelProperty("取消时间") private LocalDateTime cancelTime; @ApiModelProperty("交易hash") private String txHash; @ApiModelProperty("消耗gas") private BigInteger gasUsed; @ApiModelProperty("区块高度") private BigInteger blockNumber; @ApiModelProperty("收货人") private String contactName; @ApiModelProperty("收货电话") private String contactPhone; @ApiModelProperty("收货地址") private String address; private Long winCollectionId; private Long assetId; private Long resultAssetId; private boolean hide; private Long couponId; private Long invitor; private boolean opened; private String tokenId; @JsonProperty("createdAt") public LocalDateTime getCreatedAt() { return createdAt; } private String countId; @ApiModelProperty("是否vip") private boolean vip; @ApiModelProperty("vip积分购买") private Integer vipPoint; @ApiModelProperty("藏品数字码") private String numericCode; @ApiModelProperty("支付流水号") private String paySerialNumber; @ApiModelProperty("发行数量") private Integer totalCount; }