[api] admin/member/add
회원 정보 등록 추가
This commit is contained in:
@@ -57,6 +57,23 @@ public class AdminMemberController {
|
||||
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(
|
||||
summary = "회원 정보 수정"
|
||||
, 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.mapper.AdminMemberMapper;
|
||||
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.transaction.annotation.Transactional;
|
||||
|
||||
@@ -11,9 +14,11 @@ import java.util.List;
|
||||
@Service
|
||||
public class AdminMemberService {
|
||||
private final AdminMemberMapper adminMemberMapper;
|
||||
private final UserService userService;
|
||||
|
||||
public AdminMemberService(AdminMemberMapper adminMemberMapper) {
|
||||
public AdminMemberService(AdminMemberMapper adminMemberMapper, UserService userService) {
|
||||
this.adminMemberMapper = adminMemberMapper;
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@@ -33,6 +38,28 @@ public class AdminMemberService {
|
||||
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
|
||||
public AdminMemberModifyVo updateAdminMemberModify(AdminMemberModifyDto 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