Skip to content

Commit f50d7af

Browse files
authored
Merge pull request #332 from MT-TEAM-Org/epic/adminMeberResearch
Epic/admin meber research
2 parents 46432f6 + a6966df commit f50d7af

25 files changed

+1253
-28
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,12 @@ dependencies {
112112
implementation 'org.springframework.boot:spring-boot-starter-actuator'
113113

114114

115+
115116
//query dsl에서는 union연산같은걸 지원하지않아서 넣었습니다.
116117
implementation("com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.15")
117118
implementation("com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.15")
118119
implementation("com.blazebit:blaze-persistence-core-impl-jakarta:1.6.15")
120+
119121
}
120122

121123
test {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.myteam.server.admin.dto;
2+
3+
import com.blazebit.persistence.CTE;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.Id;
6+
import lombok.Getter;
7+
8+
import java.util.UUID;
9+
10+
@Getter
11+
@Entity
12+
@CTE
13+
public class BoardCountCte {
14+
@Id
15+
private UUID publicId;
16+
private Long count;
17+
private Integer recommendCount;
18+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.myteam.server.admin.dto;
2+
3+
4+
import com.blazebit.persistence.CTE;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.Id;
7+
import lombok.Getter;
8+
9+
import java.util.UUID;
10+
11+
@Entity
12+
@Getter
13+
@CTE
14+
public class CommentCountCte {
15+
@Id
16+
private UUID publicID;
17+
private Long count;
18+
private Integer recommendCount;
19+
}

src/main/java/org/myteam/server/admin/dto/MemberReportCte.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import lombok.Getter;
1010
import org.myteam.server.report.domain.ReportType;
1111

12+
1213
@Entity
1314
@Getter
1415
@CTE
@@ -18,5 +19,5 @@ public class MemberReportCte {
1819
private Long reportedId;
1920
@Enumerated(EnumType.STRING)
2021
private ReportType reportType;
21-
22+
private Long reportCount;
2223
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.myteam.server.admin.dto;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import jakarta.validation.constraints.NotNull;
5+
import jakarta.validation.constraints.Size;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import org.myteam.server.global.util.date.DateFormatUtil;
10+
import org.myteam.server.member.domain.GenderType;
11+
import org.myteam.server.member.domain.MemberStatus;
12+
import org.myteam.server.member.domain.MemberType;
13+
14+
import java.time.LocalDate;
15+
import java.time.LocalDateTime;
16+
import java.util.UUID;
17+
18+
19+
public record MemberSearchRequestDto() {
20+
21+
@Getter
22+
@NoArgsConstructor
23+
@Schema(name = "RequestMemberSearch", description = "조건에 따른 회원들의 정보를 가져올떄 사용합니다")
24+
public static class RequestMemberSearch {
25+
private String nickName;
26+
private String email;
27+
@Size(max = 11)
28+
private String tel;
29+
private GenderType genderType;
30+
@Schema(description = "회원의 가입경로 구글,디스코드 등등을 말합니다.")
31+
private MemberType memberType;
32+
private MemberStatus status;
33+
@Schema(description = "회원의 생년월일에 해당됩니다.")
34+
@Size(max = 6, min = 6)
35+
private String birthDate;
36+
private String signInStart;
37+
private String signInEnd;
38+
@NotNull
39+
private int offset;
40+
41+
@Builder
42+
public RequestMemberSearch(String nickName, String email, String tel
43+
, GenderType genderType, MemberType memberType, String birthDate,
44+
String signInStart, String signInEnd, int offset) {
45+
this.nickName = nickName;
46+
this.email = email;
47+
this.tel = tel;
48+
this.genderType = genderType;
49+
this.memberType = memberType;
50+
this.birthDate = birthDate;
51+
this.signInStart = signInStart;
52+
this.signInEnd = signInEnd;
53+
this.offset = offset;
54+
}
55+
56+
57+
public int getOffset() {
58+
return this.offset - 1;
59+
}
60+
61+
public LocalDateTime provideStartTime() {
62+
if (signInStart == null) {
63+
return null;
64+
}
65+
LocalDate localDate = LocalDate.parse(signInStart, DateFormatUtil.formatByDot);
66+
return localDate.atStartOfDay();
67+
}
68+
69+
public LocalDateTime provideEndTime() {
70+
if (signInEnd == null) {
71+
return null;
72+
}
73+
LocalDate localDate = LocalDate.parse(signInEnd, DateFormatUtil.formatByDot);
74+
return localDate.atStartOfDay();
75+
}
76+
77+
78+
}
79+
80+
@Getter
81+
@NoArgsConstructor
82+
@Schema(name = "RequestMemberDetail", description = "회원의 상세정보를 요구시에 사용합니다 혹은" +
83+
"회원을 대상으로한 신고 목록을 조회시에 사용하면 됩니다.")
84+
public static class RequestMemberDetail {
85+
@NotNull
86+
private UUID publicId;
87+
88+
@Schema(description = "이 객체는 회원 한명에 대한 데이터와 회원에 대해 발생한 신고에대해서" +
89+
"쓰이기에 offset을 넣주었고 회원 한명에대한 데이터를 볼때에는 offset에 아무값이나 넣어줘도" +
90+
"알아서 걸러줍니다.")
91+
@NotNull
92+
private int offset;
93+
94+
@Builder
95+
public RequestMemberDetail(UUID publicId, int offset) {
96+
this.publicId = publicId;
97+
this.offset = offset;
98+
99+
}
100+
101+
public int getOffset() {
102+
return this.offset - 1;
103+
}
104+
}
105+
106+
107+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package org.myteam.server.admin.dto;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.util.List;
9+
10+
public record MemberSearchResponseDto() {
11+
@Getter
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
public static class ResponseMemberSearch {
15+
private String status;
16+
private String nickName;
17+
private Long boardCount;
18+
private Long commentCount;
19+
private Long reportCount;
20+
private Integer recommendCount;
21+
private String genderType;
22+
private String memberType;
23+
private String email;
24+
private String tel;
25+
private String createDate;
26+
27+
public void updateCreateDate(String date) {
28+
this.createDate = date;
29+
}
30+
}
31+
32+
@Getter
33+
@AllArgsConstructor
34+
@Schema(description = "관리자들이 해당회원에 대해서 작성한 메모의 응답형태입니다.")
35+
public static class AdminMemoResponse {
36+
private String writerName;
37+
private String writeDate;
38+
private String content;
39+
40+
public void updateWriteDate(String date) {
41+
this.writeDate = date;
42+
}
43+
}
44+
45+
@Getter
46+
public static class ResponseReportList {
47+
private Long contentId;
48+
private String reportedDate;
49+
private Long reportedCount;
50+
private String reportType;
51+
private String content;
52+
53+
public ResponseReportList(Long contentId, String reportedDate, Long reportedCount,
54+
String reportType, String content) {
55+
this.contentId = contentId;
56+
this.reportedDate = reportedDate;
57+
this.reportedCount = reportedCount;
58+
this.reportType = reportType;
59+
this.content = content;
60+
}
61+
62+
public void updateReportDate(String date) {
63+
this.reportedDate = date;
64+
}
65+
}
66+
67+
@Getter
68+
@NoArgsConstructor
69+
public static class ResponseMemberDetail {
70+
private String nickName;
71+
private String email;
72+
private String tel;
73+
private String genderType;
74+
private String memberType;
75+
private int birthYear;
76+
private int birthMonth;
77+
private int birthDay;
78+
private String createDate;
79+
@Schema(description = "최근 접속 일자")
80+
private String accessTime;
81+
@Schema(description = "최근 접속 ip")
82+
private String ip;
83+
private int countVisit;
84+
private Integer recommendCount;
85+
private Long countImprovement;
86+
private Long countBoard;
87+
private Long countComment;
88+
private Long reportedCount;
89+
private Long reportCount;
90+
private String status;
91+
@Schema(description = "관리자 들이 해당 회원에 대해서 작성한 메모입니다. 작성일 기준으로 오름차순입니다.")
92+
private List<AdminMemoResponse> adminMemoResponses;
93+
94+
public ResponseMemberDetail(String nickName, String email, String tel, String genderType, String memberType, int birthYear, int birthMonth, int birthDay, String createDate, String accessTime, String ip, int countVisit,
95+
Integer recommendCount, Long countImprovement,
96+
Long countBoard, Long countComment, Long reportedCount,
97+
Long reportCount, String status) {
98+
this.nickName = nickName;
99+
this.email = email;
100+
this.tel = tel;
101+
this.genderType = genderType;
102+
this.memberType = memberType;
103+
this.birthYear = birthYear;
104+
this.birthMonth = birthMonth;
105+
this.birthDay = birthDay;
106+
this.createDate = createDate;
107+
this.accessTime = accessTime;
108+
this.ip = ip;
109+
this.countVisit = countVisit;
110+
this.recommendCount = recommendCount;
111+
this.countImprovement = countImprovement;
112+
this.countBoard = countBoard;
113+
this.countComment = countComment;
114+
this.reportedCount = reportedCount;
115+
this.reportCount = reportCount;
116+
this.status = status;
117+
}
118+
119+
public void updateAdminMemoResponse(List<AdminMemoResponse> adminMemoResponses) {
120+
this.adminMemoResponses = adminMemoResponses;
121+
}
122+
123+
public void updateAccessDate(String date) {
124+
this.accessTime = date;
125+
}
126+
127+
public void updateCreateDate(String date) {
128+
this.createDate = date;
129+
}
130+
}
131+
132+
133+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.myteam.server.admin.dto;
2+
3+
import com.blazebit.persistence.CTE;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.Id;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.util.UUID;
10+
11+
@Entity
12+
@Getter
13+
@CTE
14+
@NoArgsConstructor
15+
public class ReportCountCte {
16+
@Id
17+
private UUID publicId;
18+
private Long count;
19+
}

src/main/java/org/myteam/server/admin/entity/AdminChangeLog.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.myteam.server.admin.entity;
22

3+
34
import jakarta.persistence.*;
45
import lombok.Builder;
56
import lombok.Getter;

src/main/java/org/myteam/server/admin/entity/AdminMemo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.myteam.server.admin.entity;
22

3+
34
import jakarta.persistence.*;
45
import lombok.Builder;
56
import lombok.Getter;

src/main/java/org/myteam/server/admin/repository/AdminChangeLogRepo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@
44
import org.springframework.data.jpa.repository.JpaRepository;
55

66

7-
87
public interface AdminChangeLogRepo extends JpaRepository<AdminChangeLog, Long> {
98
}

0 commit comments

Comments
 (0)