Skip to content

Commit 95d06f9

Browse files
committed
feat admin select all funding data
1 parent 512eaec commit 95d06f9

File tree

5 files changed

+112
-4
lines changed

5 files changed

+112
-4
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package NextLevel.demo.admin;
2+
3+
import NextLevel.demo.admin.project.FundingDataDao;
4+
import NextLevel.demo.user.entity.UserEntity;
5+
import java.util.List;
6+
import org.springframework.data.jpa.repository.Modifying;
7+
import org.springframework.data.jpa.repository.Query;
8+
import org.springframework.data.repository.Repository;
9+
import org.springframework.data.repository.query.Param;
10+
11+
@org.springframework.stereotype.Repository
12+
public interface AdminRepository extends Repository<UserEntity, Long> {
13+
14+
@Modifying
15+
@Query(value = """
16+
select
17+
project.title as project_title ,
18+
t1.price as price ,
19+
user.nick_name as user_nick_name ,
20+
t1.created_at as created_at ,
21+
t1.type as type
22+
from
23+
(
24+
select
25+
`option`.project_id as project_id ,
26+
`option`.price * off.count as price ,
27+
off.user_id as user_id ,
28+
off.created_at as created_at ,
29+
"option" as type
30+
from option_funding as off
31+
left join `option` on off.option_id = `option`.id
32+
union all
33+
select
34+
ff.project_id as project_id ,
35+
ff.price as price ,
36+
ff.user_id as user_id ,
37+
ff.created_at as created_at ,
38+
"free" as type
39+
from free_funding as ff
40+
) as t1
41+
left join project on t1.project_id = project.id
42+
left join user on t1.user_id = user.id
43+
limit :limit
44+
offset :offset
45+
;
46+
""", nativeQuery = true)
47+
List<FundingDataDao> selectAllFunding(@Param("limit") Long limit, @Param("offset") Long offset);
48+
49+
}

src/main/java/NextLevel/demo/admin/project/AdminProjectController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,16 @@ public ResponseEntity removeProject(@PathVariable("projectId") Long projectId) {
6666
projectDeleteService.deleteProject(projectId, JWTUtil.getUserIdFromSecurityContext(), null);
6767
return ResponseEntity.ok().body(new SuccessResponse("success", null));
6868
}
69+
70+
@GetMapping("/funding")
71+
public ResponseEntity selectAllFunding(
72+
@RequestParam(value = "page", required = false) Long page,
73+
@RequestParam(value = "pageCount", required = false) Long pageCount
74+
) {
75+
if(page == null)
76+
page = 0L;
77+
if(pageCount == null)
78+
pageCount = 10L;
79+
return ResponseEntity.ok().body(new SuccessResponse("success", adminProjectService.selectAllFunding(page, pageCount)));
80+
}
6981
}

src/main/java/NextLevel/demo/admin/project/AdminProjectService.java

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

3+
import NextLevel.demo.admin.AdminRepository;
34
import NextLevel.demo.funding.repository.FundingDslRepository;
45
import NextLevel.demo.project.ProjectStatus;
56
import NextLevel.demo.project.project.dto.response.ProjectListWithFundingDto;
@@ -24,6 +25,7 @@ public class AdminProjectService {
2425
private final ProjectStatusService projectStatusService;
2526
private final SelectProjectListDslRepository selectProjectListDslRepository;
2627
private final FundingDslRepository fundingDslRepository;
28+
private final AdminRepository adminRepository;
2729

2830
@Transactional
2931
public ProjectListWithFundingDto getAllProjectListWithFundingData(Long page, Long pageCount) {
@@ -43,12 +45,15 @@ public void updateProjectStatus(Long projectId, ProjectStatus status) {
4345
projectStatusService.updateProjectStatus(projectId, status, "by admin");
4446
}
4547

46-
public void updateProject() {
47-
48-
}
49-
5048
public void removeProject(Long projectId, Long userId) {
5149
projectDeleteService.deleteProject(projectId, userId,null);
5250
}
5351

52+
public List<ResponseFundingDataDto> selectAllFunding(Long page, Long pageCount) {
53+
Long limit = (page + 1) * pageCount - 1;
54+
Long offset = page * pageCount;
55+
List<FundingDataDao> fundingDaoList = adminRepository.selectAllFunding(limit, offset);
56+
return fundingDaoList.stream().map(ResponseFundingDataDto::of).toList();
57+
}
58+
5459
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package NextLevel.demo.admin.project;
2+
3+
import java.time.LocalDate;
4+
5+
public interface FundingDataDao {
6+
7+
String getProjectTitle();
8+
String getUserNickName();
9+
Long getPrice();
10+
String getType();
11+
LocalDate getCreatedAt();
12+
13+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package NextLevel.demo.admin.project;
2+
3+
import java.time.LocalDate;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
import lombok.Setter;
7+
8+
@NoArgsConstructor
9+
@Getter
10+
@Setter
11+
public class ResponseFundingDataDto {
12+
13+
private String projectTitle;
14+
private String userNickName;
15+
private Long price;
16+
private String type;
17+
LocalDate createdAt;
18+
19+
public static ResponseFundingDataDto of(FundingDataDao fundingDataDao) {
20+
ResponseFundingDataDto dto = new ResponseFundingDataDto();
21+
dto.projectTitle = fundingDataDao.getProjectTitle();
22+
dto.userNickName = fundingDataDao.getUserNickName();
23+
dto.price = fundingDataDao.getPrice();
24+
dto.type = fundingDataDao.getType();
25+
dto.createdAt = fundingDataDao.getCreatedAt();
26+
return dto;
27+
}
28+
29+
}

0 commit comments

Comments
 (0)