Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
d89ea56
chore: 설정파일 세팅, H2 DB/JPA 세팅
kdhur Aug 22, 2025
4addc31
feat: 기본 구조 설정
kdhur Aug 22, 2025
f4b9bcd
feat: 기본 엔티티 생성
kdhur Aug 22, 2025
d42b01a
chore: h2 url 변경
kdhur Aug 22, 2025
7fc8551
chore: production 설정에 mysql 연결 설정
kdhur Aug 26, 2025
6309788
chore: gitignore 에 로그 추가
kdhur Aug 26, 2025
96bdcf3
chore: 로깅 설정
kdhur Aug 26, 2025
62437fa
chore: Swagger 설정
kdhur Aug 26, 2025
558033d
chore: layer 별 로깅 AOP 추가
kdhur Aug 26, 2025
e07dacb
rename: 로깅 aop 디렉토리 변경
kdhur Aug 26, 2025
2766331
feat: GlobalExceptionHandler 구현
kdhur Aug 26, 2025
1247bd4
chore: 코드 warning 포인트 수정
kdhur Aug 26, 2025
146f019
chore: swagger 버전 변경
kdhur Aug 26, 2025
67a895f
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Aug 28, 2025
eb6bdb5
feat:템플릿 엔티티 생성 및 enum클래스 생성
sejun0205 Aug 28, 2025
ccdffb5
fix:템플렛 엔티티 수정
sejun0205 Aug 28, 2025
280d8b9
Merge pull request #3 from Kernel180-BE12/feature/template
sejun0205 Aug 28, 2025
adce6a8
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Aug 29, 2025
2bedca2
회원가입, 로그인, 로그아웃 구현 (#5)
doo1011 Sep 1, 2025
bf7bd0a
feat: 연락처 추가 API 구현 (#4)
rhddbr24 Sep 1, 2025
0272ddd
test : 테스트코드 수정 (#9)
rhddbr24 Sep 1, 2025
691ed97
feat: : 스페이스 관련 구현 (#1)
juykoung Sep 1, 2025
89514b0
Merge remote-tracking branch 'origin/develop' into develop
kdhur Sep 2, 2025
a0b179e
Spring security 추가 설정 (#10)
doo1011 Sep 2, 2025
1080534
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
kdhur Sep 2, 2025
7af67f1
feat: 템플릿 엔티티 수정
kdhur Sep 2, 2025
3d0cb4a
템플릿 생성 API 작업 TemplateController, TemplateService
dev365code Sep 2, 2025
01aa99e
get방식에서 post 방식으로 변경
dev365code Sep 2, 2025
838f374
Spring security 엔드포인트 관리, DB에 로깅 (#13)
doo1011 Sep 2, 2025
57b653a
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 2, 2025
0bd41e3
Update application-develop.yml
doo1011 Sep 2, 2025
2574279
Update application-production.yml
doo1011 Sep 2, 2025
4bf0768
chore: AI 호스트 변경
dev365code Sep 2, 2025
5566a7c
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 2, 2025
d9658a9
Update application-develop.yml
doo1011 Sep 2, 2025
693831f
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 2, 2025
17cac1f
Space CRUD 리팩토링 (#14)
juykoung Sep 2, 2025
8919848
refactor: dto에 swagger 추가 (#15)
juykoung Sep 3, 2025
1f3d641
chore: Lombok
dev365code Sep 3, 2025
e80a90e
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 3, 2025
45a6dc8
시스템 컬럼 추가, 스페이스 API 수정 (#18)
doo1011 Sep 3, 2025
de8d904
Merge pull request #16 from Kernel180-BE12/feature/template-create
dev365code Sep 3, 2025
97cf73b
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 3, 2025
30ac2a1
feat: 템플릿 조회기능 구현 (#17)
rhddbr24 Sep 3, 2025
5523347
feat: 템플릿 상세조회기능 구현 (#20)
rhddbr24 Sep 3, 2025
977313f
템플릿 저장/삭제 구현 (#21)
juykoung Sep 3, 2025
00152e5
refactor: Template 엔티티 repository 책임 분리 및 사용하지 않는 메서드 정리 (#22)
rhddbr24 Sep 5, 2025
b616d72
yml 설정, DTO 내부 구현 분리, Service 리팩토링, Controller 간소화, 외부 API Util 분리, D…
dev365code Sep 5, 2025
e503351
refactor: 관심사 분리 적용, 재사용성 증대, 유지보수성 개선
dev365code Sep 5, 2025
1c8d069
template service 충돌 문제 해결
dev365code Sep 5, 2025
2cd4e6c
Merge pull request #24 from Kernel180-BE12/feature/template-create
dev365code Sep 5, 2025
4987c0a
Feature/update delete contact (#23)
rhddbr24 Sep 8, 2025
287757c
Feature/update delete contact test (#25)
rhddbr24 Sep 8, 2025
fb1370f
Feature/update user info (#26)
rhddbr24 Sep 10, 2025
ff859e5
refactor: AI와 응답 필드 매칭 (기존 2개 -> 8개필드로 확장)
dev365code Sep 11, 2025
c1b5a62
Merge pull request #28 from Kernel180-BE12/feature/template-create
dev365code Sep 11, 2025
ef25d94
feat: 사용자 아이디/이메일 중복체크 API 추가 (#29)
rhddbr24 Sep 11, 2025
cc5fb1f
중복 로그인 처리 (#30)
doo1011 Sep 11, 2025
23f3c1f
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 11, 2025
906d7e9
feat : 연락처 태그검색 기능 구현 (#33)
rhddbr24 Sep 12, 2025
6af61d4
아이디, 비밀번호, 이메일 정규식 추가 UserController/UserService
dev365code Sep 12, 2025
66dfa34
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
dev365code Sep 12, 2025
15cc867
UserService 메서드이름(getUsername에서 getName으로 변경)
dev365code Sep 12, 2025
b5828bb
Merge pull request #36 from Kernel180-BE12/feature/template-create
dev365code Sep 12, 2025
3252947
비밀번호 변경 구현 (#37)
doo1011 Sep 12, 2025
e557d04
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 15, 2025
a3ac6b4
템플릿 저장 기능 구현 및 템플릿 테스트코드관련 에러 해결 (#38)
rhddbr24 Sep 15, 2025
0708649
test: 테스트 코드 임시 해제
kdhur Sep 15, 2025
2fd53c3
템플릿 논리삭제 구현 (#39)
rhddbr24 Sep 15, 2025
8ba2bec
refactor: JAVA 21 버전으로 다운그레이드
kdhur Sep 15, 2025
eef7784
refactor: CORS 엔드포인트 yml 로 분리
kdhur Sep 15, 2025
19d31c2
chore: actions workflow JAVA 21 버전으로 변경
kdhur Sep 15, 2025
995e6e5
fix: JAVA 24 버전 문법 제거
kdhur Sep 15, 2025
a77dd8d
test: warning 해결
kdhur Sep 15, 2025
f14cff2
chore: fix lint
kdhur Sep 15, 2025
cbf07aa
fix: fix error and warning
kdhur Sep 15, 2025
cd9856f
fix: fix error and warning
kdhur Sep 15, 2025
e939589
chore: fix lint
kdhur Sep 15, 2025
b7c4e77
템플릿리스트 조회&멤버리스트 조회 구현
juykoung Sep 15, 2025
a93e376
필드값 수정으로 프론트 Null 입력값 처리를 위한 예외처리 및 파싱 로직 수정
dev365code Sep 15, 2025
4919ab5
Merge pull request #44 from Kernel180-BE12/feature/template-create
dev365code Sep 15, 2025
38e6701
fix: Apply spotless code formatting
dev365code Sep 15, 2025
685fe9c
Merge pull request #45 from Kernel180-BE12/feature/template-create
dev365code Sep 15, 2025
ceb815f
스페이스 생성 시 멤버로 자동추가 구현 (#46)
juykoung Sep 16, 2025
1016338
fix: 템플릿 API 경로 충돌 해결 (#49)
dev365code Sep 16, 2025
62f7b42
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 17, 2025
f1e3402
chore: fix lint
kdhur Sep 17, 2025
1df10de
fix: 중복 코드 제거
kdhur Sep 17, 2025
dc851d8
회원가입시 필요한 중복검사로직 변경 및 회원정보 수정시에 검증로직 변경 (#51)
rhddbr24 Sep 17, 2025
d51a689
Merge branch 'main' into develop
doo1011 Sep 17, 2025
c6e57f2
template list 없어진 코드 재추가
juykoung Sep 17, 2025
097260f
템플릿 생성요청 - 생성 시 불필요한 변환을 제거, 직접 패스스루 (#58)
dev365code Sep 17, 2025
ae92890
스페이스생성 시 권한-관리자로 설정
juykoung Sep 17, 2025
88a7dc8
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 17, 2025
f967dfe
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
kdhur Sep 17, 2025
6b4d2ea
fix: 없어진 코드 되살리기
kdhur Sep 17, 2025
5b497b6
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 17, 2025
77e47f8
연락처 관련 올바르지 않은 입력으로 생긴 에러가 500으로 출력되던것을 클라이언트 에러로 수정 (#62)
rhddbr24 Sep 17, 2025
38e7243
refactor : id/check, email/check api사용으로 다시 복구 및 메서드에 맞게 수정, 해당 api 사…
rhddbr24 Sep 17, 2025
1827a31
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
kdhur Sep 19, 2025
230f943
getTemplateList 특정 스페이스의 템플릿만 조회되도록 수정 (#66)
juykoung Sep 19, 2025
78a293a
템플릿리스트에 템플릿아이디 추가 (#68)
juykoung Sep 19, 2025
c194b11
Merge branch 'main' into develop
juykoung Sep 19, 2025
a6e595a
태그 추가로 인해 생긴 인코딩문제 및 연락처 추가시에 request로 태그 입력 받을 수 있게 변경 (#71)
rhddbr24 Sep 19, 2025
621d530
회원탈퇴 구현 (#72)
rhddbr24 Sep 19, 2025
39dff44
SpaceMember email 제거 (#74)
juykoung Sep 19, 2025
f5c8976
Merge branch 'main' into develop
juykoung Sep 19, 2025
9a94c4c
refactor : 연락처 태그필터링 조회 로그출력
rhddbr24 Sep 19, 2025
20e9eac
Merge branch 'develop' of https://github.com/Kernel180-BE12/Final-1te…
rhddbr24 Sep 19, 2025
fa6460d
스페이스멤버 초대/메일발송 API 구현 (#78)
juykoung Sep 23, 2025
6df1489
fix: 낡은 쿠키 사용하던 문제 해결 (#79)
doo1011 Sep 23, 2025
83241f8
AI 채팅 SSE 로 처리 (#77)
doo1011 Sep 23, 2025
fbf6fb6
Merge branch 'main' into develop
doo1011 Sep 23, 2025
87c07ea
스페이스연락처 : phoneNum -> phoneNumber, contactId -> id로 필드명 통일 (#83)
rhddbr24 Sep 24, 2025
892bc58
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
rhddbr24 Sep 25, 2025
dfdc446
fix : 중복 메서드 정의 제거
rhddbr24 Sep 25, 2025
ec7c465
스페이스멤버 초대 시, arrayList로 기존멤버/신규멤버 나눔 (#85)
juykoung Sep 25, 2025
bb0b7b0
스페이스멤버로 초대받아 회원가입하는 기능 구현 (#87)
juykoung Sep 25, 2025
c1e8a33
초대링크 url 수정
juykoung Sep 26, 2025
b76349d
Merge branch 'main' into develop
juykoung Sep 26, 2025
8921c84
SpaceMember 논리삭제 필드 @Builder.Default 적용
juykoung Sep 26, 2025
8247816
sendInviteEmailToUser 파라미터 String email 제거
juykoung Sep 26, 2025
064cf22
스페이스멤버 수정/삭제/회원가입 구현및수정 (#91)
juykoung Sep 26, 2025
a28f22a
refactor : 연락처 단일삭제 -> 일괄삭제기능으로 변경 (#94)
rhddbr24 Sep 26, 2025
4adc085
Merge branch 'main' of https://github.com/Kernel180-BE12/Final-1team-…
rhddbr24 Sep 26, 2025
2528530
fix : 중복메서드 제거
rhddbr24 Sep 26, 2025
c8267d4
스페이스멤버 다중삭제로 수정 (#96)
juykoung Sep 26, 2025
3921763
스페이스멤버 태그로 조회 구현 (#98)
juykoung Sep 27, 2025
21c9f65
Merge branch 'main' into develop
juykoung Sep 27, 2025
5b36355
스페이스 멤버 리스트 조회내역 변경(ver.2) (#101)
juykoung Sep 30, 2025
9eb8892
Merge branch 'main' into develop
juykoung Sep 30, 2025
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
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.fastcampus.jober.space.dto.request.MemberUpdateRequestDto;
import org.fastcampus.jober.space.dto.request.SpaceMemberAddRequestDto;
import org.fastcampus.jober.space.dto.response.MemberUpdateResponseDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberListResponseDto;
import org.fastcampus.jober.user.dto.CustomUserDetails;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand Down Expand Up @@ -74,17 +75,14 @@ public ResponseEntity<Void> acceptInvitation(
@Operation(summary = "스페이스 멤버 조회", description = "특정 spaceId에 속한 모든 멤버 정보를 가져옵니다.")
@Parameter(name = "spaceId", description = "멤버를 조회할 스페이스의 ID", required = true)
@GetMapping("/{spaceId}/members")
public ResponseEntity<List<SpaceMemberResponseDto>> getSpaceMembers(@PathVariable Long spaceId) {
List<SpaceMemberResponseDto> result = spaceMemberService.getSpaceMembers(spaceId);
public ResponseEntity<List<SpaceMemberListResponseDto>> getSpaceMembers(@PathVariable Long spaceId) {
List<SpaceMemberListResponseDto> result = spaceMemberService.getSpaceMembers(spaceId);
return ResponseEntity.ok(result);
}

@Operation(
summary = "스페이스 멤버 논리 삭제",

description = """

특정 스페이스에서 여러 멤버를 논리 삭제합니다.
- `memberIds` : 삭제할 멤버 ID들의 리스트(예: `1,2,3`)
- `spaceId` : 해당 스페이스 ID
""",
Expand Down Expand Up @@ -154,15 +152,17 @@ public ResponseEntity<MemberUpdateResponseDto> updateSpaceMember(
@ApiResponse(responseCode = "403", description = "해당 스페이스 멤버가 아님")
})
@GetMapping("/{spaceId}/tag")
public ResponseEntity<List<SpaceMemberResponseDto>> getMemberByTag(
public ResponseEntity<List<SpaceMemberListResponseDto>> getMemberByTag(

@Parameter(description = "조회할 스페이스 ID", required = true)
@PathVariable Long spaceId,
@Parameter(description = "조회할 멤버의 태그", required = true)
@RequestParam String tag,
@Parameter(hidden = true)
@AuthenticationPrincipal CustomUserDetails principal
) {
List<SpaceMemberResponseDto> result = spaceMemberService.getMemberByTag(spaceId, tag, principal.getUserId());
List<SpaceMemberListResponseDto> result = spaceMemberService.getMemberByTag(spaceId, tag, principal.getUserId());

return ResponseEntity.ok(result);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.fastcampus.jober.space.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.fastcampus.jober.space.entity.Authority;

@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpaceMemberListResponseDto {
@Schema(description = "구성원 이름", example = "홍길동")
private String name;

@Schema(description = "구성원 이메일", example = "aaa@aaa.com")
private String email;

@Schema(description = "구성원 권한", example = "ADMIN")
private Authority authority;

@Schema(description = "구성원 태그", example = "마케팅팀")
private String tag;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
import java.util.List;

import org.fastcampus.jober.space.dto.response.MemberUpdateResponseDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberListResponseDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberResponseDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;

import org.fastcampus.jober.space.dto.request.SpaceMemberRequestDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberResponseDto;
import org.fastcampus.jober.space.entity.Space;
import org.fastcampus.jober.space.entity.SpaceMember;
import org.fastcampus.jober.user.entity.Users;
Expand All @@ -22,10 +23,15 @@ public interface SpaceMemberMapper {

MemberUpdateResponseDto toMemberUpdateResponseDto(SpaceMember member);

@Mapping(source = "user.name", target = "name")
@Mapping(source = "user.email", target = "email")
SpaceMemberListResponseDto toMemberResponseDto(SpaceMember member);

List<SpaceMemberListResponseDto> toMemberResponseDtoList(List<SpaceMember> spaceMembers);

@Mapping(source = "user.userId", target = "userId")
SpaceMemberResponseDto toResponseDto(SpaceMember member);

List<SpaceMemberResponseDto> toResponseDtoList(List<SpaceMember> spaceMembers);
List<SpaceMemberResponseDto> toResponseDtoList(List<SpaceMember> member);

@Mapping(
target = "space",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.fastcampus.jober.space.dto.InviteStatus;
import org.fastcampus.jober.space.dto.request.MemberUpdateRequestDto;
import org.fastcampus.jober.space.dto.response.MemberUpdateResponseDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberListResponseDto;
import org.fastcampus.jober.space.entity.*;
import org.fastcampus.jober.space.repository.InviteStatusRepository;
import org.fastcampus.jober.space.repository.SpaceRepository;
Expand All @@ -24,7 +25,6 @@
import lombok.RequiredArgsConstructor;

import org.fastcampus.jober.space.dto.request.SpaceMemberAddRequestDto;
import org.fastcampus.jober.space.dto.response.SpaceMemberResponseDto;
import org.fastcampus.jober.space.mapper.SpaceMemberMapper;
import org.fastcampus.jober.space.repository.SpaceMemberRepository;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -140,9 +140,9 @@ public void processSpaceInvitation(Long spaceId, String email, Users user) {
spaceMemberRepository.save(spaceMember);
}

public List<SpaceMemberResponseDto> getSpaceMembers(Long spaceId) {
public List<SpaceMemberListResponseDto> getSpaceMembers(Long spaceId) {
List<SpaceMember> spaceMembers = spaceMemberRepository.findBySpaceId(spaceId);
return spaceMemberMapper.toResponseDtoList(spaceMembers);
return spaceMemberMapper.toMemberResponseDtoList(spaceMembers);
}

@Transactional
Expand Down Expand Up @@ -172,14 +172,17 @@ public MemberUpdateResponseDto updateMember(Long memberId, Long spaceId, MemberU
return spaceMemberMapper.toMemberUpdateResponseDto(member);
}

public List<SpaceMemberResponseDto> getMemberByTag(Long spaceId, String tag, Long userId) {
public List<SpaceMemberListResponseDto> getMemberByTag(Long spaceId, String tag, Long userId) {

spaceRepository.findByIdOrThrow(spaceId);

spaceMemberRepository.findBySpaceIdAndUserId(spaceId, userId)
.orElseThrow(() -> new BusinessException(ErrorCode.FORBIDDEN, "해당 스페이스 멤버만 조회할 수 있습니다."));

List<SpaceMember> members = spaceMemberRepository.findBySpaceIdAndTag(spaceId, tag);
return spaceMemberMapper.toResponseDtoList(members);

return spaceMemberMapper.toMemberResponseDtoList(members);

}

}