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 @@ -48,6 +48,7 @@ public enum BaseResponseMessage {
편지_생성이_실패_했습니다("편지 생성이 실패했습니다"),
편지가_성공적으로_조회되었습니다("편지가 성공적으로 조회되었습니다"),
일치하는_편지가_없습니다("일치하는 편지가 없습니다"),
편지_공개_여부가_수정되었습니다("편지 공개 여부가 수정되었습니다"),

//news
뉴스_조회가_성공했습니다("뉴스 조회가 성공했습니다"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.neighbors.tohero.application.letter.dto;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;

public record UpdateLetterPublic(
@NotNull
@Max(Long.MAX_VALUE)
@Min(0)
long letterId,

@NotNull
boolean isPublic
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.neighbors.tohero.application.letter.dto;

public record UpdateLetterPublicResponse (
boolean before,
boolean after
){

public static UpdateLetterPublicResponse of(boolean after) {
return new UpdateLetterPublicResponse(!after, after);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
import com.neighbors.tohero.common.jwt.JwtUserDetails;
import com.neighbors.tohero.domain.domain.address.service.GetAddress;
import com.neighbors.tohero.domain.domain.letter.service.CreateLetter;
import com.neighbors.tohero.domain.domain.letter.service.UpdateLetter;
import com.neighbors.tohero.domain.domain.mainPage.model.Letter;
import com.neighbors.tohero.domain.domain.mainPage.service.GetLetter;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -25,6 +27,7 @@ public class LetterService {
private final CreateLetter createLetter;
private final GetLetter getLetter;
private final GetAddress getAddress;
private final UpdateLetter updateLetter;

public BaseResponse<CreateLetterResponse> createLetter(final JwtUserDetails jwtUserDetail, final CreateLetterRequest createLetterRequest) {

Expand Down Expand Up @@ -68,6 +71,18 @@ public BaseResponse<GetMyLettersResponse> getMyLetters(long userId){
);
}

@Transactional
public BaseResponse<UpdateLetterPublicResponse> updateLetterPublic(long userId, UpdateLetterPublic updateLetterPublic){
updateLetter.updateLetterPublic(userId, updateLetterPublic.letterId(), updateLetterPublic.isPublic());

return new BaseResponse<>(
BaseResponseStatus.OK,
BaseResponseMessage.편지_공개_여부가_수정되었습니다.getMessage(),
UpdateLetterPublicResponse.of(updateLetterPublic.isPublic())
);
}


private BaseResponse<CreateLetterResponse> createGuestLetter(final String nickname, final CreateLetterRequest createLetterRequest) {
long createdLetterId = createLetter.createGuestLetter(
nickname,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.neighbors.tohero.domain.domain.letter.service;

import com.neighbors.tohero.common.annotaion.DomainService;
import com.neighbors.tohero.domain.query.LetterRepository;
import lombok.RequiredArgsConstructor;

@DomainService
@RequiredArgsConstructor
public class UpdateLetter {

private final LetterRepository letterRepository;

public void updateLetterPublic(long userId, long letterId, boolean isPublic){
letterRepository.updateLetter(repo -> repo.updateLetterPublic(userId, letterId, isPublic));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import com.neighbors.tohero.domain.domain.mainPage.model.Letter;
import com.neighbors.tohero.infrastructure.entity.LetterEntity;
import com.neighbors.tohero.infrastructure.repository.LetterEntityRepository;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;

public interface LetterRepository {
Expand All @@ -16,4 +15,5 @@ public interface LetterRepository {
Letter createLetter(Letter letter);
void remainLetterWithoutUser(long userId);
Letter getLetter(Function<LetterEntityRepository, Optional<LetterEntity>> function);
void updateLetter(Consumer<LetterEntityRepository> consumer);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;

@Repository
Expand Down Expand Up @@ -69,4 +70,9 @@ public Letter getLetter(Function<LetterEntityRepository, Optional<LetterEntity>>

return letterMapper.toDomain(letterEntity);
}

@Override
public void updateLetter(Consumer<LetterEntityRepository> consumer) {
consumer.accept(letterEntityRepository);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

Expand All @@ -25,4 +26,12 @@ public interface LetterEntityRepository extends JpaRepository<LetterEntity, Long

@Query("SELECT le FROM LetterEntity le WHERE le.letterId = :letterId AND le.isPublic = true")
Optional<LetterEntity> findByIdAndPublic(@Param("letterId") long letterId);

@Modifying
@Query("UPDATE LetterEntity le SET le.isPublic = :isPublic WHERE le.user.userId = :userId AND le.letterId = :letterId")
void updateLetterPublic(
@Param("userId") long userId,
@Param("letterId") long letterId,
@Param("isPublic") boolean isPublic
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.neighbors.tohero.application.baseResponse.BaseResponse;
import com.neighbors.tohero.application.letter.dto.CreateLetterRequest;
import com.neighbors.tohero.application.letter.dto.GetLetterDetailRequest;
import com.neighbors.tohero.application.letter.dto.UpdateLetterPublic;
import com.neighbors.tohero.application.letter.service.LetterService;
import com.neighbors.tohero.common.jwt.JwtUserDetails;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down Expand Up @@ -40,4 +41,13 @@ public ResponseEntity<BaseResponse> getMyLetters(@Parameter(hidden = true) @Auth
return ResponseEntity.ok()
.body(letterService.getMyLetters(jwtUserDetail.getUserId()));
}

@PutMapping("")
public ResponseEntity<BaseResponse> updateLetterPublic(
@Parameter(hidden = true) @AuthenticationPrincipal JwtUserDetails jwtUserDetail,
@RequestBody @Validated UpdateLetterPublic updateLetterPublic
){
return ResponseEntity.ok()
.body(letterService.updateLetterPublic(jwtUserDetail.getUserId(), updateLetterPublic));
}
}
Loading