49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package com.zioinfo.mes.member;
|
|
|
|
import com.zioinfo.mes.admin.dto.UserDto;
|
|
import com.zioinfo.mes.admin.mapper.AdminUserMapper;
|
|
import com.zioinfo.mes.common.ApiResponse;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 구성원(작업자) 조회 API — 작업 배정·실적 입력 시 작업자 선택용.
|
|
*
|
|
* <p>관리자 CRUD 는 /api/admin/users(SuperAdmin)가 담당하고, 본 API 는 조회 전용(Viewer+).
|
|
* 보안: {@link UserDto} 로만 반환하여 password_hash 노출 차단.
|
|
*/
|
|
@RestController
|
|
@RequestMapping("/api/mes/members")
|
|
@RequiredArgsConstructor
|
|
public class MemberController {
|
|
|
|
private final AdminUserMapper mapper;
|
|
|
|
/** 활성 구성원 목록(작업자 배정 드롭다운용). role 필터 가능. */
|
|
@GetMapping
|
|
public ApiResponse<List<UserDto>> list(@RequestParam(required = false) String role) {
|
|
List<UserDto> all = mapper.findAll().stream()
|
|
.filter(u -> u.isActive())
|
|
.filter(u -> role == null || role.isBlank() || role.equalsIgnoreCase(u.getRole()))
|
|
.map(UserDto::from)
|
|
.toList();
|
|
return ApiResponse.ok(all);
|
|
}
|
|
|
|
/** 현장 작업자(WORKER) 목록 — 작업 배정 전용. */
|
|
@GetMapping("/workers")
|
|
public ApiResponse<List<UserDto>> workers() {
|
|
List<UserDto> workers = mapper.findAll().stream()
|
|
.filter(u -> u.isActive())
|
|
.filter(u -> "WORKER".equalsIgnoreCase(u.getRole()) || "MANAGER".equalsIgnoreCase(u.getRole()))
|
|
.map(UserDto::from)
|
|
.toList();
|
|
return ApiResponse.ok(workers);
|
|
}
|
|
}
|