From c5804dd43f968d1983bdd90ae6bce2b2c24b14af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=20=EC=8A=B9=20=EC=97=B0?= <53565255+seungyeonnnnnni@users.noreply.github.com> Date: Fri, 15 Sep 2023 01:54:36 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat=20:=20=EC=B6=94=EA=B0=80=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EA=B8=B0=EC=9E=85=20=EA=B5=AC=ED=98=84=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/gip/sever/ResponseMessage.java | 5 ++++- .../gip/sever/controller/OauthController.java | 18 ++++++++++++++++-- src/main/java/gip/sever/domain/Member.java | 13 +++++++++++++ .../sever/dto/request/AdditionalRequest.java | 11 +++++++++++ .../gip/sever/repository/MemberRepository.java | 5 ++++- .../java/gip/sever/service/OauthService.java | 13 +++++++++++-- 6 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 src/main/java/gip/sever/dto/request/AdditionalRequest.java diff --git a/src/main/java/gip/sever/ResponseMessage.java b/src/main/java/gip/sever/ResponseMessage.java index c72ed00..792cab3 100644 --- a/src/main/java/gip/sever/ResponseMessage.java +++ b/src/main/java/gip/sever/ResponseMessage.java @@ -10,7 +10,10 @@ public enum ResponseMessage { CREATE_CART_SUCCESS("장바구니 담기를 완료 했습니다."), TRUE_HEART("좋아요 버튼이 활성화 되었습니다."), FALSE_HEART("좋아요 버튼이 비활성화 되었습니다."), - MAIL_SUCCESS("데모 신청이 완료되었습니다"); + MAIL_SUCCESS("데모 신청이 완료되었습니다"), + ADDITIONAL_INFO_NEED("추가정보 기입이 필요합니다"), + LOGIN_SUCCESS("로그인 성공"), + ADDITIONAL_INFO_SUCCESS("추가 정보 기입이 완료되었습니다"); private final String message; diff --git a/src/main/java/gip/sever/controller/OauthController.java b/src/main/java/gip/sever/controller/OauthController.java index dd876f6..0621af8 100644 --- a/src/main/java/gip/sever/controller/OauthController.java +++ b/src/main/java/gip/sever/controller/OauthController.java @@ -2,14 +2,19 @@ import com.fasterxml.jackson.core.JsonProcessingException; import gip.sever.domain.SessionUser; +import gip.sever.dto.request.AdditionalRequest; +import gip.sever.global.response.SuccessResponse; import gip.sever.service.OauthService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpSession; import java.io.IOException; +import static gip.sever.ResponseMessage.*; + @Slf4j @RestController @RequiredArgsConstructor @@ -26,10 +31,14 @@ public void socialLoginType(@PathVariable(name = "socialLoginType") String socia } @GetMapping(value = "/{socialLoginType}/callback") - public void callback( + public ResponseEntity> callback( @PathVariable(name = "socialLoginType") String socialLoginType, @RequestParam(name = "code") String code) throws JsonProcessingException { - oauthService.oauthLogin(socialLoginType, code); + if(oauthService.oauthLogin(socialLoginType, code)==1){ + return ResponseEntity.ok(SuccessResponse.create(ADDITIONAL_INFO_NEED.getMessage())); + }else{ + return ResponseEntity.ok(SuccessResponse.create(LOGIN_SUCCESS.getMessage())); + } } @@ -38,4 +47,9 @@ public String check() { SessionUser user = (SessionUser) httpSession.getAttribute("user"); return user.getName(); } + @PostMapping("/additional") + public ResponseEntity> additionalInfo(AdditionalRequest additionalRequest) { + oauthService.additional(additionalRequest); + return ResponseEntity.ok(SuccessResponse.create(ADDITIONAL_INFO_SUCCESS.getMessage())); + } } \ No newline at end of file diff --git a/src/main/java/gip/sever/domain/Member.java b/src/main/java/gip/sever/domain/Member.java index 10b3742..6f25886 100644 --- a/src/main/java/gip/sever/domain/Member.java +++ b/src/main/java/gip/sever/domain/Member.java @@ -1,5 +1,6 @@ package gip.sever.domain; +import gip.sever.dto.request.AdditionalRequest; import lombok.Getter; import lombok.NoArgsConstructor; @@ -18,6 +19,11 @@ public class Member { private String email; + private String presidentName; + private String businessName; + private String businessNumber; + private String type; + @OneToOne private GoogleUser googleUser; @@ -28,4 +34,11 @@ public Member(GoogleUser googleUser) { this.googleUser = googleUser; this.email = googleUser.getEmail(); } + + public void updateInfo(AdditionalRequest additionalRequest) { + this.presidentName = additionalRequest.getPresident(); + this.businessName = additionalRequest.getBusinessName(); + this.businessNumber = additionalRequest.getBusinessNumber(); + this.type = additionalRequest.getType(); + } } diff --git a/src/main/java/gip/sever/dto/request/AdditionalRequest.java b/src/main/java/gip/sever/dto/request/AdditionalRequest.java new file mode 100644 index 0000000..971a580 --- /dev/null +++ b/src/main/java/gip/sever/dto/request/AdditionalRequest.java @@ -0,0 +1,11 @@ +package gip.sever.dto.request; + +import lombok.Getter; + +@Getter +public class AdditionalRequest { + String president; + String businessName; + String businessNumber; + String type; +} diff --git a/src/main/java/gip/sever/repository/MemberRepository.java b/src/main/java/gip/sever/repository/MemberRepository.java index 1038e77..551bcc6 100644 --- a/src/main/java/gip/sever/repository/MemberRepository.java +++ b/src/main/java/gip/sever/repository/MemberRepository.java @@ -2,11 +2,14 @@ import gip.sever.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.Optional; @Repository public interface MemberRepository extends JpaRepository { - Optional findByEmail(String email); + @Query("select m from Member m where m.email =:email") + Optional findByEmail(@Param(value = "email")String email); } diff --git a/src/main/java/gip/sever/service/OauthService.java b/src/main/java/gip/sever/service/OauthService.java index 701608d..967fefc 100644 --- a/src/main/java/gip/sever/service/OauthService.java +++ b/src/main/java/gip/sever/service/OauthService.java @@ -4,6 +4,7 @@ import gip.sever.domain.GoogleUser; import gip.sever.domain.Member; import gip.sever.domain.SessionUser; +import gip.sever.dto.request.AdditionalRequest; import gip.sever.dto.request.GoogleOauthToken; import gip.sever.repository.GoogleUserRepository; import gip.sever.repository.MemberRepository; @@ -33,7 +34,7 @@ public String request(String socialLoginType) throws IOException { return redirectURL; } - public void oauthLogin(String socialLoginType, String code) throws JsonProcessingException { + public int oauthLogin(String socialLoginType, String code) throws JsonProcessingException { ResponseEntity accessTokenResponse = googleOauth.requestAccessToken(code); GoogleOauthToken OAuthToken = googleOauth.getAccessToken(accessTokenResponse); @@ -42,11 +43,19 @@ public void oauthLogin(String socialLoginType, String code) throws JsonProcessin googleUserRepository.save(googleUser); httpSession.setAttribute("user", new SessionUser(googleUser)); - if (memberRepository.findByEmail(googleUser.getEmail()).isEmpty()) { + if (memberRepository.findByEmail(googleUser.getEmail()).isEmpty()) { // 회원가입 memberRepository.save(new Member(googleUser)); + return 1; } + return 0; } + public void additional(AdditionalRequest additionalRequest) { + Member member = memberRepository.findByEmail("helloworldgcc@gmail.com").orElseThrow(); + member.updateInfo(additionalRequest); + memberRepository.save(member); + } + } From 7520d746062437163bc64e520b6f06189f24779a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=20=EC=8A=B9=20=EC=97=B0?= <53565255+seungyeonnnnnni@users.noreply.github.com> Date: Fri, 15 Sep 2023 15:40:24 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat=20:=20=EA=B8=B0=EC=82=AC=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/gip/sever/domain/Article.java | 13 +++++++++++++ .../java/gip/sever/dto/response/SearchResponse.java | 10 ++++++++++ .../gip/sever/repository/ArticleRepository.java | 4 ++-- src/main/java/gip/sever/service/SearchService.java | 6 ++---- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/gip/sever/domain/Article.java b/src/main/java/gip/sever/domain/Article.java index fa6782a..d5ddeeb 100644 --- a/src/main/java/gip/sever/domain/Article.java +++ b/src/main/java/gip/sever/domain/Article.java @@ -1,14 +1,27 @@ package gip.sever.domain; +import lombok.Getter; +import lombok.NoArgsConstructor; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity +@NoArgsConstructor +@Getter public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + + private String newspaperName; // 신문사 이름 + private String articleTitle; // 기사 제목 + private String articleContent; // 기사 내용 + private String photoUrl; // 사진 URL(버킷) + private String articleLink; // 기사 링크 + } + diff --git a/src/main/java/gip/sever/dto/response/SearchResponse.java b/src/main/java/gip/sever/dto/response/SearchResponse.java index 8fcb0a7..b9323f4 100644 --- a/src/main/java/gip/sever/dto/response/SearchResponse.java +++ b/src/main/java/gip/sever/dto/response/SearchResponse.java @@ -1,5 +1,6 @@ package gip.sever.dto.response; +import gip.sever.domain.Article; import gip.sever.domain.Product; import lombok.AllArgsConstructor; import lombok.Getter; @@ -22,4 +23,13 @@ public SearchResponse(Product product) { this.imageURL = product.getPhotoUrl(); this.content = product.getProductName(); } + + public SearchResponse(Article product) { + this.id = product.getId(); + this.title = product.getArticleTitle(); + this.imageURL = product.getPhotoUrl(); + this.content = product.getArticleContent(); + } + + } diff --git a/src/main/java/gip/sever/repository/ArticleRepository.java b/src/main/java/gip/sever/repository/ArticleRepository.java index 2239746..27d4674 100644 --- a/src/main/java/gip/sever/repository/ArticleRepository.java +++ b/src/main/java/gip/sever/repository/ArticleRepository.java @@ -10,6 +10,6 @@ public interface ArticleRepository extends JpaRepository { -// @Query("select p from Product p where p.productName like :keyword") -// Optional> findByKeyword(String keyword); + @Query("select a from Article as a where a.articleTitle like %:keyword% ") + Optional> findByKeyword(String keyword); } diff --git a/src/main/java/gip/sever/service/SearchService.java b/src/main/java/gip/sever/service/SearchService.java index f07eb70..186c470 100644 --- a/src/main/java/gip/sever/service/SearchService.java +++ b/src/main/java/gip/sever/service/SearchService.java @@ -1,5 +1,6 @@ package gip.sever.service; +import gip.sever.domain.Article; import gip.sever.domain.Product; import gip.sever.dto.response.SearchResponse; import gip.sever.repository.ArticleRepository; @@ -24,10 +25,7 @@ public List searchKeyword(String keyword) { List searchResponses =new ArrayList<>(); productRepository.findByKeyword(keyword).orElseThrow().stream().forEach(product -> searchResponses.add(new SearchResponse(product))); - System.out.println(productRepository.findByKeyword(keyword).toString()); - - // List
articles = articleRepository.findByKeyword(keyword).orElseThrow(); - + articleRepository.findByKeyword(keyword).orElseThrow().stream().forEach(article -> searchResponses.add(new SearchResponse(article))); return searchResponses; From c626e90bc8e762d6e9459b0cd3c1e88966f485ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=20=EC=8A=B9=20=EC=97=B0?= <53565255+seungyeonnnnnni@users.noreply.github.com> Date: Fri, 15 Sep 2023 15:48:37 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat=20:=20=EA=B2=80=EC=83=89=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EB=B3=84=20=EA=B2=80=EC=83=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gip/sever/controller/SearchController.java | 10 ++++++---- .../gip/sever/dto/response/SearchResponse.java | 4 ++++ .../java/gip/sever/service/SearchService.java | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/gip/sever/controller/SearchController.java b/src/main/java/gip/sever/controller/SearchController.java index d7308eb..e54099f 100644 --- a/src/main/java/gip/sever/controller/SearchController.java +++ b/src/main/java/gip/sever/controller/SearchController.java @@ -5,10 +5,7 @@ import gip.sever.service.SearchService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -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.bind.annotation.*; import java.util.List; @@ -25,4 +22,9 @@ public class SearchController { public List search(@RequestBody SearchRequest searchRequest) { return searchService.searchKeyword(searchRequest.getKeyword()); } + + @PostMapping("/{searchType}") + public List search(@PathVariable("searchType") String type ,@RequestBody SearchRequest searchRequest) { + return searchService.searchKeywordByType(searchRequest.getKeyword(),type); + } } diff --git a/src/main/java/gip/sever/dto/response/SearchResponse.java b/src/main/java/gip/sever/dto/response/SearchResponse.java index b9323f4..9c06629 100644 --- a/src/main/java/gip/sever/dto/response/SearchResponse.java +++ b/src/main/java/gip/sever/dto/response/SearchResponse.java @@ -16,12 +16,14 @@ public class SearchResponse { private String title; private String imageURL; private String content; + private String type; public SearchResponse(Product product) { this.id = product.getId(); this.title = product.getProductName(); this.imageURL = product.getPhotoUrl(); this.content = product.getProductName(); + this.type = "Product"; } public SearchResponse(Article product) { @@ -29,6 +31,8 @@ public SearchResponse(Article product) { this.title = product.getArticleTitle(); this.imageURL = product.getPhotoUrl(); this.content = product.getArticleContent(); + this.type = "Article"; + } diff --git a/src/main/java/gip/sever/service/SearchService.java b/src/main/java/gip/sever/service/SearchService.java index 186c470..db63361 100644 --- a/src/main/java/gip/sever/service/SearchService.java +++ b/src/main/java/gip/sever/service/SearchService.java @@ -31,5 +31,22 @@ public List searchKeyword(String keyword) { return searchResponses; + } + + public List searchKeywordByType(String keyword,String type) { + + List searchResponses =new ArrayList<>(); + + if (type.equals("Product")) { + productRepository.findByKeyword(keyword).orElseThrow().stream().forEach(product -> searchResponses.add(new SearchResponse(product))); + return searchResponses; + + } + else{ + articleRepository.findByKeyword(keyword).orElseThrow().stream().forEach(article -> searchResponses.add(new SearchResponse(article))); + return searchResponses; + } + + } }