Spring Boot E-Commerce Filter Категории по торговцам - PullRequest
0 голосов
/ 03 марта 2020

Я создаю API отдыха электронной коммерции с помощью Spring Boot и использую PostgreSQL. Я уже фильтрую товары по продавцу, но мне также нужно отфильтровать категории по продавцу, поэтому, если покупатель просматривает профиль продавца, я просто хочу указать категории продуктов продавца и их характеристики. Я думаю, что это может быть с Elasticsearch, но может лиasticaarch решить это или как я могу сделать это с PostgreSQL Я не хочу отношений между торговцами и категориями, потому что это бессмысленно для меня. Как я могу это сделать.

Модели, которые я использую

Категория:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@NotBlank
private String name;

@NotBlank
private String photoUrl;

private boolean subCategory;

private double commission;

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@ManyToOne
@JoinColumn(name = "parent_id")
private Category parent;

@OneToMany(mappedBy = "parent",cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy("id desc")
private List<Category> childs;

@JsonIgnore
@OneToMany(mappedBy = "category",cascade = CascadeType.REMOVE, orphanRemoval = true, fetch = FetchType.LAZY)
@OrderBy("id desc")
private List<Product> products;

Продукт:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private UUID uuid;

@NotBlank
@Column(unique = true)
private String name;

@NotNull
private double tax;

private String photoUrl;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "category_id",referencedColumnName = "id")
private Category category;

private boolean status;

private double commission;

@OneToMany(mappedBy = "product",cascade = CascadeType.ALL,orphanRemoval = true)
@OrderBy("id desc")
@EqualsAndHashCode.Exclude
private Set<ProductSpecify> productSpecifies;

@OneToMany(mappedBy = "product",cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.EAGER)
@OrderBy("id desc")
@EqualsAndHashCode.Exclude
private Set<Barcode> barcodes;

@ManyToMany
private List<User> users;

ProductSpecify:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private UUID uuid;

@NotNull
private double totalPrice;

@NotNull
private double unitPrice;

@NotNull
private int quantity;

@NotNull
private double contents;

@NotNull
@Enumerated(EnumType.STRING)
private UnitType unitType;

private double commission;

@NotNull
private double recommendedRetailPrice;

@ManyToOne
@JoinColumn(name = "product_id",referencedColumnName = "id")
private Product product;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id",referencedColumnName = "id")
private User user;

@ManyToMany(fetch = FetchType.EAGER)
private List<State> states;
...