Skip to content

Commit

Permalink
Merge pull request #18 from With-Mate/fix/sticker/sh
Browse files Browse the repository at this point in the history
fix(sticker) : 스티커 기능 에러 수정
  • Loading branch information
seohyun-lee authored Feb 16, 2024
2 parents b634563 + 62168df commit 3ce9afb
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 70 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
package com.gdscewha.withmate.domain.sticker.controller;

import com.gdscewha.withmate.common.response.exception.ErrorCode;
import com.gdscewha.withmate.domain.member.entity.Member;
import com.gdscewha.withmate.domain.member.service.MemberService;
import com.gdscewha.withmate.domain.sticker.dto.StickerCreateDTO;
import com.gdscewha.withmate.domain.sticker.dto.StickerDetailResDto;
import com.gdscewha.withmate.domain.sticker.dto.StickerPreviewResDto;
import com.gdscewha.withmate.domain.sticker.dto.StickerUpdateReqDTO;
import com.gdscewha.withmate.domain.sticker.dto.*;
import com.gdscewha.withmate.domain.sticker.entity.Sticker;
import com.gdscewha.withmate.domain.sticker.service.StickerService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequiredArgsConstructor
@RestController
@RequestMapping("/api")
Expand All @@ -23,41 +17,52 @@ public class StickerController {
private final MemberService memberService;
private final StickerService stickerService;

// 보드에서 스티커 미리보기로 보기
// TODO: 나와 메이트 모두 조회가 되나?
@GetMapping("/home/board")
public ResponseEntity<List<StickerPreviewResDto>> getstickerpreview() {
// 내 이름, 목표 와 메이트 이름과 목표
@GetMapping("/sticker/relation")
public ResponseEntity<?> getMeAndMateInfo() {
Member member = memberService.getCurrentMember();
List<StickerPreviewResDto> stickerPreviewDto = stickerService.getStickersForAWeek(member);
return ResponseEntity.ok().body(stickerPreviewDto);
if (!member.getIsRelationed())
return ResponseEntity.badRequest().body("현재 메이트를 맺은 상태가 아닙니다.");
StickerRelationDto stickerRelationDto = stickerService.getStickerRelationInfo();
if (stickerRelationDto == null)
return ResponseEntity.ok().header("Location", "/api/match").build();
return ResponseEntity.ok().body(stickerRelationDto);
}

// 보드에서 스티커 미리보기로 보기
@GetMapping("/sticker/board")
public ResponseEntity<?> getStickersPreview() {
Member member = memberService.getCurrentMember();
if (!member.getIsRelationed())
return ResponseEntity.badRequest().body("현재 메이트를 맺은 상태가 아닙니다.");
WeekStickersDto weekStickersDto = stickerService.getStickersForAWeek(member);
return ResponseEntity.ok().body(weekStickersDto);
}

// 모달 스티커 작성
@PostMapping("/sticker/create")
public ResponseEntity<?> createSticker(@RequestBody StickerCreateDTO stickerCreateDTO){
Sticker createdSticker = stickerService.createSticker(stickerCreateDTO);
StickerCreateDTO convertedDTO = stickerService.convertToCreateDTO(createdSticker);
if (convertedDTO == null)
return ResponseEntity.badRequest().body(ErrorCode.ERROR); // title null 불가
return ResponseEntity.ok().body(convertedDTO);
StickerPreviewResDto stickerResDto = stickerService.createSticker(stickerCreateDTO);
if (stickerResDto == null)
return ResponseEntity.badRequest().body("내용은 공백일 수 없습니다.");
return ResponseEntity.ok().body(stickerResDto);
}

// 편집할 스티커 불러오기
@GetMapping("/sticker/edit")
public ResponseEntity<?> editSticker(@RequestParam Long id){
StickerDetailResDto resDto = stickerService.getSticker(id);
if (resDto == null)
return ResponseEntity.badRequest().build();
return ResponseEntity.badRequest().body("해당 id의 스티커가 존재하지 않습니다.");
return ResponseEntity.ok().build();
}

// 스티커 편집하기
@PatchMapping("/sticker/edit")
public ResponseEntity<?> editSticker(@RequestBody StickerUpdateReqDTO stickerUpdateDTO){
@PatchMapping("/sticker/select")
public ResponseEntity<?> selectedSticker(@RequestBody StickerUpdateReqDTO stickerUpdateDTO){
Sticker editedSticker = stickerService.updateSticker(stickerUpdateDTO);
if (editedSticker == null)
return ResponseEntity.badRequest().build();
return ResponseEntity.badRequest().body("해당 id의 스티커가 존재하지 않습니다.");
return ResponseEntity.ok().build();
}

Expand All @@ -67,6 +72,4 @@ public ResponseEntity<?> deleteSticker(@RequestParam Long id){
stickerService.deleteSticker(id);
return ResponseEntity.ok().body("스티커를 삭제했습니다.");
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.*;

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.gdscewha.withmate.domain.sticker.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StickerRelationDto {
// 내 정보
private String myName;
private String myGoal;
// 상대방 정보
private String mateName;
private String mateGoal;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@


@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.gdscewha.withmate.domain.sticker.dto;

import com.gdscewha.withmate.domain.sticker.entity.Sticker;
import com.gdscewha.withmate.domain.week.entity.Week;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.stream.Collectors;

@Getter
@NoArgsConstructor
public class WeekStickersDto {
private Long weekNum;
private List<StickerPreviewResDto> stickerBoard;

public WeekStickersDto(Week week, List<Sticker> stickerList) {
this.weekNum = week.getWeekNum();
this.stickerBoard = stickerList
.stream()
.map(sticker -> StickerPreviewResDto.builder()
.id(sticker.getId())
.title(sticker.getTitle())
.stickerColor(sticker.getStickerColor())
.stickerShape(sticker.getStickerShape())
.stickerTop(sticker.getStickerTop())
.stickerLeft(sticker.getStickerLeft())
.build())
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
import com.gdscewha.withmate.common.validation.ValidationService;
import com.gdscewha.withmate.domain.member.entity.Member;
import com.gdscewha.withmate.domain.member.service.MemberService;
import com.gdscewha.withmate.domain.sticker.dto.StickerCreateDTO;
import com.gdscewha.withmate.domain.sticker.dto.StickerDetailResDto;
import com.gdscewha.withmate.domain.sticker.dto.StickerPreviewResDto;
import com.gdscewha.withmate.domain.sticker.dto.StickerUpdateReqDTO;
import com.gdscewha.withmate.domain.relation.dto.RelationHomeDto;
import com.gdscewha.withmate.domain.relation.service.RelationMateService;
import com.gdscewha.withmate.domain.sticker.dto.*;
import com.gdscewha.withmate.domain.sticker.entity.Sticker;
import com.gdscewha.withmate.domain.sticker.repository.StickerRepository;
import com.gdscewha.withmate.domain.week.entity.Week;
Expand All @@ -17,7 +16,6 @@
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

@Service
Expand All @@ -27,9 +25,28 @@ public class StickerService {
private final StickerRepository stickerRepository;
private final MemberService memberService;
private final WeekService weekService;
private final RelationMateService relationMateService;

// 새로운 스티커 CREATE 메소드(제목, 메모)
public Sticker createSticker(StickerCreateDTO stickerCreateDTO) {
// 목표 화면에서 나-메이트 정보 가져오기
public StickerRelationDto getStickerRelationInfo() {
RelationHomeDto relationHomeDto = relationMateService.getHomeInfo();
return StickerRelationDto.builder()
.myName(relationHomeDto.getMyName())
.myGoal(relationHomeDto.getMyGoal())
.mateName(relationHomeDto.getMateName())
.mateGoal(relationHomeDto.getMateGoal())
.build();
}

// 이번 주 스티커 미리보기로 조회 메소드
public WeekStickersDto getStickersForAWeek(Member member) {
Week week = weekService.getCurrentWeek(member);
List<Sticker> stickerList = stickerRepository.findAllByWeek(week);
return new WeekStickersDto(week, stickerList);
}

// 새로운 스티커 CREATE 메소드(제목, 스티커 색깔, 모양, 위치 등)
public StickerPreviewResDto createSticker(StickerCreateDTO stickerCreateDTO) {
Member member = memberService.getCurrentMember();
Week currentWeek = weekService.updateStickerCountOfCurrentWeek(1L);
Sticker sticker = Sticker.builder()
Expand All @@ -43,13 +60,14 @@ public Sticker createSticker(StickerCreateDTO stickerCreateDTO) {
.week(currentWeek)
.member(member)
.build();
return stickerRepository.save(sticker);
}

// entity를 StickerCreateDTO로 변환
public StickerCreateDTO convertToCreateDTO(Sticker sticker) {
return StickerCreateDTO.builder()
stickerRepository.save(sticker);
return StickerPreviewResDto.builder()
.id(sticker.getId())
.title(sticker.getTitle())
.stickerColor(sticker.getStickerColor())
.stickerShape(sticker.getStickerShape())
.stickerTop(sticker.getStickerTop())
.stickerLeft(sticker.getStickerLeft())
.build();
}

Expand All @@ -73,15 +91,6 @@ public Sticker updateSticker(StickerUpdateReqDTO stickerUpdateDTO) {
return stickerRepository.save(sticker);
}

// entity를 StickerUpdateReqTO로 변환
public StickerUpdateReqDTO convertToUpdateDTO(Sticker sticker) {
return StickerUpdateReqDTO.builder()
.title(sticker.getTitle())
.content(sticker.getContent())
.impression(sticker.getImpression())
.build();
}

// 스티커 DELETE 메소드
public void deleteSticker(Long stickerId) {
Member currentMember = memberService.getCurrentMember();
Expand All @@ -108,26 +117,4 @@ public StickerDetailResDto getSticker(Long stickerId){
stickerMyResDto.setIsMine(sticker.getMember() == currentMember);
return stickerMyResDto;
}

// 이번 주 스티커 미리보기로 조회 메소드
public List<StickerPreviewResDto> getStickersForAWeek(Member member) {
Week week = weekService.getCurrentWeek(member);
List<Sticker> stickerList = stickerRepository.findAllByWeek(week);
List<StickerPreviewResDto> stickerPreviewDtos = new ArrayList<>();
for (Sticker sticker : stickerList) {
String impression = sticker.getImpression();
StickerPreviewResDto previewDto = StickerPreviewResDto.builder()
.id(sticker.getId())
.title(sticker.getTitle())
.stickerColor(sticker.getStickerColor())
.stickerShape(sticker.getStickerShape())
.stickerTop(sticker.getStickerTop())
.stickerLeft(sticker.getStickerLeft())
.build();
stickerPreviewDtos.add(previewDto);
}
return stickerPreviewDtos;
}

// TODO: 컨트롤러 작성하며 프로필에서 여정, 주, 스티커 조회 방식 고민 필요
}

0 comments on commit 3ce9afb

Please sign in to comment.