Skip to content
Merged
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 @@ -4,6 +4,7 @@
import lombok.*;
import org.farmsystem.homepage.domain.common.entity.BaseTimeEntity;
import org.farmsystem.homepage.domain.user.entity.User;
import org.hibernate.annotations.ColumnDefault;

@Getter
@Entity
Expand All @@ -25,4 +26,11 @@ public class FarmingLogLike extends BaseTimeEntity {
@JoinColumn(name = "farming_log_id", nullable = false)
private FarmingLog farmingLog;

@Column(nullable = false)
@ColumnDefault("false")
private boolean isDeleted;

public void updateDelete() {
this.isDeleted = true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
@Repository
public interface FarmingLogLikeRepository extends JpaRepository<FarmingLogLike, Long> {

Optional<FarmingLogLike> findByUserAndFarmingLog(User user, FarmingLog farmingLog);
long countByFarmingLog(FarmingLog farmingLog);
Optional<FarmingLogLike> findByUserAndFarmingLogAndIsDeletedFalse(User user, FarmingLog farmingLog);
long countByFarmingLogAndIsDeletedFalse(FarmingLog farmingLog);
boolean existsByUserAndFarmingLog(User user, FarmingLog farmingLog);
boolean existsByUserAndFarmingLogAndIsDeletedFalse(User user, FarmingLog farmingLog);
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,32 +31,30 @@ public void toggleLike(Long userId, Long farmingLogId) {

FarmingLog farmingLog = farmingLogRepository.findById(farmingLogId)
.orElseThrow(() -> new BusinessException(ErrorCode.FARMING_LOG_NOT_FOUND));

boolean isLikeAdded;
Optional<FarmingLogLike> existingLike = farmingLogLikeRepository.findByUserAndFarmingLog(user, farmingLog);
Optional<FarmingLogLike> existingLike = farmingLogLikeRepository.findByUserAndFarmingLogAndIsDeletedFalse(user, farmingLog);
if (existingLike.isPresent()) {
farmingLogLikeRepository.delete(existingLike.get());
isLikeAdded = false;
existingLike.get().updateDelete();
} else {
boolean isSelfLike = farmingLog.getUser().equals(user);
boolean isFirstLike = !farmingLogLikeRepository.existsByUserAndFarmingLog(user, farmingLog);
farmingLogLikeRepository.save(
FarmingLogLike.builder()
.user(user)
.farmingLog(farmingLog)
.build()
);
isLikeAdded = true;
}
// 좋아요가 추가된 경우에만 이벤트 전송
if (isLikeAdded) {
FarmingLogLikedEvent event = new FarmingLogLikedEvent(
farmingLog.getUser().getUserId(), // 알림을 받을 사용자(파밍로그 작성자) 번호
user.getGeneration(), // 좋아요를 한 사용자 기수
user.getTrack(), // 좋아요를 한 사용자 트랙
user.getName(), // 좋아요를 한 사용자 이름
farmingLog.getTitle(), // 관련된 파밍로그 제목
farmingLog.getFarmingLogId() // 관련된 파밍로그 번호
);
applicationEventPublisher.publishEvent(event);
// 좋아요가 추가된 경우에만 이벤트 전송
if (!isSelfLike && isFirstLike) {
FarmingLogLikedEvent event = new FarmingLogLikedEvent(
farmingLog.getUser().getUserId(), // 알림을 받을 사용자(파밍로그 작성자) 번호
user.getGeneration(), // 좋아요를 한 사용자 기수
user.getTrack(), // 좋아요를 한 사용자 트랙
user.getName(), // 좋아요를 한 사용자 이름
farmingLog.getTitle(), // 관련된 파밍로그 제목
farmingLog.getFarmingLogId() // 관련된 파밍로그 번호
);
applicationEventPublisher.publishEvent(event);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ public class FarmingLogService {
private final DailySeedService dailySeedService;

private FarmingLogResponseDTO mapToFarmingLogResponse(FarmingLog farmingLog, User currentUser) {
boolean isLiked = farmingLogLikeRepository.existsByUserAndFarmingLog(currentUser, farmingLog);
long likeCount = farmingLogLikeRepository.countByFarmingLog(farmingLog);
boolean isLiked = farmingLogLikeRepository.existsByUserAndFarmingLogAndIsDeletedFalse(currentUser, farmingLog);
long likeCount = farmingLogLikeRepository.countByFarmingLogAndIsDeletedFalse(farmingLog);

return FarmingLogResponseDTO.from(farmingLog, currentUser.getUserId(), isLiked, likeCount);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class Notification extends BaseTimeEntity {
@Column(nullable = false, length = 20)
private NotificationType type;

@Column(nullable = false, length = 10)
@Column(nullable = false, length = 20)
private String title;

@Column(nullable = false, length = 50)
Expand Down
Loading