diff --git a/src/main/java/com/avab/avab/converter/FlowConverter.java b/src/main/java/com/avab/avab/converter/FlowConverter.java index 3e85dc1f..085ed2f8 100644 --- a/src/main/java/com/avab/avab/converter/FlowConverter.java +++ b/src/main/java/com/avab/avab/converter/FlowConverter.java @@ -263,7 +263,7 @@ public static FlowScrapDTO toFlowScrapDTO(Boolean isScraped) { return FlowScrapDTO.builder().isScraped(isScraped).build(); } - public static FlowScrap toFlowFavorite(Flow flow, User user) { + public static FlowScrap toFlowScrap(Flow flow, User user) { return FlowScrap.builder().flow(flow).user(user).build(); } diff --git a/src/main/java/com/avab/avab/converter/RecreationConverter.java b/src/main/java/com/avab/avab/converter/RecreationConverter.java index 0c84c256..43ff4e05 100644 --- a/src/main/java/com/avab/avab/converter/RecreationConverter.java +++ b/src/main/java/com/avab/avab/converter/RecreationConverter.java @@ -154,7 +154,7 @@ private static RecreationPreviewDTO toRecreationPreviewDTO(Recreation recreation public static WayDTO toWayDTO(RecreationWay recreationWay) { return WayDTO.builder() - .contents(recreationWay.getContents()) + .content(recreationWay.getContent()) .imageUrl(recreationWay.getImageUrl()) .seq(recreationWay.getSeq()) .build(); @@ -244,7 +244,7 @@ public static RecreationReview toRecreationReview( return RecreationReview.builder() .recreation(recreation) .author(user) - .contents(request.getContents()) + .content(request.getContent()) .stars(request.getStars()) .build(); } @@ -283,7 +283,7 @@ public static RecreationReviewDTO toRecreationReviewDTO(RecreationReview review, .build()) .createdAt(review.getCreatedAt()) .updatedAt(review.getUpdatedAt()) - .contents(review.getContents()) + .content(review.getContent()) .goodCount(review.getGoodCount()) .badCount(review.getBadCount()) .recommendation( @@ -419,7 +419,7 @@ private static RecreationWay toRecreationWay( CreateRecreationWayDTO request, String wayImageUrl, Recreation recreation) { return RecreationWay.builder() .recreation(recreation) - .contents(request.getContents()) + .content(request.getContent()) .seq(request.getSeq()) .imageUrl(wayImageUrl) .build(); diff --git a/src/main/java/com/avab/avab/domain/Flow.java b/src/main/java/com/avab/avab/domain/Flow.java index 178f654c..cff81d36 100644 --- a/src/main/java/com/avab/avab/domain/Flow.java +++ b/src/main/java/com/avab/avab/domain/Flow.java @@ -48,21 +48,29 @@ public class Flow extends BaseEntity { private Integer participants; - private Long viewCount; + @ColumnDefault("0") + @Builder.Default + private Long viewCount = 0L; @ColumnDefault("0") @Column(name = "view_count_last_7_days") - private Long viewCountLast7Days; + @Builder.Default + private Long viewCountLast7Days = 0L; @Column(length = 100) private String title; - private Long scrapCount; + @ColumnDefault("0") + @Builder.Default + private Long scrapCount = 0L; @Column(length = 300) private String imageUrl; - @Column private LocalDateTime deletedAt; + @Column + @ColumnDefault("null") + @Builder.Default + private LocalDateTime deletedAt = null; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "author_id") diff --git a/src/main/java/com/avab/avab/domain/Recreation.java b/src/main/java/com/avab/avab/domain/Recreation.java index b75b1274..d5fde7f0 100644 --- a/src/main/java/com/avab/avab/domain/Recreation.java +++ b/src/main/java/com/avab/avab/domain/Recreation.java @@ -50,7 +50,9 @@ public class Recreation extends BaseEntity { @Column(length = 300) private String imageUrl; - private Float totalStars; + @ColumnDefault("0") + @Builder.Default + private Float totalStars = 0.0f; @Column(length = 300) private String summary; @@ -61,19 +63,26 @@ public class Recreation extends BaseEntity { private Integer playTime; - private Long viewCount; + @ColumnDefault("0") + @Builder.Default + private Long viewCount = 0L; - private Long favoriteCount; + @ColumnDefault("0") + @Builder.Default + private Long favoriteCount = 0L; @ColumnDefault("0") @Column(name = "view_count_last_7_days") - private Long viewCountLast7Days; + @Builder.Default + private Long viewCountLast7Days = 0L; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "author_id") private User author; - private LocalDateTime deletedAt; + @ColumnDefault("null") + @Builder.Default + private LocalDateTime deletedAt = null; @Builder.Default @OneToMany(mappedBy = "recreation", cascade = CascadeType.ALL) diff --git a/src/main/java/com/avab/avab/domain/RecreationReview.java b/src/main/java/com/avab/avab/domain/RecreationReview.java index a317e59e..e65163a5 100644 --- a/src/main/java/com/avab/avab/domain/RecreationReview.java +++ b/src/main/java/com/avab/avab/domain/RecreationReview.java @@ -15,6 +15,7 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; @@ -43,13 +44,19 @@ public class RecreationReview extends BaseEntity { private Integer stars; @Column(length = 500) - private String contents; + private String content; - private Integer goodCount; + @ColumnDefault("0") + @Builder.Default + private Integer goodCount = 0; - private Integer badCount; + @ColumnDefault("0") + @Builder.Default + private Integer badCount = 0; - private LocalDateTime deletedAt; + @ColumnDefault("null") + @Builder.Default + private LocalDateTime deletedAt = null; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "recreation_id") diff --git a/src/main/java/com/avab/avab/domain/RecreationWay.java b/src/main/java/com/avab/avab/domain/RecreationWay.java index 787a726d..5fc07d80 100644 --- a/src/main/java/com/avab/avab/domain/RecreationWay.java +++ b/src/main/java/com/avab/avab/domain/RecreationWay.java @@ -27,7 +27,7 @@ public class RecreationWay { private Long id; @Column(length = 300) - private String contents; + private String content; @Column(length = 300) private String imageUrl; diff --git a/src/main/java/com/avab/avab/domain/Report.java b/src/main/java/com/avab/avab/domain/Report.java index 7c1c133e..e0e44f82 100644 --- a/src/main/java/com/avab/avab/domain/Report.java +++ b/src/main/java/com/avab/avab/domain/Report.java @@ -11,6 +11,8 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; +import org.hibernate.annotations.ColumnDefault; + import com.avab.avab.domain.common.BaseEntity; import com.avab.avab.domain.enums.ReportReason; import com.avab.avab.domain.enums.ReportType; @@ -42,26 +44,32 @@ public class Report extends BaseEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "target_user_id") - private User targetUser; + @Builder.Default + private User targetUser = null; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "target_recreation_id") - private Recreation targetRecreation; + @Builder.Default + private Recreation targetRecreation = null; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "target_recreation_review_id") - private RecreationReview targetRecreationReview; + @Builder.Default + private RecreationReview targetRecreationReview = null; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "target_flow_id") - private Flow targetFlow; + @Builder.Default + private Flow targetFlow = null; @Enumerated(EnumType.STRING) @Column(columnDefinition = "VARCHAR(20)") private ReportReason reason; @Column(length = 300) - private String extraReason; + @ColumnDefault("null") + @Builder.Default + private String extraReason = null; public Boolean isReporter(User user) { return this.reporter.equals(user); diff --git a/src/main/java/com/avab/avab/domain/User.java b/src/main/java/com/avab/avab/domain/User.java index 191e9f72..43a6e51f 100644 --- a/src/main/java/com/avab/avab/domain/User.java +++ b/src/main/java/com/avab/avab/domain/User.java @@ -5,7 +5,15 @@ import java.util.ArrayList; import java.util.List; -import jakarta.persistence.*; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; @@ -18,7 +26,12 @@ import com.avab.avab.domain.mapping.RecreationFavorite; import com.avab.avab.domain.mapping.RecreationReviewRecommendation; -import lombok.*; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; @Entity @Builder @@ -51,15 +64,19 @@ public class User extends BaseEntity { @Enumerated(EnumType.STRING) @Column(columnDefinition = "VARCHAR(10)") - private UserStatus userStatus; + private UserStatus userStatus = UserStatus.ENABLED; @ColumnDefault("null") - private LocalDate deletedTime; + @Builder.Default + private LocalDate deletedAt = null; @ColumnDefault("0") - private Integer reportCount; + @Builder.Default + private Integer reportCount = 0; - private LocalDateTime disabledAt; + @ColumnDefault("null") + @Builder.Default + private LocalDateTime disabledAt = null; @OneToMany(mappedBy = "author", cascade = CascadeType.ALL) private List recreationList = new ArrayList<>(); @@ -84,7 +101,7 @@ public class User extends BaseEntity { private List reportList = new ArrayList<>(); public void deleteUser() { - this.deletedTime = LocalDate.now(); + this.deletedAt = LocalDate.now(); this.userStatus = UserStatus.DELETED; } @@ -102,11 +119,6 @@ public void enableUser() { this.userStatus = UserStatus.ENABLED; } - public void restoreUser() { - this.deletedTime = null; - this.userStatus = UserStatus.ENABLED; - } - public Boolean isDisabled() { return this.userStatus == UserStatus.DISABLED; } diff --git a/src/main/java/com/avab/avab/dto/reqeust/RecreationRequestDTO.java b/src/main/java/com/avab/avab/dto/reqeust/RecreationRequestDTO.java index 457eca9c..7e37f9a4 100644 --- a/src/main/java/com/avab/avab/dto/reqeust/RecreationRequestDTO.java +++ b/src/main/java/com/avab/avab/dto/reqeust/RecreationRequestDTO.java @@ -32,7 +32,7 @@ public static class PostRecreationReviewDTO { @Size(max = 500, message = "리뷰는 300자 이하여야 합니다.") @NotEmpty(message = "리뷰 내용은 필수입니다.") - private String contents; + private String content; } @Getter @@ -87,7 +87,7 @@ public static class CreateRecreationWayDTO { @NotBlank(message = "방법 내용은 비워둘 수 없습니다.") @Size(max = 300, message = "방법 내용은 300자를 넘을 수 없습니다.") - String contents; + String content; @Schema(description = "방법 순서, 0부터 시작") Integer seq; diff --git a/src/main/java/com/avab/avab/dto/response/RecreationResponseDTO.java b/src/main/java/com/avab/avab/dto/response/RecreationResponseDTO.java index e260267c..783ed234 100644 --- a/src/main/java/com/avab/avab/dto/response/RecreationResponseDTO.java +++ b/src/main/java/com/avab/avab/dto/response/RecreationResponseDTO.java @@ -83,7 +83,7 @@ public static class DescriptionDTO { @AllArgsConstructor(access = AccessLevel.PROTECTED) public static class WayDTO { - String contents; + String content; String imageUrl; Integer seq; } @@ -117,7 +117,7 @@ public static class RecreationReviewDTO { Integer stars; LocalDateTime createdAt; LocalDateTime updatedAt; - String contents; + String content; Integer goodCount; Integer badCount; @@ -160,6 +160,7 @@ public static class RecreationCreatedDTO { @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PROTECTED) public static class RecreationFlowDTO { + Long id; Boolean isMasked; MaskedReason maskedReason; diff --git a/src/main/java/com/avab/avab/repository/UserRepository.java b/src/main/java/com/avab/avab/repository/UserRepository.java index f5447261..1d2fa74e 100644 --- a/src/main/java/com/avab/avab/repository/UserRepository.java +++ b/src/main/java/com/avab/avab/repository/UserRepository.java @@ -16,6 +16,5 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); - List findByUserStatusAndDeletedTimeLessThanEqual( - UserStatus userStatus, LocalDate threshold); + List findByUserStatusAndDeletedAtBefore(UserStatus userStatus, LocalDate threshold); } diff --git a/src/main/java/com/avab/avab/service/impl/FlowServiceImpl.java b/src/main/java/com/avab/avab/service/impl/FlowServiceImpl.java index f5936a6f..798fa0a0 100644 --- a/src/main/java/com/avab/avab/service/impl/FlowServiceImpl.java +++ b/src/main/java/com/avab/avab/service/impl/FlowServiceImpl.java @@ -156,7 +156,7 @@ public Boolean toggleScrapeFlow(User user, Long flowId) { return false; } - FlowScrap favorite = FlowConverter.toFlowFavorite(flow, user); + FlowScrap favorite = FlowConverter.toFlowScrap(flow, user); flowScrapRepository.save(favorite); flowRepository.incrementScrapCountById(flow.getId()); diff --git a/src/main/java/com/avab/avab/service/impl/UserServiceImpl.java b/src/main/java/com/avab/avab/service/impl/UserServiceImpl.java index f65e05d5..1a912f14 100644 --- a/src/main/java/com/avab/avab/service/impl/UserServiceImpl.java +++ b/src/main/java/com/avab/avab/service/impl/UserServiceImpl.java @@ -84,8 +84,7 @@ public Page getMyFlows(User user, Integer page) { @Transactional public void hardDeleteOldUser(LocalDate threshold) { List oldUsers = - userRepository.findByUserStatusAndDeletedTimeLessThanEqual( - UserStatus.DELETED, threshold); + userRepository.findByUserStatusAndDeletedAtBefore(UserStatus.DELETED, threshold); userRepository.deleteAll(oldUsers); } @@ -106,7 +105,7 @@ public User restoreUserDeletion(String restoreToken) { throw new UserException(ErrorStatus.USER_NOT_DELETED); } - user.restoreUser(); + user.enableUser(); return user; } }