Skip to content
Merged

Dev #142

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
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import jakarta.transaction.Transactional;
import jakarta.validation.constraints.Null;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Date;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
Expand Down Expand Up @@ -39,7 +40,7 @@ public void createActivityBoard(ActivityRequestDto requestDto) throws IOExceptio
.writer(requestDto.getWriter())
.images(requestDto.getImages())
.uuid(requestDto.getUuid())
.createdAt(new Date())
.createdAt(java.time.LocalDateTime.now())
.type(requestDto.getType())
.build();

Expand Down Expand Up @@ -67,7 +68,7 @@ public void updateActivityBoard(Long id, ActivityRequestDto requestDto){
.title(requestDto.getTitle())
.content(requestDto.getContent())
.writer(requestDto.getWriter())
.createdAt(requestDto.getCreatedAt())
.createdAt(LocalDateTime.now())
.uuid(activity.getUuid())
.images(requestDto.getImages())
.type(requestDto.getType())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.archisemtle.semtlewebserverspring.dto.archive.ArchiveRequestDto;
import com.archisemtle.semtlewebserverspring.dto.archive.ArchiveResponseDto;
import com.archisemtle.semtlewebserverspring.infrastructure.archive.ArchiveRepository;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.UUID;
import lombok.AllArgsConstructor;
Expand All @@ -34,7 +35,7 @@ public void createArchiveBoard(ArchiveRequestDto requestDto) {
.title(requestDto.getTitle())
.content(requestDto.getContent())
.writer(requestDto.getWriter())
.createdAt(new Date())
.createdAt(LocalDateTime.now())
.uuid(requestDto.getUuid())
.imageUrl(requestDto.getImageUrl())
.fileUrl(requestDto.getFileUrl())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public abstract class BaseTimeEntity {
@Column(updatable = false)
private LocalDateTime createAt;

@CreatedDate
@LastModifiedDate
private LocalDateTime updateAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.archisemtle.semtlewebserverspring.common;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ public void addCorsMappings(CorsRegistry registry) {

}




Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.archisemtle.semtlewebserverspring.dto.activity.ActivityRequestDto;
import com.archisemtle.semtlewebserverspring.vo.activity.ActivityResponseVo;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
Expand All @@ -23,14 +24,13 @@ public class Activity {

@Column(nullable = false, unique = false)
private String title;
@Column(nullable = false, unique = false)
@Column(nullable = false, unique = false,columnDefinition = "Text")
private String content;
@Column(nullable = false, unique = false)
private String writer;
@Column(nullable = true, unique = false)
@Temporal(TemporalType.DATE)
private Date createdAt;
@Column(nullable = true, unique = false, columnDefinition = "uuid")
@Column(nullable = false, unique = false)
private LocalDateTime createdAt;
@Column(nullable = false, unique = false, columnDefinition = "uuid")
private UUID uuid;
@ElementCollection
@CollectionTable(name = "activity_image", joinColumns = @JoinColumn(name = "activity_id"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
package com.archisemtle.semtlewebserverspring.domain.archive;

import com.archisemtle.semtlewebserverspring.dto.archive.ArchiveRequestDto;
import com.archisemtle.semtlewebserverspring.dto.archive.ArchiveResponseDto;

import com.archisemtle.semtlewebserverspring.vo.archive.ArchiveResponseVo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import java.util.Date;
import jakarta.persistence.Lob;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity(name = "archive")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Archive {

@Id
Expand All @@ -27,31 +30,21 @@ public class Archive {

@Column(unique = false, nullable = false)
private String title;
@Column(unique = false, nullable = false)
private String writer;
@Column(nullable = false, unique = false,columnDefinition = "Text")
private String content;
private Date createdAt;
@Column(unique = false, nullable = false)
private LocalDateTime createdAt;

@Column(unique = false, nullable = false)
private UUID uuid;

@Column(unique = false, nullable = true)
private List<String> imageUrl;
@Column(unique = false, nullable = true)
private List<String> fileUrl;

@Builder
public Archive(Long id, String title, String writer, String content, Date createdAt, UUID uuid,
List<String> imageUrl, List<String> fileUrl)
{
this.id = id;
this.title = title;
this.writer = writer;
this.content = content;
this.createdAt = createdAt;
this.uuid = uuid;
this.imageUrl = imageUrl;
this.fileUrl = fileUrl;
}

public static ArchiveResponseVo entityToVo(Archive archive){
return ArchiveResponseVo.builder()
.writer(archive.getWriter())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.archisemtle.semtlewebserverspring.domain.activity.Activity;
import com.archisemtle.semtlewebserverspring.vo.activity.ActivityResponseVo;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -16,7 +17,7 @@ public class ActivityResponseDto {
private String title;
private String content;
private String writer;
private Date createdAt;
private LocalDateTime createdAt;
private List<String> images;
private String type;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import com.archisemtle.semtlewebserverspring.domain.archive.Archive;
import com.archisemtle.semtlewebserverspring.vo.archive.ArchiveResponseVo;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.cglib.core.Local;

@Getter
@NoArgsConstructor
Expand All @@ -16,7 +18,7 @@ public class ArchiveResponseDto {
private String writer;
private String content;
private String title;
private Date createdAt;
private LocalDateTime createdAt;
private List<String> imageUrl;
private List<String> fileUrl;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
import com.querydsl.core.Tuple;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.JPQLQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
Expand All @@ -41,18 +41,16 @@ public Page<ProjectBoardListDto> searchPageComplex(ProjectBoardSearchCondition c
BooleanExpression projectTypeCondition = projectTypeCategoryNameEq(
condition.getProjectTypeCategoryName());

List<Long> matchingProjectIds = queryFactory
.select(relationFieldProjectPostMiddle.projectBoard.id)
.from(relationFieldProjectPostMiddle)
.leftJoin(relationFieldCategory)
.on(relationFieldProjectPostMiddle.relationFieldCategory.id.eq(
relationFieldCategory.id))
.where(relationFieldCategoryNameEq(condition.getRelationFieldCategoryName()))
.fetch();

BooleanExpression relationFieldCondition = null;
if (hasText(condition.getRelationFieldCategoryName())) {
relationFieldCondition = projectBoard.id.in(matchingProjectIds); // ✅ 조회된 ID 목록을 조건으로 사용
relationFieldCondition = projectBoard.id.in(JPAExpressions
.select(relationFieldProjectPostMiddle.projectBoard.id)
.from(relationFieldProjectPostMiddle)
.leftJoin(relationFieldCategory)
.on(relationFieldProjectPostMiddle.relationFieldCategory.id.eq(
relationFieldCategory.id))
.where(relationFieldCategoryNameEq(
condition.getRelationFieldCategoryName()))); // ✅ 조회된 ID 목록을 조건으로 사용
}

BooleanExpression filterCondition =
Expand Down Expand Up @@ -88,18 +86,22 @@ public Page<ProjectBoardListDto> searchPageComplex(ProjectBoardSearchCondition c
.when(projectBoard.projectStatus.eq(ProjectStatus.IN_PROGRESS)).then(2)
.when(projectBoard.projectStatus.eq(ProjectStatus.CLOSED)).then(3)
.otherwise(4)
.asc()
)
.orderBy(projectBoardImage.id.asc())
.asc(),
projectBoard.updateAt.desc().nullsFirst(),
projectBoardImage.id.asc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();

log.info("Query Result (Tuple List): {}", result); // ✅ 쿼리 결과 로그 출력
// log.info("Query Result (Tuple List): {}", result); // ✅ 쿼리 결과 로그 출력

// DTO 변환 (List<String>으로 relationFieldCategoryName 합치기)
Map<Long, List<Tuple>> groupedByProjectId = result.stream()
.collect(Collectors.groupingBy(tuple -> tuple.get(projectBoard.id)));
.collect(Collectors.groupingBy(tuple -> tuple.get(projectBoard.id),
LinkedHashMap::new,
Collectors.toList()));

// log.info("Grouped Result: {}", groupedByProjectId); // ✅ 그룹화된 결과 로그 출력

List<ProjectBoardListDto> dtoList = groupedByProjectId.values().stream()
.filter(grouped -> { // ✅ relation_type 필터링 추가 (게시물 유지 여부 결정)
Expand Down Expand Up @@ -155,7 +157,7 @@ public Page<ProjectBoardListDto> searchPageComplex(ProjectBoardSearchCondition c

Page<ProjectBoardListDto> pageResult = PageableExecutionUtils.getPage(dtoList, pageable,
countQuery::fetchOne);
log.info("Final Page Result: {}", pageResult); // ✅ 최종 반환값 로그 출력
// log.info("Final Page Result: {}", pageResult); // ✅ 최종 반환값 로그 출력

return pageResult;
}
Expand Down Expand Up @@ -188,15 +190,18 @@ public Page<ProjectBoardListDto> myProjectBoardPage(UUID uuid, Pageable pageable
.when(projectBoard.projectStatus.eq(ProjectStatus.IN_PROGRESS)).then(2)
.when(projectBoard.projectStatus.eq(ProjectStatus.CLOSED)).then(3)
.otherwise(4)
.asc()
.asc(),
projectBoard.updateAt.desc().nullsFirst()
)
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();

// DTO 변환 (List<String>으로 relationFieldCategoryName 합치기)
Map<Long, List<Tuple>> groupedByProjectId = result.stream()
.collect(Collectors.groupingBy(tuple -> tuple.get(projectBoard.id)));
.collect(Collectors.groupingBy(tuple -> tuple.get(projectBoard.id),
LinkedHashMap::new,
Collectors.toList()));

List<ProjectBoardListDto> dtoList = groupedByProjectId.values().stream()
.map(grouped -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.archisemtle.semtlewebserverspring.vo.activity;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import lombok.Builder;
Expand All @@ -14,7 +15,7 @@ public class ActivityResponseVo {
private String title;
private String content;
private String writer;
private Date createdAt;
private LocalDateTime createdAt;
private List<String> images;
private String type;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.archisemtle.semtlewebserverspring.vo.archive;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import lombok.Builder;
Expand All @@ -13,7 +14,7 @@ public class ArchiveResponseVo {
private String writer;
private String content;
private String title;
private Date createdAt;
private LocalDateTime createdAt;
private List<String> imageUrl;
private List<String> fileUrl;

Expand Down