Skip to content

Commit

Permalink
Merge branch 'dev' into feat/wine--ISSUE-81
Browse files Browse the repository at this point in the history
  • Loading branch information
skybluelion authored Feb 29, 2024
2 parents e5a133f + 633c701 commit 7db9e12
Show file tree
Hide file tree
Showing 21 changed files with 282 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.hyundai.domain.login.controller;


import com.hyundai.domain.login.dto.MemberInfoRequestDto;
import com.hyundai.domain.login.dto.StoreRequestDto;
import com.hyundai.domain.login.dto.kakao.KakaoParams;
import com.hyundai.domain.login.dto.oauth.OAuthMemberRequestDto;
Expand Down Expand Up @@ -53,5 +54,21 @@ public ResponseEntity<?> registerStore(@RequestBody StoreRequestDto storeRequest
log.debug("넘겨받은 판매자 정보 :: " + storeRequestDto.getStoreName());
return ResponseMessage.SuccessResponse("판매자 등록 요청 성공", oAuthService.registerStore(memberId, storeRequestDto));
}

@GetMapping("/member")
public ResponseEntity<?> getMemberInfo() {
String memberId = ((CustomMemberDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getMemberId();
log.debug("getMemberInfo:" + memberId);
return ResponseMessage.SuccessResponse("회원정보 조회 성공", oAuthService.getMemberInfo(memberId));
}

// 멤버 정보 수정
@PutMapping("/member")
public ResponseEntity<?> updateMemberInfo(@RequestBody MemberInfoRequestDto memberInfoRequestDto) {
String memberId = ((CustomMemberDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getMemberId();
log.debug("updateMemberInfo:" + memberId);
oAuthService.updateMemberInfo(memberId, memberInfoRequestDto);
return ResponseMessage.SuccessResponse("회원정보 수정 성공", "");
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.hyundai.domain.login.dto;

import com.hyundai.domain.login.entity.enumtype.Role;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
* fileName : MemberInfoResponseDto
* author : 변형준
* since : 2/28/24
* 내용 :
*/
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberInfoRequestDto {
private String memberName;
private String memberNickname;
private String memberPhone;
private String memberGender;
private String memberBirth;
private String infoAddr;
private String infoZipcode;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.hyundai.domain.login.dto;

import com.hyundai.domain.login.entity.enumtype.Role;
import lombok.*;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
* fileName : MemberInfoResponseDto
* author : 변형준
* since : 2/28/24
* 내용 :
*/
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberInfoResponseDto {
private String memberId;
private String memberEmail;
private String memberName;
private String memberNickname;
private String memberPhone;
private String memberGender;
private LocalDate memberBirth;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private String infoAddr;
private String infoZipcode;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.hyundai.domain.login.service.oauth;

import com.hyundai.domain.login.dto.MemberInfoRequestDto;
import com.hyundai.domain.login.dto.MemberInfoResponseDto;
import com.hyundai.domain.login.dto.StoreRequestDto;
import com.hyundai.domain.login.dto.kakao.KakaoLoginResponseDto;
import com.hyundai.domain.login.dto.oauth.OAuthMemberRequestDto;
Expand All @@ -14,5 +16,7 @@ public interface OAuthService {
KakaoLoginResponseDto getMemberByOauthLogin(OAuthParams oAuthParams);
String saveMember(OAuthMemberRequestDto oAuthMemberRequestDto);
String deleteMember(String memberId);
Object registerStore(String memberId, StoreRequestDto storeRequestDto);
String registerStore(String memberId, StoreRequestDto storeRequestDto);
MemberInfoResponseDto getMemberInfo(String memberId);
void updateMemberInfo(String memberId, MemberInfoRequestDto memberInfoRequestDto);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.hyundai.domain.login.service.oauth;


import com.hyundai.domain.login.dto.MemberInfoRequestDto;
import com.hyundai.domain.login.dto.MemberInfoResponseDto;
import com.hyundai.domain.login.dto.StoreRequestDto;
import com.hyundai.domain.login.dto.kakao.KakaoLoginResponseDto;
import com.hyundai.domain.login.dto.kakao.KakaoTokenResponseDto;
Expand All @@ -21,6 +23,7 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -125,7 +128,7 @@ public String deleteMember(String memberId) {
return member.getMemberName();
}

public Object registerStore(String memberId, StoreRequestDto storeRequestDto) {
public String registerStore(String memberId, StoreRequestDto storeRequestDto) {
log.debug("------ 판매자 등록 요청 ------");
Map<String, Object> params = new HashMap<>();
params.put("memberId", memberId);
Expand All @@ -135,4 +138,29 @@ public Object registerStore(String memberId, StoreRequestDto storeRequestDto) {
log.debug("------ 판매자 등록 요청 완료 ------");
return storeRequestDto.getStoreName();
}

@Override
public MemberInfoResponseDto getMemberInfo(String memberId) {
log.debug("------ 회원정보 조회 ------");
return memberMapper.getMemberByMemberId(memberId)
.orElseThrow(() -> new GlobalException(GlobalErrorCode.USER_NOT_FOUND));
}

@Override
@Transactional
public void updateMemberInfo(String memberId, MemberInfoRequestDto memberInfoRequestDto) {
log.debug("------ 회원정보 수정 ------");
Map<String, Object> params = new HashMap<>();
params.put("memberId", memberId);
params.put("memberName", memberInfoRequestDto.getMemberName());
params.put("memberNickname", memberInfoRequestDto.getMemberNickname());
params.put("memberPhone", memberInfoRequestDto.getMemberPhone());
params.put("memberGender", memberInfoRequestDto.getMemberGender());
params.put("memberBirth", memberInfoRequestDto.getMemberBirth());
params.put("infoAddr", memberInfoRequestDto.getInfoAddr());
params.put("infoZipcode", memberInfoRequestDto.getInfoZipcode());
memberMapper.updateMember(params);
memberMapper.updateMemberInfo(params);
log.debug("------ 회원정보 수정 완료 ------");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public ResponseEntity<?> migrate() {
}*/

// 상품 리스트 조회
@GetMapping()
@PostMapping()
public ResponseEntity<?> getProducts(@RequestBody WrapperSearchDTO wrapperSearchDTO) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String memberId = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
@Setter
@NoArgsConstructor
public class ProductRequestDTO {
private Long productId;
private String productName;
private String productMainImage;
/*private String productSubName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hyundai.domain.product.dto.request.ProductRequestDTO;
import com.hyundai.domain.product.dto.response.RecommendProducts;
import com.hyundai.domain.recommendation.service.RecommendationService;
import com.hyundai.global.message.ResponseMessage;
import lombok.RequiredArgsConstructor;
import org.springframework.http.*;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.StandardCharsets;
import java.util.List;

Expand All @@ -19,12 +24,13 @@
@RequestMapping("/recommendation")
@RequiredArgsConstructor
public class RecommendationController {
private final RecommendationService recommendationService;
@PostMapping()
public ResponseEntity<?> getHybridRecommendations(@RequestBody ProductRequestDTO item) throws JsonProcessingException {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));

String fastApiUrl = "http://localhost:8000/ai/hybrid-recommendations";
String fastApiUrl = "http://3.37.206.197:8000/ai/hybrid-recommendations";

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Expand All @@ -39,6 +45,11 @@ public ResponseEntity<?> getHybridRecommendations(@RequestBody ProductRequestDTO

return ResponseMessage.SuccessResponse("추천 상품 조회 성공", products);
}

@PostMapping("/wine")
public ResponseEntity<?> getWineRecommendations(@RequestBody ProductRequestDTO item) {
return ResponseMessage.SuccessResponse("추천 상품 조회 성공", recommendationService.getRecommendWines(item.getProductId()));
}
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.hyundai.domain.recommendation.service;

import com.hyundai.domain.product.dto.response.ProductResponseDTO;

import java.util.List;

public interface RecommendationService {
List<ProductResponseDTO> getRecommendWines(Long productId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.hyundai.domain.recommendation.service;

import com.hyundai.domain.product.dto.response.ProductResponseDTO;
import com.hyundai.global.mapper.ProductMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Slf4j
@Service
@RequiredArgsConstructor
public class RecommendationServiceImpl implements RecommendationService {
private final ProductMapper productMapper;

@Override
@Transactional(readOnly = true)
public List<ProductResponseDTO> getRecommendWines(Long productId) {
// todo productid 검증
return productMapper.findRecommendWines(productId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;

Expand Down Expand Up @@ -70,11 +71,18 @@ public ResponseEntity<?> getReviewsByMemberId() {
return ResponseMessage.SuccessResponse("내가 쓴 리뷰 조회 성공", reviewService.getReviewsByMemberId(memberId));
}

// // 상품에 대한 리뷰 전체 조회
// @GetMapping("/product/{productId}")
// public ResponseEntity<?> getProductReviews(@PathVariable int productId) {
// log.debug("상품에 대한 리뷰 조회 요청 productId :: " + productId);
// return ResponseMessage.SuccessResponse("상품에 대한 리뷰 조회 성공", reviewService.getProductReviews(productId));
// }

// 상품에 대한 리뷰 전체 조회
@GetMapping("/product/{productId}")
public ResponseEntity<?> getProductReviews(@PathVariable int productId) {
@GetMapping("/product/{productId}/page/{pageNum}")
public ResponseEntity<?> getProductReviews(@PathVariable int productId, @PathVariable int pageNum) {
log.debug("상품에 대한 리뷰 조회 요청 productId :: " + productId);
return ResponseMessage.SuccessResponse("상품에 대한 리뷰 조회 성공", reviewService.getProductReviews(productId));
return ResponseMessage.SuccessResponse("상품에 대한 리뷰 조회 성공", reviewService.getProductReviews(productId, pageNum));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ public interface ReviewService {
void deleteReview(ReviewRequestDto reviewRequestDto, String memberId);
ReviewResponseDto getProductReviewByMemberId(String memberId, int productId);
List<ReviewResponseDto> getReviewsByMemberId(String memberId);
List<ReviewResponseDto> getProductReviews(int productId);
// List<ReviewResponseDto> getProductReviews(int productId);
List<ReviewResponseDto> getProductReviews(int productId, int pageNum);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hyundai.domain.review.service;

import com.hyundai.domain.product.dto.response.ProductResponseDTO;
import com.hyundai.domain.review.dto.request.ReviewRequestDto;
import com.hyundai.domain.review.dto.response.ReviewResponseDto;
import com.hyundai.domain.review.entity.enumType.ReviewGetType;
Expand Down Expand Up @@ -110,13 +111,28 @@ public List<ReviewResponseDto> getReviewsByMemberId(String memberId) {
return reviews;
}

// @Override
// public List<ReviewResponseDto> getProductReviews(int productId) {
// Map<String, Object> params = new HashMap<>();
// params.put("productId", productId);
// params.put("reviewType", ReviewGetType.PRODUCT_REVIEWS.toString());
// params.put("result", null);
// List<ReviewResponseDto> reviews = reviewMapper.getProductReviews(params);
// if(reviews == null || reviews.isEmpty()) {
// throw new GlobalException(GlobalErrorCode.REVIEW_NOT_FOUND);
// }
// return reviews;
// }

@Override
public List<ReviewResponseDto> getProductReviews(int productId) {
public List<ReviewResponseDto> getProductReviews(int productId, int pageNum){
Map<String, Object> params = new HashMap<>();
params.put("productId", productId);
params.put("reviewType", ReviewGetType.PRODUCT_REVIEWS.toString());
params.put("result", null);
List<ReviewResponseDto> reviews = reviewMapper.getProductReviews(params);
params.put("cursor", null);
params.put("pageNum", pageNum);
params.put("pageSize", 5);
List<ReviewResponseDto> reviews = reviewMapper.getProductReview(params);
if(reviews == null || reviews.isEmpty()) {
throw new GlobalException(GlobalErrorCode.REVIEW_NOT_FOUND);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public TransportClient client() throws Exception {
.put("cluster.name", "docker-cluster")
.build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
client.addTransportAddress(new TransportAddress(InetAddress.getByName("52.78.243.203"), 9300));

return client;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ protected void configure(HttpSecurity http) throws Exception {
,"/api/v1/v2/api-docs"
,"/api/v1/v3/api-docs"
,"/api/v1/swagger-resources/**"
,"/api/v1/reviews/product/{productId}"
,"/api/v1/reviews/product/{productId}/**"
,"/api/v1/products/**"
,"/api/v1/recommendation/**"
)
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/hyundai/global/mapper/MemberMapper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hyundai.global.mapper;

import com.hyundai.domain.login.dto.MemberInfoResponseDto;
import com.hyundai.domain.login.entity.Member;
import org.apache.ibatis.annotations.Param;

Expand All @@ -14,4 +15,7 @@ public interface MemberMapper {
void deleteMember(String memberId);
Optional<Member> findMemberByMemberId(@Param("memberId")String memberId);
void registerStore(Map<String, Object> map);
Optional<MemberInfoResponseDto> getMemberByMemberId(String memberId);
void updateMember(Map<String, Object> map);
void updateMemberInfo(Map<String, Object> map);
}
1 change: 1 addition & 0 deletions src/main/java/com/hyundai/global/mapper/ProductMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ public interface ProductMapper {
int selectProductStock(@Param("productId") Long id);
void updateProductStock(@Param("productId") Long id, @Param("orderCount") int orderCount);

List<ProductResponseDTO> findRecommendWines(Long productId);
}
1 change: 1 addition & 0 deletions src/main/java/com/hyundai/global/mapper/ReviewMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ public interface ReviewMapper {
Optional<ReviewResponseDto> getProductReviewByMemberId(Map<String, Object> params);
List<ReviewResponseDto> getReviewsByMemberId(Map<String, Object> params);
List<ReviewResponseDto> getProductReviews(Map<String, Object> params);
List<ReviewResponseDto> getProductReview(Map<String, Object> params);
}
Loading

0 comments on commit 7db9e12

Please sign in to comment.