Skip to content

Commit

Permalink
Merge branch 'develop' into mvp/apply
Browse files Browse the repository at this point in the history
  • Loading branch information
tape4 authored Jul 27, 2024
2 parents 2342ab5 + 4e698e8 commit 3cfa35d
Show file tree
Hide file tree
Showing 27 changed files with 833 additions and 38 deletions.
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'
implementation 'org.springframework.boot:spring-boot-starter-validation'

implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import umc.kkijuk.server.career.controller.exception.CareerValidationException;
import umc.kkijuk.server.common.domian.exception.CareerValidationException;
import umc.kkijuk.server.career.controller.response.CareerGroupedByResponse;
import umc.kkijuk.server.career.controller.response.CareerResponseMessage;
import umc.kkijuk.server.career.domain.Career;
import umc.kkijuk.server.career.dto.CareerRequestDto;
import umc.kkijuk.server.career.dto.converter.CareerConverter;
import umc.kkijuk.server.career.repository.CareerRepository;
import umc.kkijuk.server.career.repository.CategoryRepository;
import umc.kkijuk.server.common.domian.exception.ResourceNotFoundException;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -90,7 +92,7 @@ public List<? extends CareerGroupedByResponse> getCareerGroupedBy(String status)
@Override
public Optional<Career> findCareer(Long careerId) {
return Optional.ofNullable(careerRepository.findById(careerId).orElseThrow(
() -> new CareerValidationException(CareerResponseMessage.CAREER_NOT_FOUND.toString())));
() -> new ResourceNotFoundException("Career",careerId)));
}


Expand Down
3 changes: 2 additions & 1 deletion src/main/java/umc/kkijuk/server/common/LoginUser.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@

