Skip to content

Commit d70d90a

Browse files
authored
Фильтр проклятых предметов #159 Dev to Main (#162)
2 parents 7487e54 + b63fccc commit d70d90a

File tree

4 files changed

+26
-12
lines changed

4 files changed

+26
-12
lines changed

src/main/java/club/dnd5/portal/controller/api/item/MagicItemApiController.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import club.dnd5.portal.dto.api.RequestApi;
66
import club.dnd5.portal.dto.api.item.MagicItemApi;
77
import club.dnd5.portal.dto.api.item.MagicItemDetailApi;
8-
import club.dnd5.portal.dto.api.item.MagicItemRequesApi;
8+
import club.dnd5.portal.dto.api.item.MagicItemRequestApi;
99
import club.dnd5.portal.dto.api.spells.SearchRequest;
1010
import club.dnd5.portal.dto.fvtt.export.FCreature;
1111
import club.dnd5.portal.exception.PageNotFoundException;
@@ -44,7 +44,7 @@ public class MagicItemApiController {
4444

4545
@Operation(summary = "Получение краткого списка магических предметов и артефактов")
4646
@PostMapping(value = "/api/v1/items/magic", produces = MediaType.APPLICATION_JSON_VALUE)
47-
public List<MagicItemApi> getItems(@RequestBody MagicItemRequesApi request) {
47+
public List<MagicItemApi> getItems(@RequestBody MagicItemRequestApi request) {
4848
Specification<MagicItem> specification = null;
4949
Optional<RequestApi> optionalRequest = Optional.ofNullable(request);
5050
if (!optionalRequest.map(RequestApi::getSearch).map(SearchRequest::getValue).orElse("").isEmpty()) {
@@ -93,6 +93,14 @@ public List<MagicItemApi> getItems(@RequestBody MagicItemRequesApi request) {
9393
specification = SpecificationUtil.getAndSpecification(specification, (root, query, cb) -> cb.isNull(root.get("charge")));
9494
}
9595
}
96+
if (!request.getFilter().getCurse().isEmpty()) {
97+
if (request.getFilter().getCurse().contains("1")) {
98+
specification = SpecificationUtil.getAndSpecification(specification, (root, query, cb) -> cb.equal(root.get("curse"), 1));
99+
}
100+
if (request.getFilter().getCurse().contains("2")) {
101+
specification = SpecificationUtil.getAndSpecification(specification, (root, query, cb) -> cb.equal(root.get("curse"), 0));
102+
}
103+
}
96104
}
97105
Pageable pageable = PageAndSortUtil.getPageable(request);
98106
return magicItemRepository.findAll(specification, pageable).toList()
@@ -166,6 +174,13 @@ public FilterApi getMagicItemsFilter() {
166174
chargeFilter.setValues(values);
167175
otherFilters.add(chargeFilter);
168176

177+
FilterApi curseFilter = new FilterApi("Проклятие", "curse");
178+
List<FilterValueApi> curseValues = new ArrayList<>(2);
179+
curseValues.add(new FilterValueApi("есть", 1));
180+
curseValues.add(new FilterValueApi("нет", 2));
181+
curseFilter.setValues(curseValues);
182+
otherFilters.add(curseFilter);
183+
169184
filters.setOther(otherFilters);
170185
return filters;
171186
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package club.dnd5.portal.dto.api.item;
22

3-
import java.util.List;
4-
53
import com.fasterxml.jackson.annotation.JsonInclude;
6-
import com.fasterxml.jackson.annotation.JsonProperty;
74
import com.fasterxml.jackson.annotation.JsonInclude.Include;
8-
5+
import com.fasterxml.jackson.annotation.JsonProperty;
96
import lombok.Getter;
107
import lombok.NoArgsConstructor;
118
import lombok.Setter;
129

10+
import java.util.List;
11+
1312
@JsonInclude(Include.NON_NULL)
1413

1514
@NoArgsConstructor
@@ -21,7 +20,8 @@ public class MagicItemFilter {
2120
List<String> customization;
2221
List<String> consumable;
2322
List<String> charge;
24-
23+
List<String> curse;
24+
2525
@JsonProperty("book")
2626
private List<String> books;
2727
}

src/main/java/club/dnd5/portal/dto/api/item/MagicItemRequesApi.java renamed to src/main/java/club/dnd5/portal/dto/api/item/MagicItemRequestApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
@NoArgsConstructor
1414
@Getter
1515
@Setter
16-
public class MagicItemRequesApi extends RequestApi {
16+
public class MagicItemRequestApi extends RequestApi {
1717
public MagicItemFilter filter;
1818
}

src/main/java/club/dnd5/portal/model/items/MagicItem.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public class MagicItem {
4242
private boolean consumed;
4343
private Integer charge;
4444

45+
@Column(columnDefinition = "TINYINT")
46+
private Boolean curse;
47+
4548
@Column
4649
private Integer cost;
4750
private Byte bonus;
@@ -74,10 +77,6 @@ public int getCost() {
7477
return consumed ? rarity.getBaseCost() / 2 : rarity.getBaseCost();
7578
}
7679

77-
public int getBaseCost() {
78-
return cost;
79-
}
80-
8180
public String getCapitalazeName() {
8281
return StringUtils.capitalize(name.toLowerCase());
8382
}

0 commit comments

Comments
 (0)