Skip to content

feat: #189-운영진 ) 회원 관리 API #197

Merged
tishakong merged 10 commits intodev_tempfrom
feat/#189-executive
Feb 24, 2026
Merged

feat: #189-운영진 ) 회원 관리 API #197
tishakong merged 10 commits intodev_tempfrom
feat/#189-executive

Conversation

@yeongsinkeem
Copy link
Collaborator

이슈 번호

#189

작업 내용

  • 운영진 > 동아리/소모임 회원 관리 API

@yeongsinkeem yeongsinkeem self-assigned this Feb 23, 2026
@yeongsinkeem yeongsinkeem changed the title Feat/#189 executive feat: #189-운영진 ) 회원 관리 API Feb 23, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @yeongsinkeem, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 운영진이 동아리/소모임 회원을 관리하고 신고된 게시글을 처리할 수 있는 핵심 기능을 도입합니다. 또한, 시스템 전반에 걸쳐 계정 및 게시글의 활성 상태를 나타내는 Enum을 'AccountStatus'에서 'ActiveStatus'로 리팩토링하여 코드의 일관성과 가독성을 향상시켰습니다. 이러한 변경사항은 관리자 및 운영진의 효율적인 플랫폼 운영을 지원하며, 데이터 모델의 정확성을 높입니다.

Highlights

  • 상태 관리 Enum 리팩토링: 기존의 'AccountStatus' Enum이 'ActiveStatus'로 이름이 변경되고, 회원 및 게시글의 활성/삭제 상태를 관리하는 모든 관련 엔티티, DTO, 서비스, 리포지토리에서 이 변경사항이 일관되게 적용되었습니다. 이는 시스템 전반의 상태 관리 로직을 명확하게 합니다.
  • 운영진 회원 관리 기능 추가: 운영진이 동아리/소모임 회원을 관리할 수 있는 새로운 API 엔드포인트와 서비스 로직이 추가되었습니다. 이를 통해 운영진은 회원의 가입 신청을 승인하거나 반려할 수 있습니다.
  • 운영진 신고 게시글 관리 기능 추가: 운영진이 신고된 게시글을 조회하고 관리할 수 있는 기능이 도입되었습니다. 새로운 컨트롤러, DTO, 서비스, 리포지토리가 추가되어 신고 내역을 목록으로 확인하고 상세 정보를 조회할 수 있습니다.
  • 신고 엔티티 및 DTO 개선: Report 엔티티가 리팩토링되어 신고자(reporter)와 작성자(writer) 정보를 명확히 하고, 게시글 유형(postType) 및 신고 사유(reportReason) 필드가 추가되었습니다. 또한, 'createdAt' 필드가 'reportedAt'으로 변경되었고, 'ReportPost'라는 새로운 엔티티가 추가되었습니다.
  • 이벤트 서비스 유효성 검사 로직 개선: EventService 내에서 운영진 권한 및 멤버십 유효성을 검사하는 로직이 'memberOrgValidator' 컴포넌트 대신 서비스 내부에 직접 구현된 'validateExecutive' 및 'validateMembership' 메서드를 사용하도록 변경되었습니다.