@Getter
public class LoginUser {

private Long id;
private static final LoginUser LOGIN_USER = new LoginUser(0L);
private static final LoginUser LOGIN_USER = new LoginUser(1L);

public LoginUser(Long id) {
this.id = id;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package umc.kkijuk.server.career.controller.exception;
package umc.kkijuk.server.common.controller;


import com.fasterxml.jackson.databind.exc.InvalidFormatException;
Expand All @@ -10,6 +10,7 @@
import org.springframework.web.bind.annotation.RestControllerAdvice;
import umc.kkijuk.server.career.controller.response.CareerResponse;
import umc.kkijuk.server.career.controller.response.CareerResponseMessage;
import umc.kkijuk.server.common.domian.exception.CareerValidationException;


@RestControllerAdvice(assignableTypes = {umc.kkijuk.server.career.controller.CareerController.class})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import umc.kkijuk.server.common.domian.exception.RecruitOwnerMismatchException;
import umc.kkijuk.server.common.domian.exception.InvalidTagNameException;
import umc.kkijuk.server.common.domian.exception.ResourceNotFoundException;
import umc.kkijuk.server.common.domian.exception.ReviewRecruitMismatchException;
import umc.kkijuk.server.common.domian.response.ErrorResponse;
Expand All @@ -31,4 +32,10 @@ public ErrorResponse ReviewRecruitMatchException(ReviewRecruitMismatchException
public ErrorResponse RecruitOwnerMismatchException(RecruitOwnerMismatchException exception) {
return new ErrorResponse(exception.getMessage());
}

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(InvalidTagNameException.class)
public ErrorResponse InvalidTagNameException(InvalidTagNameException exception) {
return new ErrorResponse(exception.getMessage());
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package umc.kkijuk.server.career.controller.exception;
package umc.kkijuk.server.common.domian.exception;

public class CareerValidationException extends RuntimeException{

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package umc.kkijuk.server.common.domian.exception;

public class InvalidTagNameException extends RuntimeException{
public InvalidTagNameException(String message) {
super(message);

}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,181 @@
package umc.kkijuk.server.member.controller;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import umc.kkijuk.server.common.LoginUser;
import umc.kkijuk.server.member.domain.Member;
import umc.kkijuk.server.member.dto.MemberFieldDto;
import umc.kkijuk.server.member.dto.MemberInfoChangeDto;
import umc.kkijuk.server.member.dto.MemberJoinDto;
import umc.kkijuk.server.member.service.MemberService;
import lombok.Data;
import lombok.RequiredArgsConstructor;

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


@Controller
@Tag(name = "member", description = "회원 관리 API")
@RestController
@RequestMapping("/member")
@RequiredArgsConstructor
public class MemberController {

private final MemberService memberService;

@Operation(
summary = "회원가입 요청",
description = "회원가입 요청을 받아 성공/실패 여부를 반환합니다.")
@PostMapping
public ResponseEntity<CreateMemberResponse> saveMember(@RequestBody @Valid MemberJoinDto memberJoinDto) {
String passwordConfirm = memberJoinDto.getPasswordConfirm();
if (!passwordConfirm.equals(memberJoinDto.getPassword())) {
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body(new CreateMemberResponse("Passwords do not match"));
}

try {
Long memberId = memberService.join(memberJoinDto.toEntity());
return ResponseEntity
.status(HttpStatus.CREATED)
.body(new CreateMemberResponse(memberId, "Member created successfully"));
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new CreateMemberResponse("Member creation failed"));
}
}

/**
일단 RequestParam 사용, 나중에 jwt토큰으로 사용자 정보 식별할 수 있도록 변경
*/
@Operation(
summary = "내 정보 조회",
description = "마이페이지에서 내 정보들을 가져옵니다.")
@GetMapping("/myPage/info")
public ResponseEntity<MemberInfoResponse> getInfo() {
try {
Long loginUser = LoginUser.get().getId();
Member member = memberService.getMemberInfo(loginUser);
MemberInfoResponse response = new MemberInfoResponse(
member.getEmail(),
member.getName(),
member.getPhoneNumber(),
member.getBirthDate()
);
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}

@Operation(
summary = "내 정보 수정",
description = "내 정보 수정 요청을 받아 성공/실패를 반환합니다.")
@PutMapping("/myPage/info")
public ResponseEntity<ResultResponse> changeMemberInfo(@RequestBody MemberInfoChangeDto memberInfoChangeDto) {
Long loginUser = LoginUser.get().getId();
try {
memberService.updateMemberInfo(loginUser, memberInfoChangeDto);
return ResponseEntity.ok()
.body(new ResultResponse("information update success"));
}catch (Exception e){
return ResponseEntity
.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ResultResponse("information update failed"));
}

}


@Operation(
summary = "관심분야 조회",
description = "마이페이지에서 관심분야를 조회합니다.")
@GetMapping("/myPage/field")
public ResponseEntity<MemberFieldResponse> getField() {
try {
Long loginUser = LoginUser.get().getId();
List<String> memberField = memberService.getMemberField(loginUser);
return ResponseEntity.ok().body(new MemberFieldResponse(memberField));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}

@Operation(
summary = "관심분야 등록/수정",
description = "초기/마이페이지에서 관심분야를 등록/수정합니다.")
@PostMapping({"/field", "/myPage/field"})
public ResponseEntity<MemberFieldResponse> postField(@RequestBody @Valid MemberFieldDto memberFieldDto) {
try {
Long loginUserId = LoginUser.get().getId();
List<String> updatedMember = memberService.updateMemberField(loginUserId, memberFieldDto);
MemberFieldResponse response = new MemberFieldResponse(updatedMember);
return ResponseEntity.ok(response);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}



@Data
static class CreateMemberResponse {
private Long id;
private String message;

public CreateMemberResponse(String message) {
this.message = message;
}

public CreateMemberResponse(Long id, String message) {
this.id = id;
this.message = message;
}
}

@Data
static class ResultResponse{
private String message;

public ResultResponse(String message) {
this.message = message;
}
}

@Data
static class MemberInfoResponse {
private String email;
private String name;
private String phoneNumber;
private LocalDate birthDate;

public MemberInfoResponse(String email, String name, String phoneNumber, LocalDate birthDate) {
this.email = email;
this.name = name;
this.phoneNumber = phoneNumber;
this.birthDate = birthDate;
}
}

@Data
static class MemberFieldResponse{
private List<String> field;

public MemberFieldResponse(List<String> field) {
this.field = field;
}
}
}






11 changes: 11 additions & 0 deletions src/main/java/umc/kkijuk/server/member/domain/MarketingAgree.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package umc.kkijuk.server.member.domain;

public enum MarketingAgree {
BOTH,

EMAIL,

SMS,

NONE
}
37 changes: 27 additions & 10 deletions src/main/java/umc/kkijuk/server/member/domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package umc.kkijuk.server.member.domain;


import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import umc.kkijuk.server.member.converter.StringListConverter;

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

import umc.kkijuk.server.common.converter.StringListToStringConverter;

@Entity
@Getter
@Builder
@Getter @Setter
@NoArgsConstructor
@AllArgsConstructor
@NoArgsConstructor
public class Member {

@Id @GeneratedValue
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "member_id")
private Long id;

Expand All @@ -35,17 +36,22 @@ public class Member {
@NotNull
private String password;

@Convert(converter = StringListConverter.class)
private List<String> field = new ArrayList<>();

@Convert(converter = StringListToStringConverter.class)
private List<String> field;

@NotNull
private Boolean marketingAgree;
@Enumerated(EnumType.STRING)
private MarketingAgree marketingAgree;

@NotNull
@Enumerated(EnumType.STRING)
private State userState;

public Member(String email, String name, String phoneNumber, LocalDate birthDate, String password, Boolean marketingAgree, State userState) {
private LocalDate deleteDate;


public Member( String email, String name, String phoneNumber, LocalDate birthDate, String password, MarketingAgree marketingAgree, State userState) {
this.email = email;
this.name = name;
this.phoneNumber = phoneNumber;
Expand All @@ -54,5 +60,16 @@ public Member(String email, String name, String phoneNumber, LocalDate birthDate
this.marketingAgree = marketingAgree;
this.userState = userState;
}
}

public void changeFieldInfo(List<String> field){
this.field = field;
}

public void changeMemberInfo(String phoneNumber, LocalDate birthDate, MarketingAgree marketingAgree){
this.phoneNumber = phoneNumber;
this.birthDate = birthDate;
this.marketingAgree = marketingAgree;
}


}
19 changes: 19 additions & 0 deletions src/main/java/umc/kkijuk/server/member/dto/MemberFieldDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package umc.kkijuk.server.member.dto;

import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;


@Data
@NoArgsConstructor
public class MemberFieldDto {
private List<String> field;

@Builder
public MemberFieldDto(List<String> field) {
this.field = field;
}
}
Loading

0 comments on commit 3cfa35d

Please sign in to comment.