Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions jaehyuk/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.2'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
description = 'umc10th2'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.mysql:mysql-connector-j'

testImplementation 'org.springframework.boot:spring-boot-starter-test'

// Swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
}

tasks.named('test') {
useJUnitPlatform()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.umc10th2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@SpringBootApplication
public class Umc10th2Application {

public static void main(String[] args) {
SpringApplication.run(Umc10th2Application.class, args);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.example.umc10th2.domain.member.controller;

import com.example.umc10th2.domain.member.dto.MemberReqDTO;
import com.example.umc10th2.domain.member.dto.MemberResDTO;
import com.example.umc10th2.domain.member.service.MemberService;
import com.example.umc10th2.global.response.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@Tag(name = "Member", description = "회원 관련 API")
@RestController
@RequestMapping("/members")
@RequiredArgsConstructor
public class MemberController {

private final MemberService memberService;

@Operation(summary = "회원가입")
@PostMapping("/signup")
public ApiResponse<?> signup(@RequestBody MemberReqDTO request) {
return ApiResponse.success(null);
}

@Operation(summary = "로그인")
@PostMapping("/login")
public ApiResponse<?> login(@RequestBody MemberResDTO request) {
return ApiResponse.success(null);
}

@Operation(summary = "마이페이지 조회", description = "닉네임, 이메일, 포인트 등 내 정보를 조회합니다.")
@GetMapping("/{memberId}")
public ApiResponse<MemberResDTO.MyPageRes> getMyInfo(@PathVariable Long memberId) {
return ApiResponse.success(memberService.getMyPage(memberId));
}

@Operation(summary = "포인트 내역 조회")
@GetMapping("/{memberId}/points")
public ApiResponse<?> getPoints(
@PathVariable Long memberId,
@RequestParam int page,
@RequestParam int size
) {
return ApiResponse.success(null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.example.umc10th2.domain.member.converter;

import com.example.umc10th2.domain.member.dto.MemberResDTO;
import com.example.umc10th2.domain.member.entity.Member;

public class MemberConverter {

public static MemberResDTO.MyPageRes toMyPageRes(Member member) {
return MemberResDTO.MyPageRes.builder()
.nickname(member.getNickname())
.email(member.getEmail())
.phoneNum(member.getPhoneNum())
.point(member.getPoint())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.umc10th2.domain.member.dto;

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

import java.util.List;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MemberReqDTO {
private String name;
private String email;
private String password;
private String phone;

private String gender;
private Integer birthYear;
private String address;
private List<String> preferredCategories;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.example.umc10th2.domain.member.dto;

import lombok.Builder;
import lombok.Getter;

public class MemberResDTO {

@Getter
@Builder
public static class MyPageRes {
private String nickname;
private String email;
private String phoneNum;
private Integer point;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.example.umc10th2.domain.member.entity;

import com.example.umc10th2.domain.member.entity.mapping.MemberFood;
import com.example.umc10th2.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "food")
public class Food extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, length = 50)
private String name;

@OneToMany(mappedBy = "food", cascade = CascadeType.ALL)
@Builder.Default
private List<MemberFood> memberFoodList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.example.umc10th2.domain.member.entity;

import com.example.umc10th2.domain.member.enums.Gender;
import com.example.umc10th2.domain.member.enums.MemberStatus;
import com.example.umc10th2.domain.member.enums.SocialType;
import com.example.umc10th2.domain.member.entity.mapping.MemberFood;
import com.example.umc10th2.domain.member.entity.mapping.MemberTerm;
import com.example.umc10th2.domain.mission.entity.mapping.MemberMission;
import com.example.umc10th2.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "member")
public class Member extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, length = 50)
private String name;

@Column(nullable = false, unique = true, length = 100)
private String email;

@Column(nullable = false)
private String password;

@Column(name = "phone_num", length = 20)
private String phoneNum;

@Column(length = 50)
private String nickname;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Builder.Default
private Gender gender = Gender.NONE;

@Column(name = "birth_year")
private Integer birthYear;

@Enumerated(EnumType.STRING)
@Column(name = "social_type", nullable = false)
@Builder.Default
private SocialType socialType = SocialType.NONE;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
@Builder.Default
private MemberStatus status = MemberStatus.ACTIVE;

@Column(nullable = false)
@Builder.Default
private Integer point = 0;

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
@Builder.Default
private List<MemberFood> memberFoodList = new ArrayList<>();

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
@Builder.Default
private List<MemberTerm> memberTermList = new ArrayList<>();

@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
@Builder.Default
private List<MemberMission> memberMissionList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.umc10th2.domain.member.entity;

import com.example.umc10th2.domain.member.entity.mapping.MemberTerm;
import com.example.umc10th2.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "term")
public class Term extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false, length = 100)
private String title;

@Column(columnDefinition = "TEXT")
private String body;

@Column(name = "is_mandatory", nullable = false)
private Boolean mandatory;

@OneToMany(mappedBy = "term", cascade = CascadeType.ALL)
@Builder.Default
private List<MemberTerm> memberTermList = new ArrayList<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.example.umc10th2.domain.member.entity.mapping;

import com.example.umc10th2.domain.member.entity.Food;
import com.example.umc10th2.domain.member.entity.Member;
import com.example.umc10th2.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "member_food")
public class MemberFood extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "food_id", nullable = false)
private Food food;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.umc10th2.domain.member.entity.mapping;

import com.example.umc10th2.domain.member.entity.Member;
import com.example.umc10th2.domain.member.entity.Term;
import com.example.umc10th2.global.entity.BaseEntity;
import jakarta.persistence.*;
import lombok.*;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Table(name = "member_term")
public class MemberTerm extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
private Member member;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "term_id", nullable = false)
private Term term;

@Column(nullable = false)
private Boolean agreed;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.example.umc10th2.domain.member.enums;

public enum Gender { MALE, FEMALE, NONE }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.example.umc10th2.domain.member.enums;

public enum MemberStatus { ACTIVE, INACTIVE, BANNED }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.example.umc10th2.domain.member.enums;

public enum SocialType { KAKAO, NAVER, GOOGLE, NONE }
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.example.umc10th2.domain.member.enums;

public enum Term { MANDATORY, OPTIONAL }
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.umc10th2.domain.member.exception;

public class MemberException extends RuntimeException {
public MemberException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.example.umc10th2.domain.member.exception.code;

public enum MemberErrorCode {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.example.umc10th2.domain.member.exception.code;

public enum MemberSuccessCode {
}
Loading