Skip to content

Commit 35fa8b4

Browse files
authored
Merge pull request #21 from DMU-NextLevel/feat/recent-project
Feat/recent project
2 parents 8f650ba + decaff9 commit 35fa8b4

25 files changed

Lines changed: 557 additions & 237 deletions

src/main/java/NextLevel/demo/funding/service/FundingValidateService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ public class FundingValidateService {
1515
// validate not exist funding (Project project) // db 조회인데 구지 option validate service에 둘 이유가 없어 보임
1616

1717
public Long getTotalFundingPrice(Long projectId) {
18-
return optionFundingRepository.getTotalPriceByProject(projectId) +
19-
freeFundingRepository.getTotalPriceByProject(projectId);
18+
Long optionFundingPrice = optionFundingRepository.getTotalPriceByProject(projectId);
19+
Long freeFundingPrice = freeFundingRepository.getTotalPriceByProject(projectId);
20+
return (optionFundingPrice != null ? optionFundingPrice : 0)
21+
+ (freeFundingPrice != null ? freeFundingPrice : 0);
2022
}
2123

2224
}

src/main/java/NextLevel/demo/project/project/controller/ProjectController.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package NextLevel.demo.project.project.controller;
22

33
import NextLevel.demo.common.SuccessResponse;
4-
import NextLevel.demo.funding.dto.response.FundingResponseDto;
54
import NextLevel.demo.project.project.dto.request.CreateProjectDto;
6-
import NextLevel.demo.project.project.dto.request.SelectProjectListRequestDto;
5+
import NextLevel.demo.project.project.dto.request.RequestMainPageProjectListDto;
76
import NextLevel.demo.project.project.dto.response.ResponseProjectAllDto;
87
import NextLevel.demo.project.project.dto.response.ResponseProjectDetailDto;
98
import NextLevel.demo.project.project.dto.response.ResponseProjectListDto;
109
import NextLevel.demo.project.project.service.ProjectService;
1110
import NextLevel.demo.util.jwt.JWTUtil;
1211
import jakarta.validation.Valid;
1312
import java.util.List;
13+
14+
import jakarta.validation.constraints.NotNull;
1415
import lombok.RequiredArgsConstructor;
1516
import lombok.extern.log4j.Log4j2;
1617
import org.springframework.http.HttpStatus;
@@ -64,7 +65,7 @@ public ResponseEntity<?> getAllProjects(
6465
{
6566
Long userId = JWTUtil.getUserIdFromSecurityContextCanNULL();
6667

67-
SelectProjectListRequestDto dto = SelectProjectListRequestDto.builder()
68+
RequestMainPageProjectListDto dto = RequestMainPageProjectListDto.builder()
6869
.tag(tagId)
6970
.page(page)
7071
.order(order)
@@ -79,7 +80,7 @@ public ResponseEntity<?> getAllProjects(
7980

8081
@PostMapping("/public/project/all")
8182
public ResponseEntity<?> getAllProjects(
82-
@RequestBody SelectProjectListRequestDto dto)
83+
@RequestBody RequestMainPageProjectListDto dto)
8384
{
8485
Long userId = JWTUtil.getUserIdFromSecurityContextCanNULL();
8586
dto.setUserId(userId);
@@ -90,7 +91,7 @@ public ResponseEntity<?> getAllProjects(
9091

9192
// 상세 조회
9293
@GetMapping("/public/project/{projectId}")
93-
public ResponseEntity<?> getProjectDetailById(@PathVariable("projectId") Long projectId) {
94+
public ResponseEntity<?> getProjectDetailById(@PathVariable("projectId") @NotNull Long projectId) {
9495
Long userId = JWTUtil.getUserIdFromSecurityContextCanNULL();
9596

9697
ResponseProjectDetailDto dto = projectService.getProjectDetailById(projectId, userId);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package NextLevel.demo.project.project.dto.request;
2+
3+
import java.util.List;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
import lombok.ToString;
10+
11+
@Builder
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
@Getter
15+
@Setter
16+
@ToString
17+
public class RequestMainPageProjectListDto {
18+
private Long userId;
19+
private List<Long> tag;
20+
private String order;
21+
private String search;
22+
private Boolean desc;
23+
private Integer page = 0;
24+
private Long pageCount = 8L; // default 8
25+
26+
public List<Long> getTagIds() {
27+
return tag;
28+
}
29+
30+
public long getLimit() {
31+
return pageCount;
32+
}
33+
public long getOffset() {
34+
return pageCount * page;
35+
}
36+
}

src/main/java/NextLevel/demo/project/project/dto/request/SelectProjectListRequestDto.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/main/java/NextLevel/demo/project/project/dto/response/ResponseProjectListDetailDto.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
import NextLevel.demo.img.ImgDto;
1010
import NextLevel.demo.img.entity.ImgEntity;
11+
import NextLevel.demo.project.tag.entity.ProjectTagEntity;
12+
import NextLevel.demo.project.tag.entity.TagEntity;
13+
import com.fasterxml.jackson.annotation.JsonIgnore;
1114
import lombok.Getter;
1215
import lombok.NoArgsConstructor;
1316
import lombok.Setter;
@@ -39,6 +42,9 @@ public class ResponseProjectListDetailDto {
3942
private LocalDateTime expired;
4043
private Boolean isExpired;
4144

45+
@JsonIgnore
46+
private LocalDateTime projectViewCreateAt;
47+
4248
public ResponseProjectListDetailDto(
4349
Long id,
4450
String title,
@@ -51,7 +57,7 @@ public ResponseProjectListDetailDto(
5157
long userCount,
5258
long isLiked,
5359
long viewCount,
54-
long totalCount // 전체 조건에 만족하는 project 갯수
60+
LocalDateTime projectViewCreateAt // select distinct 용 column
5561
) {
5662
this.id = id;
5763
this.title = title;
@@ -64,7 +70,8 @@ public ResponseProjectListDetailDto(
6470
this.isExpired = expired.isBefore(LocalDateTime.now());
6571
this.expired = expired;
6672
this.viewCount = viewCount;
67-
this.totalCount = totalCount;
73+
// this.totalCount = totalCount;
74+
this.projectViewCreateAt = projectViewCreateAt;
6875
}
6976

7077
}

src/main/java/NextLevel/demo/project/project/dto/response/ResponseProjectListDto.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,10 @@ public class ResponseProjectListDto {
1212
private long pageCount; // page 당 반환 project 갯수
1313
private long page; // 요청시 들어옴
1414

15-
public ResponseProjectListDto(List<ResponseProjectListDetailDto> projects) {
15+
public ResponseProjectListDto(List<ResponseProjectListDetailDto> projects, long totalCount, long pageCount, long page) {
1616
this.projects = projects;
17-
}
18-
19-
public void setPageCount(long pageCount, long page) {
2017
this.pageCount = pageCount;
2118
this.page = page;
22-
if(projects != null && projects.size() > 0) {
23-
this.totalCount = projects.get(0).getTotalCount();
24-
}
19+
this.totalCount = totalCount;
2520
}
2621
}

src/main/java/NextLevel/demo/project/project/entity/ProjectEntity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import NextLevel.demo.project.notice.entity.ProjectNoticeEntity;
99
import NextLevel.demo.project.story.entity.ProjectStoryEntity;
1010
import NextLevel.demo.project.tag.entity.ProjectTagEntity;
11+
import NextLevel.demo.project.view.ProjectViewEntity;
1112
import NextLevel.demo.user.entity.LikeEntity;
1213
import NextLevel.demo.user.entity.UserEntity;
1314
import jakarta.persistence.CascadeType;
@@ -22,11 +23,9 @@
2223
import jakarta.persistence.OneToMany;
2324
import jakarta.persistence.Table;
2425
import java.text.ParseException;
25-
import java.text.SimpleDateFormat;
2626
import java.time.LocalDate;
2727
import java.time.LocalDateTime;
2828
import java.time.format.DateTimeFormatter;
29-
import java.util.Date;
3029
import java.util.List;
3130
import java.util.Set;
3231
import lombok.AccessLevel;
@@ -105,7 +104,7 @@ public ProjectEntity(Long id, UserEntity user, String title, String content,
105104
this.content = content;
106105
this.goal = goal;
107106
this.titleImg = titleImg;
108-
this.expired = LocalDate.parse(expired, DateTimeFormatter.ofPattern("yyyy-MM-dd")).atTime(32, 59); //LocalDateTime.of(new SimpleDateFormat("yyyy-MM-dd").parse(expired));
107+
this.expired = LocalDate.parse(expired, DateTimeFormatter.ofPattern("yyyy-MM-dd")).atTime(23, 59); //LocalDateTime.of(new SimpleDateFormat("yyyy-MM-dd").parse(expired));
109108
this.tags = tags;
110109
this.stories = stories;
111110
}

src/main/java/NextLevel/demo/project/project/repository/MyPageWhere.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)