Changelog
  • src/main/java/org/example/tackit/common/homePopular/HomePopularPostService.java
    • 인기 게시글 조회 쿼리에서 AccountStatus를 ActiveStatus로 변경했습니다.
  • src/main/java/org/example/tackit/config/CommonDataInitializer.java
    • 관리자 계정 초기화 시 AccountStatus를 ActiveStatus로 변경했습니다.
    • import 문을 재정렬했습니다.
  • src/main/java/org/example/tackit/config/jwt/TokenProvider.java
    • AccountStatus import를 ActiveStatus로 변경하고, 회원 상태 확인 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/dto/DeletedMemberDTO.java
    • AccountStatus import를 ActiveStatus로 변경하고, 관련 필드명과 from 메서드를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/dto/MemberDTO.java
    • AccountStatus import를 ActiveStatus로 변경하고, 관련 필드명을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminFreePostRepository.java
    • AccountStatus import를 ActiveStatus로 변경하고, findAllByAccountStatusAndReportCountGreaterThanEqual 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminMemberRepository.java
    • MemberType 및 Modifying import를 제거했습니다.
    • AccountStatus import를 ActiveStatus로 변경하고, 관련 쿼리 메서드를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminQnAPostRepository.java
    • AccountStatus import를 ActiveStatus로 변경하고, findAllByAccountStatusAndReportCountGreaterThanEqual 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminTipPostRepository.java
    • AccountStatus import를 ActiveStatus로 변경하고, findAllByAccountStatusAndReportCountGreaterThanEqual 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/service/AdminFreePostService.java
    • AccountStatus import를 ActiveStatus로 변경하고, getDeletedPosts 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/service/AdminMemberService.java
    • 여러 DTO import 및 관련 관리 로직을 제거했습니다.
  • src/main/java/org/example/tackit/domain/admin/service/AdminQnAPostService.java
    • AccountStatus import를 ActiveStatus로 변경하고, getDeletedPosts 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/admin/service/AdminTipPostService.java
    • AccountStatus import를 ActiveStatus로 변경하고, getDeletedPosts 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/auth/login/service/AuthService.java
    • import 문을 재정렬했습니다.
    • signup 메서드에서 AccountStatus를 ActiveStatus로 변경했습니다.
  • src/main/java/org/example/tackit/domain/auth/login/service/CustomUserDetailsService.java
    • import 문을 재정렬했습니다.
    • AccountStatus import를 ActiveStatus로 변경하고, 회원 상태 확인 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/auth/login/service/RejoinCheckService.java
    • import 문을 재정렬했습니다.
    • AccountStatus를 ActiveStatus로 변경하고, 관련 메서드 시그니처 및 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/entity/ActiveStatus.java
    • AccountStatus.java 파일이 ActiveStatus.java로 이름이 변경되었습니다.
    • Enum 이름이 AccountStatus에서 ActiveStatus로 변경되었습니다.
  • src/main/java/org/example/tackit/domain/entity/FreePost.java
    • accountStatus 필드명을 activeStatus로 변경하고, 관련 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/entity/Member.java
    • status 필드를 제거했습니다.
    • accountStatus 필드명을 activeStatus로 변경하고, deactivate 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/entity/Org/MemberOrg.java
    • 주석 처리된 club 및 community 필드를 제거했습니다.
    • 회원 상태를 업데이트하는 updateStatus 메서드를 추가했습니다.
  • src/main/java/org/example/tackit/domain/entity/QnAComment.java
    • accountStatus 필드명을 activeStatus로 변경했습니다.
  • src/main/java/org/example/tackit/domain/entity/QnAPost.java
    • accountStatus 필드명을 activeStatus로 변경하고, 관련 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/entity/Report.java
    • Report 엔티티의 필드를 재구성하여 writer, postType, reportReason을 추가했습니다.
    • createdAt 필드명을 reportedAt으로 변경했습니다.
    • fromDto 메서드를 from으로 변경하고 빌더 패턴을 사용하도록 업데이트했습니다.
    • ActiveStatus 필드를 추가했습니다.
  • src/main/java/org/example/tackit/domain/entity/ReportPost.java
    • 신고된 게시글 정보를 저장하는 ReportPost 엔티티를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/entity/TargetType.java
    • TIP_COMMENT Enum 값을 추가했습니다.
  • src/main/java/org/example/tackit/domain/entity/TipComment.java
    • accountStatus 필드명을 activeStatus로 변경했습니다.
  • src/main/java/org/example/tackit/domain/entity/TipPost.java
    • accountStatus 필드명을 activeStatus로 변경하고, 관련 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/event/service/EventService.java
    • MemberRole 및 OrgStatus import를 추가했습니다.
    • 이벤트 생성, 수정, 삭제, 조회 메서드에서 memberOrgValidator 대신 서비스 내부에 정의된 유효성 검사 메서드를 사용하도록 리팩토링했습니다.
  • src/main/java/org/example/tackit/domain/executive/controller/ExecutiveMemberController.java
    • 운영진 회원 관리를 위한 REST 컨트롤러를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/controller/ExecutiveReportController.java
    • 운영진 신고 게시글 관리를 위한 REST 컨트롤러를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/dto/response/MemberListResDto.java
    • 운영진 회원 목록 응답을 위한 DTO를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/dto/response/ReportedPostResDto.java
    • 운영진 신고 게시글 응답을 위한 DTO를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/repository/ExecutiveMemberRepository.java
    • 운영진 회원 관리를 위한 JpaRepository 인터페이스를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/service/ExecutiveMemberService.java
    • 운영진 회원 관리 (조회, 승인, 반려) 로직을 처리하는 서비스를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/executive/service/ExecutiveReportedPostService.java
    • 운영진 신고 게시글 관리 (조회, 상세 조회) 로직을 처리하는 서비스를 새로 추가했습니다.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreePostJPARepository.java
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/service/FreePostService.java
    • AccountStatus를 ActiveStatus로 변경하고, 게시글 생성 및 조회 로직을 업데이트했습니다.
    • MemberType import를 제거했습니다.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/repository/FreeTagCustomRepositoryImpl.java
    • QMember import를 제거했습니다.
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/member/repository/MemberOrgRepository.java
    • 특정 조직의 모든 멤버 관계 및 특정 상태의 멤버 관계를 조회하는 메서드를 추가했습니다.
  • src/main/java/org/example/tackit/domain/member/repository/MemberRepository.java
    • AccountStatus를 ActiveStatus로 변경하고, 관련 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/mypage/service/MyPageQnAService.java
    • AccountStatus를 ActiveStatus로 변경하고, getMyPosts 메서드 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/service/QnACommentService.java
    • AccountStatus를 ActiveStatus로 변경하고, 댓글 생성 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/repository/QnAPostRepository.java
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/service/QnAPostService.java
    • AccountStatus를 ActiveStatus로 변경하고, 게시글 생성 및 조회 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/repository/QnATagCustomRepositoryImpl.java
    • QFreePost 및 QMember import를 제거했습니다.
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/report/dto/ReportContentDetailDto.java
    • AccountStatus 필드명을 ActiveStatus로 변경했습니다.
  • src/main/java/org/example/tackit/domain/report/dto/ReportListDto.java
    • AccountStatus 필드명을 ActiveStatus로 변경했습니다.
  • src/main/java/org/example/tackit/domain/report/dto/ReportLogDto.java
    • reportReason 및 createdAt 필드를 Report 엔티티의 새로운 필드에 맞춰 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/report/dto/ReportRequestDto.java
    • postType 필드를 추가했습니다.
  • src/main/java/org/example/tackit/domain/report/repository/ReportRepository.java
    • ActiveStatus를 기준으로 신고 내역을 조회하는 findAllByActiveStatus 메서드를 추가했습니다.
    • 신고된 대상 그룹화 쿼리에서 createdAt을 reportedAt으로 변경했습니다.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/service/TipCommentService.java
    • AccountStatus를 ActiveStatus로 변경하고, 댓글 생성 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/repository/TipPostRepository.java
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리 메서드 시그니처를 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/service/TipPostService.java
    • AccountStatus를 ActiveStatus로 변경하고, 게시글 생성 로직을 업데이트했습니다.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/repository/TipTagCustomRepositoryImpl.java
    • AccountStatus를 ActiveStatus로 변경하고, 관련 쿼리를 업데이트했습니다.
  • src/test/java/org/example/tackit/MemberSchedulerTest.java
    • 사용되지 않는 import 문들을 제거했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 운영진을 위한 회원 관리 API를 추가하고, 전반적인 코드베이스에서 AccountStatusActiveStatus로 리팩토링하는 등 많은 변경 사항을 포함하고 있습니다. 새로운 기능 추가와 함께 코드의 명확성을 높이는 리팩토링이 이루어진 점이 좋습니다. 몇 가지 개선점을 제안합니다. Report 엔티티 생성 시 reportedAt 필드가 누락되어 있어 오류가 발생할 수 있습니다. 또한, 새로 추가된 ExecutiveMemberService의 회원 조회 로직에 "ALL" 상태를 처리하는 부분에 버그가 있습니다. 마지막으로, 새로 추가된 ReportPost 엔티티가 기존 Report 엔티티와 기능이 중복되어 보여 코드 중복 및 혼란을 야기할 수 있어 검토가 필요해 보입니다. 자세한 내용은 각 파일의 리뷰 코멘트를 참고해주세요.

