[api] admin/member/add
회원 정보 등록 추가
This commit is contained in:
@@ -57,6 +57,23 @@ public class AdminMemberController {
|
|||||||
return ApiResponse.entity(adminMemberViewVo, ApiResponseCode.CODE_2001, "회원");
|
return ApiResponse.entity(adminMemberViewVo, ApiResponseCode.CODE_2001, "회원");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "회원 등록"
|
||||||
|
, description = "관리자가 교사 또는 학생 회원을 등록합니다. 아이디 중복 시 오류를 반환합니다."
|
||||||
|
)
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResponseEntity<ApiResponse<AdminMemberAddVo>> adminMemberAdd(
|
||||||
|
@Valid @RequestBody AdminMemberAddForm adminMemberAddForm
|
||||||
|
) {
|
||||||
|
AdminMemberAddVo adminMemberAddVo = adminMemberService.insertAdminMemberAdd(adminMemberAddForm.toDto());
|
||||||
|
|
||||||
|
if (adminMemberAddVo.getResultCode() == 2004) {
|
||||||
|
return ApiResponse.entity(adminMemberAddVo, ApiResponseCode.CODE_2004, "아이디");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ApiResponse.entity(adminMemberAddVo, ApiResponseCode.CODE_2002, "회원");
|
||||||
|
}
|
||||||
|
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "회원 정보 수정"
|
summary = "회원 정보 수정"
|
||||||
, description = "관리자가 회원 PK 기준으로 회원 기본 정보와 권한 정보를 수정합니다."
|
, description = "관리자가 회원 PK 기준으로 회원 기본 정보와 권한 정보를 수정합니다."
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.alist.api.modules.admin.member.dto;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class AdminMemberAddDto {
|
||||||
|
private String id;
|
||||||
|
private String password;
|
||||||
|
private String userRole;
|
||||||
|
private String userType;
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package com.alist.api.modules.admin.member.form;
|
||||||
|
|
||||||
|
import com.alist.api.modules.admin.member.dto.AdminMemberAddDto;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.AssertTrue;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Schema(description = "관리자 회원 등록 요청 폼")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class AdminMemberAddForm {
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description = "회원 아이디"
|
||||||
|
, example = "teacher01"
|
||||||
|
, requiredMode = Schema.RequiredMode.REQUIRED
|
||||||
|
)
|
||||||
|
@NotBlank(message = "아이디를 입력해주세요.")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description = "비밀번호(8~64자, 영문과 숫자 포함, 공백 불가)"
|
||||||
|
, example = "pass1234"
|
||||||
|
, requiredMode = Schema.RequiredMode.REQUIRED
|
||||||
|
)
|
||||||
|
@NotBlank(message = "비밀번호를 입력해주세요.")
|
||||||
|
@Size(min = 8, max = 64, message = "비밀번호는 8~64자여야 합니다.")
|
||||||
|
@Pattern(
|
||||||
|
regexp = "^(?=.*[A-Za-z])(?=.*\\d)\\S+$"
|
||||||
|
, message = "비밀번호는 영문과 숫자를 포함하고 공백이 없어야 합니다."
|
||||||
|
)
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description = "회원 권한 코드. 교사: CCM/SCM/I, 학생: R/E"
|
||||||
|
, example = "I"
|
||||||
|
, requiredMode = Schema.RequiredMode.REQUIRED
|
||||||
|
)
|
||||||
|
@NotBlank(message = "회원 권한을 입력해주세요.")
|
||||||
|
@Pattern(
|
||||||
|
regexp = "^(CCM|SCM|I|R|E)$"
|
||||||
|
, message = "회원 권한은 CCM, SCM, I, R, E만 가능합니다."
|
||||||
|
)
|
||||||
|
private String userRole;
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description = "회원 유형 코드. T: 교사, S: 학생"
|
||||||
|
, example = "T"
|
||||||
|
, requiredMode = Schema.RequiredMode.REQUIRED
|
||||||
|
)
|
||||||
|
@NotBlank(message = "회원 유형을 입력해주세요.")
|
||||||
|
@Pattern(
|
||||||
|
regexp = "^(T|S)$"
|
||||||
|
, message = "회원 유형은 T 또는 S만 가능합니다."
|
||||||
|
)
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
@AssertTrue(message = "회원 유형과 권한 조합을 확인해주세요.")
|
||||||
|
@Schema(hidden = true)
|
||||||
|
public boolean isValidUserTypeAndRole() {
|
||||||
|
if (userType == null || userRole == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("T".equals(userType)) {
|
||||||
|
return "CCM".equals(userRole)
|
||||||
|
|| "SCM".equals(userRole)
|
||||||
|
|| "I".equals(userRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("S".equals(userType)) {
|
||||||
|
return "R".equals(userRole)
|
||||||
|
|| "E".equals(userRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AdminMemberAddDto toDto() {
|
||||||
|
AdminMemberAddDto adminMemberAddDto = new AdminMemberAddDto();
|
||||||
|
adminMemberAddDto.setId(id.trim());
|
||||||
|
adminMemberAddDto.setPassword(password);
|
||||||
|
adminMemberAddDto.setUserRole(userRole);
|
||||||
|
adminMemberAddDto.setUserType(userType);
|
||||||
|
return adminMemberAddDto;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,9 @@ package com.alist.api.modules.admin.member.service;
|
|||||||
import com.alist.api.modules.admin.member.dto.*;
|
import com.alist.api.modules.admin.member.dto.*;
|
||||||
import com.alist.api.modules.admin.member.mapper.AdminMemberMapper;
|
import com.alist.api.modules.admin.member.mapper.AdminMemberMapper;
|
||||||
import com.alist.api.modules.admin.member.vo.*;
|
import com.alist.api.modules.admin.member.vo.*;
|
||||||
|
import com.alist.api.modules.front.user.dto.UserDto;
|
||||||
|
import com.alist.api.modules.front.user.service.UserService;
|
||||||
|
import com.alist.api.modules.front.user.vo.UserVo;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -11,9 +14,11 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class AdminMemberService {
|
public class AdminMemberService {
|
||||||
private final AdminMemberMapper adminMemberMapper;
|
private final AdminMemberMapper adminMemberMapper;
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
public AdminMemberService(AdminMemberMapper adminMemberMapper) {
|
public AdminMemberService(AdminMemberMapper adminMemberMapper, UserService userService) {
|
||||||
this.adminMemberMapper = adminMemberMapper;
|
this.adminMemberMapper = adminMemberMapper;
|
||||||
|
this.userService = userService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
@@ -33,6 +38,28 @@ public class AdminMemberService {
|
|||||||
return adminMemberMapper.selectAdminMemberView(userIdx);
|
return adminMemberMapper.selectAdminMemberView(userIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public AdminMemberAddVo insertAdminMemberAdd(
|
||||||
|
AdminMemberAddDto adminMemberAddDto
|
||||||
|
) {
|
||||||
|
UserDto userDto = new UserDto();
|
||||||
|
userDto.setId(adminMemberAddDto.getId());
|
||||||
|
userDto.setPassword(adminMemberAddDto.getPassword());
|
||||||
|
userDto.setUserRole(adminMemberAddDto.getUserRole());
|
||||||
|
userDto.setUserType(adminMemberAddDto.getUserType());
|
||||||
|
|
||||||
|
UserVo userVo = userService.insertUserAdd(userDto);
|
||||||
|
|
||||||
|
AdminMemberAddVo adminMemberAddVo = new AdminMemberAddVo();
|
||||||
|
adminMemberAddVo.setUserIdx(userVo.getUserIdx());
|
||||||
|
adminMemberAddVo.setId(userVo.getId());
|
||||||
|
adminMemberAddVo.setUserRole(userVo.getUserRole());
|
||||||
|
adminMemberAddVo.setUserType(userVo.getUserType());
|
||||||
|
adminMemberAddVo.setResultCode(userVo.getResultCode());
|
||||||
|
|
||||||
|
return adminMemberAddVo;
|
||||||
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
public AdminMemberModifyVo updateAdminMemberModify(AdminMemberModifyDto adminMemberModifyDto) {
|
public AdminMemberModifyVo updateAdminMemberModify(AdminMemberModifyDto adminMemberModifyDto) {
|
||||||
int updateCount = adminMemberMapper.updateAdminMemberModify(adminMemberModifyDto);
|
int updateCount = adminMemberMapper.updateAdminMemberModify(adminMemberModifyDto);
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.alist.api.modules.admin.member.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Schema(description = "관리자 회원 등록 응답")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class AdminMemberAddVo {
|
||||||
|
|
||||||
|
@Schema(description = "회원 PK", example = "15")
|
||||||
|
private Integer userIdx;
|
||||||
|
|
||||||
|
@Schema(description = "회원 아이디", example = "teacher01")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(description = "회원 권한 코드", example = "I")
|
||||||
|
private String userRole;
|
||||||
|
|
||||||
|
@Schema(description = "회원 유형 코드. T: 교사, S: 학생", example = "T")
|
||||||
|
private String userType;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
@Schema(hidden = true)
|
||||||
|
private int resultCode;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user