Skip to content

Commit

Permalink
์ œ๋ฐœ
Browse files Browse the repository at this point in the history
  • Loading branch information
djdongjae committed Aug 6, 2024
1 parent e0c8796 commit 57d02c5
Show file tree
Hide file tree
Showing 19 changed files with 675 additions and 30 deletions.
54 changes: 27 additions & 27 deletions src/main/java/net/skhu/tastyinventory_be/config/MvcConfigurer.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
//package net.skhu.tastyinventory_be.config;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.http.HttpMethod;
//import org.springframework.web.servlet.config.annotation.CorsRegistry;
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//
//@Configuration
//public class MvcConfigurer implements WebMvcConfigurer {
// @Value("${client.origins}")
// private String[] allowedOrigins;
//
// @Override
// public void addCorsMappings(CorsRegistry registry) {
// registry.addMapping("/**")
// .allowedOrigins(allowedOrigins)
// .allowedMethods(
// HttpMethod.GET.name(),
// HttpMethod.HEAD.name(),
// HttpMethod.POST.name(),
// HttpMethod.PUT.name(),
// HttpMethod.DELETE.name())
// .maxAge(3600)
// .allowCredentials(true);
// }
//}
package net.skhu.tastyinventory_be.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfigurer implements WebMvcConfigurer {
@Value("${client.origins}")
private String[] allowedOrigins;

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins(allowedOrigins)
.allowedMethods(
HttpMethod.GET.name(),
HttpMethod.HEAD.name(),
HttpMethod.POST.name(),
HttpMethod.PUT.name(),
HttpMethod.DELETE.name())
.maxAge(3600)
.allowCredentials(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.requestMatchers(HttpMethod.OPTIONS,"/**").permitAll()
.requestMatchers("/csrf-token").permitAll()
.requestMatchers(HttpMethod.POST, "/users", "/authorize").permitAll()
.requestMatchers(HttpMethod.GET, "/users").authenticated()
.anyRequest().authenticated())
.requestMatchers(HttpMethod.GET, "/users").permitAll()
.anyRequest().permitAll())
.exceptionHandling(a -> a
.accessDeniedHandler((request, response, accessDeniedException) -> {
log.error("403: {}", accessDeniedException.getMessage(), accessDeniedException);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
package net.skhu.tastyinventory_be.controller.hackathon;

import lombok.RequiredArgsConstructor;
import net.skhu.tastyinventory_be.common.dto.BaseResponse;
import net.skhu.tastyinventory_be.controller.hackathon.dto.request.FitnessRequestDto;
import net.skhu.tastyinventory_be.controller.hackathon.dto.request.FoodRequestDto;
import net.skhu.tastyinventory_be.controller.hackathon.dto.request.WeightRequestDto;
import net.skhu.tastyinventory_be.controller.hackathon.dto.response.FitnessResponseDto;
import net.skhu.tastyinventory_be.controller.hackathon.dto.response.FoodResponseDto;
import net.skhu.tastyinventory_be.controller.hackathon.dto.response.UserInfoResponseDto;
import net.skhu.tastyinventory_be.domain.user.User;
import net.skhu.tastyinventory_be.domain.user.UserRepository;
import net.skhu.tastyinventory_be.exception.ErrorCode;
import net.skhu.tastyinventory_be.exception.SuccessCode;
import net.skhu.tastyinventory_be.exception.model.NotFoundException;
import net.skhu.tastyinventory_be.security.UserDetailsImpl;
import net.skhu.tastyinventory_be.service.HackathonService;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;

@RequiredArgsConstructor
@RequestMapping
@RestController
public class HackathonController {

private final HackathonService hackathonService;
private final UserRepository userRepository;

@PostMapping("/food")
@ResponseStatus(HttpStatus.CREATED)
public BaseResponse<?> insertFood(
@RequestParam String meal,
@RequestParam String date,
@RequestBody FoodRequestDto requestDto,
@AuthenticationPrincipal UserDetailsImpl loginUser
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));


hackathonService.insertFood(requestDto, meal, localDate, user);

return BaseResponse.success(SuccessCode.MENU_CREATE_SUCCESS);
}

@GetMapping("/food")
@ResponseStatus(HttpStatus.OK)
public BaseResponse<FoodResponseDto> checkFood(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

final FoodResponseDto data = hackathonService.checkFood(localDate, user);
return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}

@PostMapping("/weight")
@ResponseStatus(HttpStatus.CREATED)
public BaseResponse<?> insertWeight(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser,
@RequestBody WeightRequestDto requestDto
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

hackathonService.insertWeight(requestDto, localDate, user);

return BaseResponse.success(SuccessCode.SOLD_CREATE_SUCCESS);
}

@GetMapping("/weight")
@ResponseStatus(HttpStatus.OK)
public BaseResponse<Integer> getWeight(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

final Integer data = hackathonService.getWeight(localDate, user);

return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}

@PostMapping("/fitness")
@ResponseStatus(HttpStatus.CREATED)
public BaseResponse<?> insertFitness(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser,
@RequestBody FitnessRequestDto requestDto
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

hackathonService.insertFitness(localDate, user, requestDto);
return BaseResponse.success(SuccessCode.MENU_CREATE_SUCCESS);
}

@GetMapping("/fitness")
@ResponseStatus(HttpStatus.OK)
public BaseResponse<FitnessResponseDto> getFitness(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

final FitnessResponseDto data = hackathonService.getFitness(localDate, user);
return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}

@GetMapping("/user-info")
@ResponseStatus(HttpStatus.OK)
public BaseResponse<UserInfoResponseDto> getUserInfo(
@RequestParam String date,
@AuthenticationPrincipal UserDetailsImpl loginUser
) {
String[] dateInfo = date.split("-");

LocalDate localDate = LocalDate.of(
Integer.parseInt(dateInfo[0]),
Integer.parseInt(dateInfo[1]),
Integer.parseInt(dateInfo[2])
);

User user = userRepository.findByUsername(loginUser.getUsername())
.orElseThrow(() -> new NotFoundException(
ErrorCode.NOT_FOUND_USER_EXCEPTION, ErrorCode.NOT_FOUND_USER_EXCEPTION.getMessage()
));

final UserInfoResponseDto data = hackathonService.getUserInfo(localDate, user);
return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class FitnessRequestDto {
private String name;
private Integer minute;
private Integer calories;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class FoodRequestDto {
private String name;
private Integer carbohydrate;
private Integer protein;
private Integer fat;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class WeightRequestDto {
private Integer weight;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import net.skhu.tastyinventory_be.domain.fitness.Fitness;

@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class FitnessResponseDto {

private String name;
private Integer minute;
private Integer calories;

public static FitnessResponseDto from(Fitness fitness) {
return new FitnessResponseDto(fitness.getName(), fitness.getMinute(), fitness.getCalories());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class FoodResponseDto {
private Boolean breakfast;
private Boolean lunch;
private Boolean dinner;
private Boolean snack;

public static FoodResponseDto of(Boolean breakfast, Boolean lunch, Boolean dinner, Boolean snack) {
return new FoodResponseDto(breakfast, lunch, dinner, snack);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package net.skhu.tastyinventory_be.controller.hackathon.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class UserInfoResponseDto {
private Integer consumedCalories;
private Integer remainCalories;
private Integer carbohydrate;
private Integer protein;
private Integer fat;

public static UserInfoResponseDto of(
Integer consumedCalories,
Integer remainCalories,
Integer carbohydrate,
Integer protein,
Integer fat
) {
return new UserInfoResponseDto(consumedCalories, remainCalories, carbohydrate, protein, fat);
}
}
Loading

0 comments on commit 57d02c5

Please sign in to comment.