Skip to content

Commit

Permalink
feature: 멤버 정보 조회 api 추가 (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangwook02 authored Jul 27, 2024
1 parent 9d1276f commit 3932a3c
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@

import com.goldbalance.dive.domain.member.dto.MemberLogin;
import com.goldbalance.dive.domain.member.dto.request.MemberSignin;
import com.goldbalance.dive.domain.member.dto.response.MemberInfo;
import com.goldbalance.dive.domain.member.service.MemberService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
Expand All @@ -30,4 +33,10 @@ public ResponseEntity<MemberLogin> login(@Valid @RequestBody MemberLogin request
MemberLogin response = memberService.login(request);
return ResponseEntity.ok(response);
}

@GetMapping("/{nickname}")
public ResponseEntity<MemberInfo> getMemberInfo(@PathVariable String nickname) {
MemberInfo response = memberService.getMemberInfo(nickname);
return ResponseEntity.ok(response);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.goldbalance.dive.domain.member.dto.response;

import com.goldbalance.dive.domain.member.domain.Member;
import java.util.List;

public record MemberInfo(
String nickname,
String tier,
String mileage,
String monthlyMileage,
String overallMonthlyRank,
String tierMonthlyRank,
int totalMembers,
int totalTierMembers) {
public static MemberInfo of(
Member member, List<Member> orderByMonthlyMileageDesc, List<Member> orderByTotalMileageDesc) {
return new MemberInfo(
member.getNickname(),
member.getTier().getTierName(),
member.getTotalMileage() + "P",
member.getMonthlyMileage() + "P",
orderByMonthlyMileageDesc.indexOf(member) + 1 + "등",
orderByTotalMileageDesc.indexOf(member) + 1 + "등",
orderByMonthlyMileageDesc.size(),
orderByTotalMileageDesc.size());
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package com.goldbalance.dive.domain.member.repository;

import com.goldbalance.dive.domain.member.domain.Member;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRepository extends JpaRepository<Member, Long> {
boolean existsByNickname(String nickname);

Optional<Member> findByNickname(String nickname);

List<Member> findByOrderByMonthlyMileageDesc();

List<Member> findByOrderByTotalMileageDesc();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import com.goldbalance.dive.domain.member.domain.Member;
import com.goldbalance.dive.domain.member.dto.MemberLogin;
import com.goldbalance.dive.domain.member.dto.request.MemberSignin;
import com.goldbalance.dive.domain.member.dto.response.MemberInfo;
import com.goldbalance.dive.domain.member.repository.MemberRepository;
import com.goldbalance.dive.global.exception.CustomException;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -41,4 +43,13 @@ public MemberLogin login(MemberLogin request) {
log.info("[MemberService] 멤버 로그인 memberId = {}", member.getId());
return MemberLogin.from(member);
}

public MemberInfo getMemberInfo(String nickname) {
Member member =
memberRepository.findByNickname(nickname).orElseThrow(() -> new CustomException(MEMBER_NOT_FOUND));
List<Member> orderByMonthlyMileageDesc = memberRepository.findByOrderByMonthlyMileageDesc();
List<Member> orderByTotalMileageDesc = memberRepository.findByOrderByTotalMileageDesc();

return MemberInfo.of(member, orderByMonthlyMileageDesc, orderByTotalMileageDesc);
}
}

0 comments on commit 3932a3c

Please sign in to comment.