Comment on lines +12 to +16
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "report_post")
public class ReportPost {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

새로 추가된 ReportPost 엔티티가 리팩토링된 Report 엔티티와 매우 유사하여 기능이 중복되는 것으로 보입니다. Report 엔티티는 이미 targetTypepostType 필드를 통해 다양한 종류의 신고(게시글, 댓글)를 처리할 수 있습니다. 또한, ReportPost 엔티티는 현재 코드베이스에서 사용되지 않고 있습니다. 코드 중복과 혼란을 피하기 위해 Report 엔티티로 기능을 통합하고 ReportPost 엔티티를 제거하는 것을 고려해 보세요.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

게시판 기능 통합한 후 신고 게시글도 통합하여 리팩토링 예정

@Column(nullable = false)
private ReportReason reportReason;

@Column(nullable = false)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yeongsinkeem
저같은 경우에는 이 경우에 builder에서 따로 localdatetime.now()를 넣는 대신에 @CreatedDate 어노테이션을 넣는 형태로 event, poll 객체 생성했었는데 추후에 통일하는 게 좋을 것 같습니다. 일단 당장은 메인 배포를 해야 프론트엔드에서 맞춰볼 수 있을 것 같아서 머지는 하겠습니다!

@tishakong tishakong merged commit 70928dd into dev_temp Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants