From 11a27cce2634504a530970d22d207d4f93052ef4 Mon Sep 17 00:00:00 2001 From: midday2612 Date: Mon, 9 Jun 2025 11:17:01 +0900 Subject: [PATCH 1/2] =?UTF-8?q?KW-624/chore/=EB=B3=B4=EC=95=88=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SecurityGroupController.java | 112 ---------------- .../securitygroup/domain/GroupArea.java | 36 ----- .../securitygroup/domain/GroupMember.java | 36 ----- .../securitygroup/domain/SecurityGroup.java | 40 ------ .../dto/request/GroupAreaRequest.java | 7 - .../dto/request/GroupMemberRequest.java | 7 - .../dto/request/SecurityGroupRequest.java | 11 -- .../dto/response/GroupAreaResponse.java | 13 -- .../dto/response/GroupMemberResponse.java | 14 -- .../dto/response/SecurityGroupResponse.java | 16 --- .../repository/GroupAreaRepository.java | 14 -- .../repository/GroupMemberRepository.java | 14 -- .../repository/SecurityGroupRepository.java | 8 -- .../service/SecurityGroupService.java | 31 ----- .../service/SecurityGroupServiceImpl.java | 126 ------------------ 15 files changed, 485 deletions(-) delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/controller/SecurityGroupController.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupArea.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupMember.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/domain/SecurityGroup.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupAreaRequest.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupMemberRequest.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/SecurityGroupRequest.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupAreaResponse.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupMemberResponse.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/SecurityGroupResponse.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupAreaRepository.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupMemberRepository.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/repository/SecurityGroupRepository.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupService.java delete mode 100644 src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupServiceImpl.java diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/controller/SecurityGroupController.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/controller/SecurityGroupController.java deleted file mode 100644 index ed20157..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/controller/SecurityGroupController.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.controller; - -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupAreaRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupMemberRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.SecurityGroupRequest; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupAreaResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupMemberResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.SecurityGroupResponse; -import com.doubleo.passservice.domain.securitygroup.service.SecurityGroupService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import java.util.List; -import lombok.AllArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/access/group") -@AllArgsConstructor -public class SecurityGroupController { - - private final SecurityGroupService securityGroupService; - - @Operation(summary = "Security Group create API", description = "Security Group을 생성하기 위한 API") - @ApiResponses({ - @ApiResponse(responseCode = "201", description = "CREATED"), - @ApiResponse(responseCode = "400", description = "BAD REQUEST") - }) - @PostMapping - public ResponseEntity createSecurityGroup( - @RequestBody SecurityGroupRequest request) { - return ResponseEntity.ok(securityGroupService.createSecurityGroup(request)); - } - - @Operation(summary = "Security Group update API", description = "Security Group을 수정하기 위한 API") - @PatchMapping("/{groupId}") - public ResponseEntity updateSecurityGroup( - @PathVariable Long groupId, @RequestBody SecurityGroupRequest request) { - return ResponseEntity.ok(securityGroupService.updateSecurityGroup(groupId, request)); - } - - @Operation(summary = "Security Group remove API", description = "Security Group을 삭제하기 위한 API") - @DeleteMapping("/{groupId}") - public ResponseEntity deleteSecurityGroup(@PathVariable Long groupId) { - securityGroupService.deleteSecurityGroup(groupId); - return ResponseEntity.noContent().build(); - } - - @Operation( - summary = "All Security Group get API", - description = "모든 Security Group을 조회하기 위한 API") - @GetMapping - public ResponseEntity> getAllSecurityGroups() { - return ResponseEntity.ok(securityGroupService.getAllSecurityGroups()); - } - - @Operation( - summary = "Security Group Member get API", - description = "Security Group의 Member를 조회하기 위한 API") - @GetMapping("/{groupId}/members") - public ResponseEntity> getAllGroupMembers( - @PathVariable Long groupId) { - return ResponseEntity.ok(securityGroupService.getAllGroupMembers(groupId)); - } - - @Operation( - summary = "Security Group Member add API", - description = "Security Group의 Member를 추가하기 위한 API") - @PostMapping("/{groupId}/members") - public ResponseEntity addGroupMember( - @PathVariable Long groupId, @RequestBody GroupMemberRequest request) { - return ResponseEntity.ok(securityGroupService.addGroupMember(groupId, request)); - } - - @Operation( - summary = "Security Group Member delete API", - description = "Security Group의 Member를 삭제하기 위한 API") - @DeleteMapping("/{groupId}/members/{employeeId}") - public ResponseEntity deleteGroupMember( - @PathVariable Long groupId, @PathVariable GroupMemberRequest request) { - securityGroupService.deleteGroupMember(groupId, request); - return ResponseEntity.noContent().build(); - } - - @Operation( - summary = "Security Group Area get API", - description = "Security Group에 접근 가능 구역을 조회하기 위한 API") - @GetMapping("/{groupId}/areas") - public ResponseEntity> getAllGroupAreas(@PathVariable Long groupId) { - return ResponseEntity.ok(securityGroupService.getAllGroupAreas(groupId)); - } - - @Operation( - summary = "Security Group Area add API", - description = "Security Group에 접근 가능 구역을 추가하기 위한 API") - @PostMapping("/{groupId}/areas") - public ResponseEntity addGroupArea( - @PathVariable Long groupId, @RequestBody GroupAreaRequest request) { - return ResponseEntity.ok(securityGroupService.addGroupArea(groupId, request)); - } - - @Operation( - summary = "Security Group Area delete API", - description = "Security Group에 접근 가능 구역을 삭제하기 위한 API") - @DeleteMapping("/{groupId}/areas/{areaId}") - public ResponseEntity deleteGroupArea( - @PathVariable Long groupId, @PathVariable GroupAreaRequest request) { - securityGroupService.deleteGroupArea(groupId, request); - return ResponseEntity.noContent().build(); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupArea.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupArea.java deleted file mode 100644 index ba9ddca..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupArea.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.domain; - -import jakarta.persistence.*; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Entity -@Table( - name = "security_group_area", - uniqueConstraints = @UniqueConstraint(columnNames = {"group_id", "area_id"})) -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public class GroupArea { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @JoinColumn(name = "group_id") - @ManyToOne(fetch = FetchType.LAZY) - private SecurityGroup securityGroup; - - @Column(name = "area_id", nullable = false) - private Long areaId; - - @Builder(access = AccessLevel.PRIVATE) - private GroupArea(SecurityGroup securityGroup, Long areaId) { - this.securityGroup = securityGroup; - this.areaId = areaId; - } - - public static GroupArea createGroupArea(SecurityGroup securityGroup, Long areaId) { - return GroupArea.builder().securityGroup(securityGroup).areaId(areaId).build(); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupMember.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupMember.java deleted file mode 100644 index 3217814..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/GroupMember.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.domain; - -import jakarta.persistence.*; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Entity -@Table( - name = "security_group_member", - uniqueConstraints = @UniqueConstraint(columnNames = {"group_id", "employee_id"})) -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public class GroupMember { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @JoinColumn(name = "group_id") - @ManyToOne(fetch = FetchType.LAZY) - private SecurityGroup securityGroup; - - @Column(name = "employee_id", nullable = false) - private Long employeeId; - - @Builder(access = AccessLevel.PRIVATE) - private GroupMember(SecurityGroup securityGroup, Long employeeId) { - this.securityGroup = securityGroup; - this.employeeId = employeeId; - } - - public static GroupMember createGroupMember(SecurityGroup securityGroup, Long employeeId) { - return GroupMember.builder().securityGroup(securityGroup).employeeId(employeeId).build(); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/SecurityGroup.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/SecurityGroup.java deleted file mode 100644 index f0ed694..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/domain/SecurityGroup.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.domain; - -import com.doubleo.passservice.domain.common.model.BaseEntity; -import jakarta.persistence.*; -import lombok.AccessLevel; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Entity -@Table(name = "security_group") -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -public class SecurityGroup extends BaseEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "group_id") - private Long id; - - @Column(name = "group_name", nullable = false, unique = true) - private String groupName; - - @Column(name = "description") - private String description; - - @Builder(access = AccessLevel.PRIVATE) - private SecurityGroup(String groupName, String description) { - this.groupName = groupName; - this.description = description; - } - - public void updateSecurityGroup(String groupName, String description) { - this.groupName = groupName; - this.description = description; - } - - public static SecurityGroup createSecurityGroup(String groupName, String description) { - return SecurityGroup.builder().groupName(groupName).description(description).build(); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupAreaRequest.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupAreaRequest.java deleted file mode 100644 index 8420faf..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupAreaRequest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.request; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; - -public record GroupAreaRequest( - @Schema(description = "구역 ID", example = "1") @NotNull Long areaId) {} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupMemberRequest.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupMemberRequest.java deleted file mode 100644 index 6250012..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/GroupMemberRequest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.request; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; - -public record GroupMemberRequest( - @Schema(description = "사원 ID", example = "1") @NotNull Long employeeId) {} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/SecurityGroupRequest.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/SecurityGroupRequest.java deleted file mode 100644 index 93cf75d..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/request/SecurityGroupRequest.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.request; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; - -public record SecurityGroupRequest( - @Schema(description = "그룹 이름", example = "팀 1") @NotNull String groupName, - @Schema(description = "그룹 설명", example = "프로젝트 1을 위한 보안 그룹입니다.") - @Size(max = 100, message = "그룹 설명은 최대 100자까지 입력 가능합니다.") - String description) {} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupAreaResponse.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupAreaResponse.java deleted file mode 100644 index 9d0d24c..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupAreaResponse.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.response; - -import com.doubleo.passservice.domain.securitygroup.domain.GroupArea; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; - -public record GroupAreaResponse( - @Schema(description = "그룹 ID", example = "1") @NotNull Long groupId, - @Schema(description = "구역 ID", example = "1") @NotNull Long areaId) { - public static GroupAreaResponse from(GroupArea groupArea) { - return new GroupAreaResponse(groupArea.getSecurityGroup().getId(), groupArea.getAreaId()); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupMemberResponse.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupMemberResponse.java deleted file mode 100644 index c59d366..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/GroupMemberResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.response; - -import com.doubleo.passservice.domain.securitygroup.domain.GroupMember; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; - -public record GroupMemberResponse( - @Schema(description = "그룹 ID", example = "1") @NotNull Long groupId, - @Schema(description = "사원 ID", example = "1") @NotNull Long employeeId) { - public static GroupMemberResponse from(GroupMember groupMember) { - return new GroupMemberResponse( - groupMember.getSecurityGroup().getId(), groupMember.getEmployeeId()); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/SecurityGroupResponse.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/SecurityGroupResponse.java deleted file mode 100644 index 6a17960..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/dto/response/SecurityGroupResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.dto.response; - -import com.doubleo.passservice.domain.securitygroup.domain.SecurityGroup; -import io.swagger.v3.oas.annotations.media.Schema; - -public record SecurityGroupResponse( - @Schema(description = "보안그룹 아이디", example = "1") Long groupId, - @Schema(description = "보안그룹 이름", example = "팀 1") String groupName, - @Schema(description = "보안그룹 설명", example = "프로젝트 1을 위한 그룹입니다.") String description) { - public static SecurityGroupResponse from(SecurityGroup securityGroup) { - return new SecurityGroupResponse( - securityGroup.getId(), - securityGroup.getGroupName(), - securityGroup.getDescription()); - } -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupAreaRepository.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupAreaRepository.java deleted file mode 100644 index 8af92c4..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupAreaRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.repository; - -import com.doubleo.passservice.domain.securitygroup.domain.GroupArea; -import jakarta.validation.constraints.NotNull; -import java.util.List; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface GroupAreaRepository extends JpaRepository { - List findAllBySecurityGroup_Id(Long groupId); - - void deleteBySecurityGroup_IdAndAreaId(Long groupId, Long groupAreaId); - - boolean existsBySecurityGroup_IdAndAreaId(Long groupId, @NotNull Long aLong); -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupMemberRepository.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupMemberRepository.java deleted file mode 100644 index 821e6e1..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/GroupMemberRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.repository; - -import com.doubleo.passservice.domain.securitygroup.domain.GroupMember; -import jakarta.validation.constraints.NotNull; -import java.util.List; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface GroupMemberRepository extends JpaRepository { - List findAllBySecurityGroup_Id(Long groupId); - - void deleteBySecurityGroup_IdAndEmployeeId(Long groupId, Long employeeId); - - boolean existsBySecurityGroup_IdAndEmployeeId(Long groupId, @NotNull Long employeeId); -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/SecurityGroupRepository.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/SecurityGroupRepository.java deleted file mode 100644 index c7c7e5d..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/repository/SecurityGroupRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.repository; - -import com.doubleo.passservice.domain.securitygroup.domain.SecurityGroup; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface SecurityGroupRepository extends JpaRepository { - boolean existsByGroupName(String groupName); -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupService.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupService.java deleted file mode 100644 index dfbcdd8..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.service; - -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupAreaRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupMemberRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.SecurityGroupRequest; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupAreaResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupMemberResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.SecurityGroupResponse; -import java.util.List; - -public interface SecurityGroupService { - SecurityGroupResponse createSecurityGroup(SecurityGroupRequest request); - - SecurityGroupResponse updateSecurityGroup(Long groupId, SecurityGroupRequest request); - - void deleteSecurityGroup(Long groupId); - - List getAllSecurityGroups(); - - GroupMemberResponse addGroupMember(Long groupId, GroupMemberRequest request); - - void deleteGroupMember(Long groupId, GroupMemberRequest request); - - List getAllGroupMembers(Long groupId); - - GroupAreaResponse addGroupArea(Long groupId, GroupAreaRequest request); - - void deleteGroupArea(Long groupId, GroupAreaRequest request); - - List getAllGroupAreas(Long groupId); -} diff --git a/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupServiceImpl.java b/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupServiceImpl.java deleted file mode 100644 index d6231e0..0000000 --- a/src/main/java/com/doubleo/passservice/domain/securitygroup/service/SecurityGroupServiceImpl.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.doubleo.passservice.domain.securitygroup.service; - -import com.doubleo.passservice.domain.securitygroup.domain.GroupArea; -import com.doubleo.passservice.domain.securitygroup.domain.GroupMember; -import com.doubleo.passservice.domain.securitygroup.domain.SecurityGroup; -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupAreaRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.GroupMemberRequest; -import com.doubleo.passservice.domain.securitygroup.dto.request.SecurityGroupRequest; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupAreaResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.GroupMemberResponse; -import com.doubleo.passservice.domain.securitygroup.dto.response.SecurityGroupResponse; -import com.doubleo.passservice.domain.securitygroup.repository.GroupAreaRepository; -import com.doubleo.passservice.domain.securitygroup.repository.GroupMemberRepository; -import com.doubleo.passservice.domain.securitygroup.repository.SecurityGroupRepository; -import java.util.List; -import java.util.Optional; -import lombok.RequiredArgsConstructor; -import org.modelmapper.ModelMapper; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -@RequiredArgsConstructor -public class SecurityGroupServiceImpl implements SecurityGroupService { - private final GroupAreaRepository groupAreaRepository; - private final GroupMemberRepository groupMemberRepository; - private final SecurityGroupRepository securityGroupRepository; - - private final ModelMapper modelMapper; - - @Override - public SecurityGroupResponse createSecurityGroup(SecurityGroupRequest request) { - if (securityGroupRepository.existsByGroupName(request.groupName())) { - throw new IllegalArgumentException("Group name already exists"); - } - SecurityGroup securityGroup = - SecurityGroup.createSecurityGroup(request.groupName(), request.description()); - securityGroupRepository.save(securityGroup); - return SecurityGroupResponse.from(securityGroup); - } - - @Override - public SecurityGroupResponse updateSecurityGroup(Long groupId, SecurityGroupRequest request) { - Optional securityGroup = securityGroupRepository.findById(groupId); - if (securityGroup.isEmpty()) { - throw new IllegalArgumentException("Group not found"); - } - SecurityGroup securityGroupEntity = securityGroup.get(); - if (securityGroupRepository.existsByGroupName(request.groupName())) { - throw new IllegalArgumentException("Group name already exists"); - } - securityGroupEntity.updateSecurityGroup(request.groupName(), request.description()); - securityGroupRepository.save(securityGroupEntity); - return SecurityGroupResponse.from(securityGroupEntity); - } - - @Override - public void deleteSecurityGroup(Long groupId) { - securityGroupRepository.deleteById(groupId); - } - - @Transactional(readOnly = true) - @Override - public List getAllSecurityGroups() { - return securityGroupRepository.findAll().stream().map(SecurityGroupResponse::from).toList(); - } - - @Override - public GroupMemberResponse addGroupMember(Long groupId, GroupMemberRequest request) { - Optional securityGroup = securityGroupRepository.findById(groupId); - if (securityGroup.isEmpty()) { - throw new IllegalArgumentException("Group not found"); - } - SecurityGroup securityGroupEntity = securityGroup.get(); - if (groupMemberRepository.existsBySecurityGroup_IdAndEmployeeId( - groupId, request.employeeId())) { - throw new IllegalArgumentException("Employee id already exists"); - } - GroupMember groupMember = - GroupMember.createGroupMember(securityGroupEntity, request.employeeId()); - groupMemberRepository.save(groupMember); - return GroupMemberResponse.from(groupMember); - } - - @Override - public void deleteGroupMember(Long groupId, GroupMemberRequest request) { - groupMemberRepository.deleteBySecurityGroup_IdAndEmployeeId(groupId, request.employeeId()); - } - - @Transactional(readOnly = true) - @Override - public List getAllGroupMembers(Long groupId) { - return groupMemberRepository.findAllBySecurityGroup_Id(groupId).stream() - .map(GroupMemberResponse::from) - .toList(); - } - - @Override - public GroupAreaResponse addGroupArea(Long groupId, GroupAreaRequest request) { - Optional securityGroup = securityGroupRepository.findById(groupId); - if (securityGroup.isEmpty()) { - throw new IllegalArgumentException("Group not found"); - } - SecurityGroup securityGroupEntity = securityGroup.get(); - if (groupAreaRepository.existsBySecurityGroup_IdAndAreaId(groupId, request.areaId())) { - throw new IllegalArgumentException("Area id already exists"); - } - GroupArea groupArea = GroupArea.createGroupArea(securityGroupEntity, request.areaId()); - groupAreaRepository.save(groupArea); - return GroupAreaResponse.from(groupArea); - } - - @Override - public void deleteGroupArea(Long groupId, GroupAreaRequest request) { - groupAreaRepository.deleteBySecurityGroup_IdAndAreaId(groupId, request.areaId()); - } - - @Transactional(readOnly = true) - @Override - public List getAllGroupAreas(Long groupId) { - return groupAreaRepository.findAllBySecurityGroup_Id(groupId).stream() - .map(GroupAreaResponse::from) - .toList(); - } -} From bd7432cc3599259fd0bc6d73842964b7cac496f9 Mon Sep 17 00:00:00 2001 From: midday2612 Date: Mon, 9 Jun 2025 11:21:13 +0900 Subject: [PATCH 2/2] =?UTF-8?q?KW-624/refactor/pass=20count=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC|=20pass=20->=20stats?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/pass/service/PassCountService.java | 9 --------- .../{pass => stats}/controller/PassCountController.java | 8 ++++---- .../dto/request/PassCountInfoRequest.java | 2 +- .../dto/response/PassCountInfoResponse.java | 2 +- .../repository/IssuedLogQueryRepository.java | 2 +- .../domain/stats/service/PassCountService.java | 9 +++++++++ .../{pass => stats}/service/PassCountServiceImpl.java | 8 ++++---- 7 files changed, 20 insertions(+), 20 deletions(-) delete mode 100644 src/main/java/com/doubleo/passservice/domain/pass/service/PassCountService.java rename src/main/java/com/doubleo/passservice/domain/{pass => stats}/controller/PassCountController.java (64%) rename src/main/java/com/doubleo/passservice/domain/{pass => stats}/dto/request/PassCountInfoRequest.java (95%) rename src/main/java/com/doubleo/passservice/domain/{pass => stats}/dto/response/PassCountInfoResponse.java (70%) rename src/main/java/com/doubleo/passservice/domain/{pass => stats}/repository/IssuedLogQueryRepository.java (96%) create mode 100644 src/main/java/com/doubleo/passservice/domain/stats/service/PassCountService.java rename src/main/java/com/doubleo/passservice/domain/{pass => stats}/service/PassCountServiceImpl.java (86%) diff --git a/src/main/java/com/doubleo/passservice/domain/pass/service/PassCountService.java b/src/main/java/com/doubleo/passservice/domain/pass/service/PassCountService.java deleted file mode 100644 index 870f5d8..0000000 --- a/src/main/java/com/doubleo/passservice/domain/pass/service/PassCountService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.doubleo.passservice.domain.pass.service; - -import com.doubleo.passservice.domain.pass.dto.request.PassCountInfoRequest; -import com.doubleo.passservice.domain.pass.dto.response.PassCountInfoResponse; -import java.util.List; - -public interface PassCountService { - List getPassCount(PassCountInfoRequest request); -} diff --git a/src/main/java/com/doubleo/passservice/domain/pass/controller/PassCountController.java b/src/main/java/com/doubleo/passservice/domain/stats/controller/PassCountController.java similarity index 64% rename from src/main/java/com/doubleo/passservice/domain/pass/controller/PassCountController.java rename to src/main/java/com/doubleo/passservice/domain/stats/controller/PassCountController.java index 86ef599..1b3287b 100644 --- a/src/main/java/com/doubleo/passservice/domain/pass/controller/PassCountController.java +++ b/src/main/java/com/doubleo/passservice/domain/stats/controller/PassCountController.java @@ -1,8 +1,8 @@ -package com.doubleo.passservice.domain.pass.controller; +package com.doubleo.passservice.domain.stats.controller; -import com.doubleo.passservice.domain.pass.dto.request.PassCountInfoRequest; -import com.doubleo.passservice.domain.pass.dto.response.PassCountInfoResponse; -import com.doubleo.passservice.domain.pass.service.PassCountService; +import com.doubleo.passservice.domain.stats.dto.request.PassCountInfoRequest; +import com.doubleo.passservice.domain.stats.dto.response.PassCountInfoResponse; +import com.doubleo.passservice.domain.stats.service.PassCountService; import jakarta.validation.Valid; import java.util.List; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/doubleo/passservice/domain/pass/dto/request/PassCountInfoRequest.java b/src/main/java/com/doubleo/passservice/domain/stats/dto/request/PassCountInfoRequest.java similarity index 95% rename from src/main/java/com/doubleo/passservice/domain/pass/dto/request/PassCountInfoRequest.java rename to src/main/java/com/doubleo/passservice/domain/stats/dto/request/PassCountInfoRequest.java index f42d1ab..d014416 100644 --- a/src/main/java/com/doubleo/passservice/domain/pass/dto/request/PassCountInfoRequest.java +++ b/src/main/java/com/doubleo/passservice/domain/stats/dto/request/PassCountInfoRequest.java @@ -1,4 +1,4 @@ -package com.doubleo.passservice.domain.pass.dto.request; +package com.doubleo.passservice.domain.stats.dto.request; import com.doubleo.passservice.domain.pass.enums.VisitCategory; import com.doubleo.passservice.global.exception.CommonException; diff --git a/src/main/java/com/doubleo/passservice/domain/pass/dto/response/PassCountInfoResponse.java b/src/main/java/com/doubleo/passservice/domain/stats/dto/response/PassCountInfoResponse.java similarity index 70% rename from src/main/java/com/doubleo/passservice/domain/pass/dto/response/PassCountInfoResponse.java rename to src/main/java/com/doubleo/passservice/domain/stats/dto/response/PassCountInfoResponse.java index b8ca45a..842d061 100644 --- a/src/main/java/com/doubleo/passservice/domain/pass/dto/response/PassCountInfoResponse.java +++ b/src/main/java/com/doubleo/passservice/domain/stats/dto/response/PassCountInfoResponse.java @@ -1,4 +1,4 @@ -package com.doubleo.passservice.domain.pass.dto.response; +package com.doubleo.passservice.domain.stats.dto.response; import java.time.LocalDate; diff --git a/src/main/java/com/doubleo/passservice/domain/pass/repository/IssuedLogQueryRepository.java b/src/main/java/com/doubleo/passservice/domain/stats/repository/IssuedLogQueryRepository.java similarity index 96% rename from src/main/java/com/doubleo/passservice/domain/pass/repository/IssuedLogQueryRepository.java rename to src/main/java/com/doubleo/passservice/domain/stats/repository/IssuedLogQueryRepository.java index 1749301..ba27f9e 100644 --- a/src/main/java/com/doubleo/passservice/domain/pass/repository/IssuedLogQueryRepository.java +++ b/src/main/java/com/doubleo/passservice/domain/stats/repository/IssuedLogQueryRepository.java @@ -1,4 +1,4 @@ -package com.doubleo.passservice.domain.pass.repository; +package com.doubleo.passservice.domain.stats.repository; import com.doubleo.passservice.domain.pass.enums.VisitCategory; import jakarta.persistence.EntityManager; diff --git a/src/main/java/com/doubleo/passservice/domain/stats/service/PassCountService.java b/src/main/java/com/doubleo/passservice/domain/stats/service/PassCountService.java new file mode 100644 index 0000000..6b6745a --- /dev/null +++ b/src/main/java/com/doubleo/passservice/domain/stats/service/PassCountService.java @@ -0,0 +1,9 @@ +package com.doubleo.passservice.domain.stats.service; + +import com.doubleo.passservice.domain.stats.dto.request.PassCountInfoRequest; +import com.doubleo.passservice.domain.stats.dto.response.PassCountInfoResponse; +import java.util.List; + +public interface PassCountService { + List getPassCount(PassCountInfoRequest request); +} diff --git a/src/main/java/com/doubleo/passservice/domain/pass/service/PassCountServiceImpl.java b/src/main/java/com/doubleo/passservice/domain/stats/service/PassCountServiceImpl.java similarity index 86% rename from src/main/java/com/doubleo/passservice/domain/pass/service/PassCountServiceImpl.java rename to src/main/java/com/doubleo/passservice/domain/stats/service/PassCountServiceImpl.java index 37ad24a..2b7a38f 100644 --- a/src/main/java/com/doubleo/passservice/domain/pass/service/PassCountServiceImpl.java +++ b/src/main/java/com/doubleo/passservice/domain/stats/service/PassCountServiceImpl.java @@ -1,9 +1,9 @@ -package com.doubleo.passservice.domain.pass.service; +package com.doubleo.passservice.domain.stats.service; -import com.doubleo.passservice.domain.pass.dto.request.PassCountInfoRequest; -import com.doubleo.passservice.domain.pass.dto.response.PassCountInfoResponse; import com.doubleo.passservice.domain.pass.enums.VisitCategory; -import com.doubleo.passservice.domain.pass.repository.IssuedLogQueryRepository; +import com.doubleo.passservice.domain.stats.dto.request.PassCountInfoRequest; +import com.doubleo.passservice.domain.stats.dto.response.PassCountInfoResponse; +import com.doubleo.passservice.domain.stats.repository.IssuedLogQueryRepository; import com.doubleo.passservice.global.util.TenantValidator; import com.doubleo.passservice.grpc.client.AreaClient; import java.time.LocalDate;