Skip to content

Commit

Permalink
Merge pull request #41 from tukcomCD2024/refactor#40/ServiceControlle…
Browse files Browse the repository at this point in the history
…rDependency

Refactor#40/service controller dependency
  • Loading branch information
ggamD00 authored Mar 19, 2024
2 parents f2b4347 + a707cb4 commit 820833e
Show file tree
Hide file tree
Showing 11 changed files with 84 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.memetory.domain.member.dto.MemberServiceDto;
import com.example.memetory.domain.member.dto.MemberSignUpRequest;
import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.member.service.MemberService;
import com.example.memetory.global.annotation.LoginMember;
import com.example.memetory.global.annotation.LoginMemberEmail;

import lombok.RequiredArgsConstructor;

Expand All @@ -21,8 +22,10 @@ public class MemberController {

@PostMapping("/sign-up")
public ResponseEntity<HttpStatus> register(@RequestBody MemberSignUpRequest memberSignUpRequest,
@LoginMember Member member) {
memberService.register(member, memberSignUpRequest);
@LoginMemberEmail String email) {
MemberServiceDto memberServiceDto = memberSignUpRequest.toServiceDto(email);

memberService.register(memberServiceDto);

return ResponseEntity.status(HttpStatus.OK).build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.memetory.domain.member.dto;

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

@Getter
@Builder
@AllArgsConstructor
public class MemberServiceDto {
private String email;
private String nickname;
private String imageUrl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,11 @@
@Getter
public class MemberSignUpRequest {
private String nickName;

public MemberServiceDto toServiceDto(String email) {
return MemberServiceDto.builder()
.email(email)
.nickname(nickName)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.memetory.domain.member.entity;

import com.example.memetory.domain.member.dto.MemberServiceDto;
import com.example.memetory.domain.member.dto.MemberSignUpRequest;
import com.example.memetory.global.entity.BaseEntity;

Expand Down Expand Up @@ -49,8 +50,8 @@ public Member(String email, String nickname, String imageUrl, Role role, SocialT
this.socialId = socialId;
}

public void register(MemberSignUpRequest memberSignUpRequest) {
this.nickname = memberSignUpRequest.getNickName();
public void register(MemberServiceDto memberServiceDto) {
this.nickname = memberServiceDto.getNickname();
this.role = Role.USER;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.example.memetory.domain.member.dto.MemberServiceDto;
import com.example.memetory.domain.member.dto.MemberSignUpRequest;
import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.member.exception.NotFoundMemberException;
Expand All @@ -29,22 +30,25 @@ public class MemberService {
private final HttpServletResponse response;

@Transactional
public void register(Member member, MemberSignUpRequest memberSignUpRequest) {
member.register(memberSignUpRequest);
public void register(MemberServiceDto memberServiceDto) {
Member member = findByEmail(memberServiceDto.getEmail());

member.register(memberServiceDto);

String refreshToken = jwtService.createRefreshToken();

jwtService.setRefreshTokenHeader(response, refreshToken);
refreshTokenService.updateToken(member.getEmail(), refreshToken);
}

@Transactional(readOnly = true)
public Member getLoginMember() {
public String getMemberByEmail() {
String accessToken = jwtService.extractAccessToken(request).orElseThrow(NotFoundTokenException::new);
String email = jwtService.extractEmail(accessToken).orElseThrow(NotFoundEmailException::new);
Member member = memberRepository.findByEmail(email).orElseThrow(NotFoundMemberException::new);
return jwtService.extractEmail(accessToken).orElseThrow(NotFoundEmailException::new);
}

return member;
@Transactional(readOnly = true)
public Member findByEmail(String email) {
return memberRepository.findByEmail(email).orElseThrow(NotFoundMemberException::new);
}

@Transactional(readOnly = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.member.service.MemberService;
import com.example.memetory.domain.meme.dto.MemeServiceDto;
import com.example.memetory.domain.meme.dto.ShotStackCallBackRequest;
import com.example.memetory.domain.meme.entity.Meme;
import com.example.memetory.domain.meme.service.MemeService;

import lombok.RequiredArgsConstructor;
Expand All @@ -20,17 +18,15 @@
@RequiredArgsConstructor
@RequestMapping("/meme")
public class MemeController {
private final MemberService memberService;
private final MemeService memeService;

@PostMapping("/create/{id}")
public ResponseEntity<HttpStatus> callBackMeme(@PathVariable Long id,
@RequestBody ShotStackCallBackRequest shotStackCallBackRequest) {

Member member = memberService.findById(id);
Meme meme = shotStackCallBackRequest.toEntity(member);
MemeServiceDto memeServiceDto = shotStackCallBackRequest.toServiceDto(id);

memeService.save(meme);
memeService.register(memeServiceDto);

return ResponseEntity.status(HttpStatus.OK).build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.memetory.domain.meme.dto;

import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.meme.entity.Meme;

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

@Getter
@Builder
@AllArgsConstructor
public class MemeServiceDto {
private Long memberId;
private String s3Url;

public Meme toEntity(Member member) {
return Meme.builder()
.member(member)
.s3Url(this.s3Url)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.example.memetory.domain.meme.dto;

import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.meme.entity.Meme;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -14,10 +11,10 @@ public class ShotStackCallBackRequest {
private String url;
private String error;

public Meme toEntity(Member member) {
return Meme.builder()
.s3Url(this.url)
.member(member)
public MemeServiceDto toServiceDto(Long memberId) {
return MemeServiceDto.builder()
.memberId(memberId)
.s3Url(url)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.example.memetory.domain.member.entity.Member;
import com.example.memetory.domain.member.service.MemberService;
import com.example.memetory.domain.meme.dto.MemeServiceDto;
import com.example.memetory.domain.meme.dto.ShotStackCallBackRequest;
import com.example.memetory.domain.meme.entity.Meme;
import com.example.memetory.domain.meme.repository.MemeRepository;

Expand All @@ -11,10 +15,14 @@
@Service
@RequiredArgsConstructor
public class MemeService {
private final MemberService memberService;
private final MemeRepository memeRepository;

@Transactional
public void save(Meme meme) {
public void register(MemeServiceDto memeServiceDto) {
Member member = memberService.findById(memeServiceDto.getMemberId());
Meme meme = memeServiceDto.toEntity(member);

memeRepository.save(meme);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LoginMember {
public @interface LoginMemberEmail {
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.springframework.web.method.support.ModelAndViewContainer;

import com.example.memetory.domain.member.service.MemberService;
import com.example.memetory.global.annotation.LoginMember;
import com.example.memetory.global.annotation.LoginMemberEmail;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -22,12 +22,12 @@ public class LoginMemberArgumentResolver implements HandlerMethodArgumentResolve

@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return methodParameter.hasParameterAnnotation(LoginMember.class);
return methodParameter.hasParameterAnnotation(LoginMemberEmail.class);
}

@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) {
return memberService.getLoginMember();
return memberService.getMemberByEmail();
}
}

0 comments on commit 820833e

Please sign in to comment.