Skip to content

Commit cd68797

Browse files
authored
Merge pull request #337 from MT-TEAM-Org/epic/advanceDashBoard
epic:advvanceDashBoard
2 parents 86bf53b + 411b0b2 commit cd68797

File tree

13 files changed

+342
-86
lines changed

13 files changed

+342
-86
lines changed

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

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@
2121
import org.myteam.server.report.domain.ReportType;
2222
import org.springframework.stereotype.Repository;
2323
import org.springframework.transaction.annotation.Transactional;
24-
2524
import java.time.LocalDateTime;
2625
import java.util.HashMap;
2726
import java.util.List;
2827
import java.util.Map;
2928
import java.util.stream.Collectors;
3029
import java.util.stream.Stream;
31-
3230
import static org.myteam.server.admin.dto.AdminBashBoardRequestDto.RequestLatestData;
3331
import static org.myteam.server.admin.dto.AdminBashBoardRequestDto.RequestStatic;
3432
import static org.myteam.server.admin.dto.AdminDashBoardResponseDto.ResponseLatestData;
@@ -173,27 +171,24 @@ private ResponseStatic getStaticDataByRequest(DateType dateType, StaticDataType
173171

174172
if (staticDataType.name().equals(StaticDataType.UserWarned.name())) {
175173
Long current_count = queryFactory
176-
.select(adminChangeLog.count())
174+
.select(adminChangeLog.memberId.countDistinct())
177175
.from(adminChangeLog)
178176
.where(StaticUtil.betweenStaticTime(static_end_time, static_start_time, adminChangeLog),
179-
(adminChangeLog.memberStatus.eq(MemberStatus.PENDING)))
177+
(adminChangeLog.memberStatus.eq(MemberStatus.WARNED)))
180178
.fetch().get(0);
181179

182180
Long past_count = queryFactory
183-
.select(adminChangeLog.count())
181+
.select(adminChangeLog.memberId.countDistinct())
184182
.from(adminChangeLog)
185183
.where(StaticUtil.betweenStaticTime(static_end_time2, static_start_time2, adminChangeLog),
186-
(adminChangeLog.memberStatus.eq(MemberStatus.PENDING)))
184+
(adminChangeLog.memberStatus.eq(MemberStatus.WARNED)))
187185
.fetch().get(0);
188186

