Skip to content

Commit

Permalink
Merge pull request #116 from APPS-sookmyung/dev
Browse files Browse the repository at this point in the history
배포
  • Loading branch information
ajung7038 authored Oct 3, 2024
2 parents 3e1592a + a173ca2 commit a204a5d
Show file tree
Hide file tree
Showing 17 changed files with 133 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@
import outfoot.outfootserver.checkpage.service.CheckPageService;
import outfoot.outfootserver.common.response.BasicResponse;
import outfoot.outfootserver.common.response.ResponseUtil;
import outfoot.outfootserver.confirm.dto.ConfirmRequest;
import outfoot.outfootserver.confirm.dto.ConfirmResponse;
import outfoot.outfootserver.confirm.dto.ConfirmUpdateResponse;
import outfoot.outfootserver.confirm.dto.UpdateConfirmRequest;
import outfoot.outfootserver.confirm.dto.*;
import outfoot.outfootserver.confirm.service.ConfirmService;
import outfoot.outfootserver.member.domain.Member;
import outfoot.outfootserver.member.service.MemberService;
Expand Down Expand Up @@ -64,23 +61,37 @@ public BasicResponse<String> deleteConfirm(@PathVariable("id") Long confirmId,Ht
return ResponseUtil.success("인증판 삭제 성공");
}


@Operation(summary = "인증판 수정")
@Operation(summary = "인증판 이미지 수정")
@Parameters({
@Parameter(name = "confirm id", description = "공백 X", example = "1"),
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "인증판 수정에 성공하였습니다."),
@ApiResponse(responseCode = "400", description = "인증판을 찾을 수 없습니다."),
})
@PutMapping("/{id}")
public BasicResponse<ConfirmUpdateResponse> updateMemo(@PathVariable("id") Long id,
@PutMapping("images/{id}")
public BasicResponse<ConfirmUpdateResponse> updateImage(@PathVariable("id") Long id,
HttpServletRequest request,
@ModelAttribute UpdateConfirmRequest dto){
@ModelAttribute UpdateConfirmImageRequest dto){
Member member = memberService.loadMember(request);
return ResponseUtil.success(confirmService.updateConfirm(id, dto, member));
return ResponseUtil.success(confirmService.updateImage(id, dto, member));
}

@Operation(summary = "인증판 메모 수정")
@Parameters({
@Parameter(name = "confirm id", description = "공백 X", example = "1"),
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "인증판 수정에 성공하였습니다."),
@ApiResponse(responseCode = "400", description = "인증판을 찾을 수 없습니다."),
})
@PutMapping("contents/{id}")
public BasicResponse<ConfirmUpdateResponse> updateMemo(@PathVariable("id") Long id,
HttpServletRequest request,
@ModelAttribute UpdateConfirmRequest dto){
Member member = memberService.loadMember(request);
return ResponseUtil.success(confirmService.updateMemo(id, dto, member));
}

