Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,17 @@ dependencies {
// Lombok
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'

// Webflux
implementation 'org.springframework.boot:spring-boot-starter-webflux'

// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'org.apache.commons:commons-pool2'

// Http ~~
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@ public ResponseEntity<String> updateMyAccount(
@AuthenticationPrincipal UserDetails userDetails,
@RequestBody MemberReqDTO.MemberUpdateReqDTO dto
) {
String username = userDetails.getUsername();
memberCommandService.updateMemberByUsername(username, dto);
String email = userDetails.getUsername();
memberCommandService.updateMemberByEmail(email, dto);
return ResponseEntity.ok("Member Updated Successfully.");
}

Expand All @@ -69,8 +69,8 @@ public ResponseEntity<String> updateMyAccount(
public ResponseEntity<String> deleteMyAccount(
@AuthenticationPrincipal UserDetails userDetails
) {
String username = userDetails.getUsername();
memberCommandService.deleteMemberByUsername(username);
String email = userDetails.getUsername();
memberCommandService.deleteMemberByEmail(email);
return ResponseEntity.ok("Member Deleted Successfully.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
import com.project.likelion13thbe.domain.member.dto.request.MemberReqDTO;
import com.project.likelion13thbe.domain.member.dto.response.MemberResDTO;
import com.project.likelion13thbe.domain.member.entity.Member;
import org.springframework.security.crypto.password.PasswordEncoder;

public class MemberConverter {

public static Member toMember(MemberReqDTO.MemberCreateReqDTO memberCreateReqDTO) {
public static Member toMember(MemberReqDTO.MemberCreateReqDTO dto, PasswordEncoder passwordEncoder) {
return Member.builder()
.email(memberCreateReqDTO.getEmail())
.password(memberCreateReqDTO.getPassword())
.nickname(memberCreateReqDTO.getNickname())
.email(dto.getEmail())
.password(passwordEncoder.encode(dto.getPassword()))
.nickname(dto.getNickname())
.role(dto.getRole())
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public static class MemberCreateReqDTO {
private String email;
private String password;
private String nickname;
private String role;
}

@Getter
Expand All @@ -23,8 +24,8 @@ public static class MemberUpdateReqDTO {
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class LoginRequestDTO {
public String email;
public String password;
public static class LoginRequestDTO {
private String email;
private String password;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findById(Long id);
Optional<Member> findByEmail(String email);
Optional<Member> findByUsername(String username);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ public interface MemberCommandService {
MemberResDTO.MemberCreateResDTO createMember(MemberReqDTO.MemberCreateReqDTO memberCreateReqDTO);
void updateMember(Long id, MemberReqDTO.MemberUpdateReqDTO dto);
void deleteMember(Long id);
void deleteMemberByUsername(String username);
void updateMemberByUsername(String username, MemberReqDTO.MemberUpdateReqDTO dto);
void deleteMemberByEmail(String email);
void updateMemberByEmail(String email, MemberReqDTO.MemberUpdateReqDTO dto);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,32 @@
import jakarta.persistence.EntityNotFoundException;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MemberCommandServiceImpl implements MemberCommandService {
private final MemberRepository memberRepository;
private final PasswordEncoder passwordEncoder;

public MemberResDTO.MemberCreateResDTO createMember(MemberReqDTO.MemberCreateReqDTO memberCreateReqDTO) {
Member member = MemberConverter.toMember(memberCreateReqDTO);
Member member = MemberConverter.toMember(memberCreateReqDTO, passwordEncoder);

memberRepository.save(member);

return MemberConverter.toMemberResDTO(member);
}

public void deleteMemberByUsername(String username) {
Member member = memberRepository.findByUsername(username)
public void deleteMemberByEmail(String email) {
Member member = memberRepository.findByEmail(email)
.orElseThrow(() -> new EntityNotFoundException("Member Not Found"));
memberRepository.delete(member);
}

@Transactional
public void updateMemberByUsername(String username, MemberReqDTO.MemberUpdateReqDTO dto) {
Member member = memberRepository.findByUsername(username)
public void updateMemberByEmail(String email, MemberReqDTO.MemberUpdateReqDTO dto) {
Member member = memberRepository.findByEmail(email)
.orElseThrow(() -> new EntityNotFoundException("Member Not Found"));

if (dto.getEmail() != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.project.likelion13thbe.domain.openapi.controller;

import com.project.likelion13thbe.domain.openapi.service.OpenApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/v1/openapi")
public class OpenApiController {

@Autowired
private OpenApiService openApiService;

@PostMapping("/ask")
public String askQuestion(@RequestBody String question) {
return openApiService.getOpenApiResponse(question);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.project.likelion13thbe.domain.openapi.service;

public interface OpenApiService {
String getOpenApiResponse(String prompt);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.project.likelion13thbe.domain.openapi.service;


import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class OpenApiServiceImpl implements OpenApiService {

private static final String API_KEY = "{$API_KEY}";
private static final String API_URL = "https://api.deepseek.com/v1/chat/completions"; // 실제 API 엔드포인트 확인 필요

public String getOpenApiResponse(String prompt) {
RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// JWT ?
headers.set("Authorization", "Bearer " + API_KEY);

String requestBody = String.format("{\"model\": \"deepseek-chat\", \"messages\": [{\"role\": \"user\", \"content\": \"%s\"}]}", prompt);

HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);

// API 호출
ResponseEntity<String> response = restTemplate.exchange(
API_URL,
HttpMethod.POST,
requestEntity,
String.class
);

return response.getBody();
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.project.likelion13thbe.domain.order.controller;

import com.project.likelion13thbe.domain.member.entity.Member;
import com.project.likelion13thbe.domain.member.repository.MemberRepository;
import com.project.likelion13thbe.domain.member.service.command.MemberCommandService;
import com.project.likelion13thbe.domain.order.dto.request.OrderReqDTO;
import com.project.likelion13thbe.domain.order.dto.response.OrderResDTO;
import com.project.likelion13thbe.domain.order.service.command.OrderCommandService;
import com.project.likelion13thbe.global.apiPayload.code.GeneralErrorCode;
import com.project.likelion13thbe.global.apiPayload.exception.CustomException;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -19,6 +23,7 @@
public class OrderController {
private final OrderCommandService orderCommandService;
private final MemberCommandService memberCommandService;
private final MemberRepository memberRepository;

@PostMapping
public ResponseEntity<OrderResDTO.OrderCreateResDTO> createOrder(
Expand Down Expand Up @@ -51,7 +56,12 @@ public ResponseEntity<String> updateMyOrder(
@RequestBody OrderReqDTO.OrderUpdateReqDTO dto
) {
String username = userDetails.getUsername();
orderCommandService.updateOrderByUsernameAndId(username, id, dto);
Member member = memberRepository.findByEmail(username)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));
Long memberId = member.getId();


orderCommandService.updateOrderByMemberIdAndId(memberId, id, dto);
return ResponseEntity.ok("Order Updated Successfully.");
}

Expand All @@ -61,7 +71,12 @@ public ResponseEntity<String> deleteMyOrder(
@AuthenticationPrincipal UserDetails userDetails
) {
String username = userDetails.getUsername();
orderCommandService.deleteOrderByUsername(username);

Member member = memberRepository.findByEmail(username)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));
Long memberId = member.getId();

orderCommandService.deleteOrderByMemberId(memberId);
return ResponseEntity.ok("Member Deleted Successfully.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@

@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
Optional<Order> findByIdAndUsername(Long id, String username);
Optional<Order> findByUsername(String username);
Optional<Order> findByIdAndMemberId(Long id, Long memberId);
Optional<Order> findByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ public interface OrderCommandService {
OrderResDTO.OrderCreateResDTO createOrder(OrderReqDTO.OrderCreateReqDTO orderCreateReqDTO);
void updateOrder(Long id, OrderReqDTO.OrderUpdateReqDTO dto);
void deleteOrder(Long id);
void updateOrderByUsernameAndId(String username, Long id, OrderReqDTO.OrderUpdateReqDTO dto);
void deleteOrderByUsername(String username);
void updateOrderByMemberIdAndId(Long memberId, Long id, OrderReqDTO.OrderUpdateReqDTO dto);
void deleteOrderByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public void deleteOrder(Long id) {
}
}

public void updateOrderByUsernameAndId(String username, Long id, OrderReqDTO.OrderUpdateReqDTO dto) {
Order order = orderRepository.findByIdAndUsername(id, username)
public void updateOrderByMemberIdAndId(Long memberId, Long id, OrderReqDTO.OrderUpdateReqDTO dto) {
Order order = orderRepository.findByIdAndMemberId(id, memberId)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));

if (dto.getQuantity() != null) {
Expand All @@ -80,8 +80,8 @@ public void updateOrderByUsernameAndId(String username, Long id, OrderReqDTO.Ord
orderRepository.save(order);
}

public void deleteOrderByUsername(String username) {
Order order = orderRepository.findByUsername(username)
public void deleteOrderByMemberId(Long memberId) {
Order order = orderRepository.findByMemberId(memberId)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));
orderRepository.delete(order);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.project.likelion13thbe.domain.review.controller;

import com.project.likelion13thbe.domain.member.entity.Member;
import com.project.likelion13thbe.domain.member.repository.MemberRepository;
import com.project.likelion13thbe.domain.order.dto.request.OrderReqDTO;
import com.project.likelion13thbe.domain.review.dto.request.ReviewReqDTO;
import com.project.likelion13thbe.domain.review.dto.response.ReviewResDTO;
import com.project.likelion13thbe.domain.review.service.command.ReviewCommandService;
import com.project.likelion13thbe.global.apiPayload.code.GeneralErrorCode;
import com.project.likelion13thbe.global.apiPayload.exception.CustomException;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -19,6 +23,7 @@
@Tag(name="Review", description="Review 관련 API입니다.")
public class ReviewController {
private final ReviewCommandService reviewCommandService;
private final MemberRepository memberRepository;

@PostMapping
public ResponseEntity<ReviewResDTO.ReviewCreateResDTO> createReview(
Expand Down Expand Up @@ -51,8 +56,11 @@ public ResponseEntity<String> updateMyReview(
@PathVariable Long id,
@RequestBody ReviewReqDTO.ReviewUpdateReqDTO dto
) {
String username = userDetails.getUsername();
reviewCommandService.updateReviewByUsernameAndId(username, id, dto);
String username = userDetails.getUsername();
Member member = memberRepository.findByEmail(username)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));
Long memberId = member.getId();
reviewCommandService.updateReviewByMemberIdAndId(memberId, id, dto);
return ResponseEntity.ok("Review Updated Successfully.");
}

Expand All @@ -61,7 +69,10 @@ public ResponseEntity<String> deleteMyReview(
@AuthenticationPrincipal UserDetails userDetails
) {
String username = userDetails.getUsername();
reviewCommandService.deleteReviewByUsername(username);
Member member = memberRepository.findByEmail(username)
.orElseThrow(() -> new CustomException(GeneralErrorCode.UNAUTHORIZED_401));
Long memberId = member.getId();
reviewCommandService.deleteReviewByMemberId(memberId);
return ResponseEntity.ok("Review Deleted Successfully.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Like extends BaseEntity {
public class ReviewLike extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

public interface ReviewRepository extends JpaRepository<Review, Long> {
Optional<Review> findById(long id);
Optional<Review> findByUsername(String username);
Optional<Review> findByIdAndUsername(long id, String username);
Optional<Review> findByMemberId(Long memberId);
Optional<Review> findByIdAndMemberId(long id, Long memberId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ public interface ReviewCommandService {
ReviewResDTO.ReviewCreateResDTO createReview(ReviewReqDTO.ReviewCreateReqDTO dto);
void deleteReview(Long id);
void updateReview(Long id, ReviewReqDTO.ReviewUpdateReqDTO dto);
void updateReviewByMemberIdAndId(Long memberId, Long id, ReviewReqDTO.ReviewUpdateReqDTO dto);
void deleteReviewByMemberId(Long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ public void deleteReview(Long id) {
}

@Transactional
public void updateReviewByUsernameAndId(String username, Long id, ReviewReqDTO.ReviewUpdateReqDTO dto) {
Review review = reviewRepository.findByIdAndUsername(id, username)
public void updateReviewByMemberIdAndId(Long memberId, Long id, ReviewReqDTO.ReviewUpdateReqDTO dto) {
Review review = reviewRepository.findByIdAndMemberId(id, memberId)
.orElseThrow(() -> new EntityNotFoundException("Review not found"));

if (dto.getTitle() != null) {
Expand All @@ -94,8 +94,8 @@ public void updateReviewByUsernameAndId(String username, Long id, ReviewReqDTO.R
reviewRepository.save(review);
}

public void deleteReviewByUsername(String username) {
Review review = reviewRepository.findByUsername(username)
public void deleteReviewByMemberId(Long memberId) {
Review review = reviewRepository.findByMemberId(memberId)
.orElseThrow(() -> new EntityNotFoundException("Review not found"));
reviewRepository.delete(review);
}
Expand Down
Loading