Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package MathCaptain.weakness;

import MathCaptain.weakness.domain.Group.dto.request.GroupCreateRequest;
import MathCaptain.weakness.domain.Group.entity.Group;
import MathCaptain.weakness.domain.Group.entity.RelationBetweenUserAndGroup;
import MathCaptain.weakness.domain.Group.enums.CategoryStatus;
Expand Down Expand Up @@ -95,35 +96,18 @@ public void init() {
.orElseThrow(() -> new IllegalArgumentException("해당 유저가 없습니다."));

/// 테스트 그룹 생성
Group group1 = Group.builder()
.name("testGroup1")
.category(CategoryStatus.STUDY)
.minDailyHours(2)
.minWeeklyDays(3)
.groupPoint(0L)
.hashtags(null)
.groupImageUrl("test")
.build();
GroupCreateRequest groupCreateRequest1 = GroupCreateRequest.of(users1.getUserId(), "testGroup1",
CategoryStatus.STUDY, 2, 3, 0L, null, "test1", 3, 4);

Group group2 = Group.builder()
.name("testGroup2")
.category(CategoryStatus.FITNESS)
.minDailyHours(2)
.minWeeklyDays(3)
.groupPoint(0L)
.hashtags(null)
.groupImageUrl("test1")
.build();
GroupCreateRequest groupCreateRequest2 = GroupCreateRequest.of(users1.getUserId(), "testGroup2",
CategoryStatus.FITNESS, 2, 3, 0L, null, "test2", 3, 4);

Group group3 = Group.builder()
.name("testGroup3")
.category(CategoryStatus.READING)
.minDailyHours(2)
.minWeeklyDays(3)
.groupPoint(0L)
.hashtags(null)
.groupImageUrl("test3")
.build();
GroupCreateRequest groupCreateRequest3 = GroupCreateRequest.of(users1.getUserId(), "testGroup3",
CategoryStatus.READING, 2, 3, 0L, null, "test3", 3, 4);

Group group1 = Group.of(groupCreateRequest1);
Group group2 = Group.of(groupCreateRequest2);
Group group3 = Group.of(groupCreateRequest3);

groupRepository.save(group1);
groupRepository.save(group2);
Expand All @@ -136,7 +120,6 @@ public void init() {
group3.updateWeeklyGoalAchieveMap(DayOfWeek.FRIDAY, 10);
group3.updateWeeklyGoalAchieveMap(DayOfWeek.SATURDAY, 1);
group3.updateWeeklyGoalAchieveMap(DayOfWeek.SUNDAY, 0);

groupRepository.save(group3);

log.info("======== 👥 테스트 그룹 생성 완료 =========");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package MathCaptain.weakness.domain.Group.controller;

import MathCaptain.weakness.domain.Group.dto.request.GroupSearchRequestDto;
import MathCaptain.weakness.domain.Group.dto.request.GroupUpdateRequestDto;
import MathCaptain.weakness.domain.Group.dto.response.GroupDetailResponseDto;
import MathCaptain.weakness.domain.Group.dto.response.GroupMemberListResponseDto;
import MathCaptain.weakness.domain.Group.dto.response.GroupResponseDto;
import MathCaptain.weakness.domain.Group.dto.response.RelationResponseDto;
import MathCaptain.weakness.domain.Group.dto.request.GroupSearchRequest;
import MathCaptain.weakness.domain.Group.dto.request.GroupUpdateRequest;
import MathCaptain.weakness.domain.Group.dto.response.GroupDetailResponse;
import MathCaptain.weakness.domain.Group.dto.response.GroupMemberListResponse;
import MathCaptain.weakness.domain.Group.dto.response.GroupResponse;
import MathCaptain.weakness.domain.Group.dto.response.RelationResponse;
import MathCaptain.weakness.domain.User.entity.Users;
import MathCaptain.weakness.domain.User.dto.response.UserResponse;
import MathCaptain.weakness.domain.Group.service.GroupService;
import MathCaptain.weakness.domain.Group.dto.request.GroupCreateRequestDto;
import MathCaptain.weakness.domain.Group.dto.request.GroupCreateRequest;
import MathCaptain.weakness.domain.Group.service.RelationService;
import MathCaptain.weakness.global.Api.ApiResponse;
import MathCaptain.weakness.global.annotation.LoginUser;
Expand All @@ -32,27 +32,28 @@ public class GroupController {

// 유저가 속한 그룹을 모두 보여줌
@GetMapping("/group")
public ApiResponse<List<GroupResponseDto>> getUsersGroups(@LoginUser Users loginUser) {
public ApiResponse<List<GroupResponse>> getUsersGroups(@LoginUser Users loginUser) {
return groupService.getUsersGroups(loginUser);
}

// 그룹 조회
@GetMapping("/group/{groupId}")
public ApiResponse<GroupResponseDto> groupInfo(@PathVariable Long groupId) {
public ApiResponse<GroupResponse> groupInfo(@PathVariable Long groupId) {
return ApiResponse.ok(groupService.getGroupInfo(groupId));
}

// 그룹 생성
@PostMapping("/group")
public ApiResponse<GroupResponseDto> createGroup(@Valid @LoginUser Users loginUser,
@RequestBody GroupCreateRequestDto groupCreateRequestDto, HttpServletResponse response) {
return groupService.createGroup(loginUser ,groupCreateRequestDto, response);
public ApiResponse<GroupResponse> createGroup(@Valid @LoginUser Users loginUser,
@RequestBody GroupCreateRequest groupCreateRequest) {
return groupService.createGroup(loginUser , groupCreateRequest);
}

// 그룹 정보 수정
@PutMapping("/group/{groupId}")
public ApiResponse<GroupResponseDto> updateGroup(@Valid @PathVariable Long groupId, @RequestBody GroupUpdateRequestDto groupUpdateRequestDto) {
return groupService.updateGroupInfo(groupId, groupUpdateRequestDto);
public ApiResponse<GroupResponse> updateGroup(@Valid @LoginUser Users loginUser,
@PathVariable Long groupId, @RequestBody GroupUpdateRequest groupUpdateRequest) {
return groupService.updateGroupInfo(loginUser, groupId, groupUpdateRequest);
}

// 그룹 삭제
Expand All @@ -71,26 +72,26 @@ public ApiResponse<List<UserResponse>> groupMembers(@PathVariable Long groupId)

// 그룹 관계 조회
@GetMapping("/group/relation/{relationId}")
public RelationResponseDto relationInfo(@PathVariable Long relationId) {
return relationService.getRelationInfo(relationId);
public RelationResponse relationInfo(@PathVariable Long relationId) {
return relationService.getRelationResponse(relationId);
}

// 그룹 상세 정보
@GetMapping("/group/detail/{groupId}")
public ApiResponse<GroupDetailResponseDto> groupDetail(@PathVariable Long groupId) {
public ApiResponse<GroupDetailResponse> groupDetail(@PathVariable Long groupId) {
return groupService.getGroupDetail(groupId);
}

// 그룹 멤버 리스트 (그룹 상세 페이지)
@GetMapping("/group/detail/{groupId}/members")
public ApiResponse<List<GroupMemberListResponseDto>> GroupMemberList(@PathVariable Long groupId) {
public ApiResponse<List<GroupMemberListResponse>> GroupMemberList(@PathVariable Long groupId) {
return ApiResponse.ok(relationService.getGroupMemberList(groupId));
}

// 그룹 검색 (그룹명)
@PostMapping("/group/search")
public ApiResponse<List<GroupResponseDto>> searchGroup(@RequestBody GroupSearchRequestDto groupSearchRequestDto) {
return groupService.getGroupInfo(groupSearchRequestDto.getGroupName());
public ApiResponse<List<GroupResponse>> searchGroup(@RequestBody GroupSearchRequest groupSearchRequest) {
return groupService.getGroupInfo(groupSearchRequest.getGroupName());
}

@GetMapping("/group/total")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package MathCaptain.weakness.domain.Group.controller;

import MathCaptain.weakness.domain.Group.dto.request.GroupJoinRequestDto;
import MathCaptain.weakness.domain.Group.dto.request.GroupJoinRequest;
import MathCaptain.weakness.domain.Group.enums.RequestStatus;
import MathCaptain.weakness.domain.Group.service.GroupJoinService;
import MathCaptain.weakness.domain.Group.service.RelationService;
Expand Down Expand Up @@ -32,8 +32,8 @@ public class GroupJoinController {
@PostMapping("/group/join/{groupId}")
public ApiResponse<?> joinGroup(@Valid @PathVariable Long groupId,
@LoginUser Users loginUser,
@RequestBody GroupJoinRequestDto groupJoinRequestDto) {
groupJoinService.joinGroupRequest(groupId, loginUser, groupJoinRequestDto);
@RequestBody GroupJoinRequest groupJoinRequest) {
groupJoinService.joinGroupRequest(groupId, loginUser, groupJoinRequest);
notificationService.notifyGroupJoinRequest(groupId, loginUser);
return ApiResponse.ok("그룹 가입 요청이 완료되었습니다.");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package MathCaptain.weakness.domain.Group.dto.request;

import MathCaptain.weakness.domain.Group.enums.CategoryStatus;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.*;
import org.hibernate.validator.constraints.Range;

import java.util.List;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class GroupCreateRequest {

private long leaderId;

@NotNull(message = "그룹 이름은 필수입니다.")
@Size(min = 3, max = 15, message = "그룹 이름은 최소 3글자 이상, 15글자 이하입니다.")
private String groupName;

@NotNull(message = "그룹 카테고리를 지정해주세요.")
private CategoryStatus category;

@Range(min = 1, max = 24, message = "최소 일일 시간 설정 오류!")
private int minDailyHours;

@Range(min = 1, max = 7, message = "최소 주간 일수 설정 오류!")
private int minWeeklyDays;

private Long groupPoint;

private List<String> hashtags;

private String groupImageUrl;

// leader 개인 목표
@Range(min = 1, max = 24, message = "개인 일일 목표 설정 오류!")
private int personalDailyGoal;

@Range(min = 1, max = 7, message = "개인 주간 목표 설정 오류!")
private int personalWeeklyGoal;

private GroupCreateRequest(long leaderId, String groupName, CategoryStatus category,
int minDailyHours, int minWeeklyDays, Long groupPoint,
List<String> hashtags, String groupImageUrl,
int personalDailyGoal, int personalWeeklyGoal) {
this.leaderId = leaderId;
this.groupName = groupName;
this.category = category;
this.minDailyHours = minDailyHours;
this.minWeeklyDays = minWeeklyDays;
this.groupPoint = groupPoint;
this.hashtags = hashtags;
this.groupImageUrl = groupImageUrl;
this.personalDailyGoal = personalDailyGoal;
this.personalWeeklyGoal = personalWeeklyGoal;
}

public static GroupCreateRequest of(long leaderId, String groupName, CategoryStatus category,
int minDailyHours, int minWeeklyDays, Long groupPoint,
List<String> hashtags, String groupImageUrl,
int personalDailyGoal, int personalWeeklyGoal) {
return new GroupCreateRequest(leaderId, groupName, category, minDailyHours, minWeeklyDays, groupPoint, hashtags, groupImageUrl, personalDailyGoal, personalWeeklyGoal);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package MathCaptain.weakness.domain.Group.dto.request;

import lombok.*;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class GroupJoinRequest {

private int personalDailyGoal;

private int personalWeeklyGoal;

private GroupJoinRequest(int personalDailyGoal, int personalWeeklyGoal) {
this.personalDailyGoal = personalDailyGoal;
this.personalWeeklyGoal = personalWeeklyGoal;
}

public static GroupJoinRequest of(GroupCreateRequest groupCreateRequest) {
return new GroupJoinRequest(groupCreateRequest.getPersonalDailyGoal(), groupCreateRequest.getPersonalWeeklyGoal());
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Data
public class GroupSearchRequestDto {
@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class GroupSearchRequest {

@NotNull(message = "그룹 이름을 입력해주세요.")
@NotBlank(message = "그룹 이름을 입력해주세요.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,14 @@

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import org.hibernate.validator.constraints.Range;

import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GroupUpdateRequestDto {
@Getter
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class GroupUpdateRequest {

@NotNull(message = "그룹 이름은 필수입니다.")
@Size(min = 3, max = 15, message = "그룹 이름은 최소 3글자 이상, 15글자 이하입니다.")
Expand Down
Loading