import { HTTPNoBody } from "@fastify-modular/route"; import { pito } from "pito"; import { NeedLogin } from "../defines"; import { BrokerType, GenderType, NationalityType, StatGbCd, UserRole, UserState, } from "../enums"; // ===================================================================================== export const ListUserOption = pito.Obj({ userRole : pito.Enums(UserRole), createdAtFrom : pito.Opt(pito.Date()), createdAtTo : pito.Opt(pito.Date()), userName : pito.Opt(pito.Str()), nickName : pito.Opt(pito.Str()), email : pito.Opt(pito.Str()), phoneNumber : pito.Opt(pito.Str()), birth : pito.Opt(pito.Date()), nationalityType: pito.Opt(pito.Enums(NationalityType)), // '내외국인(01:내국인, 02:외국인)' genderType : pito.Opt(pito.Enums(GenderType)), userState : pito.Opt(pito.Enums(UserState)), userAuthYn : pito.Opt(pito.Str()), emailRcvYn : pito.Opt(pito.Str()), kakaoRcvYn : pito.Opt(pito.Str()), smsRcvYn : pito.Opt(pito.Str()), dutyName : pito.Opt(pito.Str()), brokerType : pito.Opt(pito.Enums(BrokerType)), bsnsNm : pito.Opt(pito.Str()), reprRltrNm : pito.Opt(pito.Str()), rltrOffcRegsCd : pito.Opt(pito.Str()), telNo : pito.Opt(pito.Str()), pageSize: pito.Opt(pito.Int({ minimum: 0, maximum: 100 })), pageNo : pito.Opt(pito.Int({ minimum: 1 })), }); export type ListUserOption = pito.Type; // ===================================================================================== export const ListUserOutput = pito.Obj({ found: pito.Arr( pito.Obj({ /* BZ_USER */ // user id : pito.Num(), userState : pito.Enums(UserState), userRole : pito.Enums(UserRole), userName : pito.Str(), // '이름'; email : pito.Str(), // '이메일'; phoneNumber : pito.Str(), // '전화번호'; nickName : pito.Str(), // '닉네임'; birth : pito.Date(), // '생년월일'; nationalityType: pito.Opt(pito.Enums(NationalityType)), // '내외국인(01:내국인, 02:외국인)' genderType : pito.Opt(pito.Enums(GenderType)), // '성별(01:남성, 02:여성)' thmbn : pito.Opt(pito.Str()), // '대표 섬네일 URL 주소' userAuthYn : pito.Opt(pito.Str()), emailRcvYn : pito.Opt(pito.Str()), kakaoRcvYn : pito.Opt(pito.Str()), smsRcvYn : pito.Opt(pito.Str()), // broker brokerCd : pito.Opt(pito.Str()), // '공인중개사 코드' brokerType : pito.Opt(pito.Enums(BrokerType)), // '공인중개사 유형 01: 대표공인중개사, 02:소속공인중개사' dutyName : pito.Opt(pito.Str()), // '직책명' createdAt : pito.Date(), // '생성 시각'; updatedAt : pito.Date(), // '최종수정 시각'; deletedAt : pito.Opt(pito.Date()), // '삭제 시각'; /* PD_RLTR_OFFC */ rltrOffcRegsCd : pito.Opt(pito.Str()), // 중개사무소 등록번호 sigBjdCd : pito.Opt(pito.Str()), // 시군구법정동코드 addrNm : pito.Opt(pito.Str()), // 주소명 bsnsNm : pito.Opt(pito.Str()), // 상호명 reprRltrNm : pito.Opt(pito.Str()), // 대표중개사명 telNo : pito.Opt(pito.Str()), // 전화번호 statGbCd : pito.Opt(pito.Enums(StatGbCd)), // 상태구분코드(1:영업중, 2:휴업, 3:휴업연장, 4:실효, 5:폐업, 6:전출, 7:등록취소, 8:업무정지) }) ), }); export type ListUserOutput = pito.Type; // ===================================================================================== export const ListUser = HTTPNoBody("GET", "/api/v1/admin/user", "admin") .query(ListUserOption) .response(ListUserOutput) .presets(NeedLogin) .build(); // =====================================================================================