admin: web / domain layer 분리
This commit is contained in:
parent
2c27f7a53d
commit
f66c5afe0a
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Admin, Long> {
|
||||
Optional<Admin> findByLoginId(String loginId);
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Role> 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<Admin> findAdmin = adminRepository.findById(command.getId());
|
||||
if (findAdmin.isEmpty()) {
|
||||
throw new IllegalArgumentException("Not found admin");
|
||||
}
|
||||
|
||||
Optional<Role> 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<Admin> findAdmin = adminRepository.findById(id);
|
||||
if (findAdmin.isEmpty()) {
|
||||
throw new IllegalArgumentException("Not found admin");
|
||||
}
|
||||
|
||||
adminRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
@ -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.*;
|
||||
|
|
@ -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.*;
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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.*;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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<Menu> findById(Long menuId) {
|
||||
return menuRepository.findById(menuId);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Administrator, Long> {
|
||||
Optional<Administrator> findByLoginId(String loginId);
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
package com.bpgroup.poc.admin.domain.entity.exception;
|
||||
|
||||
public class DuplicationAdministratorException extends RuntimeException {
|
||||
public DuplicationAdministratorException(String loginId) {
|
||||
super("이미 존재하는 아이디 입니다. : " + loginId);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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> administrator = administratorRepository.findByLoginId(username);
|
||||
if (administrator.isEmpty()) {
|
||||
throw new AdministratorNotFoundException(username);
|
||||
public LoginResult login(String username, String password) throws AdminNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException {
|
||||
Optional<Admin> 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()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
package com.bpgroup.poc.admin.security.authentication.service.exception;
|
||||
|
||||
public class AdminNotFoundException extends Exception {
|
||||
public AdminNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
package com.bpgroup.poc.admin.security.authentication.service.exception;
|
||||
|
||||
public class AdministratorNotFoundException extends Exception {
|
||||
public AdministratorNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
|
||||
|
|
@ -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<AdminFind.Response> 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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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<AdminFind.Response> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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<AdminFind.Response> 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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<AdministratorFind.Response> 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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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<AdministratorFind.Response> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import lombok.Data;
|
|||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
public class AdministratorCreate {
|
||||
public class AdminCreate {
|
||||
|
||||
@Data
|
||||
public static class Request {
|
||||
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Role> 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<Administrator> findAdministrator = administratorRepository.findById(command.getId());
|
||||
if (findAdministrator.isEmpty()) {
|
||||
throw new IllegalArgumentException("Not found administrator");
|
||||
}
|
||||
|
||||
Optional<Role> 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<Administrator> findAdministrator = administratorRepository.findById(id);
|
||||
if (findAdministrator.isEmpty()) {
|
||||
throw new IllegalArgumentException("Not found administrator");
|
||||
}
|
||||
|
||||
administratorRepository.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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<RoleAddMenu.Request> request,
|
||||
@RequestBody @Valid RoleAddMenu.Request request,
|
||||
BindingResult bindingResult
|
||||
) {
|
||||
roleService.deleteRoleMenu(request.get(0).getRoleId());
|
||||
|
||||
Set<RoleAddMenuCommand> 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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<RoleAddMenuCommand> commands = request.getMenuIds().stream()
|
||||
.map(menuId -> RoleAddMenuCommand.builder()
|
||||
.roleId(request.getRoleId())
|
||||
.menuId(menuId)
|
||||
.build()
|
||||
)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
roleService.addRoleMenu(commands);
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Long> menuIds = new HashSet<>();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()),
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
<h4>관리자 조회</h4>
|
||||
<div class="tb_wrapper">
|
||||
<label for="selAdministrator">관리자: </label>
|
||||
<select id="selAdministrator" class="table_select_box">
|
||||
<label for="selAdmin">관리자: </label>
|
||||
<select id="selAdmin" class="table_select_box">
|
||||
<option value="">선택</option>
|
||||
</select>
|
||||
<button type="button" id="btnFindAll" class="btn_confirm" data-bs-dismiss="modal">조회</button>
|
||||
|
|
@ -55,7 +55,7 @@
|
|||
document.getElementById('iptUpdateName').value = '';
|
||||
document.getElementById('iptDeleteId').value = '';
|
||||
document.getElementById('iptDeleteLoginId').value = '';
|
||||
document.getElementById('selAdministrator').innerHTML = '<option value="">선택</option>';
|
||||
document.getElementById('selAdmin').innerHTML = '<option value="">선택</option>';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -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 = '<option value="">선택</option>';
|
||||
const selAdmin = document.getElementById('selAdmin');
|
||||
selAdmin.innerHTML = '<option value="">선택</option>';
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue