Collection.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.izouma.nineth.domain;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.izouma.nineth.annotations.Searchable;
  5. import com.izouma.nineth.converter.FileObjectListConverter;
  6. import com.izouma.nineth.converter.StringArrayConverter;
  7. import com.izouma.nineth.enums.CollectionSource;
  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 org.apache.commons.lang3.StringUtils;
  16. import javax.persistence.*;
  17. import java.math.BigDecimal;
  18. import java.time.LocalDateTime;
  19. import java.util.List;
  20. @Data
  21. @Entity
  22. @Table(name = "collection_info")
  23. @AllArgsConstructor
  24. @NoArgsConstructor
  25. @Builder
  26. @ApiModel("藏品")
  27. public class Collection extends BaseEntity {
  28. @ApiModelProperty("名称")
  29. @Searchable
  30. private String name;
  31. @ApiModelProperty("图片")
  32. @Column(columnDefinition = "TEXT")
  33. @Convert(converter = FileObjectListConverter.class)
  34. private List<FileObject> pics;
  35. @ApiModelProperty("铸造者")
  36. @Searchable
  37. private String minter;
  38. @ApiModelProperty("铸造者ID")
  39. private Long minterId;
  40. @ApiModelProperty("铸造者头像")
  41. private String minterAvatar;
  42. @ApiModelProperty("铸造者")
  43. @Searchable
  44. private String owner;
  45. @ApiModelProperty("铸造者ID")
  46. private Long ownerId;
  47. @ApiModelProperty("铸造者头像")
  48. private String ownerAvatar;
  49. @ApiModelProperty("详情")
  50. @Column(columnDefinition = "TEXT")
  51. private String detail;
  52. @ApiModelProperty("类型")
  53. @Enumerated(EnumType.STRING)
  54. private CollectionType type;
  55. @Column(columnDefinition = "TEXT")
  56. @Convert(converter = PropertyListConverter.class)
  57. @ApiModelProperty("特性")
  58. private List<CollectionProperty> properties;
  59. @ApiModelProperty("是否可转售")
  60. private boolean canResale;
  61. @ApiModelProperty("版税比例")
  62. private int royalties;
  63. @ApiModelProperty("手续费比例")
  64. private int serviceCharge;
  65. @ApiModelProperty("分类")
  66. private String category;
  67. @ApiModelProperty("来源")
  68. @Enumerated(EnumType.STRING)
  69. private CollectionSource source;
  70. @ApiModelProperty("已售")
  71. private int sale;
  72. @ApiModelProperty("库存")
  73. private int stock;
  74. @ApiModelProperty("发行数量")
  75. private int total;
  76. @ApiModelProperty("点赞")
  77. private int likes;
  78. @ApiModelProperty("上架")
  79. private boolean onShelf;
  80. @ApiModelProperty("可售")
  81. private boolean salable;
  82. @ApiModelProperty("价格")
  83. @Column(precision = 10, scale = 2)
  84. private BigDecimal price;
  85. @ApiModelProperty("盲盒开售时间")
  86. private LocalDateTime startTime;
  87. private boolean scheduleSale;
  88. @Data
  89. public static class CollectionProperty {
  90. private String name;
  91. private String value;
  92. }
  93. public static class PropertyListConverter implements AttributeConverter<List<CollectionProperty>, String> {
  94. @Override
  95. public String convertToDatabaseColumn(List<CollectionProperty> collectionProperties) {
  96. if (collectionProperties == null) {
  97. return null;
  98. }
  99. return JSON.toJSONString(collectionProperties);
  100. }
  101. @Override
  102. public List<CollectionProperty> convertToEntityAttribute(String s) {
  103. if (StringUtils.isEmpty(s)) {
  104. return null;
  105. }
  106. try {
  107. return JSONArray.parseArray(s, CollectionProperty.class);
  108. } catch (Exception ignored) {
  109. }
  110. return null;
  111. }
  112. }
  113. }