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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
|
@ -9,7 +9,7 @@ import lombok.ToString;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ToString
|
@ToString
|
||||||
public class AdministratorCreateCommand {
|
public class AdminCreateCommand {
|
||||||
@NotBlank
|
@NotBlank
|
||||||
private String loginId;
|
private String loginId;
|
||||||
@NotBlank
|
@NotBlank
|
||||||
|
|
@ -22,8 +22,8 @@ public class AdministratorCreateCommand {
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorCreateCommand of(String loginId, String password, String email, String name, Long roleId) {
|
public static AdminCreateCommand of(String loginId, String password, String email, String name, Long roleId) {
|
||||||
AdministratorCreateCommand command = new AdministratorCreateCommand();
|
AdminCreateCommand command = new AdminCreateCommand();
|
||||||
command.loginId = loginId;
|
command.loginId = loginId;
|
||||||
command.password = password;
|
command.password = password;
|
||||||
command.email = email;
|
command.email = email;
|
||||||
|
|
@ -32,8 +32,8 @@ public class AdministratorCreateCommand {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Administrator toEntity() {
|
public Admin toEntity() {
|
||||||
return Administrator.builder()
|
return Admin.builder()
|
||||||
.loginId(loginId)
|
.loginId(loginId)
|
||||||
.password(password)
|
.password(password)
|
||||||
.email(email)
|
.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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
|
@ -9,7 +9,7 @@ import lombok.ToString;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ToString
|
@ToString
|
||||||
public class AdministratorUpdateCommand {
|
public class AdminUpdateCommand {
|
||||||
@NotNull
|
@NotNull
|
||||||
private Long id;
|
private Long id;
|
||||||
@NotBlank
|
@NotBlank
|
||||||
|
|
@ -22,8 +22,8 @@ public class AdministratorUpdateCommand {
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorUpdateCommand of(Long id, String password, String email, String name, Long roleId) {
|
public static AdminUpdateCommand of(Long id, String password, String email, String name, Long roleId) {
|
||||||
AdministratorUpdateCommand command = new AdministratorUpdateCommand();
|
AdminUpdateCommand command = new AdminUpdateCommand();
|
||||||
command.id = id;
|
command.id = id;
|
||||||
command.password = password;
|
command.password = password;
|
||||||
command.email = email;
|
command.email = email;
|
||||||
|
|
@ -32,8 +32,8 @@ public class AdministratorUpdateCommand {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Administrator toEntity() {
|
public Admin toEntity() {
|
||||||
return Administrator.builder()
|
return Admin.builder()
|
||||||
.password(password)
|
.password(password)
|
||||||
.email(email)
|
.email(email)
|
||||||
.name(name)
|
.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 com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
||||||
import jakarta.persistence.*;
|
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 com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
||||||
import jakarta.persistence.*;
|
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;
|
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;
|
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 com.bpgroup.poc.admin.domain.entity.BaseEntity;
|
||||||
import jakarta.persistence.*;
|
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.BaseEntity;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.Menu;
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
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;
|
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;
|
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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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.base.role.entity.Menu;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroupRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -82,4 +82,8 @@ public class MenuService {
|
||||||
|
|
||||||
menuRepository.deleteById(id);
|
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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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 jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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 jakarta.validation.constraints.NotBlank;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
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.Builder;
|
||||||
import lombok.Getter;
|
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.base.role.entity.RoleMenuRepository;
|
||||||
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.entity.role.Role;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleMenu;
|
import com.bpgroup.poc.admin.domain.base.role.entity.Role;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
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.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Builder;
|
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;
|
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.DoNotHaveAnyMenuException;
|
||||||
import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException;
|
import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
@ -17,7 +17,7 @@ public enum AuthenticationFailReason {
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|
||||||
public static AuthenticationFailReason from(Exception e) {
|
public static AuthenticationFailReason from(Exception e) {
|
||||||
if (e instanceof AdministratorNotFoundException) {
|
if (e instanceof AdminNotFoundException) {
|
||||||
return WRONG_LOGIN_ID;
|
return WRONG_LOGIN_ID;
|
||||||
} else if (e instanceof InvalidPasswordException) {
|
} else if (e instanceof InvalidPasswordException) {
|
||||||
return WRONG_PASSWORD;
|
return WRONG_PASSWORD;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
package com.bpgroup.poc.admin.security.authentication.service;
|
package com.bpgroup.poc.admin.security.authentication.service;
|
||||||
|
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.Administrator;
|
import com.bpgroup.poc.admin.domain.base.admin.entity.Admin;
|
||||||
import com.bpgroup.poc.admin.domain.entity.administrator.AdministratorRepository;
|
import com.bpgroup.poc.admin.domain.base.admin.entity.AdminRepository;
|
||||||
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.DoNotHaveAnyMenuException;
|
||||||
import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException;
|
import com.bpgroup.poc.admin.security.authentication.service.exception.InvalidPasswordException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -16,25 +16,25 @@ import java.util.Optional;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class LoginService {
|
public class LoginService {
|
||||||
|
|
||||||
private final AdministratorRepository administratorRepository;
|
private final AdminRepository adminRepository;
|
||||||
private final PasswordEncoder passwordEncoder;
|
private final PasswordEncoder passwordEncoder;
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public LoginResult login(String username, String password) throws AdministratorNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException {
|
public LoginResult login(String username, String password) throws AdminNotFoundException, InvalidPasswordException, DoNotHaveAnyMenuException {
|
||||||
Optional<Administrator> administrator = administratorRepository.findByLoginId(username);
|
Optional<Admin> admin = adminRepository.findByLoginId(username);
|
||||||
if (administrator.isEmpty()) {
|
if (admin.isEmpty()) {
|
||||||
throw new AdministratorNotFoundException(username);
|
throw new AdminNotFoundException(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!passwordEncoder.matches(password, administrator.get().getPassword())) {
|
if (!passwordEncoder.matches(password, admin.get().getPassword())) {
|
||||||
throw new InvalidPasswordException(username);
|
throw new InvalidPasswordException(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
return LoginResult.of(
|
return LoginResult.of(
|
||||||
administrator.get().getId(),
|
admin.get().getId(),
|
||||||
administrator.get().getLoginId(),
|
admin.get().getLoginId(),
|
||||||
administrator.get().getName(),
|
admin.get().getName(),
|
||||||
administrator.get().getLoginId()
|
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 java.util.*;
|
||||||
|
|
||||||
import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministrator.administrator;
|
import static com.bpgroup.poc.admin.domain.base.admin.entity.QAdmin.admin;
|
||||||
import static com.bpgroup.poc.admin.domain.entity.administrator.QAdministratorRole.administratorRole;
|
import static com.bpgroup.poc.admin.domain.base.admin.entity.QAdminRole.adminRole;
|
||||||
import static com.bpgroup.poc.admin.domain.entity.menu.QMenu.menu;
|
import static com.bpgroup.poc.admin.domain.base.role.entity.QMenu.menu;
|
||||||
import static com.bpgroup.poc.admin.domain.entity.menu.QMenuGroup.menuGroup;
|
import static com.bpgroup.poc.admin.domain.base.role.entity.QMenuGroup.menuGroup;
|
||||||
import static com.bpgroup.poc.admin.domain.entity.role.QRole.role;
|
import static com.bpgroup.poc.admin.domain.base.role.entity.QRole.role;
|
||||||
import static com.bpgroup.poc.admin.domain.entity.role.QRoleMenu.roleMenu;
|
import static com.bpgroup.poc.admin.domain.base.role.entity.QRoleMenu.roleMenu;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
|
@ -29,12 +29,12 @@ public class MenuQueryRepository {
|
||||||
roleMenu.menu.name,
|
roleMenu.menu.name,
|
||||||
roleMenu.menu.sortOrder
|
roleMenu.menu.sortOrder
|
||||||
)
|
)
|
||||||
.from(administrator)
|
.from(admin)
|
||||||
.innerJoin(administratorRole.role, role)
|
.innerJoin(adminRole.role, role)
|
||||||
.innerJoin(role.roleMenus, roleMenu)
|
.innerJoin(role.roleMenus, roleMenu)
|
||||||
.innerJoin(roleMenu.menu, menu)
|
.innerJoin(roleMenu.menu, menu)
|
||||||
.innerJoin(menu.menuGroup, menuGroup)
|
.innerJoin(menu.menuGroup, menuGroup)
|
||||||
.where(administrator.loginId.eq("admin"))
|
.where(admin.loginId.eq("admin"))
|
||||||
.orderBy(menuGroup.sortOrder.asc(), roleMenu.menu.sortOrder.asc())
|
.orderBy(menuGroup.sortOrder.asc(), roleMenu.menu.sortOrder.asc())
|
||||||
.fetch();
|
.fetch();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/admin/management")
|
@RequestMapping("/admin/management")
|
||||||
public class AdministratorManagementController {
|
public class AdminManagementController {
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public String administratorManagementPage() {
|
public String adminManagementPage() {
|
||||||
return "main/admin/management/list";
|
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.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
public class AdministratorCreate {
|
public class AdminCreate {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class Request {
|
public static class Request {
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
public class AdministratorDelete {
|
public class AdminDelete {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class Request {
|
public static class Request {
|
||||||
|
|
@ -19,16 +19,16 @@ public class AdministratorDelete {
|
||||||
@ToString
|
@ToString
|
||||||
public static class Response extends CommonResponse {
|
public static class Response extends CommonResponse {
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorDelete.Response success() {
|
public static AdminDelete.Response success() {
|
||||||
AdministratorDelete.Response response = new AdministratorDelete.Response();
|
AdminDelete.Response response = new AdminDelete.Response();
|
||||||
response.resultCode = "0000";
|
response.resultCode = "0000";
|
||||||
response.resultMessage = "Success";
|
response.resultMessage = "Success";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorDelete.Response fail(String resultMessage) {
|
public static AdminDelete.Response fail(String resultMessage) {
|
||||||
AdministratorDelete.Response response = new AdministratorDelete.Response();
|
AdminDelete.Response response = new AdminDelete.Response();
|
||||||
response.resultCode = "9999";
|
response.resultCode = "9999";
|
||||||
response.resultMessage = resultMessage;
|
response.resultMessage = resultMessage;
|
||||||
return response;
|
return response;
|
||||||
|
|
@ -3,7 +3,7 @@ package com.bpgroup.poc.admin.web.main.admin.management.reqres;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
public class AdministratorFind {
|
public class AdminFind {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ToString
|
@ToString
|
||||||
|
|
@ -8,7 +8,7 @@ import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
public class AdministratorUpdate {
|
public class AdminUpdate {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public static class Request {
|
public static class Request {
|
||||||
|
|
@ -28,16 +28,16 @@ public class AdministratorUpdate {
|
||||||
@ToString
|
@ToString
|
||||||
public static class Response extends CommonResponse {
|
public static class Response extends CommonResponse {
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorUpdate.Response success() {
|
public static AdminUpdate.Response success() {
|
||||||
AdministratorUpdate.Response response = new AdministratorUpdate.Response();
|
AdminUpdate.Response response = new AdminUpdate.Response();
|
||||||
response.resultCode = "0000";
|
response.resultCode = "0000";
|
||||||
response.resultMessage = "Success";
|
response.resultMessage = "Success";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
public static AdministratorUpdate.Response fail(String resultMessage) {
|
public static AdminUpdate.Response fail(String resultMessage) {
|
||||||
AdministratorUpdate.Response response = new AdministratorUpdate.Response();
|
AdminUpdate.Response response = new AdminUpdate.Response();
|
||||||
response.resultCode = "9999";
|
response.resultCode = "9999";
|
||||||
response.resultMessage = resultMessage;
|
response.resultMessage = resultMessage;
|
||||||
return response;
|
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;
|
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 com.bpgroup.poc.admin.web.main.admin.menu.reqres.*;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -13,95 +12,64 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RequestMapping("/admin/menu")
|
@RequestMapping("/admin")
|
||||||
public class MenuRestController {
|
public class MenuRestController {
|
||||||
|
|
||||||
private final MenuService service;
|
private final MenuWebService menuWebService;
|
||||||
|
|
||||||
|
@PostMapping("/menu-group/create")
|
||||||
|
|
||||||
@PostMapping("/create/menu-group")
|
|
||||||
public ResponseEntity<?> createMenuGroup(
|
public ResponseEntity<?> createMenuGroup(
|
||||||
@RequestBody @Valid MenuGroupCreate.Request request,
|
@RequestBody @Valid MenuGroupCreate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.createMenuGroup(
|
MenuGroupCreate.Response response = menuWebService.createMenuGroup(request);
|
||||||
MenuGroupCreateCommand.builder()
|
return ResponseEntity.ok(response);
|
||||||
.name(request.getName())
|
|
||||||
.uri(request.getUri())
|
|
||||||
.sortOrder(request.getSortOrder())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(MenuGroupCreate.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/update/menu-group")
|
@PostMapping("/menu-group/update")
|
||||||
public ResponseEntity<?> updateMenuGroup(
|
public ResponseEntity<?> updateMenuGroup(
|
||||||
@RequestBody @Valid MenuGroupUpdate.Request request,
|
@RequestBody @Valid MenuGroupUpdate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.updateMenuGroup(
|
MenuGroupUpdate.Response response = menuWebService.updateMenuGroup(request);
|
||||||
MenuGroupUpdateCommand.builder()
|
return ResponseEntity.ok(response);
|
||||||
.id(request.getId())
|
|
||||||
.name(request.getName())
|
|
||||||
.uri(request.getUri())
|
|
||||||
.sortOrder(request.getSortOrder())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(MenuGroupCreate.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/delete/menu-group")
|
@PostMapping("/menu-group/delete")
|
||||||
public ResponseEntity<?> deleteMenuGroup(
|
public ResponseEntity<?> deleteMenuGroup(
|
||||||
@RequestBody @Valid MenuGroupDelete.Request request,
|
@RequestBody @Valid MenuGroupDelete.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.deleteMenuGroup(request.getId());
|
MenuGroupDelete.Response response = menuWebService.deleteMenuGroup(request);
|
||||||
|
return ResponseEntity.ok(response);
|
||||||
return ResponseEntity.ok(MenuGroupDelete.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/create/menu")
|
@PostMapping("/menu/create")
|
||||||
public ResponseEntity<?> createMenu(
|
public ResponseEntity<?> createMenu(
|
||||||
@RequestBody @Valid MenuCreate.Request request,
|
@RequestBody @Valid MenuCreate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.createMenu(
|
MenuCreate.Response response = menuWebService.createMenu(request);
|
||||||
MenuCreateCommand.builder()
|
return ResponseEntity.ok(response);
|
||||||
.menuGroupId(request.getMenuGroupId())
|
|
||||||
.name(request.getName())
|
|
||||||
.uri(request.getUri())
|
|
||||||
.sortOrder(request.getSortOrder())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
return ResponseEntity.ok(MenuCreate.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/update/menu")
|
@PostMapping("/menu/update")
|
||||||
public ResponseEntity<?> updateMenu(
|
public ResponseEntity<?> updateMenu(
|
||||||
@RequestBody @Valid MenuUpdate.Request request,
|
@RequestBody @Valid MenuUpdate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.updateMenu(
|
MenuUpdate.Response response = menuWebService.updateMenu(request);
|
||||||
MenuUpdateCommand.builder()
|
return ResponseEntity.ok(response);
|
||||||
.id(request.getId())
|
|
||||||
.name(request.getName())
|
|
||||||
.uri(request.getUri())
|
|
||||||
.sortOrder(request.getSortOrder())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(MenuGroupCreate.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/delete/menu")
|
@PostMapping("/menu/delete")
|
||||||
public ResponseEntity<?> deleteMenu(
|
public ResponseEntity<?> deleteMenu(
|
||||||
@RequestBody @Valid MenuDelete.Request request,
|
@RequestBody @Valid MenuDelete.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
service.deleteMenu(request.getId());
|
MenuDelete.Response response = menuWebService.deleteMenu(request);
|
||||||
|
return ResponseEntity.ok(response);
|
||||||
return ResponseEntity.ok(MenuDelete.Response.success());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.RoleCreate;
|
||||||
import com.bpgroup.poc.admin.web.main.admin.role.reqres.RoleDelete;
|
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.reqres.RoleUpdate;
|
||||||
import com.bpgroup.poc.admin.web.main.admin.role.service.*;
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.ResponseEntity;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RequestMapping("/admin/role")
|
@RequestMapping("/admin/role")
|
||||||
public class RoleRestController {
|
public class RoleRestController {
|
||||||
|
|
||||||
private final RoleService roleService;
|
private final RoleWebService roleWebService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 권한 등록
|
* 권한 등록
|
||||||
|
|
@ -34,14 +28,8 @@ public class RoleRestController {
|
||||||
@RequestBody @Valid RoleCreate.Request request,
|
@RequestBody @Valid RoleCreate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
RoleCreateResult result = roleService.create(
|
RoleCreate.Response response = roleWebService.create(request);
|
||||||
RoleCreateCommand.builder()
|
return ResponseEntity.ok(response);
|
||||||
.name(request.getName())
|
|
||||||
.description(request.getDescription())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(RoleCreate.Response.success(result.getId()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -52,14 +40,7 @@ public class RoleRestController {
|
||||||
@RequestBody @Valid RoleUpdate.Request request,
|
@RequestBody @Valid RoleUpdate.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
roleService.update(
|
roleWebService.update(request);
|
||||||
RoleUpdateCommand.builder()
|
|
||||||
.id(request.getId())
|
|
||||||
.name(request.getName())
|
|
||||||
.description(request.getDescription())
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(RoleUpdate.Response.success());
|
return ResponseEntity.ok(RoleUpdate.Response.success());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -71,31 +52,19 @@ public class RoleRestController {
|
||||||
@RequestBody @Valid RoleDelete.Request request,
|
@RequestBody @Valid RoleDelete.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
roleService.delete(request.getId());
|
roleWebService.delete(request);
|
||||||
return ResponseEntity.ok(RoleDelete.Response.success());
|
return ResponseEntity.ok(RoleDelete.Response.success());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 권한 내 메뉴 추가
|
* 권한 내 메뉴 추가
|
||||||
* DELETE -> INSERT
|
|
||||||
*/
|
*/
|
||||||
@PostMapping("/put/menu")
|
@PostMapping("/put/menu")
|
||||||
public ResponseEntity<?> addMenu(
|
public ResponseEntity<?> addMenu(
|
||||||
@RequestBody @Valid List<RoleAddMenu.Request> request,
|
@RequestBody @Valid RoleAddMenu.Request request,
|
||||||
BindingResult bindingResult
|
BindingResult bindingResult
|
||||||
) {
|
) {
|
||||||
roleService.deleteRoleMenu(request.get(0).getRoleId());
|
roleWebService.putMenu(request);
|
||||||
|
|
||||||
Set<RoleAddMenuCommand> commands = request.stream()
|
|
||||||
.map(c -> RoleAddMenuCommand.builder()
|
|
||||||
.roleId(c.getRoleId())
|
|
||||||
.menuId(c.getMenuId())
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
|
|
||||||
roleService.addRoleMenu(commands);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(RoleAddMenu.Response.success());
|
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 com.bpgroup.poc.admin.web.common.CommonResponse;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class RoleAddMenu {
|
public class RoleAddMenu {
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
@ -14,7 +18,8 @@ public class RoleAddMenu {
|
||||||
@NotNull
|
@NotNull
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
@NotNull
|
@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`)
|
INSERT INTO `role` (`name`, `description`, `create_date`, `update_date`)
|
||||||
VALUES ('SUPER_ADMIN', '최고 관리자', CURDATE(), CURDATE()),
|
VALUES ('SUPER_ADMIN', '최고 관리자', CURDATE(), CURDATE()),
|
||||||
('ADMIN', '관리자', CURDATE(), CURDATE()),
|
('ADMIN', '관리자', CURDATE(), CURDATE()),
|
||||||
('CLIENT', '고객', CURDATE(), CURDATE());
|
('CLIENT', '고객', CURDATE(), CURDATE());
|
||||||
|
|
||||||
INSERT INTO `administrator_role` (`administrator_id`, `role_id`, `create_date`, `update_date`)
|
INSERT INTO `admin` (`login_id`, `password`, `email`, `name`, `role_id`, `create_date`, `update_date`)
|
||||||
VALUES ('1', '1', CURDATE(), CURDATE());
|
VALUES ('admin', '$2a$10$g6UOrQ/OS8o5r5CJk7C5juVFaItQ62U3EIn8zLPzkFplM3wVLvKZ2', 'admin@admin.com', '홍길동', 1, CURDATE(), CURDATE());
|
||||||
|
|
||||||
INSERT INTO `menu_group` (`uri`, `name`, `sort_order`, `create_date`, `update_date`)
|
INSERT INTO `menu_group` (`uri`, `name`, `sort_order`, `create_date`, `update_date`)
|
||||||
VALUES ('/admin', '관리자 관리', 2, CURDATE(), CURDATE()),
|
VALUES ('/admin', '관리자 관리', 2, CURDATE(), CURDATE()),
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@
|
||||||
|
|
||||||
<h4>관리자 조회</h4>
|
<h4>관리자 조회</h4>
|
||||||
<div class="tb_wrapper">
|
<div class="tb_wrapper">
|
||||||
<label for="selAdministrator">관리자: </label>
|
<label for="selAdmin">관리자: </label>
|
||||||
<select id="selAdministrator" class="table_select_box">
|
<select id="selAdmin" class="table_select_box">
|
||||||
<option value="">선택</option>
|
<option value="">선택</option>
|
||||||
</select>
|
</select>
|
||||||
<button type="button" id="btnFindAll" class="btn_confirm" data-bs-dismiss="modal">조회</button>
|
<button type="button" id="btnFindAll" class="btn_confirm" data-bs-dismiss="modal">조회</button>
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
document.getElementById('iptUpdateName').value = '';
|
document.getElementById('iptUpdateName').value = '';
|
||||||
document.getElementById('iptDeleteId').value = '';
|
document.getElementById('iptDeleteId').value = '';
|
||||||
document.getElementById('iptDeleteLoginId').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 () {
|
document.getElementById('btnFindAll').addEventListener(('click'), function () {
|
||||||
const requestUri = /*[[@{/admin/management/list}]]*/ '';
|
const requestUri = /*[[@{/admin/management/list}]]*/ '';
|
||||||
Reqhelper.reqGetJson(requestUri, (res) => {
|
Reqhelper.reqGetJson(requestUri, (res) => {
|
||||||
const selAdministrator = document.getElementById('selAdministrator');
|
const selAdmin = document.getElementById('selAdmin');
|
||||||
selAdministrator.innerHTML = '<option value="">선택</option>';
|
selAdmin.innerHTML = '<option value="">선택</option>';
|
||||||
res.forEach(item => {
|
res.forEach(item => {
|
||||||
const option = document.createElement('option');
|
const option = document.createElement('option');
|
||||||
option.value = item.id;
|
option.value = item.id;
|
||||||
option.text = item.loginId;
|
option.text = item.loginId;
|
||||||
selAdministrator.appendChild(option);
|
selAdmin.appendChild(option);
|
||||||
});
|
});
|
||||||
}, () => {
|
}, () => {
|
||||||
PageHelper.showErrorModal('데이터 조회에 실패했습니다.');
|
PageHelper.showErrorModal('데이터 조회에 실패했습니다.');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('selAdministrator').addEventListener(('change'), function () {
|
document.getElementById('selAdmin').addEventListener(('change'), function () {
|
||||||
document.getElementById('iptUpdateId').value = this.value;
|
document.getElementById('iptUpdateId').value = this.value;
|
||||||
document.getElementById('iptUpdateLoginId').value = this.options[this.selectedIndex].text;
|
document.getElementById('iptUpdateLoginId').value = this.options[this.selectedIndex].text;
|
||||||
document.getElementById('iptDeleteId').value = this.value;
|
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.base.role.entity.Menu;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroupRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository;
|
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.env.MariaDBTestEnv;
|
||||||
import com.bpgroup.poc.admin.web.main.admin.menu.service.*;
|
|
||||||
import jakarta.validation.ConstraintViolationException;
|
import jakarta.validation.ConstraintViolationException;
|
||||||
import org.assertj.core.api.Assertions;
|
import org.assertj.core.api.Assertions;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.base.role.entity.Role;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroup;
|
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenu;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuGroupRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.RoleMenuRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.menu.MenuRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.RoleRepository;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.Role;
|
import com.bpgroup.poc.admin.domain.base.role.service.*;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleMenu;
|
import com.bpgroup.poc.admin.domain.base.role.entity.Menu;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleMenuRepository;
|
import com.bpgroup.poc.admin.domain.base.role.entity.MenuGroup;
|
||||||
import com.bpgroup.poc.admin.domain.entity.role.RoleRepository;
|
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.env.MariaDBTestEnv;
|
||||||
import com.bpgroup.poc.admin.web.main.admin.role.service.*;
|
|
||||||
import jakarta.validation.ConstraintViolationException;
|
import jakarta.validation.ConstraintViolationException;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
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