189-
Long tot_count = queryFactory.select(adminChangeLog.count())
187+
Long tot_count = queryFactory.select(adminChangeLog.memberId.countDistinct())
190188
.from(adminChangeLog)
191-
.where(adminChangeLog.memberStatus.eq(MemberStatus.PENDING))
189+
.where(adminChangeLog.memberStatus.eq(MemberStatus.WARNED))
192190
.fetch().get(0);
193-
194-
195191
int percent = StaticUtil.makeStaticPercent(current_count, past_count);
196-
197192
return ResponseStatic
198193
.builder()
199194
.currentCount(current_count)
@@ -204,20 +199,20 @@ private ResponseStatic getStaticDataByRequest(DateType dateType, StaticDataType
204199
}
205200
if (staticDataType.name().equals(StaticDataType.UserBanned.name())) {
206201
Long current_count = queryFactory
207-
.select(adminChangeLog.count())
202+
.select(adminChangeLog.memberId.countDistinct())
208203
.from(adminChangeLog)
209204
.where(StaticUtil.betweenStaticTime(static_end_time, static_start_time, adminChangeLog),
210205
(adminChangeLog.memberStatus.eq(MemberStatus.INACTIVE)))
211206
.fetch().get(0);
212207

213208
Long past_count = queryFactory
214-
.select(adminChangeLog.count())
209+
.select(adminChangeLog.memberId.countDistinct())
215210
.from(adminChangeLog)
216211
.where(StaticUtil.betweenStaticTime(static_end_time2, static_start_time2, adminChangeLog),
217212
(adminChangeLog.memberStatus.eq(MemberStatus.INACTIVE)))
218213
.fetch().get(0);
219214

220-
Long tot_count = queryFactory.select(adminChangeLog.count())
215+
Long tot_count = queryFactory.select(adminChangeLog.memberId.countDistinct())
221216
.from(adminChangeLog)
222217
.where(adminChangeLog.memberStatus.eq(MemberStatus.INACTIVE))
223218
.fetch().get(0);
@@ -235,22 +230,23 @@ private ResponseStatic getStaticDataByRequest(DateType dateType, StaticDataType
235230

236231
if (staticDataType.name().equals(StaticDataType.HideComment.name())) {
237232
Long current_count = queryFactory
238-
.select(adminChangeLog.count())
233+
.select(adminChangeLog.contentId.countDistinct())
239234
.from(adminChangeLog)
240235
.where(StaticUtil.betweenStaticTime(static_end_time, static_start_time, adminChangeLog),
241236
(adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN)),
242237
(adminChangeLog.staticDataType.eq(StaticDataType.COMMENT)))
243238
.fetch().get(0);
244239

245240
Long past_count = queryFactory
246-
.select(adminChangeLog.count())
241+
.select(adminChangeLog.contentId.countDistinct())
247242
.from(adminChangeLog)
248243
.where(StaticUtil.betweenStaticTime(static_end_time2, static_start_time2, adminChangeLog),
249244
(adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN))
250245
, (adminChangeLog.staticDataType.eq(StaticDataType.COMMENT)))
251246
.fetch().get(0);
252247

253-
Long tot_count = queryFactory.select(adminChangeLog.count())
248+
Long tot_count = queryFactory.select(adminChangeLog
249+
.contentId.countDistinct())
254250
.from(adminChangeLog)
255251
.where((adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN))
256252
.and(adminChangeLog.staticDataType.eq(StaticDataType.COMMENT)))
@@ -269,22 +265,22 @@ private ResponseStatic getStaticDataByRequest(DateType dateType, StaticDataType
269265

270266
if (staticDataType.name().equals(StaticDataType.HideBoard.name())) {
271267
Long current_count = queryFactory
272-
.select(adminChangeLog.count())
268+
.select(adminChangeLog.contentId.countDistinct())
273269
.from(adminChangeLog)
274270
.where(StaticUtil.betweenStaticTime(static_end_time, static_start_time, adminChangeLog),
275271
(adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN))
276272
, (adminChangeLog.staticDataType.eq(StaticDataType.BOARD)))
277273
.fetch().get(0);
278274

279275
Long past_count = queryFactory
280-
.select(adminChangeLog.count())
276+
.select(adminChangeLog.contentId.countDistinct())
281277
.from(adminChangeLog)
282278
.where(StaticUtil.betweenStaticTime(static_end_time2, static_start_time2, adminChangeLog),
283279
(adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN))
284280
, (adminChangeLog.staticDataType.eq(StaticDataType.BOARD)))
285281
.fetch().get(0);
286282

287-
Long tot_count = queryFactory.select(adminChangeLog.count())
283+
Long tot_count = queryFactory.select(adminChangeLog.contentId.countDistinct())
288284
.from(adminChangeLog)
289285
.where((adminChangeLog.adminControlType.eq(AdminControlType.HIDDEN))
290286
, (adminChangeLog.staticDataType.eq(StaticDataType.BOARD)))
@@ -300,6 +296,32 @@ private ResponseStatic getStaticDataByRequest(DateType dateType, StaticDataType
300296
.percent(percent)
301297
.build();
302298
}
299+
if(staticDataType.equals(StaticDataType.InquiryComplete)||staticDataType
300+
.equals(StaticDataType.InquiryPending)){
301+
if(staticDataType.equals(StaticDataType.InquiryComplete)){
302+
return CreateStaticQueryFactory
303+
.createInquiryStaticQuery(dateList,true,queryFactory);}
304+
305+
return CreateStaticQueryFactory
306+
.createInquiryStaticQuery(dateList,false,queryFactory);
307+
}
308+
if(staticDataType.equals(StaticDataType.InquiryMember)||staticDataType
309+
.equals(StaticDataType.InquiryNoMember)){
310+
if(staticDataType.equals(StaticDataType.InquiryMember)){
311+
return CreateStaticQueryFactory
312+
.createMemberInquiryStaticQuery(dateList,true,queryFactory);}
313+
314+
return CreateStaticQueryFactory
315+
.createMemberInquiryStaticQuery(dateList,false,queryFactory);
316+
}
317+
318+
if(staticDataType.equals(StaticDataType.ImprovementComplete)||staticDataType
319+
.equals(StaticDataType.ImprovementPending)||staticDataType
320+
.equals(StaticDataType.ImprovementReceived)){
321+
return CreateStaticQueryFactory
322+
.createImprovementStaticQuery(dateList,staticDataType,queryFactory);
323+
}
324+
303325

