Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week6 조서영 기능 구현 #49

Merged
merged 67 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
0aa2592
w4 Develop2Master
Kdonghs Sep 27, 2024
68bfd4f
fix : 변수명 수정
Sep 28, 2024
ac2c5f3
fix : 엔티티의 전체적인 수정
Sep 28, 2024
fd28308
fix : member 리스트 제외 및 Id를 가져오도록 수정
Sep 28, 2024
1db6ad4
feat : validation 추가
Sep 28, 2024
afcb590
refactor : 해당 User가 가지는 프로젝트만 보이도록 구현
Sep 28, 2024
e15a1a6
Merge pull request #26 from kakao-tech-campus-2nd-step3/weekly
Kdonghs Oct 1, 2024
4c69f6b
feat: 유저 삭제 구현
Kdonghs Oct 1, 2024
5a003fa
feat: 유저 삭제 구현
Kdonghs Oct 1, 2024
0e86acb
feat: 스프링 시큐리티에서 토큰 예외처리 코드 작성중
Kdonghs Oct 1, 2024
d7b1e5c
feat: 코드로 멤버 토큰 반환(멤버 코드로 참여)
Kdonghs Oct 1, 2024
0103378
feat: 프로젝트 테스트 데이터 생성(임시)
Kdonghs Oct 1, 2024
7dc9a7a
fix : 변수명 수정
Oct 3, 2024
77fe946
feat : 옵션 기능 구현
Oct 3, 2024
28a9406
fix: 멤버 엔티티에서 joinNumber는 사용되지 않음
Kdonghs Oct 3, 2024
9f41c05
docs: README.md 업데이트
Kdonghs Oct 3, 2024
317dcff
Merge pull request #28 from Kdonghs/kdonghs
Kdonghs Oct 3, 2024
e404492
feat : 프로젝트 데이터 추가
Oct 3, 2024
b6e0a11
style : 컨벤션에 따른 코드 스타일 적용
Oct 3, 2024
ba50fd1
feat : user와 option에 대한 테스트 데이터 주입
Oct 3, 2024
c477a8b
fix : 테스트 데이터 수정
Oct 3, 2024
f4a435b
test: push테스트
suno-boy Oct 4, 2024
2db2280
test
suno-boy Oct 4, 2024
97ebea6
feat: isDeleted 속성 Boolean 타입으로 변경
seoyoung-dev Oct 3, 2024
ec554b8
feat: 태스트 삭제 시 아이디 반환하도록 수정
seoyoung-dev Oct 3, 2024
23cf5ab
feat: isDeleted, progress 속성 엔티티 생성시 기본값 0으로 설정
seoyoung-dev Oct 3, 2024
c243e5c
feat: 태스크 엔티티 생성 시 mapper 사용
seoyoung-dev Oct 3, 2024
ee1ef9c
feat: 프로젝트와 태스크 관계 일대다로 설정
seoyoung-dev Oct 3, 2024
693c913
feat: (재커밋) 프로젝트와 태스크 관계 일대다로 설정
seoyoung-dev Oct 3, 2024
3759243
feat: 프로젝트 ID로 태스크 리스트 조회 기능 구현
seoyoung-dev Oct 3, 2024
1831dc2
feat: 태스크 수정 기능 구현
seoyoung-dev Oct 3, 2024
d4eb04e
feat: 태스크 단건 조회 기능 구현
seoyoung-dev Oct 3, 2024
3aec562
feat: swagger 설명 추가
seoyoung-dev Oct 3, 2024
8b602bc
docs: README.md 구현 사항 및 설명 추가
seoyoung-dev Oct 3, 2024
174652e
feat: 태스크 생성, 수정, 삭제 수정구현
Kdonghs Oct 4, 2024
81e9dbd
feat: 매핑 수정(태스크n:프로젝트1)
Kdonghs Oct 4, 2024
ab62589
feat: 매핑 수정에 따른 getTaskList 수정
Kdonghs Oct 4, 2024
e9a2994
Merge remote-tracking branch 'origin/weekly' into kdonghs
Kdonghs Oct 4, 2024
8a1134e
feat: 새로운 Role추가로 변경
Kdonghs Oct 4, 2024
e78ede7
김도헌 week5
sunandrabbit Oct 4, 2024
4c62aa0
Merge remote-tracking branch 'origin/weekly' into sunandrabbit
Kdonghs Oct 4, 2024
7e01f97
feat: JoinNumber는 미사용
Kdonghs Oct 4, 2024
f21aa34
feat: 필드 생성자 사용
Kdonghs Oct 4, 2024
78be9aa
feat: 필드명 변경으로 인한 리포지토리 함수명 변경
Kdonghs Oct 4, 2024
fc79f24
feat: 팀원 초대 링크 생성
Kdonghs Oct 4, 2024
33ab3f9
fix: MemberEntity 필드 추가
suno-boy Oct 4, 2024
4ab415e
feat: 유효성 검증 포함한 Member요청 DTO 구현
suno-boy Oct 4, 2024
e86b4a3
fix: Task서비스 충돌 해결
suno-boy Oct 4, 2024
4b110a0
feat: member CRUD 업그레이드 및 구현
suno-boy Oct 4, 2024
c8f2c67
Merge pull request #34 from suno-boy/week5
suno-boy Oct 4, 2024
462e71e
Merge remote-tracking branch 'origin/weekly' into sunoWeek5
Kdonghs Oct 4, 2024
ca4525c
feat: 멤버 crud 수정구현
Kdonghs Oct 4, 2024
84f51e1
fix: 오타 수정
Kdonghs Oct 4, 2024
51ea572
fix: 태스크 리스트 불러오는 기능 수정
Kdonghs Oct 4, 2024
9f8c372
fix: 유저 isDelete 수정
Kdonghs Oct 4, 2024
471f82d
fix: 프로젝트 isDelete 수정
Kdonghs Oct 4, 2024
3e920fb
fix: 함수 수정
Kdonghs Oct 4, 2024
d304069
style: 코드 스타일 적용
Kdonghs Oct 4, 2024
851ae21
fix: 필요한 함수
Kdonghs Oct 4, 2024
9fca675
fix: 함수명 변경
Kdonghs Oct 4, 2024
f5edda5
fix: weekly와 로컬 개발환경 충돌 해결
seoyoung-dev Oct 7, 2024
7fa4477
fix: 이슈 내용 반영
seoyoung-dev Oct 9, 2024
3e461cd
fix: 태스크 생성시 날짜 validation 오류 해결
seoyoung-dev Oct 9, 2024
c082c84
fix: 태스크 수정시 날짜 validation 오류 해결
seoyoung-dev Oct 9, 2024
1954cbe
feat: 태스크 수정시 endDate가 StartDate 이후인지 validate 하는 조건 추가
seoyoung-dev Oct 9, 2024
8129e53
refactor: TaskDTO에 TaskDetail 추가
seoyoung-dev Oct 9, 2024
0da745b
fix: TaskEntity 고려하여 TaskRepository 필드 이름 수정
seoyoung-dev Oct 9, 2024
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
58 changes: 30 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,15 @@
- 이미지는 url 검사
- url패턴을 어길 시 400
- 유저 정보 삭제
- soft delete
- 코드로 참여
- 코드로 인증 후 토큰 반환
- 코드는 멤버id를 aes256으로 암호화 해서 코드 생성
- 코드를 복호화해서 검증
- 인증 후 멤버 이메일로 토큰 생성
- 시큐리티 토큰 생성 예외처리
- 기존 방식으로(@RestControllerAdvice)는 스프링 시큐리티 예외처리가 안됨
- 다른 방법 찾는중(w5)
- 프로젝트(김도헌)
- 프로젝트 리스트 조회
- 프로젝트 기간 리스트 조회
Expand Down Expand Up @@ -86,32 +94,26 @@
- 태스크별 진행도 조회
- ...
---
# Week4 이슈
- 프로젝트 빌드 실패
- Task의 오류
- 컴플리트 수행시 잘못된 수정(김도헌)
- 본인이 구현한 기능을 고려하지 않고 조서영이 작성한 Task(entity)로 대치
- @Column 부재(조서영)
- 작성한 엔티티에 @Column이 없어서 테이블 생성 실패
- taskRepository.deleteById의 구문 오류(조서영)
- 위 함수는 Task(entity)의 id만을 입력으로 받을 수 있다.
- 하지만 Long projectId, Long taskId라는 2개의 파라미터를 제공함으로서 JpaRepository가 빌드에 실패했다.
- projectEntity 오류
- projectEntity(entity)의 Column중 하나인 viewType의 자료형을 object로 구현
- Object로 구현시 Hibernate가 제대로 테이블을 생성할 수 없음
- 해결(김동혁)
- 기존 김도헌이 작성한 Task(entity)로 변경
- 기존(조서영)이 작성한 기능이 보다 김도헌이 작성한 기능의 복잡성을 고려함
- 기존에 구현한 Task(controller, service, repository)는 주석 처리
- projectEntity(entity)의 viewType은 삭제
- 다양한 차트의 형태(간트, 칸반, 플로우...)의 상태를 정의하기 위해 고려한 컬럼
- 하지만 기능의 모호성과 차후 업데이트로 반영할 수 있다는 점을 고려해 삭제
- 당부사항(김동혁)
- 제발 빌드 및 실행에 대한 테스트를 진행하고 커밋을 진행할 것
- Test(entity,controller,service,repository 등)을 참조해서 구현할 것
- 파일의 명명 규칙을 준수할 것
- Task(x)
- TaskEntity(0)
# 피드백
- [3주차 리뷰](https://github.com/kakao-tech-campus-2nd-step3/Team1_BE/issues/13)
- [3주차 피드백](https://github.com/kakao-tech-campus-2nd-step3/Team1_BE/pull/11)
- [4주차 리뷰](https://github.com/kakao-tech-campus-2nd-step3/Team1_BE/issues/17)
- [4주차 멘토링](https://quickest-asterisk-75d.notion.site/Back-end_-323b0e20ae2b405189ffe5b7c4242e00)
---
# Week4 질문사항
-
# Issue
- [week4 프로젝트 빌드 실패](https://github.com/kakao-tech-campus-2nd-step3/Team1_BE/issues/27)
---
# 질문사항
- week3
- 팀원마다 코드스타일이 다른경우 통일을 하나요?
- 프로젝트 시작 시 세팅은 어느정도로 하나요?
- 현재 팀원마다 각각 domain을 1개씩 담당하여 작업을 하고 있습니다. 이러한 경우 다른 팀원이 만들어야 하는 객체를 참조해야 되는 상황일 때,(저는 그냥 구현을 해버려서 conflict가 발생했습니다.) 구현을하지 않고 mock 혹은 fake 객체를 만들어 두고 작업을 하는 편인가요?
- 보통 이 정도 규모의 프로젝트를 분업하게 되면 어떠한 기준으로 작업을 분배하나요?
- conflict resolve시의 기준이 있나요?
- week4(멘토링)
- 유저 삭제시 인증 구현 방식
- 다양한 소셜 로그인의 유저를 특정하는 방법
- 메일 발송 방법
- 코드 스타일
- 동시성 처리
- week5
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package team1.BE.seamless.DTO;

public class AttendUrlResponseDTO {

String attendUrl;

public AttendUrlResponseDTO() {}
public AttendUrlResponseDTO() {
}

public AttendUrlResponseDTO(String attendUrl) {
this.attendUrl = attendUrl;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/team1/BE/seamless/DTO/AuthDTO.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package team1.BE.seamless.DTO;

import team1.BE.seamless.entity.UserEntity;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.oauth2.core.user.OAuth2User;
import team1.BE.seamless.entity.UserEntity;

public class AuthDTO {

Expand Down
5 changes: 4 additions & 1 deletion src/main/java/team1/BE/seamless/DTO/InviteRequestDTO.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package team1.BE.seamless.DTO;

// 팀원이 초대링크에 해당하는 페이지에서 이름, 이메일을 작성하여
// 요청을 보낼 때의 DTO
public class InviteRequestDTO {

private Integer projectId;
private String email;

public InviteRequestDTO() {}
public InviteRequestDTO() {
}

public InviteRequestDTO(Integer projectId, String email) {
this.projectId = projectId;
Expand Down
73 changes: 73 additions & 0 deletions src/main/java/team1/BE/seamless/DTO/MemberDetailResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package team1.BE.seamless.DTO;

import java.util.List;
import team1.BE.seamless.entity.ProjectEntity;
import team1.BE.seamless.entity.TaskEntity;

public class MemberDetailResponseDTO {

private String email;
private String role;
private String name;
private String imageURL;
private ProjectEntity projectEntity;
private List<TaskEntity> taskEntities;

public MemberDetailResponseDTO(String email, String role, String name,
String imageURL, ProjectEntity projectEntity, List<TaskEntity> taskEntities) {
this.email = email;
this.role = role;
this.name = name;
this.imageURL = imageURL;
this.projectEntity = projectEntity;
this.taskEntities = taskEntities;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getRole() {
return role;
}

public void setRole(String role) {
this.role = role;
}

public String getImageURL() {
return imageURL;
}

public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public ProjectEntity getProjectEntity() {
return projectEntity;
}

public void setProjectEntity(ProjectEntity projectEntity) {
this.projectEntity = projectEntity;
}

public List<TaskEntity> getTaskEntities() {
return taskEntities;
}

public void setTaskEntities(List<TaskEntity> taskEntities) {
this.taskEntities = taskEntities;
}
}
96 changes: 96 additions & 0 deletions src/main/java/team1/BE/seamless/DTO/MemberRequestDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package team1.BE.seamless.DTO;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import team1.BE.seamless.util.page.PageParam;

public class MemberRequestDTO {

public static class getMemberList extends PageParam {

}

public static class CreateMember {

@NotBlank(message = "이름은 필수 입력 사항입니다.")
@Size(max = 15, message = "이름은 공백 포함 최대 15글자까지 가능합니다.")
private String name;

@NotBlank(message = "역할은 필수 입력 사항입니다.")
@Size(max = 15, message = "역할은 공백 포함 최대 15글자까지 가능합니다.")
private String role;

@Email(message = "유효한 이메일 주소를 입력해주세요.")
@NotBlank(message = "이메일은 필수 입력 사항입니다.")
private String email;

private String imageURL;

public CreateMember() {
}

public CreateMember(String name, String role, String email, String imageURL) {
this.name = name;
this.role = role;
this.email = email;
this.imageURL = imageURL;
}

public String getName() {
return name;
}

public String getRole() {
return role;
}

public String getEmail() {
return email;
}

public String getImageURL() {
return imageURL;
}
}

public static class UpdateMember {

@Size(max = 15, message = "이름은 공백 포함 최대 15글자까지 가능합니다.")
private String name;

@Size(max = 15, message = "역할은 공백 포함 최대 15글자까지 가능합니다.")
private String role;

@Email(message = "유효한 이메일 주소를 입력해주세요.")
private String email;

private String imageURL;

public UpdateMember() {
}

public UpdateMember(String name, String role, String email, String imageURL) {
this.name = name;
this.role = role;
this.email = email;
this.imageURL = imageURL;
}

public String getName() {
return name;
}

public String getRole() {
return role;
}

public String getEmail() {
return email;
}

public String getImageURL() {
return imageURL;
}
}
}
1 change: 1 addition & 0 deletions src/main/java/team1/BE/seamless/DTO/MemberResponseDTO.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package team1.BE.seamless.DTO;

public class MemberResponseDTO {

private String message;

public MemberResponseDTO(String message) {
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/team1/BE/seamless/DTO/OptionDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package team1.BE.seamless.DTO;

public class OptionDTO {

public static class OptionCreate {

private String name;

private String eventType;

public OptionCreate() {

}

public OptionCreate(String name, String eventType) {
this.name = name;
this.eventType = eventType;
}

public String getName() {
return name;
}

public String getEventType() {
return eventType;
}

}

}
Loading