diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/Admin.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/Admin.java new file mode 100644 index 0000000..f43960e --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/Admin.java @@ -0,0 +1,52 @@ +package com.bpgroup.poc.admin.domain.base.admin.entity; + +import com.bpgroup.poc.admin.domain.entity.BaseEntity; +import jakarta.persistence.*; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Entity +@Table(name = "admin") +public class Admin extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "login_id", length = 100, nullable = false) + private String loginId; + + @Column(name = "password", length = 255, nullable = false) + private String password; + + @Column(name = "email", length = 100, nullable = false) + private String email; + + @Column(name = "name", length = 100, nullable = false) + private String name; + + @Embedded + private AdminRole adminRole; + + @Builder + public static Admin of(String loginId, String password, String email, String name) { + Admin admin = new Admin(); + admin.loginId = loginId; + admin.password = password; + admin.email = email; + admin.name = name; + return admin; + } + + public void update(Admin admin) { + this.password = admin.password; + this.email = admin.email; + this.name = admin.name; + this.adminRole = admin.adminRole; + } + + public void setAdminRole(AdminRole adminRole) { + this.adminRole = adminRole; + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRepository.java new file mode 100644 index 0000000..d2eadff --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRepository.java @@ -0,0 +1,9 @@ +package com.bpgroup.poc.admin.domain.base.admin.entity; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface AdminRepository extends JpaRepository { + Optional findByLoginId(String loginId); +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRole.java new file mode 100644 index 0000000..291d7fe --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/entity/AdminRole.java @@ -0,0 +1,22 @@ +package com.bpgroup.poc.admin.domain.base.admin.entity; + +import com.bpgroup.poc.admin.domain.base.role.entity.Role; +import jakarta.persistence.*; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Embeddable +public class AdminRole { + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + private Role role; + + @Builder + public static AdminRole of(Role role) { + AdminRole adminRole = new AdminRole(); + adminRole.role = role; + return adminRole; + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateCommand.java similarity index 62% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateCommand.java index 656f2dc..0cb7125 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.management.service; +package com.bpgroup.poc.admin.domain.base.admin.service; -import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; +import com.bpgroup.poc.admin.domain.base.admin.entity.Admin; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; @@ -9,7 +9,7 @@ import lombok.ToString; @Getter @ToString -public class AdministratorCreateCommand { +public class AdminCreateCommand { @NotBlank private String loginId; @NotBlank @@ -22,8 +22,8 @@ public class AdministratorCreateCommand { private Long roleId; @Builder - public static AdministratorCreateCommand of(String loginId, String password, String email, String name, Long roleId) { - AdministratorCreateCommand command = new AdministratorCreateCommand(); + public static AdminCreateCommand of(String loginId, String password, String email, String name, Long roleId) { + AdminCreateCommand command = new AdminCreateCommand(); command.loginId = loginId; command.password = password; command.email = email; @@ -32,8 +32,8 @@ public class AdministratorCreateCommand { return command; } - public Administrator toEntity() { - return Administrator.builder() + public Admin toEntity() { + return Admin.builder() .loginId(loginId) .password(password) .email(email) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateResult.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateResult.java new file mode 100644 index 0000000..9577da6 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminCreateResult.java @@ -0,0 +1,18 @@ +package com.bpgroup.poc.admin.domain.base.admin.service; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Getter +@ToString +public class AdminCreateResult { + private Long id; + + @Builder + public static AdminCreateResult of(Long id) { + AdminCreateResult result = new AdminCreateResult(); + result.id = id; + return result; + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminService.java new file mode 100644 index 0000000..0e396b2 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminService.java @@ -0,0 +1,79 @@ +package com.bpgroup.poc.admin.domain.base.admin.service; + +import com.bpgroup.poc.admin.domain.base.admin.entity.Admin; +import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRepository; +import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRole; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +@Validated +@Transactional +public class AdminService { + + private final AdminRepository adminRepository; + private final RoleRepository roleRepository; + + public AdminCreateResult create( + @NotNull @Valid AdminCreateCommand command + ) { + Optional findRole = roleRepository.findById(command.getRoleId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Not found role"); + } + + Role role = findRole.get(); + Admin admin = command.toEntity(); + admin.setAdminRole( + AdminRole.builder() + .role(role) + .build() + ); + Admin savedAdmin = adminRepository.save(admin); + + return AdminCreateResult.builder() + .id(savedAdmin.getId()) + .build(); + } + + public void update( + @NotNull @Valid AdminUpdateCommand command + ) { + Optional findAdmin = adminRepository.findById(command.getId()); + if (findAdmin.isEmpty()) { + throw new IllegalArgumentException("Not found admin"); + } + + Optional findRole = roleRepository.findById(command.getRoleId()); + if (findRole.isEmpty()) { + throw new IllegalArgumentException("Not found role"); + } + + Role role = findRole.get(); + Admin admin = findAdmin.get(); + admin.setAdminRole( + AdminRole.builder() + .role(role) + .build() + ); + admin.update(admin); + } + + public void delete(@NotNull Long id) { + Optional findAdmin = adminRepository.findById(id); + if (findAdmin.isEmpty()) { + throw new IllegalArgumentException("Not found admin"); + } + + adminRepository.deleteById(id); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminUpdateCommand.java similarity index 61% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminUpdateCommand.java index 1474acc..7a38370 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminUpdateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.management.service; +package com.bpgroup.poc.admin.domain.base.admin.service; -import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; +import com.bpgroup.poc.admin.domain.base.admin.entity.Admin; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; @@ -9,7 +9,7 @@ import lombok.ToString; @Getter @ToString -public class AdministratorUpdateCommand { +public class AdminUpdateCommand { @NotNull private Long id; @NotBlank @@ -22,8 +22,8 @@ public class AdministratorUpdateCommand { private Long roleId; @Builder - public static AdministratorUpdateCommand of(Long id, String password, String email, String name, Long roleId) { - AdministratorUpdateCommand command = new AdministratorUpdateCommand(); + public static AdminUpdateCommand of(Long id, String password, String email, String name, Long roleId) { + AdminUpdateCommand command = new AdminUpdateCommand(); command.id = id; command.password = password; command.email = email; @@ -32,8 +32,8 @@ public class AdministratorUpdateCommand { return command; } - public Administrator toEntity() { - return Administrator.builder() + public Admin toEntity() { + return Admin.builder() .password(password) .email(email) .name(name) diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Menu.java similarity index 95% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Menu.java index 856e254..77ef6b4 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/Menu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Menu.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.menu; +package com.bpgroup.poc.admin.domain.base.role.entity; import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroup.java similarity index 95% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroup.java index 1de2b60..a06eaf6 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroup.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroup.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.menu; +package com.bpgroup.poc.admin.domain.base.role.entity; import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroupRepository.java similarity index 72% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroupRepository.java index 6fe9035..947bba0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuGroupRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuGroupRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.menu; +package com.bpgroup.poc.admin.domain.base.role.entity; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuRepository.java similarity index 70% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuRepository.java index 63fc004..0541bfe 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/menu/MenuRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/MenuRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.menu; +package com.bpgroup.poc.admin.domain.base.role.entity; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Role.java similarity index 95% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Role.java index 167cf42..b36170c 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/Role.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/Role.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.role; +package com.bpgroup.poc.admin.domain.base.role.entity; import com.bpgroup.poc.admin.domain.entity.BaseEntity; import jakarta.persistence.*; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java similarity index 88% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java index bf35614..42e3ec3 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenu.java @@ -1,7 +1,6 @@ -package com.bpgroup.poc.admin.domain.entity.role; +package com.bpgroup.poc.admin.domain.base.role.entity; import com.bpgroup.poc.admin.domain.entity.BaseEntity; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; import jakarta.persistence.*; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenuRepository.java similarity index 72% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenuRepository.java index bc8c421..beb122c 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleMenuRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleMenuRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.role; +package com.bpgroup.poc.admin.domain.base.role.entity; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleRepository.java similarity index 70% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleRepository.java index cb12527..70a8f15 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/role/RoleRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/entity/RoleRepository.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.domain.entity.role; +package com.bpgroup.poc.admin.domain.base.role.entity; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuCreateCommand.java similarity index 88% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuCreateCommand.java index dd34fe9..6e2b9b5 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuCreateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupCreateCommand.java similarity index 87% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupCreateCommand.java index cd07aaf..9ea2fe8 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupCreateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupUpdateCommand.java similarity index 88% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupUpdateCommand.java index 991a8d0..11f9287 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuGroupUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuGroupUpdateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuService.java similarity index 85% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuService.java index d56d148..0383bc0 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuService.java @@ -1,9 +1,9 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; -import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; @@ -82,4 +82,8 @@ public class MenuService { menuRepository.deleteById(id); } + + public Optional findById(Long menuId) { + return menuRepository.findById(menuId); + } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuUpdateCommand.java similarity index 88% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuUpdateCommand.java index 2617dd1..a323c44 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/service/MenuUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/MenuUpdateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.menu.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java similarity index 89% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java index fa02026..318d501 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleAddMenuCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleAddMenuCommand.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.role.service; +package com.bpgroup.poc.admin.domain.base.role.service; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateCommand.java similarity index 85% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateCommand.java index 62b074e..91df4bc 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.role.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; import jakarta.validation.constraints.NotBlank; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateResult.java similarity index 84% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateResult.java index 2535cd0..a368ac7 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleCreateResult.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleCreateResult.java @@ -1,4 +1,4 @@ -package com.bpgroup.poc.admin.web.main.admin.role.service; +package com.bpgroup.poc.admin.domain.base.role.service; import lombok.Builder; import lombok.Getter; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java similarity index 85% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java index 6eaf823..faff852 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleService.java @@ -1,11 +1,11 @@ -package com.bpgroup.poc.admin.web.main.admin.role.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; -import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; -import com.bpgroup.poc.admin.domain.entity.role.Role; -import com.bpgroup.poc.admin.domain.entity.role.RoleMenu; -import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository; -import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleUpdateCommand.java similarity index 87% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleUpdateCommand.java index 920c9de..699dc14 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/service/RoleUpdateCommand.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/base/role/service/RoleUpdateCommand.java @@ -1,6 +1,6 @@ -package com.bpgroup.poc.admin.web.main.admin.role.service; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.role.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Builder; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java deleted file mode 100644 index a123c45..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/Administrator.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.administrator; - -import com.bpgroup.poc.admin.domain.entity.BaseEntity; -import jakarta.persistence.*; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Entity -@Table(name = "administrator") -public class Administrator extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(name = "login_id", length = 100, nullable = false) - private String loginId; - - @Column(name = "password", length = 255, nullable = false) - private String password; - - @Column(name = "email", length = 100, nullable = false) - private String email; - - @Column(name = "name", length = 100, nullable = false) - private String name; - - @Embedded - private AdministratorRole administratorRole; - - @Builder - public static Administrator of(String loginId, String password, String email, String name) { - Administrator administrator = new Administrator(); - administrator.loginId = loginId; - administrator.password = password; - administrator.email = email; - administrator.name = name; - return administrator; - } - - public void update(Administrator administrator) { - this.password = administrator.password; - this.email = administrator.email; - this.name = administrator.name; - this.administratorRole = administrator.administratorRole; - } - - public void setAdministratorRole(AdministratorRole administratorRole) { - this.administratorRole = administratorRole; - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java deleted file mode 100644 index 07f8756..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.administrator; - -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface AdministratorRepository extends JpaRepository { - Optional findByLoginId(String loginId); -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java deleted file mode 100644 index 6651665..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/administrator/AdministratorRole.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.administrator; - -import com.bpgroup.poc.admin.domain.entity.role.Role; -import jakarta.persistence.*; -import lombok.Builder; -import lombok.Getter; - -@Getter -@Embeddable -public class AdministratorRole { - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "role_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - private Role role; - - @Builder - public static AdministratorRole of(Role role) { - AdministratorRole administratorRole = new AdministratorRole(); - administratorRole.role = role; - return administratorRole; - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java deleted file mode 100644 index 554ffc0..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/DuplicationAdministratorException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.exception; - -public class DuplicationAdministratorException extends RuntimeException { - public DuplicationAdministratorException(String loginId) { - super("이미 존재하는 아이디 입니다. : " + loginId); - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java deleted file mode 100644 index ffd4fe6..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/domain/entity/exception/NotFoundAdministratorException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.bpgroup.poc.admin.domain.entity.exception; - -import com.bpgroup.poc.admin.domain.DomainException; - -public class NotFoundAdministratorException extends DomainException { - public NotFoundAdministratorException() { - super(); - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/AuthenticationFailReason.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/AuthenticationFailReason.java index 06adc93..a995c7e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/AuthenticationFailReason.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/AuthenticationFailReason.java @@ -1,6 +1,6 @@ package com.bpgroup.poc.admin.security.authentication; -import com.bpgroup.poc.admin.security.authentication.service.exception.AdministratorNotFoundException; +import com.bpgroup.poc.admin.security.authentication.service.exception.AdminNotFoundException; import com.bpgroup.poc.admin.security.authentication.service.exception.DoNotHaveAnyMenuException; import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException; import lombok.Getter; @@ -17,7 +17,7 @@ public enum AuthenticationFailReason { private final String message; public static AuthenticationFailReason from(Exception e) { - if (e instanceof AdministratorNotFoundException) { + if (e instanceof AdminNotFoundException) { return WRONG_LOGIN_ID; } else if (e instanceof InvalidPasswordException) { return WRONG_PASSWORD; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java index 1c90bc9..9e7c649 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/LoginService.java @@ -1,8 +1,8 @@ package com.bpgroup.poc.admin.security.authentication.service; -import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; -import com.bpgroup.poc.admin.security.authentication.service.exception.AdministratorNotFoundException; +import com.bpgroup.poc.admin.domain.base.admin.entity.Admin; +import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRepository; +import com.bpgroup.poc.admin.security.authentication.service.exception.AdminNotFoundException; import com.bpgroup.poc.admin.security.authentication.service.exception.DoNotHaveAnyMenuException; import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException; import lombok.RequiredArgsConstructor; @@ -16,25 +16,25 @@ import java.util.Optional; @RequiredArgsConstructor public class LoginService { - private final AdministratorRepository administratorRepository; + private final AdminRepository adminRepository; private final PasswordEncoder passwordEncoder; @Transactional - public LoginResult login(String username, String password) throws AdministratorNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException { - Optional administrator = administratorRepository.findByLoginId(username); - if (administrator.isEmpty()) { - throw new AdministratorNotFoundException(username); + public LoginResult login(String username, String password) throws AdminNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException { + Optional admin = adminRepository.findByLoginId(username); + if (admin.isEmpty()) { + throw new AdminNotFoundException(username); } - if (!passwordEncoder.matches(password, administrator.get().getPassword())) { + if (!passwordEncoder.matches(password, admin.get().getPassword())) { throw new InvalidPasswordException(username); } return LoginResult.of( - administrator.get().getId(), - administrator.get().getLoginId(), - administrator.get().getName(), - administrator.get().getLoginId() + admin.get().getId(), + admin.get().getLoginId(), + admin.get().getName(), + admin.get().getLoginId() ); } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdminNotFoundException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdminNotFoundException.java new file mode 100644 index 0000000..ec180dc --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdminNotFoundException.java @@ -0,0 +1,7 @@ +package com.bpgroup.poc.admin.security.authentication.service.exception; + +public class AdminNotFoundException extends Exception { + public AdminNotFoundException(String message) { + super(message); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdministratorNotFoundException.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdministratorNotFoundException.java deleted file mode 100644 index df0afa8..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/security/authentication/service/exception/AdministratorNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.bpgroup.poc.admin.security.authentication.service.exception; - -public class AdministratorNotFoundException extends Exception { - public AdministratorNotFoundException(String message) { - super(message); - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java index d2758c2..e695813 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/advice/menu/MenuQueryRepository.java @@ -7,12 +7,12 @@ import org.springframework.stereotype.Repository; import java.util.*; -import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministrator.administrator; -import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministratorRole.administratorRole; -import static com.bpgroup.poc.admin.domain.entity.menu.QMenu.menu; -import static com.bpgroup.poc.admin.domain.entity.menu.QMenuGroup.menuGroup; -import static com.bpgroup.poc.admin.domain.entity.role.QRole.role; -import static com.bpgroup.poc.admin.domain.entity.role.QRoleMenu.roleMenu; +import static com.bpgroup.poc.admin.domain.base.admin.entity.QAdmin.admin; +import static com.bpgroup.poc.admin.domain.base.admin.entity.QAdminRole.adminRole; +import static com.bpgroup.poc.admin.domain.base.role.entity.QMenu.menu; +import static com.bpgroup.poc.admin.domain.base.role.entity.QMenuGroup.menuGroup; +import static com.bpgroup.poc.admin.domain.base.role.entity.QRole.role; +import static com.bpgroup.poc.admin.domain.base.role.entity.QRoleMenu.roleMenu; @Repository @RequiredArgsConstructor @@ -29,12 +29,12 @@ public class MenuQueryRepository { roleMenu.menu.name, roleMenu.menu.sortOrder ) - .from(administrator) - .innerJoin(administratorRole.role, role) + .from(admin) + .innerJoin(adminRole.role, role) .innerJoin(role.roleMenus, roleMenu) .innerJoin(roleMenu.menu, menu) .innerJoin(menu.menuGroup, menuGroup) - .where(administrator.loginId.eq("admin")) + .where(admin.loginId.eq("admin")) .orderBy(menuGroup.sortOrder.asc(), roleMenu.menu.sortOrder.asc()) .fetch(); diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementController.java similarity index 78% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementController.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementController.java index ebddf87..9ae8144 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementController.java @@ -6,10 +6,10 @@ import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/admin/management") -public class AdministratorManagementController { +public class AdminManagementController { @GetMapping - public String administratorManagementPage() { + public String adminManagementPage() { return "main/admin/management/list"; } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementQueryRepository.java new file mode 100644 index 0000000..a45a638 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementQueryRepository.java @@ -0,0 +1,41 @@ +package com.bpgroup.poc.admin.web.main.admin.management; + +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminFind; +import com.querydsl.core.types.Projections; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; + +import static com.bpgroup.poc.admin.domain.base.admin.entity.QAdmin.admin; + + +@Repository +@RequiredArgsConstructor +public class AdminManagementQueryRepository { + + private final JPAQueryFactory queryFactory; + + public List findAll() { + return queryFactory.select(Projections.fields(AdminFind.Response.class, + admin.id, + admin.loginId, + admin.email, + admin.name)) + .from(admin) + .fetch(); + } + + public AdminFind.Response findByLoginId(String loginId) { + return queryFactory.select(Projections.fields(AdminFind.Response.class, + admin.id, + admin.loginId, + admin.email, + admin.name)) + .from(admin) + .where(admin.loginId.eq(loginId)) + .fetchOne(); + + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementRestController.java new file mode 100644 index 0000000..c61aaaa --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementRestController.java @@ -0,0 +1,83 @@ +package com.bpgroup.poc.admin.web.main.admin.management; + +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminCreate; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminDelete; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminFind; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminUpdate; +import jakarta.validation.constraints.NotBlank; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/admin/management") +public class AdminManagementRestController { + + private final AdminManagementWebService adminManagementWebService; + + /** + * 전체 조회 + * + * @return 응답 + */ + @GetMapping("/list") + public ResponseEntity getAdmins() { + List response = adminManagementWebService.findAll(); + return ResponseEntity.ok(response); + } + + /** + * 조회 + * + * @param loginId 관리자 ID + * @return 응답 + */ + @GetMapping("/{loginId}") + public ResponseEntity getAdmin(@PathVariable @NotBlank String loginId) { + AdminFind.Response response = adminManagementWebService.find(loginId); + return ResponseEntity.ok(response); + } + + /** + * 관리자 등록 + * + * @param request 요청 + * @param bindingResult Validation 결과 + * @return 응답 + */ + @PostMapping("/create") + public ResponseEntity createAdmin( + @RequestBody @Validated AdminCreate.Request request, + BindingResult bindingResult + ) { + AdminCreate.Response response = adminManagementWebService.create(request); + return ResponseEntity.ok(response); + } + + @PostMapping("/update") + public ResponseEntity updateAdmin( + @RequestBody @Validated AdminUpdate.Request request, + BindingResult bindingResult + ) { + AdminUpdate.Response response = adminManagementWebService.update(request); + return ResponseEntity.ok(response); + } + + /** + * 관리자 삭제 + */ + @PostMapping("/delete") + public ResponseEntity deleteAdmin( + @RequestBody @Validated AdminDelete.Request request, + BindingResult bindingResult + ) { + AdminDelete.Response response = adminManagementWebService.delete(request); + return ResponseEntity.ok(response); + } + +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementWebService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementWebService.java new file mode 100644 index 0000000..2c4916a --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdminManagementWebService.java @@ -0,0 +1,64 @@ +package com.bpgroup.poc.admin.web.main.admin.management; + +import com.bpgroup.poc.admin.domain.base.admin.service.AdminCreateCommand; +import com.bpgroup.poc.admin.domain.base.admin.service.AdminCreateResult; +import com.bpgroup.poc.admin.domain.base.admin.service.AdminService; +import com.bpgroup.poc.admin.domain.base.admin.service.AdminUpdateCommand; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminCreate; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminDelete; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminFind; +import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdminUpdate; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class AdminManagementWebService { + + private final PasswordEncoder passwordEncoder; + + private final AdminService adminService; + private final AdminManagementQueryRepository queryRepository; + + public List findAll() { + return queryRepository.findAll(); + } + + public AdminFind.Response find(String loginId) { + return queryRepository.findByLoginId(loginId); + } + + public AdminCreate.Response create(AdminCreate.Request request) { + AdminCreateResult adminCreateResult = adminService.create( + AdminCreateCommand.builder() + .loginId(request.getLoginId()) + .password(passwordEncoder.encode(request.getPassword())) + .email(request.getEmail()) + .name(request.getName()) + .build() + ); + + return AdminCreate.Response.success(adminCreateResult.getId()); + } + + public AdminUpdate.Response update(AdminUpdate.Request request) { + adminService.update( + AdminUpdateCommand.builder() + .id(request.getId()) + .roleId(request.getRoleId()) + .email(request.getEmail()) + .name(request.getName()) + .build() + ); + + return AdminUpdate.Response.success(); + } + + public AdminDelete.Response delete(AdminDelete.Request request) { + adminService.delete(request.getId()); + return AdminDelete.Response.success(); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java deleted file mode 100644 index 6303968..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementQueryRepository.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.management; - -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorFind; -import com.querydsl.core.types.Projections; -import com.querydsl.jpa.impl.JPAQueryFactory; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - -import java.util.List; - -import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministrator.administrator; - - -@Repository -@RequiredArgsConstructor -public class AdministratorManagementQueryRepository { - - private final JPAQueryFactory queryFactory; - - public List findAll() { - return queryFactory.select(Projections.fields(AdministratorFind.Response.class, - administrator.id, - administrator.loginId, - administrator.email, - administrator.name)) - .from(administrator) - .fetch(); - } - - public AdministratorFind.Response find(String loginId) { - return queryFactory.select(Projections.fields(AdministratorFind.Response.class, - administrator.id, - administrator.loginId, - administrator.email, - administrator.name)) - .from(administrator) - .where(administrator.loginId.eq(loginId)) - .fetchOne(); - - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java deleted file mode 100644 index cef249f..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/AdministratorManagementRestController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.management; - -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorCreate; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorDelete; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorFind; -import com.bpgroup.poc.admin.web.main.admin.management.reqres.AdministratorUpdate; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorManagementService; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorUpdateCommand; -import jakarta.validation.constraints.NotBlank; -import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.validation.BindingResult; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequiredArgsConstructor -@RequestMapping("/admin/management") -public class AdministratorManagementRestController { - - private final PasswordEncoder passwordEncoder; - - private final AdministratorManagementService service; - private final AdministratorManagementQueryRepository queryRepository; - - /** - * 전체 조회 - * - * @return 응답 - */ - @GetMapping("/list") - public ResponseEntity getAdministrators() { - List response = queryRepository.findAll(); - return ResponseEntity.ok(response); - } - - /** - * 조회 - * - * @param loginId 관리자 ID - * @return 응답 - */ - @GetMapping("/{loginId}") - public ResponseEntity getAdministrator(@PathVariable @NotBlank String loginId) { - AdministratorFind.Response response = queryRepository.find(loginId); - return ResponseEntity.ok(response); - } - - /** - * 관리자 등록 - * - * @param request 요청 - * @param bindingResult Validation 결과 - * @return 응답 - */ - @PostMapping("/create") - public ResponseEntity createAdministrator( - @RequestBody @Validated AdministratorCreate.Request request, - BindingResult bindingResult - ) { - AdministratorCreateResult result = service.create( - AdministratorCreateCommand.builder() - .loginId(request.getLoginId()) - .password(passwordEncoder.encode(request.getPassword())) - .email(request.getEmail()) - .name(request.getName()) - .build() - ); - return ResponseEntity.ok(AdministratorCreate.Response.success(result.getId())); - } - - @PostMapping("/update") - public ResponseEntity updateAdministrator( - @RequestBody @Validated AdministratorUpdate.Request request, - BindingResult bindingResult - ) { - service.update( - AdministratorUpdateCommand.builder() - .password(passwordEncoder.encode(request.getPassword())) - .name(request.getName()) - .email(request.getEmail()) - .roleId(request.getRoleId()) - .build() - ); - - return ResponseEntity.ok(AdministratorUpdate.Response.success()); - } - - /** - * 관리자 삭제 - * - * @param request 요청 - * @param bindingResult Validation 결과 - * @return 응답 - */ - @PostMapping("/delete") - public ResponseEntity deleteAdministrator( - @RequestBody @Validated AdministratorDelete.Request request, - BindingResult bindingResult - ) { - service.delete(request.getId()); - return ResponseEntity.ok(AdministratorDelete.Response.success()); - } - -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminCreate.java similarity index 97% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminCreate.java index 1fc94de..0329a82 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorCreate.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminCreate.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.Getter; import lombok.ToString; -public class AdministratorCreate { +public class AdminCreate { @Data public static class Request { diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorDelete.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminDelete.java similarity index 67% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorDelete.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminDelete.java index f9cc185..862746a 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorDelete.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminDelete.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.Getter; import lombok.ToString; -public class AdministratorDelete { +public class AdminDelete { @Data public static class Request { @@ -19,16 +19,16 @@ public class AdministratorDelete { @ToString public static class Response extends CommonResponse { @Builder - public static AdministratorDelete.Response success() { - AdministratorDelete.Response response = new AdministratorDelete.Response(); + public static AdminDelete.Response success() { + AdminDelete.Response response = new AdminDelete.Response(); response.resultCode = "0000"; response.resultMessage = "Success"; return response; } @Builder - public static AdministratorDelete.Response fail(String resultMessage) { - AdministratorDelete.Response response = new AdministratorDelete.Response(); + public static AdminDelete.Response fail(String resultMessage) { + AdminDelete.Response response = new AdminDelete.Response(); response.resultCode = "9999"; response.resultMessage = resultMessage; return response; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorFind.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminFind.java similarity index 90% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorFind.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminFind.java index 4168c0e..d80f225 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorFind.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminFind.java @@ -3,7 +3,7 @@ package com.bpgroup.poc.admin.web.main.admin.management.reqres; import lombok.Getter; import lombok.ToString; -public class AdministratorFind { +public class AdminFind { @Getter @ToString diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminUpdate.java similarity index 73% rename from poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java rename to poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminUpdate.java index ec471f3..b1cd03e 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdministratorUpdate.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/reqres/AdminUpdate.java @@ -8,7 +8,7 @@ import lombok.Data; import lombok.Getter; import lombok.ToString; -public class AdministratorUpdate { +public class AdminUpdate { @Data public static class Request { @@ -28,16 +28,16 @@ public class AdministratorUpdate { @ToString public static class Response extends CommonResponse { @Builder - public static AdministratorUpdate.Response success() { - AdministratorUpdate.Response response = new AdministratorUpdate.Response(); + public static AdminUpdate.Response success() { + AdminUpdate.Response response = new AdminUpdate.Response(); response.resultCode = "0000"; response.resultMessage = "Success"; return response; } @Builder - public static AdministratorUpdate.Response fail(String resultMessage) { - AdministratorUpdate.Response response = new AdministratorUpdate.Response(); + public static AdminUpdate.Response fail(String resultMessage) { + AdminUpdate.Response response = new AdminUpdate.Response(); response.resultCode = "9999"; response.resultMessage = resultMessage; return response; diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java deleted file mode 100644 index defa777..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorCreateResult.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.management.service; - -import lombok.Builder; -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -public class AdministratorCreateResult { - private Long id; - - @Builder - public static AdministratorCreateResult of(Long id) { - AdministratorCreateResult result = new AdministratorCreateResult(); - result.id = id; - return result; - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java deleted file mode 100644 index a4b59ee..0000000 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/management/service/AdministratorManagementService.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.management.service; - -import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.role.Role; -import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.Optional; - -@Service -@RequiredArgsConstructor -@Validated -@Transactional -public class AdministratorManagementService { - - private final AdministratorRepository administratorRepository; - private final RoleRepository roleRepository; - - public AdministratorCreateResult create( - @NotNull @Valid AdministratorCreateCommand command - ) { - Optional findRole = roleRepository.findById(command.getRoleId()); - if (findRole.isEmpty()) { - throw new IllegalArgumentException("Not found role"); - } - - Role role = findRole.get(); - Administrator administrator = command.toEntity(); - administrator.setAdministratorRole( - AdministratorRole.builder() - .role(role) - .build() - ); - Administrator savedAdministrator = administratorRepository.save(administrator); - - return AdministratorCreateResult.builder() - .id(savedAdministrator.getId()) - .build(); - } - - public void update( - @NotNull @Valid AdministratorUpdateCommand command - ) { - Optional findAdministrator = administratorRepository.findById(command.getId()); - if (findAdministrator.isEmpty()) { - throw new IllegalArgumentException("Not found administrator"); - } - - Optional findRole = roleRepository.findById(command.getRoleId()); - if (findRole.isEmpty()) { - throw new IllegalArgumentException("Not found role"); - } - - Role role = findRole.get(); - Administrator administrator = findAdministrator.get(); - administrator.setAdministratorRole( - AdministratorRole.builder() - .role(role) - .build() - ); - administrator.update(administrator); - } - - public void delete(@NotNull Long id) { - Optional findAdministrator = administratorRepository.findById(id); - if (findAdministrator.isEmpty()) { - throw new IllegalArgumentException("Not found administrator"); - } - - administratorRepository.deleteById(id); - } -} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java index 975908f..f757bdc 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuRestController.java @@ -1,6 +1,5 @@ package com.bpgroup.poc.admin.web.main.admin.menu; -import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import com.bpgroup.poc.admin.web.main.admin.menu.reqres.*; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -13,95 +12,64 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor -@RequestMapping("/admin/menu") +@RequestMapping("/admin") public class MenuRestController { - private final MenuService service; + private final MenuWebService menuWebService; + + @PostMapping("/menu-group/create") - @PostMapping("/create/menu-group") public ResponseEntity createMenuGroup( @RequestBody @Valid MenuGroupCreate.Request request, BindingResult bindingResult ) { - service.createMenuGroup( - MenuGroupCreateCommand.builder() - .name(request.getName()) - .uri(request.getUri()) - .sortOrder(request.getSortOrder()) - .build() - ); - - return ResponseEntity.ok(MenuGroupCreate.Response.success()); + MenuGroupCreate.Response response = menuWebService.createMenuGroup(request); + return ResponseEntity.ok(response); } - @PostMapping("/update/menu-group") + @PostMapping("/menu-group/update") public ResponseEntity updateMenuGroup( @RequestBody @Valid MenuGroupUpdate.Request request, BindingResult bindingResult ) { - service.updateMenuGroup( - MenuGroupUpdateCommand.builder() - .id(request.getId()) - .name(request.getName()) - .uri(request.getUri()) - .sortOrder(request.getSortOrder()) - .build() - ); - - return ResponseEntity.ok(MenuGroupCreate.Response.success()); + MenuGroupUpdate.Response response = menuWebService.updateMenuGroup(request); + return ResponseEntity.ok(response); } - @PostMapping("/delete/menu-group") + @PostMapping("/menu-group/delete") public ResponseEntity deleteMenuGroup( @RequestBody @Valid MenuGroupDelete.Request request, BindingResult bindingResult ) { - service.deleteMenuGroup(request.getId()); - - return ResponseEntity.ok(MenuGroupDelete.Response.success()); + MenuGroupDelete.Response response = menuWebService.deleteMenuGroup(request); + return ResponseEntity.ok(response); } - @PostMapping("/create/menu") + @PostMapping("/menu/create") public ResponseEntity createMenu( @RequestBody @Valid MenuCreate.Request request, BindingResult bindingResult ) { - service.createMenu( - MenuCreateCommand.builder() - .menuGroupId(request.getMenuGroupId()) - .name(request.getName()) - .uri(request.getUri()) - .sortOrder(request.getSortOrder()) - .build() - ); - return ResponseEntity.ok(MenuCreate.Response.success()); + MenuCreate.Response response = menuWebService.createMenu(request); + return ResponseEntity.ok(response); } - @PostMapping("/update/menu") + @PostMapping("/menu/update") public ResponseEntity updateMenu( @RequestBody @Valid MenuUpdate.Request request, BindingResult bindingResult ) { - service.updateMenu( - MenuUpdateCommand.builder() - .id(request.getId()) - .name(request.getName()) - .uri(request.getUri()) - .sortOrder(request.getSortOrder()) - .build() - ); - - return ResponseEntity.ok(MenuGroupCreate.Response.success()); + MenuUpdate.Response response = menuWebService.updateMenu(request); + return ResponseEntity.ok(response); } - @PostMapping("/delete/menu") + @PostMapping("/menu/delete") public ResponseEntity deleteMenu( @RequestBody @Valid MenuDelete.Request request, BindingResult bindingResult ) { - service.deleteMenu(request.getId()); - - return ResponseEntity.ok(MenuDelete.Response.success()); + MenuDelete.Response response = menuWebService.deleteMenu(request); + return ResponseEntity.ok(response); } } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuWebService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuWebService.java new file mode 100644 index 0000000..9db6a79 --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuWebService.java @@ -0,0 +1,74 @@ +package com.bpgroup.poc.admin.web.main.admin.menu; + +import com.bpgroup.poc.admin.domain.base.role.service.*; +import com.bpgroup.poc.admin.web.main.admin.menu.reqres.*; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class MenuWebService { + + private final MenuService menuService; + + public MenuGroupCreate.Response createMenuGroup(MenuGroupCreate.Request request) { + menuService.createMenuGroup( + MenuGroupCreateCommand.builder() + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return MenuGroupCreate.Response.success(); + } + + public MenuGroupUpdate.Response updateMenuGroup(MenuGroupUpdate.Request request) { + menuService.updateMenuGroup( + MenuGroupUpdateCommand.builder() + .id(request.getId()) + .name(request.getName()) + .uri(request.getUri()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return MenuGroupUpdate.Response.success(); + } + + public MenuGroupDelete.Response deleteMenuGroup(MenuGroupDelete.Request request) { + menuService.deleteMenuGroup(request.getId()); + return MenuGroupDelete.Response.success(); + } + + public MenuCreate.Response createMenu(MenuCreate.Request request) { + menuService.createMenu( + MenuCreateCommand.builder() + .menuGroupId(request.getMenuGroupId()) + .uri(request.getUri()) + .name(request.getName()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return MenuCreate.Response.success(); + } + + public MenuUpdate.Response updateMenu(MenuUpdate.Request request) { + menuService.updateMenu( + MenuUpdateCommand.builder() + .id(request.getId()) + .uri(request.getUri()) + .name(request.getName()) + .sortOrder(request.getSortOrder()) + .build() + ); + + return MenuUpdate.Response.success(); + } + + public MenuDelete.Response deleteMenu(MenuDelete.Request request) { + menuService.deleteMenu(request.getId()); + return MenuDelete.Response.success(); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java index 1f6aded..fc7abe9 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleRestController.java @@ -4,7 +4,6 @@ import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleAddMenu; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; -import com.bpgroup.poc.admin.web.main.admin.role.service.*; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -14,17 +13,12 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - @RestController @RequiredArgsConstructor @RequestMapping("/admin/role") public class RoleRestController { - private final RoleService roleService; - + private final RoleWebService roleWebService; /** * 권한 등록 @@ -34,14 +28,8 @@ public class RoleRestController { @RequestBody @Valid RoleCreate.Request request, BindingResult bindingResult ) { - RoleCreateResult result = roleService.create( - RoleCreateCommand.builder() - .name(request.getName()) - .description(request.getDescription()) - .build() - ); - - return ResponseEntity.ok(RoleCreate.Response.success(result.getId())); + RoleCreate.Response response = roleWebService.create(request); + return ResponseEntity.ok(response); } /** @@ -52,14 +40,7 @@ public class RoleRestController { @RequestBody @Valid RoleUpdate.Request request, BindingResult bindingResult ) { - roleService.update( - RoleUpdateCommand.builder() - .id(request.getId()) - .name(request.getName()) - .description(request.getDescription()) - .build() - ); - + roleWebService.update(request); return ResponseEntity.ok(RoleUpdate.Response.success()); } @@ -71,31 +52,19 @@ public class RoleRestController { @RequestBody @Valid RoleDelete.Request request, BindingResult bindingResult ) { - roleService.delete(request.getId()); + roleWebService.delete(request); return ResponseEntity.ok(RoleDelete.Response.success()); } /** * 권한 내 메뉴 추가 - * DELETE -> INSERT */ @PostMapping("/put/menu") public ResponseEntity addMenu( - @RequestBody @Valid List request, + @RequestBody @Valid RoleAddMenu.Request request, BindingResult bindingResult ) { - roleService.deleteRoleMenu(request.get(0).getRoleId()); - - Set commands = request.stream() - .map(c -> RoleAddMenuCommand.builder() - .roleId(c.getRoleId()) - .menuId(c.getMenuId()) - .build() - ) - .collect(Collectors.toSet()); - - roleService.addRoleMenu(commands); - + roleWebService.putMenu(request); return ResponseEntity.ok(RoleAddMenu.Response.success()); } diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java new file mode 100644 index 0000000..3ce430c --- /dev/null +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/RoleWebService.java @@ -0,0 +1,60 @@ +package com.bpgroup.poc.admin.web.main.admin.role; + +import com.bpgroup.poc.admin.domain.base.role.service.*; +import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleAddMenu; +import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleCreate; +import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete; +import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleUpdate; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Set; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class RoleWebService { + + private final RoleService roleService; + + public RoleCreate.Response create(RoleCreate.Request request) { + RoleCreateResult createResult = roleService.create( + RoleCreateCommand.builder() + .name(request.getName()) + .description(request.getDescription()) + .build() + ); + + return RoleCreate.Response.success(createResult.getId()); + } + + public void update(RoleUpdate.Request request) { + roleService.update( + RoleUpdateCommand.builder() + .id(request.getId()) + .name(request.getName()) + .description(request.getDescription()) + .build() + ); + } + + public void delete(RoleDelete.Request request) { + roleService.delete(request.getId()); + } + + public void putMenu(@NotNull @Valid RoleAddMenu.Request request) { + roleService.deleteRoleMenu(request.getRoleId()); + + Set commands = request.getMenuIds().stream() + .map(menuId -> RoleAddMenuCommand.builder() + .roleId(request.getRoleId()) + .menuId(menuId) + .build() + ) + .collect(Collectors.toSet()); + + roleService.addRoleMenu(commands); + } +} diff --git a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java index 16ffd67..b3a3b2b 100644 --- a/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java +++ b/poc/admin/src/main/java/com/bpgroup/poc/admin/web/main/admin/role/reqres/RoleAddMenu.java @@ -2,11 +2,15 @@ package com.bpgroup.poc.admin.web.main.admin.role.reqres; import com.bpgroup.poc.admin.web.common.CommonResponse; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import lombok.Builder; import lombok.Data; import lombok.Getter; import lombok.ToString; +import java.util.HashSet; +import java.util.Set; + public class RoleAddMenu { @Data @@ -14,7 +18,8 @@ public class RoleAddMenu { @NotNull private Long roleId; @NotNull - private Long menuId; + @Size(min = 1) + private Set menuIds = new HashSet<>(); } diff --git a/poc/admin/src/main/resources/data.sql b/poc/admin/src/main/resources/data.sql index 4c20415..939bb08 100644 --- a/poc/admin/src/main/resources/data.sql +++ b/poc/admin/src/main/resources/data.sql @@ -1,14 +1,10 @@ -INSERT INTO `administrator` (`login_id`, `password`, `email`, `name`, `create_date`, `update_date`) -VALUES ('admin', '$2a$10$g6UOrQ/OS8o5r5CJk7C5juVFaItQ62U3EIn8zLPzkFplM3wVLvKZ2', 'admin@admin.com', '홍길동', CURDATE(), - CURDATE()); - INSERT INTO `role` (`name`, `description`, `create_date`, `update_date`) VALUES ('SUPER_ADMIN', '최고 관리자', CURDATE(), CURDATE()), ('ADMIN', '관리자', CURDATE(), CURDATE()), ('CLIENT', '고객', CURDATE(), CURDATE()); -INSERT INTO `administrator_role` (`administrator_id`, `role_id`, `create_date`, `update_date`) -VALUES ('1', '1', CURDATE(), CURDATE()); +INSERT INTO `admin` (`login_id`, `password`, `email`, `name`, `role_id`, `create_date`, `update_date`) +VALUES ('admin', '$2a$10$g6UOrQ/OS8o5r5CJk7C5juVFaItQ62U3EIn8zLPzkFplM3wVLvKZ2', 'admin@admin.com', '홍길동', 1, CURDATE(), CURDATE()); INSERT INTO `menu_group` (`uri`, `name`, `sort_order`, `create_date`, `update_date`) VALUES ('/admin', '관리자 관리', 2, CURDATE(), CURDATE()), diff --git a/poc/admin/src/main/resources/templates/main/admin/management/list.html b/poc/admin/src/main/resources/templates/main/admin/management/list.html index bf84c44..6ae7385 100644 --- a/poc/admin/src/main/resources/templates/main/admin/management/list.html +++ b/poc/admin/src/main/resources/templates/main/admin/management/list.html @@ -16,8 +16,8 @@

관리자 조회

- - @@ -55,7 +55,7 @@ document.getElementById('iptUpdateName').value = ''; document.getElementById('iptDeleteId').value = ''; document.getElementById('iptDeleteLoginId').value = ''; - document.getElementById('selAdministrator').innerHTML = ''; + document.getElementById('selAdmin').innerHTML = ''; } /** @@ -105,20 +105,20 @@ document.getElementById('btnFindAll').addEventListener(('click'), function () { const requestUri = /*[[@{/admin/management/list}]]*/ ''; Reqhelper.reqGetJson(requestUri, (res) => { - const selAdministrator = document.getElementById('selAdministrator'); - selAdministrator.innerHTML = ''; + const selAdmin = document.getElementById('selAdmin'); + selAdmin.innerHTML = ''; res.forEach(item => { const option = document.createElement('option'); option.value = item.id; option.text = item.loginId; - selAdministrator.appendChild(option); + selAdmin.appendChild(option); }); }, () => { PageHelper.showErrorModal('데이터 조회에 실패했습니다.'); }); }); - document.getElementById('selAdministrator').addEventListener(('change'), function () { + document.getElementById('selAdmin').addEventListener(('change'), function () { document.getElementById('iptUpdateId').value = this.value; document.getElementById('iptUpdateLoginId').value = this.options[this.selectedIndex].text; document.getElementById('iptDeleteId').value = this.value; diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminServiceTest.java new file mode 100644 index 0000000..c7e6212 --- /dev/null +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/admin/service/AdminServiceTest.java @@ -0,0 +1,194 @@ +package com.bpgroup.poc.admin.domain.base.admin.service; + +import com.bpgroup.poc.admin.domain.base.admin.entity.Admin; +import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRepository; +import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRole; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; +import com.bpgroup.poc.admin.env.MariaDBTestEnv; +import jakarta.validation.ConstraintViolationException; +import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@Transactional +@DisplayName("AdminService 테스트") + class AdminServiceTest extends MariaDBTestEnv { + + @Autowired + private AdminService service; + + @Autowired + private AdminRepository adminRepository; + + @Autowired + private RoleRepository roleRepository; + + + @BeforeEach + void setUp() { + adminRepository.deleteAll(); + roleRepository.deleteAll(); + } + + @Test + void createAdminTest() { + Role role = getSaveRole(); + flushAndClear(); + + // when + AdminCreateResult createResult = service.create( + AdminCreateCommand.builder() + .loginId("test") + .password("test") + .email("test") + .name("test") + .roleId(role.getId()) + .build() + ); + flushAndClear(); + + // then + assertThat(createResult.getId()).isNotNull(); + + Admin findAdmin = adminRepository.findById(createResult.getId()).orElseThrow(); + assertThat(findAdmin.getAdminRole().getRole().getName()).isEqualTo("test"); + } + + @DisplayName("Admin 수정 테스트") + @Test + void updateAdminTest() { + // given + Role saveRole = getSaveRole(); + flushAndClear(); + + Admin saveAdmin = createAdmin(saveRole); + flushAndClear(); + + Role updateRole = roleRepository.save( + Role.builder() + .name("test2") + .description("test2") + .build() + ); + flushAndClear(); + + // when + service.update( + AdminUpdateCommand.builder() + .id(saveAdmin.getId()) + .password("test2") + .email("test2") + .name("test2") + .roleId(updateRole.getId()) + .build() + ); + flushAndClear(); + + // then + Admin findAdmin = adminRepository.findById(saveAdmin.getId()).orElseThrow(); + assertThat(findAdmin.getPassword()).isEqualTo("test2"); + assertThat(findAdmin.getEmail()).isEqualTo("test2"); + assertThat(findAdmin.getName()).isEqualTo("test2"); + + assertThat(findAdmin.getAdminRole().getRole().getName()).isEqualTo("test2"); + } + + @DisplayName("Admin 삭제 테스트") + @Test + void deleteAdminTest() { + // given + Role saveRole = getSaveRole(); + flushAndClear(); + + Admin saveAdmin = createAdmin(saveRole); + flushAndClear(); + + // when + service.delete(saveAdmin.getId()); + flushAndClear(); + + // then + assertThat(adminRepository.findById(saveAdmin.getId())).isEmpty(); + } + + @DisplayName("Admin 삭제 시 Admin 동시 삭제 테스트") + @Test + void deleteAdminAndAdminRoleTest() { + // given + Role saveRole = getSaveRole(); + flushAndClear(); + + Admin saveAdmin = createAdmin(saveRole); + flushAndClear(); + + // when + service.delete(saveAdmin.getId()); + flushAndClear(); + + // then + assertThat(adminRepository.findById(saveAdmin.getId())).isEmpty(); + } + + @NotNull + private Role getSaveRole() { + return roleRepository.save( + Role.builder() + .name("test") + .description("test") + .build() + ); + } + + @NotNull + private Admin createAdmin(Role role) { + Admin admin = Admin.builder() + .loginId("test2") + .password("test2") + .email("test2") + .name("test2") + .build(); + admin.setAdminRole( + AdminRole.builder() + .role(role) + .build() + ); + + return adminRepository.save(admin); + } + + @Test + @DisplayName("AdminService method 호출 유효성 검사 테스트") + void validationTest() { + // create + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("").password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.create(AdminCreateCommand.builder().loginId("loginId").password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class); + + // update + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); + assertThatThrownBy(() -> service.update(AdminUpdateCommand.builder().id(1L).password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class); + + // delete + assertThatThrownBy(() -> service.delete(null)).isInstanceOf(ConstraintViolationException.class); + } + +} diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuServiceTest.java similarity index 96% rename from poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java rename to poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuServiceTest.java index 70b0d4f..16061e2 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/menu/MenuServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/menu/service/MenuServiceTest.java @@ -1,11 +1,11 @@ -package com.bpgroup.poc.admin.web.main.admin.menu; +package com.bpgroup.poc.admin.domain.base.menu.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; -import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository; +import com.bpgroup.poc.admin.domain.base.role.service.*; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.menu.service.*; import jakarta.validation.ConstraintViolationException; import org.assertj.core.api.Assertions; import org.jetbrains.annotations.NotNull; diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java similarity index 92% rename from poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java rename to poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java index a29293d..3290a33 100644 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/role/RoleServiceTest.java +++ b/poc/admin/src/test/java/com/bpgroup/poc/admin/domain/base/role/service/RoleServiceTest.java @@ -1,15 +1,15 @@ -package com.bpgroup.poc.admin.web.main.admin.role; +package com.bpgroup.poc.admin.domain.base.role.service; -import com.bpgroup.poc.admin.domain.entity.menu.Menu; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup; -import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository; -import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository; -import com.bpgroup.poc.admin.domain.entity.role.Role; -import com.bpgroup.poc.admin.domain.entity.role.RoleMenu; -import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository; -import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.Role; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository; +import com.bpgroup.poc.admin.domain.base.role.service.*; +import com.bpgroup.poc.admin.domain.base.role.entity.Menu; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroupRepository; +import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository; import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.role.service.*; import jakarta.validation.ConstraintViolationException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java b/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java deleted file mode 100644 index d29d21b..0000000 --- a/poc/admin/src/test/java/com/bpgroup/poc/admin/web/main/admin/administrator/AdministratorServiceTest.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.bpgroup.poc.admin.web.main.admin.administrator; - -import com.bpgroup.poc.admin.domain.entity.administrator.Administrator; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository; -import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRole; -import com.bpgroup.poc.admin.domain.entity.role.Role; -import com.bpgroup.poc.admin.domain.entity.role.RoleRepository; -import com.bpgroup.poc.admin.env.MariaDBTestEnv; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateCommand; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorCreateResult; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorManagementService; -import com.bpgroup.poc.admin.web.main.admin.management.service.AdministratorUpdateCommand; -import jakarta.validation.ConstraintViolationException; -import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -@Transactional -@DisplayName("AdministratorService 테스트") - class AdministratorServiceTest extends MariaDBTestEnv { - - @Autowired - private AdministratorManagementService service; - - @Autowired - private AdministratorRepository administratorRepository; - - @Autowired - private RoleRepository roleRepository; - - - @BeforeEach - void setUp() { - administratorRepository.deleteAll(); - roleRepository.deleteAll(); - } - - @Test - void createAdministratorTest() { - Role role = getSaveRole(); - flushAndClear(); - - // when - AdministratorCreateResult createResult = service.create( - AdministratorCreateCommand.builder() - .loginId("test") - .password("test") - .email("test") - .name("test") - .roleId(role.getId()) - .build() - ); - flushAndClear(); - - // then - assertThat(createResult.getId()).isNotNull(); - - Administrator findAdministrator = administratorRepository.findById(createResult.getId()).orElseThrow(); - assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test"); - } - - @DisplayName("Administrator 수정 테스트") - @Test - void updateAdministratorTest() { - // given - Role saveRole = getSaveRole(); - flushAndClear(); - - Administrator saveAdministrator = createAdministrator(saveRole); - flushAndClear(); - - Role updateRole = roleRepository.save( - Role.builder() - .name("test2") - .description("test2") - .build() - ); - flushAndClear(); - - // when - service.update( - AdministratorUpdateCommand.builder() - .id(saveAdministrator.getId()) - .password("test2") - .email("test2") - .name("test2") - .roleId(updateRole.getId()) - .build() - ); - flushAndClear(); - - // then - Administrator findAdministrator = administratorRepository.findById(saveAdministrator.getId()).orElseThrow(); - assertThat(findAdministrator.getPassword()).isEqualTo("test2"); - assertThat(findAdministrator.getEmail()).isEqualTo("test2"); - assertThat(findAdministrator.getName()).isEqualTo("test2"); - - assertThat(findAdministrator.getAdministratorRole().getRole().getName()).isEqualTo("test2"); - } - - @DisplayName("Administrator 삭제 테스트") - @Test - void deleteAdministratorTest() { - // given - Role saveRole = getSaveRole(); - flushAndClear(); - - Administrator saveAdministrator = createAdministrator(saveRole); - flushAndClear(); - - // when - service.delete(saveAdministrator.getId()); - flushAndClear(); - - // then - assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); - } - - @DisplayName("Administrator 삭제 시 Administrator 동시 삭제 테스트") - @Test - void deleteAdministratorAndAdministratorRoleTest() { - // given - Role saveRole = getSaveRole(); - flushAndClear(); - - Administrator saveAdministrator = createAdministrator(saveRole); - flushAndClear(); - - // when - service.delete(saveAdministrator.getId()); - flushAndClear(); - - // then - assertThat(administratorRepository.findById(saveAdministrator.getId())).isEmpty(); - } - - @NotNull - private Role getSaveRole() { - return roleRepository.save( - Role.builder() - .name("test") - .description("test") - .build() - ); - } - - @NotNull - private Administrator createAdministrator(Role role) { - Administrator administrator = Administrator.builder() - .loginId("test2") - .password("test2") - .email("test2") - .name("test2") - .build(); - administrator.setAdministratorRole( - AdministratorRole.builder() - .role(role) - .build() - ); - - return administratorRepository.save(administrator); - } - - @Test - @DisplayName("AdministratorService method 호출 유효성 검사 테스트") - void validationTest() { - // create - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("").password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.create(AdministratorCreateCommand.builder().loginId("loginId").password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class); - - // update - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(null).password("password").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password(null).email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("").email("email").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email(null).name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("").name("name").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name(null).roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("").roleId(1L).build())).isInstanceOf(ConstraintViolationException.class); - assertThatThrownBy(() -> service.update(AdministratorUpdateCommand.builder().id(1L).password("password").email("email").name("name").roleId(null).build())).isInstanceOf(ConstraintViolationException.class); - - // delete - assertThatThrownBy(() -> service.delete(null)).isInstanceOf(ConstraintViolationException.class); - } - -}