@Operation(summary = "인증판 조회")
@Parameters({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,12 @@ public Confirm(String title, String content, String imageUrl, CheckPage checkPag
this.checkPage = checkPage;
}

public void updateConfirm(String title, String content, String imageUrl) {
public void updateMemo(String title, String content) {
this.title = title;
this.content = content;
}

public void updateImage(String imageUrl) {
if (imageUrl != null) {
this.imageUrl = imageUrl;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
@Builder
public record ConfirmUpdateResponse(
@Schema(description = "제목", example = "하루에 물 2리터 마시기") String title,
@Schema(description = "한 줄 소개", example = "건강한 이너뷰티") String intro,
@Schema(description = "한 줄 소개", example = "건강한 이너뷰티") String content,
@Schema(description = "이미지", example = "image/png") String imageUrl) {

public static ConfirmUpdateResponse toConfirm(Confirm confirm){
return ConfirmUpdateResponse.builder()
.title(confirm.getTitle())
.intro(confirm.getContent())
.content(confirm.getContent())
.imageUrl(confirm.getImageUrl())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package outfoot.outfootserver.confirm.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.web.multipart.MultipartFile;

public record UpdateConfirmImageRequest(
@Schema(description = "메모 (제목)", example = "오늘도 뿌듯한 하루 ~~") String title,
@Schema(description = "메모 (내용)", example = "마치 하마가 된 거 같고, 뿌듯함ㅋㅋ") String content,
@Schema(description = "이미지", example = "image/png")MultipartFile image) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@

public record UpdateConfirmRequest(
@Schema(description = "메모 (제목)", example = "오늘도 뿌듯한 하루 ~~") String title,
@Schema(description = "메모 (내용)", example = "마치 하마가 된 거 같고, 뿌듯함ㅋㅋ") String content,
@Schema(description = "이미지", example = "image/png")MultipartFile image) {
@Schema(description = "메모 (내용)", example = "마치 하마가 된 거 같고, 뿌듯함ㅋㅋ") String content
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
import org.springframework.web.multipart.MultipartFile;
import outfoot.outfootserver.checkpage.domain.CheckPage;
import outfoot.outfootserver.confirm.domain.Confirm;
import outfoot.outfootserver.confirm.dto.ConfirmRequest;
import outfoot.outfootserver.confirm.dto.ConfirmResponse;
import outfoot.outfootserver.confirm.dto.ConfirmUpdateResponse;
import outfoot.outfootserver.confirm.dto.UpdateConfirmRequest;
import outfoot.outfootserver.confirm.dto.*;
import outfoot.outfootserver.confirm.exception.ConfirmErrorCode;
import outfoot.outfootserver.confirm.exception.ConfirmException;
import outfoot.outfootserver.confirm.repository.ConfirmRepository;
Expand All @@ -26,9 +23,9 @@ public class ConfirmService {
private final ConfirmRepository confirmRepository;
private final TestFileUploader fileUploader;
private final String path = "confirm/";

@Transactional
public ConfirmResponse saveConfirm(CheckPage checkPage, ConfirmRequest dto, Member member) {

// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// LocalDateTime now = LocalDateTime.now();
// String startOfDay = now.toLocalDate().atStartOfDay().format(formatter);
Expand All @@ -40,71 +37,74 @@ public ConfirmResponse saveConfirm(CheckPage checkPage, ConfirmRequest dto, Memb
// throw new ConfirmException(ConfirmErrorCode.CONFIRM_DAILY_LIMIT_EXCEEDED);
// }

String imageUrl = null;
if (dto.image() != null && !dto.image().isEmpty()) {
MultipartFile image = dto.image();
imageUrl = fileUploader.uploadFile(image, path);
}

String imageUrl = uploadImage(dto.image());
Confirm confirm = confirmRepository.save(ConfirmRequest.toConfirm(dto, checkPage, imageUrl, member));

long likeCount = confirm.getLikeCount();
long dislikeCount = confirm.getDisLikeCount();

return ConfirmResponse.toConfirm(confirm, likeCount, dislikeCount, imageUrl);
return ConfirmResponse.toConfirm(confirm, confirm.getLikeCount(), confirm.getDisLikeCount(), imageUrl);
}

@Transactional
public ConfirmUpdateResponse updateConfirm(Long confirmId, UpdateConfirmRequest dto, Member member) {
public ConfirmUpdateResponse updateImage(Long confirmId, UpdateConfirmImageRequest dto, Member member) {
Confirm confirm = findById(confirmId);

if (confirm.getMember() != member) {
if (!confirm.getMember().equals(member)) {
throw new AuthException(AuthErrorCode.UNAUTHORIZED_USER);
}

String imageUrl = null;
if (dto.image() != null && !dto.image().isEmpty()){
if (confirm.getImageUrl() != null){
fileUploader.deleteFile(confirm.getImageUrl(), path);
}
imageUrl = fileUploader.uploadFile(dto.image(), path);
if (confirm.getImageUrl() != null) {
fileUploader.deleteFile(confirm.getImageUrl(), "confirm");
}
String imageUrl = uploadImage(dto.image());
confirm.updateImage(imageUrl);

confirm.updateConfirm(dto.title(), dto.content(), imageUrl);
Confirm updatedConfirm = confirmRepository.save(confirm);
return ConfirmUpdateResponse.toConfirm(updatedConfirm);
}

@Transactional
public ConfirmUpdateResponse updateMemo(Long confirmId, UpdateConfirmRequest dto, Member member) {
Confirm confirm = findById(confirmId);

if (!confirm.getMember().equals(member)) {
throw new AuthException(AuthErrorCode.UNAUTHORIZED_USER);
}

confirm.updateMemo(dto.title(), dto.content());
Confirm updatedConfirm = confirmRepository.save(confirm);
return ConfirmUpdateResponse.toConfirm(updatedConfirm);
}

@Transactional
public void deleteConfirm(Long confirmId, Member member) {
Confirm confirm = findById(confirmId);

if (confirm.getMember() != member) {
if (!confirm.getMember().equals(member)) {
throw new AuthException(AuthErrorCode.UNAUTHORIZED_USER);
}

if (confirm.getImageUrl() != null) {
fileUploader.deleteFile(confirm.getImageUrl(), "confirm");
}
if (confirm.getMember() != member) {
if (!confirm.getMember().equals(member)) {
throw new AuthException(AuthErrorCode.UNAUTHORIZED_USER);
}
confirmRepository.delete(confirm);
}


public ConfirmResponse findConfirm(Long id, Member member){
public ConfirmResponse findConfirm(Long id, Member member) {
Confirm confirm = findById(id);
long likeCount = confirm.getLikeCount();
long dislikeCount = confirm.getDisLikeCount();
String imageUrl = confirm.getImageUrl();
return ConfirmResponse.toConfirm(confirm, likeCount, dislikeCount, imageUrl);
return ConfirmResponse.toConfirm(confirm, confirm.getLikeCount(), confirm.getDisLikeCount(), confirm.getImageUrl());
}

public Confirm findById (Long confirmId) {
public Confirm findById(Long confirmId) {
return confirmRepository.findById(confirmId)
.orElseThrow(() -> new ConfirmException(ConfirmErrorCode.CONFIRM_NOT_FOUND));
}

public String uploadImage(MultipartFile image) {
if (image == null || image.isEmpty()) {
throw new AuthException(AuthErrorCode.FILE_NOT_FOUND);
}
return fileUploader.uploadFile(image, path);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ public enum EmotionErrorCode {
DISLIKE_ALREADY_PRESSED("부정 버튼을 중복으로 누를 수 없습니다."),
DISLIKE_NOT_PRESSED("부정 버튼이 눌려있지 않아 취소가 불가능합니다."),

DUPLICATED_EMOTION("중복으로 버튼을 누를 수 없습니다. (인정, 부정)");
DUPLICATED_EMOTION("중복으로 버튼을 누를 수 없습니다. (인정, 부정)"),

NOT_PRESSED_SELF("자신의 인증판에는 좋아요 또는 싫어요를 누를 수 없습니다.");

private String message;
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ public class DislikeService {

@Transactional
public void addDislike(Member member, Confirm confirm) {

if (confirm.getMember().equals(member)) {
throw new EmotionException(EmotionErrorCode.NOT_PRESSED_SELF);
}

dislikeRepository.findByDislike(member, confirm)
.ifPresent(e -> {
throw new EmotionException(EmotionErrorCode.DISLIKE_ALREADY_PRESSED);
Expand Down Expand Up @@ -51,7 +56,9 @@ public void cancelDislike(Member member, Confirm confirm) {

confirm.getDislikes().remove(dislike);
confirmRepository.save(confirm);
} , () -> {});
}, () -> {
throw new EmotionException(EmotionErrorCode.DISLIKE_NOT_PRESSED);
});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ public class LikeService {

@Transactional
public void addLike(Member member, Confirm confirm) {

if (confirm.getMember().equals(member)) {
throw new EmotionException(EmotionErrorCode.NOT_PRESSED_SELF);
}

likeRepository.findByLike(member, confirm)
.ifPresent(e -> {
throw new EmotionException(EmotionErrorCode.LIKE_ALREADY_PRESSED);
Expand All @@ -38,7 +43,6 @@ public void addLike(Member member, Confirm confirm) {
.build();

likeRepository.save(like);

confirm.getLikes().add(like);
confirmRepository.save(confirm);
}
Expand All @@ -50,6 +54,8 @@ public void cancelLike(Member member, Confirm confirm) {
likeRepository.delete(like);
confirm.getLikes().remove(like);
confirmRepository.save(confirm);
}, () -> {});
}, () -> {
throw new EmotionException(EmotionErrorCode.LIKE_NOT_PRESSED);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
public record FriendListResponse(
@Schema(description = "친구 아이디", example = "1") Long id,
@Schema(description = "친구 닉네임", example = "정정") String nickname,
@Schema(description = "친구 한 줄 소개", example = "안녕하세요") String intro) {
@Schema(description = "친구 한 줄 소개", example = "안녕하세요") String intro,
@Schema(description = "친구 프로필 이미지", example = "img/png") String imageUrl) {

public static FriendListResponse toFriendList(Friend friend){
return FriendListResponse.builder()
.id(friend.getToMember().getId())
.nickname(friend.getNickname())
.imageUrl(friend.getToMember().getImageUrl())
.intro(friend.getToMember().getMyIntro())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,17 @@ public BasicResponse<MyPageResponse> UpdateMyPage (@Valid @ModelAttribute MyPage
return ResponseUtil.success(member);
}

@PutMapping("/my/images")
@Operation(summary = "프로필 내용 수정")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "프로필 정보 수정에 성공하였습니다."),
@ApiResponse(responseCode = "400", description = "존재하지 않는 회원입니다."),
})
public BasicResponse<MyPageResponse> UpdateMyPageWithImage (@Valid @ModelAttribute MyPageImageRequest dto, HttpServletRequest request) {
MyPageResponse member = memberService.updateImage(dto, request);
return ResponseUtil.success(member);
}

@GetMapping("/my")
@Operation(summary = "내 정보 조회")
@ApiResponses(value = {
Expand All @@ -55,7 +66,6 @@ public BasicResponse<MyProfileResponse> MyProfile (HttpServletRequest request) {

@GetMapping("/test/test")
public BasicResponse<Member> testTest (HttpServletRequest request) {
// System.out.println(request);
return ResponseUtil.success(memberService.loadMember(request));
}
}
14 changes: 5 additions & 9 deletions src/main/java/outfoot/outfootserver/member/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ public class Member extends BaseTimeEntity {
@Column
private String email;

// @NotNull
private String password;

@Column(name = "provider", nullable = false, length = 10)
private String provider;

Expand All @@ -66,19 +63,18 @@ public class Member extends BaseTimeEntity {
private List<Friend> toMember = new ArrayList<>();

@Builder
public Member(UUID username, String nickname, String email, String myIntro, String password, String provider, String providerId, String code, String imageUrl) {
public Member(UUID username, String nickname, String email, String myIntro, String provider, String providerId, String code, String imageUrl) {
this.username = username;
this.nickname = nickname;
this.email = email;
this.myIntro = myIntro;
this.password = password;
this.provider = provider;
this.providerId = providerId;
this.code = code;
this.imageUrl = imageUrl;
}

public void updateMember(MyPageRequest dto, String imageUrl){
public void updateMember(MyPageRequest dto){
if ( dto.nickname() != null ) {
this.nickname = dto.nickname();
}
Expand All @@ -88,9 +84,9 @@ public void updateMember(MyPageRequest dto, String imageUrl){
if ( dto.myIntro() != null ) {
this.myIntro = dto.myIntro();
}
if ( dto.password() != null ) {
this.password = dto.password();
}
}

public void updateMember(String imageUrl) {
if ( imageUrl != null ) {
this.imageUrl = imageUrl;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package outfoot.outfootserver.member.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import org.springframework.web.multipart.MultipartFile;

public record MyPageImageRequest(
@Schema(description = "프로필 이미지", example = "img/png") MultipartFile image) {
}
Loading

0 comments on commit a204a5d

Please sign in to comment.