Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,12 @@ dependencies {
implementation("com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.15")
implementation("com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.15")
implementation("com.blazebit:blaze-persistence-core-impl-jakarta:1.6.15")


//elastic search 지원용
implementation "org.springframework.data:spring-data-elasticsearch:5.5.3"
implementation 'co.elastic.clients:elasticsearch-java:8.18.5'

}

test {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package org.myteam.server.admin.document;


import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.myteam.server.admin.utill.enums.AdminControlType;
import org.myteam.server.admin.utill.enums.StaticDataType;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.UUID;

@Getter
@NoArgsConstructor
@Setting(replicas = 0)
@Document(indexName = "contentdocument")
public class ContentDocument {
@Id
private String id;

@Field(type=FieldType.Keyword,index = false)
private String email;

@Field(type=FieldType.Text)
private String nickName;

@Field(type=FieldType.Keyword)
private StaticDataType staticDataType;

@Field(type=FieldType.Keyword)
private AdminControlType adminControlType;

@Field(type=FieldType.Boolean)
private Boolean isReported;

@Field(type=FieldType.Long,index = false)
private Long contentId;

@Field(type = FieldType.Text)
private String title;

@Field(type = FieldType.Text)
private String content;

@Field(type=FieldType.Date,format= DateFormat.date_hour_minute_second,index = false)
private LocalDateTime createDate;


@Builder
public ContentDocument(String id,String email, String nickName, StaticDataType staticDataType, AdminControlType adminControlType,
Boolean isReported, Long contentId, String title, String content, LocalDateTime createDate) {
this.id=id;
this.email = email;
this.nickName = nickName;
this.staticDataType = staticDataType;
this.adminControlType = adminControlType;
this.isReported=isReported;
this.contentId = contentId;
this.title = title;
this.content = content;
this.createDate = createDate;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.myteam.server.admin.document;

import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.myteam.server.improvement.domain.ImportantStatus;
import org.myteam.server.improvement.domain.ImprovementCount;
import org.myteam.server.improvement.domain.ImprovementStatus;
import org.myteam.server.member.entity.Member;
import org.springframework.data.elasticsearch.annotations.*;

import java.time.LocalDateTime;
import java.util.UUID;

import static org.myteam.server.improvement.domain.ImprovementStatus.PENDING;

@Getter
@NoArgsConstructor
@Setting(replicas = 0)
@Document(indexName = "improvedocument")
public class ImprovementDocument {


@Id
@Field(type = FieldType.Long,index = false)
public Long id;

@Field(type = FieldType.Keyword,index = false)
private UUID memberId;

@Field(type = FieldType.Text)
private String title;

@Field(type = FieldType.Text)
private String content;

@Field(type = FieldType.Text)
private String nickName;

@Field(type = FieldType.Keyword)
private ImprovementStatus improvementStatus;

@Field(type = FieldType.Keyword)
private ImportantStatus importantStatus;

@Field(type=FieldType.Date,format= DateFormat.date_hour_minute_second)
private LocalDateTime createDate;


@Builder
public ImprovementDocument(Long id, UUID memberId, String title, String content, String nickName,
ImprovementStatus improvementStatus, ImportantStatus importantStatus,
LocalDateTime createDate) {
this.id = id;
this.memberId = memberId;
this.title = title;
this.content = content;
this.nickName = nickName;
this.improvementStatus = improvementStatus;
this.importantStatus = importantStatus;
this.createDate = createDate;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.myteam.server.admin.document;

import com.esotericsoftware.kryo.serializers.FieldSerializer;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.myteam.server.inquiry.domain.InquiryCount;
import org.myteam.server.member.entity.Member;
import org.springframework.data.elasticsearch.annotations.*;

import java.time.LocalDateTime;
import java.util.UUID;

@Getter
@NoArgsConstructor
@Setting(replicas = 0)
@Document(indexName = "inquirydocument")
public class InquiryDocument {

@Id
@Field(type = FieldType.Long,index = false)
private Long id;

@Field(type= FieldType.Text)
private String content;

@Field(type=FieldType.Text)
private String nickName;

@Field(type=FieldType.Date,format= DateFormat.date_hour_minute_second)
private LocalDateTime createDate;

@Field(type=FieldType.Text)
private String email;

@Field(type=FieldType.Boolean)
private Boolean isAdminAnswered;

@Field(type=FieldType.Boolean)
private Boolean isMember;

@Builder
public InquiryDocument(Long id, String content, String nickName,
LocalDateTime createDate, String email, Boolean isAdminAnswered, Boolean isMember) {
this.id = id;
this.content = content;
this.nickName = nickName;
this.createDate = createDate;
this.email = email;
this.isAdminAnswered = isAdminAnswered;
this.isMember = isMember;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,16 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.type.descriptor.DateTimeUtils;
import org.myteam.server.admin.utill.enums.AdminControlType;
import org.myteam.server.admin.utill.enums.StaticDataType;
import org.myteam.server.board.domain.BoardSearchType;
import org.myteam.server.global.util.date.DateFormatUtil;
import org.springframework.data.elasticsearch.annotations.DateFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public record ContentRequestDto() {
@Getter
Expand Down Expand Up @@ -56,6 +59,7 @@ public LocalDateTime provideStartTime() {
if (this.startTime == null) {
return null;
}

LocalDate localDate = LocalDate.parse(startTime, DateFormatUtil.formatByDot);
return localDate.atStartOfDay();
}
Expand All @@ -64,6 +68,7 @@ public LocalDateTime provideEndTime() {
if (this.endTime == null) {
return null;
}

LocalDate localDate = LocalDate.parse(endTime, DateFormatUtil.formatByDot);
return localDate.atStartOfDay();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public final static class RequestImprovementList {
private String title;
private String content;
private String nickName;
private String email;
@Schema(example = "2025.06.06")
private String startTime;
@Schema(example = "2025.06.06")
Expand All @@ -39,15 +38,14 @@ public final static class RequestImprovementList {
@Builder
public RequestImprovementList(ImprovementStatus improvementStatus,
String title, String content, String nickName,
String startTime, String endTime, String email, int offset
String startTime, String endTime,int offset
, ImportantStatus importantStatus) {
this.improvementStatus = improvementStatus;
this.title = title;
this.content = content;
this.nickName = nickName;
this.startTime = startTime;
this.endTime = endTime;
this.email = email;
this.offset = offset;
this.importantStatus = importantStatus;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ public ResponseContentSearch(Long contentId, String nickName, String staticDataT
this.reportCount = reportCount;
this.reported = reported;
}

public void updateCountReported(Long count, String reported) {
this.reported = reported;
this.reportCount = count;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,42 @@
package org.myteam.server.admin.repository;


import co.elastic.clients.elasticsearch._types.SortOptions;
import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.query_dsl.*;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.myteam.server.admin.document.ImprovementDocument;
import org.myteam.server.admin.document.InquiryDocument;
import org.myteam.server.admin.dto.request.InquiryRequestDto;
import org.myteam.server.admin.dto.response.InquiryResponseDto;
import org.myteam.server.admin.utill.CreateAdminMemo;
import org.myteam.server.admin.utill.enums.DateFormatEnum;
import org.myteam.server.admin.utill.enums.StaticDataType;
import org.myteam.server.global.util.date.DateFormatUtil;
import org.myteam.server.improvement.domain.ImportantStatus;
import org.myteam.server.improvement.domain.ImprovementStatus;
import org.myteam.server.improvement.dto.response.ImprovementResponse;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.client.elc.NativeQuery;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;

import static org.myteam.server.admin.dto.request.AdminMemoRequestDto.AdminMemoImprovementRequest;
import static org.myteam.server.admin.dto.response.ImprovementResponseDto.*;
Expand Down Expand Up @@ -79,7 +94,6 @@ public Page<ResponseImprovement> getImprovementList(RequestImprovementList reque
, contentSearchCond(requestImprovementList.getContent()),
titleSearchCond(requestImprovementList.getTitle()),
processStatusCond(requestImprovementList.getImprovementStatus()),
searchByEmail(requestImprovementList.getEmail()),
searchByImportantStatus(requestImprovementList.getImportantStatus()))
.orderBy(improvement.createDate.desc())
.offset(pageable.getOffset())
Expand All @@ -97,12 +111,14 @@ public Page<ResponseImprovement> getImprovementList(RequestImprovementList reque
, contentSearchCond(requestImprovementList.getContent()),
titleSearchCond(requestImprovementList.getTitle()),
processStatusCond(requestImprovementList.getImprovementStatus()),
searchByEmail(requestImprovementList.getEmail()),
searchByImportantStatus(requestImprovementList.getImportantStatus()))
.fetchOne()).orElse(0L);
return new PageImpl<>(responseImprovementList, pageable, count);
}




public ResponseImprovementDetail getImprovementDetail(Long contentId) {
ResponseImprovementDetail responseImprovementDetail = queryFactory
.select(
Expand Down Expand Up @@ -269,6 +285,8 @@ private Predicate searchByTimeLine(LocalDateTime startTime, LocalDateTime endTim
return null;
}
return improvement.createDate.between(startTime, endTime);

}



}
Loading
Loading