From 47b1d5b62409659669390007893b58e06a5042d4 Mon Sep 17 00:00:00 2001 From: ChoHyunWoo Date: Sat, 23 Dec 2023 19:06:01 +0900 Subject: [PATCH 1/6] feat : add review-service (#1) --- .../review/controller/ReviewController.java | 4 ++++ .../com/msaclub/review/model/ReviewDto.java | 4 ++++ .../review/model/mapper/ReviewMapper.java | 4 ++++ .../msaclub/review/service/ReviewService.java | 17 +++++++++++++++++ .../review/service/ReviewServiceImpl.java | 4 ++++ 5 files changed, 33 insertions(+) create mode 100644 review/src/main/java/com/msaclub/review/controller/ReviewController.java create mode 100644 review/src/main/java/com/msaclub/review/model/ReviewDto.java create mode 100644 review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java create mode 100644 review/src/main/java/com/msaclub/review/service/ReviewService.java create mode 100644 review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java diff --git a/review/src/main/java/com/msaclub/review/controller/ReviewController.java b/review/src/main/java/com/msaclub/review/controller/ReviewController.java new file mode 100644 index 0000000..6039ecd --- /dev/null +++ b/review/src/main/java/com/msaclub/review/controller/ReviewController.java @@ -0,0 +1,4 @@ +package com.msaclub.review.controller; + +public class ReviewController { +} diff --git a/review/src/main/java/com/msaclub/review/model/ReviewDto.java b/review/src/main/java/com/msaclub/review/model/ReviewDto.java new file mode 100644 index 0000000..1e39d8e --- /dev/null +++ b/review/src/main/java/com/msaclub/review/model/ReviewDto.java @@ -0,0 +1,4 @@ +package com.msaclub.review.model; + +public class ReviewDto { +} diff --git a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java new file mode 100644 index 0000000..be40b22 --- /dev/null +++ b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java @@ -0,0 +1,4 @@ +package com.msaclub.review.model.mapper; + +public class ReviewMapper { +} diff --git a/review/src/main/java/com/msaclub/review/service/ReviewService.java b/review/src/main/java/com/msaclub/review/service/ReviewService.java new file mode 100644 index 0000000..0aa4e63 --- /dev/null +++ b/review/src/main/java/com/msaclub/review/service/ReviewService.java @@ -0,0 +1,17 @@ +package com.msaclub.review.service; + +public interface ReviewService { + // 현재 구매자의 구매 리스트 가져오기 + + // 현재 댓글 쓰기 기능을 요청한 사용자가 구매자가 맞나 판별 + + // 리뷰 수정 + + // 리뷰 생성 + + // 리뷰 삭제 + + // 리뷰 조회 + + // +} diff --git a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java new file mode 100644 index 0000000..e5b7977 --- /dev/null +++ b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java @@ -0,0 +1,4 @@ +package com.msaclub.review.service; + +public class ReviewServiceImpl { +} From fa5bf28a92cd9ce5ecf309c9815f4c287eb83064 Mon Sep 17 00:00:00 2001 From: chohyunwoo Date: Tue, 26 Dec 2023 19:37:15 +0900 Subject: [PATCH 2/6] =?UTF-8?q?review=20=EC=8A=A4=ED=94=84=EB=A7=81?= =?UTF-8?q?=EB=B6=80=ED=8A=B8=20=EB=9D=84=EC=9B=8C=EB=B3=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- review/build.gradle | 2 +- .../java/com/msaclub/review/ReviewApplication.java | 2 -- .../msaclub/review/controller/ReviewController.java | 13 +++++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/review/build.gradle b/review/build.gradle index 7fc8217..d7e42cf 100644 --- a/review/build.gradle +++ b/review/build.gradle @@ -22,7 +22,7 @@ repositories { } ext { - set('springCloudVersion', "2022.0.0") + set('springCloudVersion', "2022.0.3") } dependencies { diff --git a/review/src/main/java/com/msaclub/review/ReviewApplication.java b/review/src/main/java/com/msaclub/review/ReviewApplication.java index a1c780a..4e8f65a 100644 --- a/review/src/main/java/com/msaclub/review/ReviewApplication.java +++ b/review/src/main/java/com/msaclub/review/ReviewApplication.java @@ -10,8 +10,6 @@ public class ReviewApplication { public static void main(String[] args) { SpringApplication.run(ReviewApplication.class, args); - System.out.println("bye"); - } } diff --git a/review/src/main/java/com/msaclub/review/controller/ReviewController.java b/review/src/main/java/com/msaclub/review/controller/ReviewController.java index 6039ecd..26298af 100644 --- a/review/src/main/java/com/msaclub/review/controller/ReviewController.java +++ b/review/src/main/java/com/msaclub/review/controller/ReviewController.java @@ -1,4 +1,17 @@ package com.msaclub.review.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping public class ReviewController { + + + @GetMapping("/review_test") + public String test() { + return "hello review"; + } } From 1cc7fa329a40ec15e368b1da5707df4a7b21c9f9 Mon Sep 17 00:00:00 2001 From: chohyunwoo Date: Wed, 27 Dec 2023 12:29:19 +0900 Subject: [PATCH 3/6] mybatis config error --- review/build.gradle | 4 + .../msaclub/review/config/MyBatisConfig.java | 40 ++++++++++ .../review/controller/ReviewController.java | 9 ++- .../com/msaclub/review/model/ReviewDto.java | 16 ++++ .../review/model/mapper/ReviewMapper.java | 38 ++++++++- .../msaclub/review/service/ReviewService.java | 34 +++++++- .../review/service/ReviewServiceImpl.java | 78 ++++++++++++++++++- review/src/main/resources/application.yml | 16 +++- .../resources/mybatis/mapper/ReviewMapper.xml | 42 ++++++++++ 9 files changed, 269 insertions(+), 8 deletions(-) create mode 100644 review/src/main/java/com/msaclub/review/config/MyBatisConfig.java create mode 100644 review/src/main/resources/mybatis/mapper/ReviewMapper.xml diff --git a/review/build.gradle b/review/build.gradle index d7e42cf..5dbebf3 100644 --- a/review/build.gradle +++ b/review/build.gradle @@ -32,6 +32,10 @@ dependencies { developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + runtimeOnly("com.mysql:mysql-connector-j") + implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' + + implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1" } dependencyManagement { diff --git a/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java b/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java new file mode 100644 index 0000000..a99ba9a --- /dev/null +++ b/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java @@ -0,0 +1,40 @@ +package com.msaclub.review.config; + +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DriverManagerDataSource; + +import javax.sql.DataSource; + +@Configuration +@MapperScan("com.msaclub.review.model.mapper") +public class MyBatisConfig { + + @Bean + public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*.xml")); + return sessionFactory.getObject(); + } + + @Bean + public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + + @Bean + public DataSource dataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + dataSource.setUrl("jdbc:mysql://localhost:3306/msa"); + dataSource.setUsername("ssafy"); + dataSource.setPassword("ssafy"); + return dataSource; + } +} diff --git a/review/src/main/java/com/msaclub/review/controller/ReviewController.java b/review/src/main/java/com/msaclub/review/controller/ReviewController.java index 26298af..e27569c 100644 --- a/review/src/main/java/com/msaclub/review/controller/ReviewController.java +++ b/review/src/main/java/com/msaclub/review/controller/ReviewController.java @@ -1,16 +1,21 @@ package com.msaclub.review.controller; +import com.msaclub.review.service.ReviewService; +import com.netflix.discovery.converters.Auto; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping +@RequestMapping("/review") public class ReviewController { + @Autowired + ReviewService reviewService; - @GetMapping("/review_test") + @GetMapping("/test") public String test() { return "hello review"; } diff --git a/review/src/main/java/com/msaclub/review/model/ReviewDto.java b/review/src/main/java/com/msaclub/review/model/ReviewDto.java index 1e39d8e..789a643 100644 --- a/review/src/main/java/com/msaclub/review/model/ReviewDto.java +++ b/review/src/main/java/com/msaclub/review/model/ReviewDto.java @@ -1,4 +1,20 @@ package com.msaclub.review.model; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter public class ReviewDto { + + private String reviewId; + private String userId; + private String productId; + private int rating; + private String comment; + private LocalDateTime createdAt; + private LocalDateTime modifiedAt; + private boolean deleted; } diff --git a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java index be40b22..5bb4f56 100644 --- a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java +++ b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java @@ -1,4 +1,40 @@ package com.msaclub.review.model.mapper; -public class ReviewMapper { +import com.msaclub.review.model.ReviewDto; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +import java.time.LocalDateTime; +import java.util.List; + +@Mapper +@Repository +public interface ReviewMapper { + + + int getNumberOfPurchaseList(String userId); + + List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); + + List getPurchaseList(String userId); + + boolean isBuyer(String userId, String productId); + + boolean review(String reviewId, String content); + + boolean deleteReview(String reviewId); + + ReviewDto getReviewByReviewId(String reviewId); + + int getReviewCount(String userId); + + List getReviewByUserId(String userId); + + List getReviewByUserId(String userId, int pageNo, int reviewPerPage); + + List getReviewByUserIdPaged(String userId, int offset, int limit); + + List getReviewByRating(String productId, boolean isAscending); + + Double getReviewAvg(String productId); } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewService.java b/review/src/main/java/com/msaclub/review/service/ReviewService.java index 0aa4e63..14baf58 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewService.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewService.java @@ -1,17 +1,45 @@ package com.msaclub.review.service; +import com.msaclub.review.model.ReviewDto; + +import java.time.LocalDateTime; +import java.util.List; + public interface ReviewService { + + // 현재 구매자의 구매 목록 갯수 가져오기 + int getNumberOfPurchaseList(String userId); + + // 현재 구매자의 날짜별 구매 목록 가져오기 + List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); + // 현재 구매자의 구매 리스트 가져오기 + List getPurchaseList(String userId); // 현재 댓글 쓰기 기능을 요청한 사용자가 구매자가 맞나 판별 + boolean isBuyer(String userId, String productId); // 리뷰 수정 - - // 리뷰 생성 + boolean review(String reviewId, String content); // 리뷰 삭제 + boolean deleteReview(String reviewId); + + // 리뷰 조회 (by reviewId) + ReviewDto getReviewByReviewId(String reviewId); + + // 어떤 유저가 작성한 리뷰 갯수 반환하기 + int getReviewCount(String userId); + + // 리뷰 조회 (by userId) + List getReviewByUserId(String userId); // 리뷰 조회 + List getReviewByUserId(String userId, int pageNo, int reviewPerPage); + + // 리뷰 점수 순으로 조회하기 + List getReviewByRating(String productId, boolean isAsending); - // + // 리뷰 평점 계산하기 + Double getReviewAvg(String productId); } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java index e5b7977..c7fbcf2 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java @@ -1,4 +1,80 @@ package com.msaclub.review.service; -public class ReviewServiceImpl { +import com.msaclub.review.model.ReviewDto; +import com.msaclub.review.model.mapper.ReviewMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class ReviewServiceImpl implements ReviewService { + + @Autowired + ReviewMapper reviewMapper; + + public ReviewServiceImpl(ReviewMapper reviewMapper) { + this.reviewMapper = reviewMapper; + } + + @Override + public int getNumberOfPurchaseList(String userId) { + return 0; + } + + @Override + public List getPurchaseListByDate(LocalDateTime start, LocalDateTime end) { + return null; + } + + @Override + public List getPurchaseList(String userId) { + return null; + } + + @Override + public boolean isBuyer(String userId, String productId) { + return false; + } + + @Override + public boolean review(String reviewId, String content) { + return false; + } + + @Override + public boolean deleteReview(String reviewId) { + return false; + } + + @Override + public ReviewDto getReviewByReviewId(String reviewId) { + return reviewMapper.getReviewByReviewId(reviewId); + } + + @Override + public int getReviewCount(String userId) { + return reviewMapper.getReviewCount(userId); + } + + @Override + public List getReviewByUserId(String userId) { + return reviewMapper.getReviewByUserId(userId); + } + + @Override + public List getReviewByUserId(String userId, int pageNo, int reviewPerPage) { + return reviewMapper.getReviewByUserId(userId, pageNo, reviewPerPage); + } + + @Override + public List getReviewByRating(String productId, boolean isAsending) { + return reviewMapper.getReviewByRating(productId, isAsending); + } + + @Override + public Double getReviewAvg(String productId) { + return reviewMapper.getReviewAvg(productId); + } } diff --git a/review/src/main/resources/application.yml b/review/src/main/resources/application.yml index 6c28fca..287aba2 100644 --- a/review/src/main/resources/application.yml +++ b/review/src/main/resources/application.yml @@ -5,6 +5,19 @@ server: spring: application: name: review + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/msa?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8 + username: ssafy + password: ssafy + + +mybatis: + type-aliases-package: com.msaclub.review.model.mapper + mapper-locations: classpath:mybatis/mapper/*.xml + + + eureka: instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} @@ -12,4 +25,5 @@ eureka: fetch-registry: true register-with-eureka: true service-url: - defaultZone: http://3.143.74.33:8761/eureka \ No newline at end of file + defaultZone: http://3.143.74.33:8761/eureka + diff --git a/review/src/main/resources/mybatis/mapper/ReviewMapper.xml b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml new file mode 100644 index 0000000..e259348 --- /dev/null +++ b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + UPDATE review SET content = #{content} WHERE review_id = #{reviewId} + + + + DELETE FROM review WHERE review_id = #{reviewId} + + + + + + + + + From 8617f4d08d8a5aa818c3ae096247d04815149f5e Mon Sep 17 00:00:00 2001 From: chohyunwoo Date: Wed, 27 Dec 2023 15:29:36 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[BE=20Fix]=20mapper=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20mybatis=20bean=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=97=90=EB=A0=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- review/build.gradle | 3 +- .../com/msaclub/review/ReviewApplication.java | 2 + .../review/model/mapper/ReviewMapper.java | 5 +- .../msaclub/review/service/ReviewService.java | 4 +- .../review/service/ReviewServiceImpl.java | 8 +-- .../resources/mybatis/mapper/ReviewMapper.xml | 66 +++++++++---------- 6 files changed, 46 insertions(+), 42 deletions(-) diff --git a/review/build.gradle b/review/build.gradle index 5dbebf3..5d62313 100644 --- a/review/build.gradle +++ b/review/build.gradle @@ -35,7 +35,8 @@ dependencies { runtimeOnly("com.mysql:mysql-connector-j") implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' - implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1" + + implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2' //spring boot 3.0 ver => mybatis 3 버전 써야됨 } dependencyManagement { diff --git a/review/src/main/java/com/msaclub/review/ReviewApplication.java b/review/src/main/java/com/msaclub/review/ReviewApplication.java index 4e8f65a..dbc0542 100644 --- a/review/src/main/java/com/msaclub/review/ReviewApplication.java +++ b/review/src/main/java/com/msaclub/review/ReviewApplication.java @@ -3,9 +3,11 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @EnableDiscoveryClient +@ComponentScan(basePackages = {"com.msaclub.review.config"}) public class ReviewApplication { public static void main(String[] args) { diff --git a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java index 5bb4f56..db49ac8 100644 --- a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java +++ b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java @@ -11,9 +11,8 @@ @Repository public interface ReviewMapper { - int getNumberOfPurchaseList(String userId); - + /* List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); List getPurchaseList(String userId); @@ -37,4 +36,6 @@ public interface ReviewMapper { List getReviewByRating(String productId, boolean isAscending); Double getReviewAvg(String productId); + + */ } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewService.java b/review/src/main/java/com/msaclub/review/service/ReviewService.java index 14baf58..527efa8 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewService.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewService.java @@ -7,9 +7,10 @@ public interface ReviewService { + // 현재 구매자의 구매 목록 갯수 가져오기 int getNumberOfPurchaseList(String userId); - +/* // 현재 구매자의 날짜별 구매 목록 가져오기 List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); @@ -42,4 +43,5 @@ public interface ReviewService { // 리뷰 평점 계산하기 Double getReviewAvg(String productId); + */ } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java index c7fbcf2..bf3e638 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java @@ -14,15 +14,12 @@ public class ReviewServiceImpl implements ReviewService { @Autowired ReviewMapper reviewMapper; - public ReviewServiceImpl(ReviewMapper reviewMapper) { - this.reviewMapper = reviewMapper; - } @Override public int getNumberOfPurchaseList(String userId) { - return 0; + return reviewMapper.getNumberOfPurchaseList(userId); } - + /* @Override public List getPurchaseListByDate(LocalDateTime start, LocalDateTime end) { return null; @@ -77,4 +74,5 @@ public List getReviewByRating(String productId, boolean isAsending) { public Double getReviewAvg(String productId) { return reviewMapper.getReviewAvg(productId); } + */ } diff --git a/review/src/main/resources/mybatis/mapper/ReviewMapper.xml b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml index e259348..1cfe8ff 100644 --- a/review/src/main/resources/mybatis/mapper/ReviewMapper.xml +++ b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml @@ -6,37 +6,37 @@ - - - - - - - - - UPDATE review SET content = #{content} WHERE review_id = #{reviewId} - - - - DELETE FROM review WHERE review_id = #{reviewId} - - - - - - - - + From d296fd6ae4e18a83b8d1d7b70c7a8c2bb79a812c Mon Sep 17 00:00:00 2001 From: chohyunwoo Date: Wed, 27 Dec 2023 15:43:07 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[BE=20Feat]=20review=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20DB=20=EC=A1=B0=ED=9A=8C=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/msaclub/review/ReviewApplication.java | 1 - .../msaclub/review/config/MyBatisConfig.java | 40 ------------------- .../review/controller/ReviewController.java | 11 +++++ 3 files changed, 11 insertions(+), 41 deletions(-) delete mode 100644 review/src/main/java/com/msaclub/review/config/MyBatisConfig.java diff --git a/review/src/main/java/com/msaclub/review/ReviewApplication.java b/review/src/main/java/com/msaclub/review/ReviewApplication.java index dbc0542..0c40559 100644 --- a/review/src/main/java/com/msaclub/review/ReviewApplication.java +++ b/review/src/main/java/com/msaclub/review/ReviewApplication.java @@ -7,7 +7,6 @@ @SpringBootApplication @EnableDiscoveryClient -@ComponentScan(basePackages = {"com.msaclub.review.config"}) public class ReviewApplication { public static void main(String[] args) { diff --git a/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java b/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java deleted file mode 100644 index a99ba9a..0000000 --- a/review/src/main/java/com/msaclub/review/config/MyBatisConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.msaclub.review.config; - -import org.apache.ibatis.session.SqlSessionFactory; -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.SqlSessionTemplate; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.jdbc.datasource.DriverManagerDataSource; - -import javax.sql.DataSource; - -@Configuration -@MapperScan("com.msaclub.review.model.mapper") -public class MyBatisConfig { - - @Bean - public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { - SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); - sessionFactory.setDataSource(dataSource); - sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*.xml")); - return sessionFactory.getObject(); - } - - @Bean - public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { - return new SqlSessionTemplate(sqlSessionFactory); - } - - @Bean - public DataSource dataSource() { - DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); - dataSource.setUrl("jdbc:mysql://localhost:3306/msa"); - dataSource.setUsername("ssafy"); - dataSource.setPassword("ssafy"); - return dataSource; - } -} diff --git a/review/src/main/java/com/msaclub/review/controller/ReviewController.java b/review/src/main/java/com/msaclub/review/controller/ReviewController.java index e27569c..48438a7 100644 --- a/review/src/main/java/com/msaclub/review/controller/ReviewController.java +++ b/review/src/main/java/com/msaclub/review/controller/ReviewController.java @@ -19,4 +19,15 @@ public class ReviewController { public String test() { return "hello review"; } + + @GetMapping("/DBConnectionTest") + public String testConnection() { + try { + int number = reviewService.getNumberOfPurchaseList("ssafy"); + return "조회 성공"; + } catch(Exception e) { + System.out.println(e); + return "DB Connection Error : 로그 메시지 참고해주세요"; + } + } } From a524f35940fa24240187101d9a67767f4e54a7dc Mon Sep 17 00:00:00 2001 From: chohyunwoo Date: Thu, 28 Dec 2023 23:16:10 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[BE=20Feat]=20review=20=EC=8B=9C=EC=8A=A4?= =?UTF-8?q?=ED=85=9C=20=EA=B0=9C=EB=B0=9C=20=EC=99=84=EB=A3=8C=20=EB=B0=8F?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/controller/ReviewController.java | 149 +++++++++++++++++- .../com/msaclub/review/model/ReviewDto.java | 14 ++ .../review/model/mapper/ReviewMapper.java | 25 +-- .../msaclub/review/service/ReviewService.java | 22 +-- .../review/service/ReviewServiceImpl.java | 33 ++-- .../resources/mybatis/mapper/ReviewMapper.xml | 89 +++++++---- 6 files changed, 265 insertions(+), 67 deletions(-) diff --git a/review/src/main/java/com/msaclub/review/controller/ReviewController.java b/review/src/main/java/com/msaclub/review/controller/ReviewController.java index 48438a7..5ba6465 100644 --- a/review/src/main/java/com/msaclub/review/controller/ReviewController.java +++ b/review/src/main/java/com/msaclub/review/controller/ReviewController.java @@ -1,24 +1,27 @@ package com.msaclub.review.controller; +import com.msaclub.review.model.ReviewDto; import com.msaclub.review.service.ReviewService; -import com.netflix.discovery.converters.Auto; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + @RestController @RequestMapping("/review") +@Slf4j public class ReviewController { @Autowired ReviewService reviewService; - @GetMapping("/test") - public String test() { - return "hello review"; - } @GetMapping("/DBConnectionTest") public String testConnection() { @@ -30,4 +33,140 @@ public String testConnection() { return "DB Connection Error : 로그 메시지 참고해주세요"; } } + @GetMapping("/testGetNumberOfPurchaseList") + public String testGetNumberOfPurchaseList() { + + int number = reviewService.getNumberOfPurchaseList("ssafy"); + log.info(number + "개 구매하였습니다"); + + return "testGetNumberOfPurchaseList"; + } + + + + @GetMapping("/testGetPurchaseListByDate") + public String testGetPurchaseListByDate() { + String startString = "2020-01-01 12:34:56"; + String endString = "2023-12-25 12:34:56"; + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime startTime = LocalDateTime.parse(startString, formatter); + LocalDateTime endTime = LocalDateTime.parse(endString, formatter); + + + List result = reviewService.getPurchaseListByDate("ssafy", Timestamp.valueOf(startTime), Timestamp.valueOf(endTime)); + log.info(result.toString()); + + return "testGetPurchaseListByDate"; + } + + @GetMapping("/testGetPurchaseList") + public String testGetPurchaseList() { + List result = reviewService.getPurchaseList("ssafy"); + + log.info(result.toString()); + return "testGetPurchaseList"; + } + + @GetMapping("/testIsBuyer") + public String testIsBuyer() { + boolean isBuyer = reviewService.isBuyer("ssafy", "galaxys23"); + + if(isBuyer) + log.info("true"); + else + log.info("false"); + + return "testIsBuyer"; + } + + /*check*/ + @GetMapping("/testReview") + public String testReview() { + boolean result = reviewService.review(1, "내용을 수정하겠습니다"); + if(result) { + log.info("수정 성공!!"); + } else { + log.info("수정 실패!!"); + } + return "testReview"; + } + + /*check*/ + @GetMapping("/testDeleteReview") + public String testDeleteReview() { + boolean result = reviewService.deleteReview(1); + if(result) { + log.info("성공적으로 삭제하였습니다"); + } else { + log.info("삭제에 실패했습니다"); + } + return "testDeleteReview"; + } + + @GetMapping("/testGetReviewByReviewId") + public String testGetReviewByReviewId() { + ReviewDto result = reviewService.getReviewByReviewId(1); + if(result != null) { + log.info(result.toString()); + } else { + log.info("조회에 실패했습니다"); + } + return "testGetReviewByReviewId"; + } +//// + @GetMapping("/testGetReviewCount") + public String testGetReviewCount() { + int number = reviewService.getReviewCount("ssafy"); + log.info(number + "개의 리뷰를 작성했습니다"); + return "testGetReviewCount"; + } + + @GetMapping("/testGetReviewByUserId") + public String testGetReviewByUserId() { + List result = reviewService.getReviewByUserId("ssafy"); + if(result != null) { + log.info(result.toString()); + } else { + log.info("조회에 실패했습니다"); + } + return "testGetReviewByUserId"; + } + + @GetMapping("/testGetReviewByUserIdWithParam") + public String testGetReviewByUserIdWithParam() { + int pageNo = 2; + int reviewPerPage = 3; + List result = reviewService.getReviewByUserIdWithParam("ssafy", pageNo, reviewPerPage); + if(result != null) { + log.info(result.toString()); + } else { + log.info("조회에 실패했습니다"); + } + return "testGetReviewByUserIdWithParam"; + } + + // + @GetMapping("/testGetReviewByRating") + public String testGetReviewByRating() { + List result = reviewService.getReviewByRating("galaxy", true); + if(result != null) { + log.info(result.toString()); + } else { + log.info("조회에 실패했습니다"); + } + return "testGetReviewByRating"; + } + + +// + @GetMapping("/testGetReviewAvg") + public String testGetReviewAvg() { + + double avgRating = reviewService.getReviewAvg("galaxy"); + log.info(String.valueOf(avgRating)); + + return "testGetReviewAvg"; + } } diff --git a/review/src/main/java/com/msaclub/review/model/ReviewDto.java b/review/src/main/java/com/msaclub/review/model/ReviewDto.java index 789a643..96e99b1 100644 --- a/review/src/main/java/com/msaclub/review/model/ReviewDto.java +++ b/review/src/main/java/com/msaclub/review/model/ReviewDto.java @@ -17,4 +17,18 @@ public class ReviewDto { private LocalDateTime createdAt; private LocalDateTime modifiedAt; private boolean deleted; + + @Override + public String toString() { + return "ReviewDto{" + + "reviewId='" + reviewId + '\'' + + ", userId='" + userId + '\'' + + ", productId='" + productId + '\'' + + ", rating=" + rating + + ", comment='" + comment + '\'' + + ", createdAt=" + createdAt + + ", modifiedAt=" + modifiedAt + + ", deleted=" + deleted + + "}\n"; + } } diff --git a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java index db49ac8..2a0ba60 100644 --- a/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java +++ b/review/src/main/java/com/msaclub/review/model/mapper/ReviewMapper.java @@ -2,9 +2,10 @@ import com.msaclub.review.model.ReviewDto; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; -import java.time.LocalDateTime; +import java.sql.Timestamp; import java.util.List; @Mapper @@ -12,30 +13,32 @@ public interface ReviewMapper { int getNumberOfPurchaseList(String userId); - /* - List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); + + + List getPurchaseListByDate(@Param("userId") String userId, @Param("start") Timestamp start, @Param("end") Timestamp end); List getPurchaseList(String userId); boolean isBuyer(String userId, String productId); - boolean review(String reviewId, String content); + boolean review(int reviewId, String content); - boolean deleteReview(String reviewId); + boolean deleteReview(int reviewId); - ReviewDto getReviewByReviewId(String reviewId); + ReviewDto getReviewByReviewId(int reviewId); int getReviewCount(String userId); List getReviewByUserId(String userId); - List getReviewByUserId(String userId, int pageNo, int reviewPerPage); - - List getReviewByUserIdPaged(String userId, int offset, int limit); + List getReviewByUserIdWithParam(String userId, int pageNo, int reviewPerPage); List getReviewByRating(String productId, boolean isAscending); - Double getReviewAvg(String productId); - */ + double getReviewAvg(String productId); + + + + } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewService.java b/review/src/main/java/com/msaclub/review/service/ReviewService.java index 527efa8..86b6afe 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewService.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewService.java @@ -2,7 +2,7 @@ import com.msaclub.review.model.ReviewDto; -import java.time.LocalDateTime; +import java.sql.Timestamp; import java.util.List; public interface ReviewService { @@ -10,9 +10,10 @@ public interface ReviewService { // 현재 구매자의 구매 목록 갯수 가져오기 int getNumberOfPurchaseList(String userId); -/* + // 현재 구매자의 날짜별 구매 목록 가져오기 - List getPurchaseListByDate(LocalDateTime start, LocalDateTime end); + List getPurchaseListByDate(String userId, Timestamp start, Timestamp end); + // 현재 구매자의 구매 리스트 가져오기 List getPurchaseList(String userId); @@ -21,13 +22,13 @@ public interface ReviewService { boolean isBuyer(String userId, String productId); // 리뷰 수정 - boolean review(String reviewId, String content); + boolean review(int reviewId, String content); // 리뷰 삭제 - boolean deleteReview(String reviewId); + boolean deleteReview(int reviewId); // 리뷰 조회 (by reviewId) - ReviewDto getReviewByReviewId(String reviewId); + ReviewDto getReviewByReviewId(int reviewId); // 어떤 유저가 작성한 리뷰 갯수 반환하기 int getReviewCount(String userId); @@ -36,12 +37,15 @@ public interface ReviewService { List getReviewByUserId(String userId); // 리뷰 조회 - List getReviewByUserId(String userId, int pageNo, int reviewPerPage); + List getReviewByUserIdWithParam(String userId, int pageNo, int reviewPerPage); // 리뷰 점수 순으로 조회하기 List getReviewByRating(String productId, boolean isAsending); // 리뷰 평점 계산하기 - Double getReviewAvg(String productId); - */ + double getReviewAvg(String productId); + + + + } diff --git a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java index bf3e638..b76cefe 100644 --- a/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java +++ b/review/src/main/java/com/msaclub/review/service/ReviewServiceImpl.java @@ -5,7 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; +import java.sql.Timestamp; import java.util.List; @Service @@ -19,34 +19,37 @@ public class ReviewServiceImpl implements ReviewService { public int getNumberOfPurchaseList(String userId) { return reviewMapper.getNumberOfPurchaseList(userId); } - /* + + @Override - public List getPurchaseListByDate(LocalDateTime start, LocalDateTime end) { - return null; + public List getPurchaseListByDate(String userId, Timestamp start, Timestamp end) { + + return reviewMapper.getPurchaseListByDate(userId, start, end); } + @Override public List getPurchaseList(String userId) { - return null; + return reviewMapper.getPurchaseList(userId); } @Override public boolean isBuyer(String userId, String productId) { - return false; + return reviewMapper.isBuyer(userId, productId); } @Override - public boolean review(String reviewId, String content) { - return false; + public boolean review(int reviewId, String content) { + return reviewMapper.review(reviewId, content); } @Override - public boolean deleteReview(String reviewId) { - return false; + public boolean deleteReview(int reviewId) { + return reviewMapper.deleteReview(reviewId); } @Override - public ReviewDto getReviewByReviewId(String reviewId) { + public ReviewDto getReviewByReviewId(int reviewId) { return reviewMapper.getReviewByReviewId(reviewId); } @@ -61,8 +64,8 @@ public List getReviewByUserId(String userId) { } @Override - public List getReviewByUserId(String userId, int pageNo, int reviewPerPage) { - return reviewMapper.getReviewByUserId(userId, pageNo, reviewPerPage); + public List getReviewByUserIdWithParam(String userId, int pageNo, int reviewPerPage) { + return reviewMapper.getReviewByUserIdWithParam(userId, pageNo, reviewPerPage); } @Override @@ -71,8 +74,8 @@ public List getReviewByRating(String productId, boolean isAsending) { } @Override - public Double getReviewAvg(String productId) { + public double getReviewAvg(String productId) { return reviewMapper.getReviewAvg(productId); } - */ + } diff --git a/review/src/main/resources/mybatis/mapper/ReviewMapper.xml b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml index 1cfe8ff..669b6a5 100644 --- a/review/src/main/resources/mybatis/mapper/ReviewMapper.xml +++ b/review/src/main/resources/mybatis/mapper/ReviewMapper.xml @@ -1,42 +1,77 @@ + - + + + + + + + +