diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..93d1125 --- /dev/null +++ b/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.4.1 + + + org.sadtech.example + swagger + 0.0.1-SNAPSHOT + swagger + Demo project for Swagger + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + io.swagger.core.v3 + swagger-annotations + 2.1.6 + + + org.springdoc + springdoc-openapi-ui + 1.5.2 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/org/sadtech/example/swagger/controller/PointController.java b/src/main/java/org/sadtech/example/swagger/controller/PointController.java index 729f409..f4fda73 100644 --- a/src/main/java/org/sadtech/example/swagger/controller/PointController.java +++ b/src/main/java/org/sadtech/example/swagger/controller/PointController.java @@ -6,17 +6,21 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.sadtech.example.swagger.dto.TypeOperation; import org.sadtech.example.swagger.dto.UserDto; import org.springframework.http.HttpStatus; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import java.util.Map; /** * @author upagge 30.12.2020 */ +@Validated @RestController @RequestMapping("api/user/point") @Tag(name = "Система лояльности", description = "Управляет балами пользователей") @@ -31,9 +35,9 @@ public class PointController { @PostMapping("{key}") @Operation(summary = "Управление баллами", description = "Позволяет удалить или добавить баллы пользователю") public HttpStatus changePoints( - @PathVariable @Parameter(description = "Идентификатор пользователя") String key, - @RequestPart("point") @Parameter(description = "Количество баллов") Long point, - @RequestPart("type") @Parameter(description = "Тип операции") TypeOperation type + @PathVariable @NotBlank @Parameter(description = "Идентификатор пользователя") String key, + @RequestPart("point") @Min(0) @Parameter(description = "Количество баллов", required = true) Long point, + @RequestPart("type") @Parameter(description = "Тип операции", required = true) TypeOperation type ) { final UserDto userDto = repository.get(key); userDto.setPoints( diff --git a/src/main/java/org/sadtech/example/swagger/dto/UserDto.java b/src/main/java/org/sadtech/example/swagger/dto/UserDto.java index 7c137d8..9a0449c 100644 --- a/src/main/java/org/sadtech/example/swagger/dto/UserDto.java +++ b/src/main/java/org/sadtech/example/swagger/dto/UserDto.java @@ -2,6 +2,7 @@ package org.sadtech.example.swagger.dto; import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.NotBlank; import java.time.LocalDateTime; /** @@ -16,7 +17,7 @@ public class UserDto { @Schema(description = "ФИО", example = "Иванов Иван Иванович") private String name; - @Schema(description = "Баллы пользователя") + @Schema(description = "Баллы пользователя", accessMode = Schema.AccessMode.READ_ONLY) private Long points = 0L; @Schema(description = "Пол пользователя")