304326

305327
throw new PlayHiveException(ErrorCode.INVALID_PARAMETER, "없는 형식의 파라미터 입니다");
@@ -389,7 +411,6 @@ public List<ResponseLatestData> getLatestData(RequestLatestData requestLatestDat
389411

390412
if (requestLatestData.getStaticDataType().name().equals(StaticDataType.Inquiry.name())) {
391413

392-
393414
List<ResponseLatestData> responseLatestDataList = queryFactory.select(
394415
Projections.constructor(ResponseLatestData.class,
395416
Expressions.constant(""),

src/main/java/org/myteam/server/admin/utill/CreateStaticQueryFactory.java

Lines changed: 100 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@
22

33
import com.querydsl.core.Tuple;
44
import com.querydsl.core.types.EntityPath;
5+
import com.querydsl.core.types.Predicate;
56
import com.querydsl.core.types.dsl.EntityPathBase;
67
import com.querydsl.core.types.dsl.StringTemplate;
78
import com.querydsl.jpa.impl.JPAQueryFactory;
9+
import org.myteam.server.improvement.domain.ImprovementStatus;
10+
import org.myteam.server.improvement.domain.QImprovement;
811
import org.myteam.server.member.domain.MemberStatus;
912
import org.myteam.server.report.domain.ReportType;
1013

1114
import java.time.LocalDateTime;
1215
import java.util.HashMap;
1316
import java.util.List;
1417
import java.util.Map;
15-
1618
import static org.myteam.server.admin.dto.AdminDashBoardResponseDto.ResponseStatic;
17-
import static org.myteam.server.admin.entity.QAdminChangeLog.adminChangeLog;
19+
import static org.myteam.server.improvement.domain.QImprovement.*;
20+
import static org.myteam.server.inquiry.domain.QInquiry.inquiry;
21+
import static org.myteam.server.member.entity.QMember.member;
1822
import static org.myteam.server.report.domain.QReport.report;
1923

2024

@@ -68,35 +72,33 @@ public static ResponseStatic createStaticQuery(EntityPath<?> target,
6872

6973
}
7074

71-
public static ResponseStatic createStaticQuery(List<LocalDateTime> dateList
72-
, JPAQueryFactory queryFactory, MemberStatus memberStatus) {
75+
public static ResponseStatic createImprovementStaticQuery(List<LocalDateTime> dateList
76+
,StaticDataType staticDataType, JPAQueryFactory queryFactory){
7377

7478
LocalDateTime staticStartTime = dateList.get(0);
7579
LocalDateTime staticEndTime = dateList.get(1);
7680
LocalDateTime staticStartTimePast = dateList.get(2);
7781
LocalDateTime staticEndTimePast = dateList.get(3);
7882

79-
Long currentCount = queryFactory.select(adminChangeLog.count())
80-
.from(adminChangeLog)
81-
.where(StaticUtil.betweenStaticTime(staticEndTime, staticStartTime, adminChangeLog),
82-
adminChangeLog.memberStatus.eq(memberStatus))
83+
Long currentCount = queryFactory.select(improvement.count())
84+
.from(improvement)
85+
.where(StaticUtil.betweenStaticTime(staticEndTime, staticStartTime, improvement),
86+
improvementProcessCond(staticDataType))
8387
.fetch()
8488
.get(0);
85-
Long pastCount = queryFactory.select(report.count())
86-
.from(report)
87-
.where(StaticUtil.betweenStaticTime(staticEndTimePast, staticStartTimePast, adminChangeLog),
88-
adminChangeLog.memberStatus.eq(memberStatus))
89+
Long pastCount = queryFactory.select(improvement.count())
90+
.from(improvement)
91+
.where(StaticUtil.betweenStaticTime(staticEndTimePast, staticStartTimePast, improvement),
92+
improvementProcessCond(staticDataType))
8993
.fetch()
9094
.get(0);
9195

92-
Long totCount = queryFactory.select(adminChangeLog.count())
93-
.from(adminChangeLog)
94-
.where(adminChangeLog.memberStatus.eq(memberStatus))
96+
Long totCount = queryFactory.select(improvement.count())
97+
.from(improvement)
98+
.where(improvementProcessCond(staticDataType))
9599
.fetch()
96100
.get(0);
97-
98101
int percent = StaticUtil.makeStaticPercent(currentCount, pastCount);
99-
100102
return ResponseStatic.builder()
101103
.currentCount(currentCount)
102104
.pastCount(pastCount)
@@ -105,47 +107,80 @@ public static ResponseStatic createStaticQuery(List<LocalDateTime> dateList
105107
.build();
106108
}
107109

108-
public static ResponseStatic createStaticQuery(List<LocalDateTime> dateList, JPAQueryFactory queryFactory,
109-
AdminControlType adminControlType, StaticDataType staticDataType) {
110+
public static ResponseStatic createInquiryStaticQuery(List<LocalDateTime> dateList
111+
, Boolean isAnswered, JPAQueryFactory queryFactory){
110112

111113
LocalDateTime staticStartTime = dateList.get(0);
112114
LocalDateTime staticEndTime = dateList.get(1);
113115
LocalDateTime staticStartTimePast = dateList.get(2);
114116
LocalDateTime staticEndTimePast = dateList.get(3);
115117

116-
Long current_count = queryFactory
117-
.select(adminChangeLog.count())
118-
.from(adminChangeLog)
119-
.where(StaticUtil.betweenStaticTime(staticEndTime, staticStartTime, adminChangeLog),
120-
(adminChangeLog.adminControlType.eq(adminControlType)),
121-
(adminChangeLog.staticDataType.eq(staticDataType)))
122-
.fetch().get(0);
123-
124-
Long past_count = queryFactory
125-
.select(adminChangeLog.count())
126-
.from(adminChangeLog)
127-
.where(StaticUtil.betweenStaticTime(staticEndTimePast, staticStartTimePast, adminChangeLog),
128-
(adminChangeLog.adminControlType.eq(adminControlType))
129-
, (adminChangeLog.staticDataType.eq(staticDataType)))
130-
.fetch().get(0);
131-
132-
Long tot_count = queryFactory.select(adminChangeLog.count())
133-
.from(adminChangeLog)
134-
.where((adminChangeLog.adminControlType.eq(adminControlType))
135-
.and(adminChangeLog.staticDataType.eq(staticDataType)))
136-
.fetch().get(0);
137-
138-
int percent = StaticUtil.makeStaticPercent(current_count, past_count);
139-
140-
return ResponseStatic
141-
.builder()
142-
.currentCount(current_count)
143-
.pastCount(past_count)
144-
.totCount(tot_count)
118+
Long currentCount = queryFactory.select(inquiry.count())
119+
.from(inquiry)
120+
.where(StaticUtil.betweenStaticTime(staticEndTime, staticStartTime,inquiry),
121+
inquiry.isAdminAnswered.eq(isAnswered))
122+
.fetch()
123+
.get(0);
124+
Long pastCount = queryFactory.select(inquiry.count())
125+
.from(inquiry)
126+
.where(StaticUtil.betweenStaticTime(staticEndTimePast, staticStartTimePast,inquiry),
127+
inquiry.isAdminAnswered.eq(isAnswered))
128+
.fetch()
129+
.get(0);
130+
131+
Long totCount = queryFactory.select(inquiry.count())
132+
.from(inquiry)
133+
.where(inquiry.isAdminAnswered.eq(isAnswered))
134+
.fetch()
135+
.get(0);
136+
int percent = StaticUtil.makeStaticPercent(currentCount, pastCount);
137+
return ResponseStatic.builder()
138+
.currentCount(currentCount)
139+
.pastCount(pastCount)
140+
.totCount(totCount)
145141
.percent(percent)
146142
.build();
147143
}
148144

145+
public static ResponseStatic createMemberInquiryStaticQuery(List<LocalDateTime> dateList
146+
, Boolean isMember, JPAQueryFactory queryFactory){
147+
148+
LocalDateTime staticStartTime = dateList.get(0);
149+
LocalDateTime staticEndTime = dateList.get(1);
150+
LocalDateTime staticStartTimePast = dateList.get(2);
151+
LocalDateTime staticEndTimePast = dateList.get(3);
152+
153+
Long currentCount = queryFactory.select(inquiry.count())
154+
.from(inquiry)
155+
.join(member)
156+
.on(member.eq(inquiry.member))
157+
.where(StaticUtil.betweenStaticTime(staticEndTime, staticStartTime,inquiry),
158+
inquiryIsMember(isMember))
159+
.fetch()
160+
.get(0);
161+
Long pastCount =queryFactory.select(inquiry.count())
162+
.from(inquiry)
163+
.join(member)
164+
.on(member.eq(inquiry.member))
165+
.where(StaticUtil.betweenStaticTime(staticEndTimePast, staticStartTimePast,inquiry),
166+
inquiryIsMember(isMember))
167+
.fetch()
168+
.get(0);
169+
Long totCount = queryFactory.select(inquiry.count())
170+
.from(inquiry)
171+
.join(member)
172+
.on(member.eq(inquiry.member))
173+
.where(inquiryIsMember(isMember))
174+
.fetch()
175+
.get(0);
176+
int percent = StaticUtil.makeStaticPercent(currentCount, pastCount);
177+
return ResponseStatic.builder()
178+
.currentCount(currentCount)
179+
.pastCount(pastCount)
180+
.totCount(totCount)
181+
.percent(percent)
182+
.build();
183+
}
149184

150185
public static ResponseStatic createStaticQuery(DateType dateType, List<LocalDateTime> dateList
151186
, JPAQueryFactory queryFactory, ReportType reportType) {
@@ -196,5 +231,22 @@ public static ResponseStatic createStaticQuery(DateType dateType, List<LocalDate
196231
.build();
197232
}
198233

234+
private static Predicate inquiryIsMember(boolean isMember){
235+
if(isMember){
236+
return member.nickname.isNotNull();
237+
}
238+
return member.nickname.isNull();
239+
}
240+
241+
private static Predicate improvementProcessCond(StaticDataType staticDataType){
242+
if(staticDataType.equals(StaticDataType.ImprovementPending)){
243+
return improvement.improvementStatus.eq(ImprovementStatus.PENDING);
244+
}
245+
if(staticDataType.equals(StaticDataType.ImprovementReceived)){
246+
return improvement.improvementStatus.eq(ImprovementStatus.RECEIVED);
247+
}
248+
return improvement.improvementStatus.eq(ImprovementStatus.COMPLETED);
249+
}
250+
199251

200252
}

src/main/java/org/myteam/server/admin/utill/StaticDataType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ public enum StaticDataType {
77

88
Improvement, Inquiry, ImprovementInquiry,
99

10+
ImprovementPending,ImprovementComplete,ImprovementReceived,
11+
12+
InquiryPending,InquiryComplete,InquiryMember,InquiryNoMember,
13+
1014
UserAccess, UserSignIn, UserDeleted, UserWarned, UserBanned,
1115

1216
HideComment, HideBoard

src/main/java/org/myteam/server/global/security/filter/JwtAuthenticationFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ protected void successfulAuthentication(HttpServletRequest request, HttpServletR
129129
log.warn("INACTIVE 상태인 경우 로그인이 불가능합니다");
130130
sendErrorResponse(response, HttpStatus.FORBIDDEN, "INACTIVE 상태인 경우 로그인이 불가능합니다");
131131
return;
132-
} else if (!status.equals(ACTIVE.name())) {
132+
} else if (!status.equals(ACTIVE.name())&&!status.equals(WARNED.name())) {
133133
log.warn("알 수 없는 유저 상태 코드 : " + status);
134134
sendErrorResponse(response, HttpStatus.FORBIDDEN, "알 수 없는 유저 상태 코드 : " + status);
135135
return;

0 commit comments

Comments
 (0)