| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 구분 | 기능 _id | 기능 명 | 상세 설명 | 필요 데이터 | 우선 순위 | 담당자 | 응답 | 응답 | |||||||||||||
2 | User (유저) | [GET] api/user/check-duplicate/{type} | checkDuplicate | 중복체크 | 이메일 및 닉네임 중복확인을 한다. | type : email 또는 nick-name 중 택 일 text : 검사할 문자 | 이준영 | { "resultMessage": "string", "resultData": 0 } | ||||||||||||||
3 | [GET] api/user/sign-up | signup | 회원가입 | 이메일 인증후 회원가입 완료 | token | 이준영 | ||||||||||||||||
4 | [POST] api/user/signUp | signUpUser | 회원가입 | 이메일, 비밀번호, 비밀번호 재확인, 이름에 대한 정보를 받고, 회원 가입을 위한 메일 전송. | email (이메일) upw (비밀번호) checkUpw (비밀번호 확인) nickName (사용자 닉네임) phone (사용자 전화번호) name (사용자 이름) userPic (사용자 프로필 사진) roleId (학부모 or 학생) birth(생년월일) | 이준영 | ||||||||||||||||
5 | [GET] api/user/access-token | getaccessToken | access token 재발행 | access token 재발행 | 이준영 | { "resultMessage": "액세스 토큰 재발행 성공", "resultData": "token" } | ||||||||||||||||
6 | [POST] api/user/signIn | signInUser | 로그인 | 이메일, 비밀번호를 정보를 받고, DB에 있는 데이터와 동일한지 확인하고 동일하면 로그인 처리를 합니다. | email (이메일) upw (비밀번호) | 이준영 | { "resultMessage": "string", "resultData": { "userId": 0, "roleId": 0, "name": "string", "accessToken": "string" } } | |||||||||||||||
7 | [POST] /api/user/log-out | logout | 로그아웃 | 쿠키 삭제 | 이준영 | { "resultMessage": "string", "resultData": 0 } | ||||||||||||||||
8 | [GET] api/user | getUser | 유저 정보 조회 | 유저 정보를 조회한다. | token | 이준영 | { "resultMessage": "string", "resultData": { "userId": 0, "roleId": 0, "name": "string", "email": "string", "phone": "string", "birth": "2025-02-18", "nickName": "string", "userPic": "string", "createdAt": "2025-02-18T06:30:46.383Z", "updatedAt": "2025-02-18T06:30:46.383Z" } } | |||||||||||||||
9 | [PUT] api/user | putUser | 유저 정보 수정 | 유저 정보를 수정한다. | { "req": { "name": "string", "phone": "015-5675-1595", "currentPw": "KoiW$ytR}", "newPw": "m]=]]%}94?w0_=r_0", "birth": "2025-02-06", "nickName": "string" }, "pic": "string" } | 이준영 | { "resultMessage": "string", "resultData": 0 } | |||||||||||||||
10 | [GET] /api/user/temp-pw | findPassword | 유저 비밀번호 찾기 | 비밀번호 재설정 링크를 이메일로 보낸다 | 이준영 | { "resultMessage": "string", "resultData": 0 } | ||||||||||||||||
11 | [GET] /api/user/temp-pw/{id} | savetemppw | 임시 비밀번호 저장 | 메일로 보낸 임시 비밀번호 저장 | userId(유저pk) | 이준영 | ||||||||||||||||
12 | [GET] /api/user/total_user | gettotaluser | 유저수 조회 | 회원가입한 유저수 조회 | 이준영 | |||||||||||||||||
13 | [DELETE] api/user/delete | deleteUser | 회원탈퇴 | 유저를 삭제한다. 삭제 시 해당 회원 리뷰, 학원정보 삭제 처리가 되어야 한다. | token userId (이메일 pk) upw (유저비밀번호) | 이준영 | { "resultMessage": "string", "resultData": 0 } | |||||||||||||||
14 | realationship | [DELETE] /api/user/relationship | deleterequirerdrelationship | 요청 삭제 | 자식이 부모의 이메일로 관계 등록 요청 취소 승인 전까지만 가능 | { "email": "string" } | 이준영 | { "resultMessage": "string", "resultData": 0 } | ||||||||||||||
15 | [GET] /api/user/relationship/{student-id} | accpetrequire | 요청 승인 | 부모가 자식한테서 온 관계 등록 요청 승인 | 학생 pk | 이준영 | { "resultMessage": "string", "resultData": 0 } | |||||||||||||||
16 | [GET] /api/user/relationship/list/{type} | getrelationship | 관계 조회 | 관계 목록 조회 | type : {1:부모 입장, 2:학생 입장} | 이준영 | { "resultMessage": "string", "resultData": [ { "userId": 0, "name": "string", "email": "string", "phone": "string", "birth": "2025-02-06", "userPic": "string", "certification": 0, "createdAt": "2025-02-06T03:48:22.500Z", "updatedAt": "2025-02-06T03:48:22.500Z" } ] } | |||||||||||||||
17 | [POST] /api/user/relationship | reuirerelationship | 관계 요청 | 자식이 부모의 이메일로 관계 등록 요청 | { "email": "string" } | 이준영 | { "resultMessage": "string", "resultData": 0 } | |||||||||||||||
18 | chat | [GET] /api/chat | getchatuser | 채팅방 목록 조회 | 채팅한 목록 조회 | user-id or aca-id page size | 이준영 | { "resultMessage": "string", "resultData": { "totalPages": 0, "totalElements": 0, "users": [ { "userId": 0, "userName": "string", "userPic": "string", "acaId": 0, "acaName": "string", "acaPic": "string", "createdAt": "2025-02-06T03:51:27.462Z", "isRead": 0 } ] } } | ||||||||||||||
19 | [GET] /api/chat/log | getchatlog | 메세지 내역 조회 | 메세지 목록 조회 | user-id aca-id page size | 이준영 | { "resultMessage": "string", "resultData": [ { "userName": "string", "acaName": "string", "message": "string", "senderType": 0, "isRead": 0, "createdAt": "2025-02-06T03:52:54.969Z" } ] } | |||||||||||||||
20 | [POST] /api/chat | postchat | 메세지 전송 | 메세지 전송 user-id,aca-id는 채팅하는 사람이 바뀌지 않으면 고정 sender-type : {0: user-> aca, 1: aca -> user} | "userId", "acaId, "senderType", "message" | 이준영 | { "resultMessage": "string", "resultData": 0 } | |||||||||||||||
21 | Academy (학원) | [POST] api/academy | postAcademy | 학원 정보 등록 | 학원에 대한 정보(내용)를 작성하여 등록한다. | userId(유저pk) acaId(학원pk) acaName(학원이름) acaPhone(학원전화번호) comment(학원내용) teacherNum(강사 수) openTime(학원오픈시간) closeTime(학원클로즈시간) address(학원주소) detailAddress(학원상세주소) postNum(우편번호) acaPic(학원사진) tagIdList(태그Id 리스트) tagNameList(태그이름 리스트) businessName(사업자명) businessNumber(사업자번호) businessPic(사업자등록증) operationLicencePic(학원운영증) corporateNumber(법인번호) | 장재웅 | { "resultMessage" : "학원정보등록이 완료되었습니다.", "resultData" : 1 } | ||||||||||||||
22 | [PUT] api/academy/agree | putAcademyAgree | 학원 정보 등록 승인 | 관리자가 학원 정보 등록을 신청한 학원을 승인한다. 승인 -> 1, 미승인 -> 0 | acaId(학원 pk) | 장재웅 | { "resultMessage" : "학원정보등록이 승인되었습니다.", "resultData" : 1 } | |||||||||||||||
23 | [GET] api/tag | selTagList | 태그불러오기 | 학원등록에서 태그를 등록할 때 검색어를 입력하면 입력어가 포함된 태그가 조회된다. ex) 입력: "국어" -> 출력: "외국어", "중국어", "한국어" | searchTag(태그 검색어) | 장재웅 | { "resultMessage": "국어 관련된 태그입니다.", "resultData": { "selTagList": [ { "tagName": "외국어", "tagId": "17" }, { "tagName": "중국어", "tagId": "18" }, { "tagName": "한국어", "tagId": "23" } ] } } | |||||||||||||||
24 | [PUT] api/academy | putAcademyInfo | 학원 글 수정하기 | 학원 정보를 수정한다. | userId(유저pk) acaId(학원pk) acaName(학원이름) acaPhone(학원전화번호) comment(학원내용) teacherNum(강사 수) openTime(학원오픈시간) closeTime(학원클로즈시간) address(학원주소) detailAddress(학원상세주소) postNum(우편번호) acaPic(학원사진) tagIdList(태그Id 리스트) tagNameList(태그이름 리스트) businessName(사업자명) businessNumber(사업자번호) businessPic(사업자등록증) operationLicencePic(학원운영증) corporateNumber(법인번호) | 장재웅 | { "resultMessage" : "학원정보수정이 완료되었습니다.", "resultData" : 1 } | |||||||||||||||
25 | [DELETE] api/academy | delAcademyInfo | 학원 삭제하기 | 학원 정보를 삭제한다. | acaId(학원 pk) userId (유저 pk) | 장재웅 | { "resultMessage" : "학원정보삭제가 삭제되었습니다.", "resultData" : 1 } | |||||||||||||||
26 | [GET] api/academy/best | getAcademyBest | 학원들의 좋아요 순 | 학원들을 좋아요(찜) 많이 받은 순으로 나열한다. 학원이름, 좋아요 수, 학원의 리뷰 수, 별점 평균 , 학원 사진, 학원이 등록한 태그, 좋아요를 받은 학원의 수가 나타나도록 한다. | page(페이지) size(사이즈) | 장재웅 | { "resultMessage": "좋아요를 많이 받은 학원 순서입니다.", "resultData": [ { "acaId": 35, "acaName": "미대편입플러스학원", "likeCount": 78, "starAvg": 4.363157894736822, "reviewCount": 18, "acaPic": "b7493f57-05ba-4852-9772-f4b0f36f136c.jpg", "tagIds": "103,104,111", "tagNames": "편입 수학,편입 영어,미술 입시", "academyLikeCount": 55 }, { "acaId": 42, "acaName": "이지-UP입시・음악학원", "likeCount": 71, "starAvg": 4.25625000000003, "reviewCount": 16, "acaPic": "b336449e-f3a6-4d70-a81a-e6e51e4dc92a.jpg", "tagIds": "106,107,142", "tagNames": "대입 컨설팅,대입 논술,멘토링", "academyLikeCount": 55 }, { "acaId": 33, "acaName": "하늘피아노음악학원", "likeCount": 64, "starAvg": 4.333333333333333, "reviewCount": 17, "acaPic": "c9825d60-d261-40ca-ac7a-9776d1f21d2b.jpg", "tagIds": "56,72,112", "tagNames": "뮤지컬,성우,음악 입시", "academyLikeCount": 55 } ] } | |||||||||||||||
27 | [PUT] api/academy/agree | putAcademyAgree | 학원정보등록 승인 | 사이트 관리자가 학원정보 등록을 승인하도록 한다. | acaId(학원pk) | 장재웅 | { "resultMessage": "학원정보등록이 승인되었습니다.", "resultData": 1 } | |||||||||||||||
28 | [POST] api/academy/premium | postPremiumAcademy | 프리미엄 학원 | 등록한 학원들 중에서 프리미엄 학원으로 등급업을 한다. 결제를 통해 프리미엄 등급을 받을 수 있다.(선착순 5곳) 프리미엄을 받으면 배너에 광고를 등록할 수 있다. | preAcaId(프리미엄학원pk) acaId(학원pk) price(프리미엄 결제가격) startDate(프리미엄 시작일) endDate(프리미엄 종료일) preCheck(프리미엄 승인여부) | 장재웅 | { "resultMessage" : "프리미엄 신청이 완료되었습니다.", "resultData" : 1 } | |||||||||||||||
29 | [PUT] api/academy/premium | putPremiumCheck | 프리미엄 학원 승인 | 관리자가 프리미엄 학원 신청을 승인한다. | acaId(학원pk) preCheck(프리미엄학원승인여부) | 장재웅 | { "resultMessage" : "프리미엄 학원이 승인되었습니다.", "resultData" : 1 } | |||||||||||||||
30 | [GET] api/academy/premium | getPremiumAcademy | 프리미엄 학원 조회 | 프리미엄 학원 목록을 조회한다. | 장재웅 | { "resultMessage": "프리미엄 학원을 조회하였습니다.", "resultData": [ { "acaId": 0, "acaName": "string", "startDate": "2025-03-18", "endDate": "2025-03-18", "preCheck": 0, "createdAt": "2025-03-18T14:03:08.458Z", "countPremium": 0 } ] } | ||||||||||||||||
31 | [GET] api/academy/premium/acaAdmin | getPremiumAcademyAcaAdmin | 프리미엄 학원 조회(학원관계자용) | 학원관계자가 본인의 프리미엄 학원을 조회한다. | user_id(사용자 pk) | 장재웅 | { "resultMessage": "프리미엄 학원이 조회되었습니다.", "resultData": [ { "acaId": 0, "acaName": "string", "startDate": "2025-03-18", "endDate": "2025-03-18", "preCheck": 0, "createdAt": "2025-03-18T14:05:55.890Z", "countPremium": 0 } ] } | |||||||||||||||
32 | [GET] api/academy/premium/bannerType | getPremiumBannerTypeAcademy | 배너타입을 포함한 프리미엄 학원 조회 | 배너의 승인여부(배터타입)가 포함되어 있는 프리미엄 학원을 조회한다. | 장재웅 | { "resultMessage": "프리미엄 학원이 조회되었습니다.", "resultData": [ { "acaId": 0, "acaName": "string", "startDate": "2025-03-18", "endDate": "2025-03-18", "preCheck": 0, "bannerType": 0, "createdAt": "2025-03-18T14:09:17.258Z", "countPremium": 0 } ] } | ||||||||||||||||
33 | [GET] api/academy/premium/bannerExist | getPremiumBannerExist | 배너가 신청되어 있는 프리미엄 학원 조회 | 배너가 신청되어 있는(승인 or 미승인) 프리미엄 학원을 조회한다.(학원관계자 시점) | user_id(학원관계자 pk) | 장재웅 | { "resultMessage": "프리미엄 학원이 조회되었습니다.", "resultData": [ { "acaId": 0, "acaName": "string", "startDate": "2025-03-18", "endDate": "2025-03-18", "preCheck": 0, "bannerType": 0, "createdAt": "2025-03-18T14:13:48.791Z", "countPremium": 0 } ] } | |||||||||||||||
34 | [GET] api/academy/premium/notPremium | getPremiumNotExist | 프리미엄 학원 신청을 위한 조회 | 프리미엄 학원 신청을 하기 위해 프리미엄이 아니고, 신청도 안되어 있는 학원을 조회한다. | user_id(학원관계자 pk) | 장재웅 | { "resultMessage": "학원을 조회하였습니다.", "resultData": [ { "acaId": 0, "acaName": "string" } ] } | |||||||||||||||
35 | [DELETE] api/academy/premium | deletePremiumAcademy | 프리미엄 학원 삭제 | 프리미엄 학원을 삭제한다. | aca_id(학원 pk) | 장재웅 | { "resultMessage": "프리미엄 학원을 삭제하였습니다.", "resultData": 1 } | |||||||||||||||
36 | [GET] api/academy | getAcademyListByAll | 학원 리스트 보기 | 학원이름들이 나타나도록 한다. tagName이 입력되면 search 테이블에 tagId가 저장되도록 되어 있음 프리미엄 학원이 위에 노출된다. | dongId (동 PK), searchName (검색한 단어), tagId (태그 PK), List<categoryIds> (카테고리 PK), premiumLimit (프리미엄 학원 페이징 처리값) | 백한별 | { "resultMessage": "학원 리스트 불러오기 성공", "resultData": [ { "acaId": 2, "acaPic": "3", "acaPics": "3, 3", "acaName": "프리미엄학원", "address": "1111", "star": 3, "tagName": [ "고등 과학", " 천문학" ], "totalCount": 4 }, { "acaId": 4, "acaPic": "4", "acaPics": "4", "acaName": "부자학원", "address": "3333", "star": 1, "tagName": [], "totalCount": 4 }, { "acaId": 3, "acaPic": "4", "acaPics": "4, 4", "acaName": "그지학원", "address": "2222", "star": 5, "tagName": [ "3D 프린팅", " 앱 개발" ], "totalCount": 4 }, { "acaId": 1, "acaPic": "1", "acaPics": "1, 1, 1, 2, 2, 2", "acaName": "1234", "address": "1234", "star": 4, "tagName": [ "영어 회화", " TOEFL 준비", " IELTS 준비" ], "totalCount": 4 } ] } | |||||||||||||||
37 | [GET] api/academy | getAcademyCount | 총 학원, 유저 수 | 가입된 학원과 유저의 수를 보내준다. | 백한별 | "resultMessage": "총 학원 수 출력 완료", "resultData": { "academyCount": 101, "userCount": 204 } | ||||||||||||||||
38 | [GET] api/academy | getDefault | 학원 검색 페이지에 기본 학원 정보 보기 | 검색을 하기 전에 기본으로 보여줄 학원 정보를 보내준다. 프리미엄 학원이 상위에 노출되도록 한다. | size (프리미엄 학원 페이징 처리값) | 백한별 | { "resultMessage": "디폴트 학원 리스트 출력 성공", "resultData": [ { "acaId": 4, "acaPic": "4", "acaName": "부자학원", "address": "3333", "star": 1, "tagName": [], "totalCount": 4 }, { "acaId": 2, "acaPic": "3", "acaName": "프리미엄학원", "address": "1111", "star": 3, "tagName": [ "고등 과학", " 천문학" ], "totalCount": 4 }, { "acaId": 3, "acaPic": "4", "acaName": "그지학원", "address": "2222", "star": 5, "tagName": [ "3D 프린팅", " 앱 개발" ], "totalCount": 4 }, { "acaId": 1, "acaPic": "1", "acaName": "1234", "address": "1234", "star": 4, "tagName": [ "영어 회화", " TOEFL 준비", " IELTS 준비" ], "totalCount": 4 } ] } | |||||||||||||||
39 | [GET] api/academy | getAcademyDetailAllInfo | 학원 상세 정보 보기 | 학원에 대한 상세 정보를 보이도록 한다. | acaId(학원 pk) signedUserId (로그인한 사람의 user PK) | 백한별 | { "resultMessage": "상세 정보 불러오기 성공", "resultData": { "acaId": 1, "acaName": "1234", "acaPic": "1", "address": "1234", "acaPhone": "1234", "teacherNum": 1234, "comments": "1234", "star": 4, "reviewCount": 1, "likeCount": 1, "isLiked": true, "tagName": [ "IELTS 준비", " TOEFL 준비", " 영어 회화" ], "classes": [ { "classId": 1, "className": "1234", "classComment": "1234", "classStartDate": "2025-02-25", "classEndDate": "2025-02-25", "classStartTime": "14:48:12.000000", "classEndTime": "14:48:03.000000", "classPrice": 1500000, "classDay": "", "classCategoryName": "", "userCertification": 1 } ], "reviews": [ { "comment": "1234", "star": 4, "reviewId": 1, "createdAt": "2025-02-27 11:07:36.000000", "updatedAt": "2025-02-27 11:07:37.000000", "userId": 1, "nickName": "1234", "className": "1234", "banReview": 0, "roleType": "STUDENT", "joinClassId": 1 } ], "books": [ { "bookId": 1, "bookName": "책1", "bookAmount": 75, "bookComment": "책입니다~", "bookPic": "92783968-a420-474d-9b49-19f1053f3bf5.jpg", "bookPrice": 1000, "manager": "담당자1", "classId": 1 }, { "bookId": 2, "bookName": "책1", "bookAmount": 0, "bookComment": "책입니다~", "bookPic": "435dd909-9739-477d-a9a1-cffabd48d282.jpg", "bookPrice": 1000, "manager": "담당자1", "classId": 1 }, { "bookId": 3, "bookName": "책1", "bookAmount": 0, "bookComment": "책입니다~", "bookPic": "1184b149-8ac9-466d-97e3-65c81beaf1f3.jpg", "bookPrice": 1000, "manager": "담당자1", "classId": 1 }, { "bookId": 4, "bookName": "책1", "bookAmount": 0, "bookComment": "책입니다~", "bookPic": "4e2f5300-c299-4f95-ac98-5c1b0b9d27d3.jpg", "bookPrice": 1000, "manager": "담당자1", "classId": 1 } ] } } | |||||||||||||||
40 | [GET] api/academy | getAcademyListByStudent | 학생이 다니고 있는 학원 리스트 출력하기 | signedUserId를 입력받아 학생이 다니고 있는 학원의 리스트를 출력한다. | signedUserId (로그인한 사람의 user PK) | 백한별 | { "resultMessage": "학원 출력 성공", "resultData": [ { "acaId": 1, "acaPic": "2", "acaName": "1234", "registrationDate": "2025-02-25" }, { "acaId": 1, "acaPic": "1", "acaName": "1234", "registrationDate": "2025-02-25" }, { "acaId": 3, "acaPic": "4", "acaName": "그지학원", "registrationDate": "2025-02-27" }, { "acaId": 4, "acaPic": "4", "acaName": "부자학원", "registrationDate": "2025-02-27" }, { "acaId": 2, "acaPic": "3", "acaName": "프리미엄학원", "registrationDate": "2025-02-27" } ] } | |||||||||||||||
41 | [GET] api/academy | getAcademyListByUserId | 학원 관리자가 본인이 등록한 학원 리스트 출력하기 | signedUserId를 입력받아 본인이 등록한 학원의 리스트를 출력한다. | signedUserId (로그인한 사람의 user PK) | 백한별 | { "resultMessage": "학원 리스트 불러오기 성공", "resultData": [ { "acaId": 3, "acaName": "테스트학원3333", "createdAt": "2025-02-26 07:29:18.556357", "acaAgree": 0, "acaPic": "00390ed3-7e6e-487b-aba4-5df7e0819071.png", "acaPics": "00390ed3-7e6e-487b-aba4-5df7e0819071.png, d17d6b34-746f-49d7-80ad-e396948ad361.png" }, { "acaId": 4, "acaName": "미술학원", "createdAt": "2025-02-26 07:36:09.599836", "acaAgree": 0, "acaPic": "6962a9f1-0695-409a-8c83-e191b458952a.png", "acaPics": "6962a9f1-0695-409a-8c83-e191b458952a.png, 87eddf45-9917-494d-a0c6-7fff0e78fec0.png" } } | |||||||||||||||
42 | [GET] api/academy | AcademyDefault | 메인 페이지에 오늘의 추천 학원 보여주기 | 랜덤하게 학원을 추천한다. | 백한별 | "resultMessage": "학원 출력 성공", "resultData": [ { "acaId": 13, "acaPic": "87541673-9d37-4c45-8391-e1d44e731678.jpg", "acaName": "주은아피아노스튜디오음악학원", "address": "대구광역시 중구 중앙대로 283@detail5층#detail@post41968#post", "starAvg": 3.93, "tagNames": [ "뮤지컬", " 성우", " 음악 입시" ], "likeCount": 69, "reviewCount": 0 }, .... | ||||||||||||||||
43 | [GET] api/academy | getCity | 도시 리스트 불러오기 | 도시 리스트를 불러온다. | 백한별 | { "resultMessage": "도시 리스트 출력 성공", "resultData": [ { "cityId": 1, "cityName": "서울특별시" }, { "cityId": 2, "cityName": "부산광역시" }, ... { "cityId": 16, "cityName": "강원특별자치도" }, { "cityId": 17, "cityName": "전북특별자치도" } ] } | ||||||||||||||||
44 | [GET] api/academy | getStreet | 도시 PK를 받아 시/군/구 리스트 불러오기 | 도시 PK를 받아 시/군/구 리스트를 불러온다. | streetId | 백한별 | { "resultMessage": "시/군/구 리스트를 불러오기 성공", "resultData": [ { "streetId": 1, "streetName": "종로구" }, { "streetId": 2, "streetName": "중구" }, { "streetId": 3, "streetName": "용산구" }, ...... | |||||||||||||||
45 | [GET] api/academy | getDong | 도시 PK와 시/군/구 PK를 받아 동 리스트 불러오기 | 도시 PK와 시/군/구 PK를 받아 동 리스트를 불러온다. | cityId, streetId | 백한별 | { "resultMessage": "동 리스트 불러오기 성공", "resultData": [ { "dongId": 281, "dongName": "쌍문동" }, { "dongId": 282, "dongName": "방학동" }, { "dongId": 283, "dongName": "창동" }, { "dongId": 284, "dongName": "도봉동" } ] } | |||||||||||||||
46 | [GET] api/academy | getAcademyInfoBy AcaNameClassName ExamNameAcaAgree | 학원 이름, 수업 이름, 시험 이름 학원 승인 여부를 입력받아 리스트를 불러온다 | 학원 이름, 수업 이름, 시험 이름 학원 승인 여부를 입력받아 리스트를 불러온다 | acaName, className, examName, acaAgree | 백한별 | { "resultMessage": "학원 리스트 출력 완료", "resultData": [ { "acaName": "1234", "acaPic": "2", "acaPics": "1, 2", "comment": "1234", "createdAt": "2025-02-25 14:47:31.000000", "acaPhone": "1234", "address": "1234", "userId": 1 } ] } | |||||||||||||||
47 | [GET] api/academy | GetSearchInfo | 태그로 검색 분포 정보 | 태그로 검색 분포 정보 | year month | 백한별 | { "resultMessage": "조회 성공", "resultData": [ { "tagCount": 5, "tagName": "초등 영어", "totalTagCount": 23 }, { "tagCount": 3, "tagName": "미술", "totalTagCount": 0 } | |||||||||||||||
48 | [GET] api/academy | GetAcademyStatus/{userId} | 학원 관계자 입장에서 본인이 등록한 학원 상태 | 학원 관계자 입장에서 본인이 등록한 학원 상태 | userId(유저 PK) | 백한별 | { "resultMessage": "조회 성공", "resultData": [ { "createdAt": "2025-01-21 13:17:05.000000", "acaName": "라이크아카데미학원", "acaAgree": 1, "acaId": 1 }, { "createdAt": "2025-01-21 13:17:05.000000", "acaName": "한국경찰학원", "acaAgree": 1, "acaId": 4 } | |||||||||||||||
49 | [GET] api/academy | GetJoinClassStatus/{userId} | 학생 입장에서 본인이 등록한 수업 상태 | 학생 입장에서 본인이 등록한 수업 상태 | userId(유저 PK) | 백한별 | { "resultMessage": "조회 성공", "resultData": [ { "registrationDate": "2025-02-06", "acaName": "라이크아카데미학원", "certification": 1, "className": "국어 시즌1", "acaId": 1 }, { "registrationDate": "2025-03-11", "acaName": "현대정보통신전기고시학원", "certification": 0, "className": "정보통신", "acaId": 2 } | |||||||||||||||
50 | [GET] api/academy | GetAcademyListByAcaNameOrderType | 학원 이름, 주문 타입, 주문자 이름, 시작일, 종료일을 입력받아 학원 리스트 불러오기 | 학원 이름, 주문 타입, 주문자 이름, 시작일, 종료일을 입력받아 학원 리스트 불러오기 | acaName ( 학원 이름 ) orderType ( 주문 타입 ) startDate ( 시작일 ) endDate ( 종료일 ) acaId ( 학원 PK ) userId ( 유저 PK ) page size | 백한별 | { "resultMessage": "조회 완료", "resultData": [ { "acaName": "라이크아카데미학원", "classOrBookName": "국어 시즌1", "acaPic": "3f521486-0cbd-4651-b2b3-457c2d0772d6.jpg", "createdAt": "2025-03-17 17:17:51.773918", "price": 110000, "name": "구수영", "costStatus": 2, "costId": 118, "totalCount": 78 } | |||||||||||||||
51 | [GET] api/academy | GetAcaNameList/{acaName} | 단어로 학원 이름 조회 | 단어로 학원 이름 조회 | acaName ( 학원 이름 ) | 백한별 | { "resultMessage": "조회 성공", "resultData": [ { "acaName": "고려이엠(EM)영어.수학학원" }, { "acaName": "그림퐁당아이성향미술학원" }, { "acaName": "눈높이러닝센터신기학원" } | |||||||||||||||
52 | [GET] api/academy | GetAcademyListByDistance | 나와 가까운 순서로 학원 정렬 | 로그인할때 위도와 경도를 받아와 등록된 학원들의 좌표와 비교해 가까운 순서로 보여준다 | lat ( 위도 ) lon ( 경도 ) page size | 백한별 | { "resultMessage": "학원 출력 성공", "resultData": [ { "acaId": 80, "acaName": "그린컴퓨터아트학원", "acaPic": "f77e43a7-205a-49ff-a3c5-d37b872ab4a8.png", "address": " 대구 중구 중앙대로 394", "detailAddress": "그린빌딩 5층", "postNum": "41914", "starAvg": 0, "likeCount": 1, "reviewCount": 0, "distance": 0.011266544230851716, "totalCount": 104 } | |||||||||||||||
53 | ManagerSms (문자발송) | [POST] api/sms | sendSms | 솔라피(문자 API)로 학생이나 광고를 문자로 보내기 | 학생의 등하교 여부와 광고 단체문자를 보낸다. | apiKey (Solapi API 인증을 위한 키) , apiSecretAPI (인증을 위한 시크릿 키) , to (수신자의 전화번호) , from (발신자의 전화번호) , text (보낼 문자 내용) , type (문자 종류) | 이정민 | { "to": "01011111234", "text": "ㅇㅇ학생이 등교하였습니다." } | ||||||||||||||
54 | AcademyCost (결제) | [POST] api/payment | ready | 카카오페이 결제 완료 신청 | 카카오페이 결제 완료 신청 | productId (상품 PK) quantity (주문 수량) userId (주문하는 유저 PK) acaId (프리미엄 결제 하는 학원) | 백한별 | { "tid": "T7bc3244033875bdc251", "next_redirect_app_url": "https://online-payment.kakaopay.com/mockup/bridge/mobile-app/pg/one-time/payment/05cdb8a5c9726c43f0cdcc18f336f95c75810c7afed0bf1ac1f9f2f3adfcc26c", "next_redirect_mobile_url": "https://online-payment.kakaopay.com/mockup/bridge/mobile-web/pg/one-time/payment/05cdb8a5c9726c43f0cdcc18f336f95c75810c7afed0bf1ac1f9f2f3adfcc26c", "next_redirect_pc_url": "https://online-payment.kakaopay.com/mockup/bridge/pc/pg/one-time/payment/05cdb8a5c9726c43f0cdcc18f336f95c75810c7afed0bf1ac1f9f2f3adfcc26c", "android_app_scheme": "kakaotalk://kakaopay/pg?url=https://online-pay.kakao.com/pay/mockup/05cdb8a5c9726c43f0cdcc18f336f95c75810c7afed0bf1ac1f9f2f3adfcc26c", "ios_app_scheme": "kakaotalk://kakaopay/pg?url=https://online-pay.kakao.com/pay/mockup/05cdb8a5c9726c43f0cdcc18f336f95c75810c7afed0bf1ac1f9f2f3adfcc26c", "created_at": "2025-02-24T17:48:04" } | ||||||||||||||
55 | [POST] api/payment | success | 카카오페이 결제 완료 승인 | 카카오페이 결제 완료 승인 | pg_token ( 토큰값 ) TId (TId) | 백한별 | { "aid": "string", "tid": "string", "cid": "string", "sid": "string", "partner_order_id": "string", "partner_user_id": "string", "payment_method_type": "string", "amount": { "total": 0, "tax_free": 0, "tax": 0, "point": 0, "discount": 0, "green_deposit": 0 }, "item_name": "string", "item_code": "string", "quantity": 0, "created_at": "string", "approved_at": "string", "payload": "string" } | |||||||||||||||
56 | [GET] apy/payment | recent | 모든 결제 내역 불러오기 | 모든 결제 내역 불러오기 ( 최근 한달 ) | 백한별 | { "resultMessage": "사이트 관리자가 결제 내역 불러오기 성공", "resultData": [ { "createdAt": "2025-02-24T16:51:18", "updatedAt": "2025-02-24T16:51:19", "costId": 1, "orderType": 1, "price": 1, "amount": 1, "userId": 1, "status": 1, "settlementPrice": 0, "cost_status": 1, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "1" }, { "createdAt": "2025-02-24T16:54:59.158674", "updatedAt": "2025-02-24T16:54:59.158674", "costId": 2, "orderType": 0, "price": 11000, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 1, "productName": "프리미엄학원", "productPrice": 10000 }, "tid": "T7bc25d240f539f46bd3" }, { "createdAt": "2025-02-24T17:02:51.740105", "updatedAt": "2025-02-24T17:02:51.740105", "costId": 3, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "T7bc27ab033875bdc201" }, { "createdAt": "2025-02-24T17:08:17.439779", "updatedAt": "2025-02-24T17:08:17.439779", "costId": 4, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "T7bc28f140f539f46bee" }, { "createdAt": "2025-02-24T17:39:05.268522", "updatedAt": "2025-02-24T17:39:05.268522", "costId": 5, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "T7bc3029033875bdc240" }, { "createdAt": "2025-02-24T17:48:04.885319", "updatedAt": "2025-02-24T17:48:04.885319", "costId": 6, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "T7bc3244033875bdc251" } ] } | ||||||||||||||||
57 | [GET] apy/payment | recent/{userId} | 유저 PK를 입력받아 그 사람의 결제 내역 불러오기 | 유저 PK를 입력받아 그 사람의 결제 내역 불러오기 ( 최근 한달 ) | userId | 백한별 | { "resultMessage": "userId에 맞는 결제 내역 불러오기 성공", "resultData": [ { "createdAt": "2025-02-24T16:51:18", "updatedAt": "2025-02-24T16:51:19", "costId": 1, "orderType": 1, "price": 1, "amount": 1, "userId": 1, "status": 1, "settlementPrice": 0, "cost_status": 1, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "1" }, { "createdAt": "2025-02-24T16:54:59.158674", "updatedAt": "2025-02-24T16:54:59.158674", "costId": 2, "orderType": 0, "price": 11000, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 1, "productName": "프리미엄학원", "productPrice": 10000 }, "tid": "T7bc25d240f539f46bd3" }, { "createdAt": "2025-02-24T17:02:51.740105", "updatedAt": "2025-02-24T17:02:51.740105", "costId": 3, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, "lon": 1111, "businessName": "1", "businessNumber": "1", "businessPic": "1", "operationLicencePic": "1", "corporateNumber": "1" }, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "className": "1", "classComment": "1", "startDate": "2025-02-24", "endDate": "2025-02-24", "startTime": "12:08:23", "endTime": "00:01:23", "price": 1 }, "bookPic": "1ae60ef6-317f-4761-84f2-bdac6e43070b.png", "bookName": "책이름", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1" } }, "tid": "T7bc27ab033875bdc201" }, { "createdAt": "2025-02-24T17:08:17.439779", "updatedAt": "2025-02-24T17:08:17.439779", "costId": 4, "orderType": 0, "price": 1100, "amount": 1, "userId": 1, "status": 0, "settlementPrice": 0, "cost_status": 0, "productId": { "productId": 2, "productName": "책이름", "productPrice": 1000, "bookId": { "bookId": 21, "classId": { "classId": 1, "academy": { "createdAt": "2025-02-24T12:07:43", "acaId": 1, "user": { "createdAt": "2025-02-24T12:06:12", "updatedAt": "2025-02-24T17:51:47.484885", "userId": 1, "userRole": "ADMIN", "name": "string", "phone": "string", "birth": "2025-02-24", "nickName": "string", "email": "qgq0520@naver.com", "upw": "$2a$10$YHpKBisI58sXhxwd.6.Ei./Ck1hNZnHzfij4cPmay/UwCD9a265ve", "userPic": "1.jpg" }, "dongId": 1633, "dong": { "dongId": 1633, "street": { "streetId": 79, "city": { "cityId": 9, "cityName": "경기도" }, "streetName": "의정부시" }, "dongName": "가능동" }, "premium": 1, "acaName": "1", "acaPhone": "1", "comment": "1", "teacherNum": 1, "openTime": "12:07:36", "closeTime": "12:07:22", "address": "1", "detailAddress": "1", "postNum": "11234", "acaAgree": 1, "lat": 11111, | |||||||||||||||
58 | [GET] apy/payment | cancel | 카카오페이 결제 취소 | 카카오페이 결제 취소 | 백한별 | { "resultMessage": "주문을 취소하였습니다.", "resultData": "PAY_CANCEL" } | ||||||||||||||||
59 | [GET] apy/payment | fail | 카카오페이 결제 실패 | 카카오페이 결제 실패 | 백한별 | { "resultMessage": "주문에 실패하였습니다.", "resultData": "PAY_FAILED" } | ||||||||||||||||
60 | [POST] apy/payment | refund | 카카오페이 환불 | 카카오페이 환불 | tid (결제 고유 번호) costId (결제 PK) | 백한별 | { "aid": "string", "tid": "string", "cid": "string", "status": "string", "partner_order_id": "string", "partner_user_id": "string", "payment_method_type": "string", "amount": { "total": 0, "tax_free": 0, "tax": 0, "point": 0, "discount": 0, "green_deposit": 0 }, "approved_cancel_amount": { "total": 0, "tax_free": 0, "vat": 0, "point": 0, "discount": 0, "green_deposit": 0 }, "canceled_amount": { "total": 0, "tax_free": 0, "vat": 0, "point": 0, "discount": 0, "green_deposit": 0 }, "cancel_available_amount": { "total": 0, "tax_free": 0, "vat": 0, "point": 0, "discount": 0, "green_deposit": 0 }, "item_name": "string", "item_code": "string", "quantity": 0, "created_at": "string", "approved_at": "string", "canceled_at": "string", "payload": "string" } | |||||||||||||||
61 | [GET] api/academyCost | getSettlementList | 정산 조회 | 정산 조회 | status (정산 상태) year(결제 년도) month(결제 월) page size | 백한별 | { "resultMessage": "출력 성공", "resultData": [ { "acaId": 4, "acaName": "한국경찰학원", "address": "대구광역시 중구 국채보상로 582", "acaPic": "4807d4d6-90c6-4c4c-acef-7bb34b933f61.jpg", "totalPrice": 253000, "latestStatus": 0, "totalCount": 4, "costIds": "107" } | |||||||||||||||
62 | [GET] api/academyCost | getProductInfo | 모든 상품 정보 조회 | 모든 상품 정보 조회 | 백한별 | { "resultMessage": "조회 성공", "resultData": [ { "productId": 1, "productName": "프리미엄 학원", "productPrice": 150000 }, { "productId": 2, "productName": "국어", "productPrice": 100000, "classId": 1 } | ||||||||||||||||
63 | [GET] api/academyCost | getAcademyCostInfoByMonth | 사이트 관리자가 월 수익 보기 | 사이트 관리자가 월 수익 보기 결제 건수, 총 수수료, 판매율을 볼 수 있다 | 백한별 | { "resultMessage": "출력 성공", "resultData": { "costCount": 3, "sumFee": 4400, "saleRate": 0.0091 } } | ||||||||||||||||
64 | [GET] api/academyCost | getAcademyCostInfoByCostId/{costId} | 주문 상세 내역 | 주문 상세 내역 | costId (결제 PK) | 백한별 | { "resultMessage": "조회 성공", "resultData": { "costId": 1, "amount": 1, "costStatus": 2, "fee": 1100, "orderType": 0, "price": 110000, "status": 0, "accId": 0, "createdAt": "2025-03-05 00:00:00.000000", "productId": 2, "updatedAt": "2025-03-06 00:00:00.000000", "name": "관리자", "partnerOrderId": "c6b5c44e-950f-49f5-b128-b2a0caa0e177", "productName": "국어", "tid": "T7c8065e40f539f4a0ab" } } | |||||||||||||||
65 | [PUT] api/academyCost | updateStatus/{costIds} | 정산 처리 | 정산 처리 | costId (결제 PK) | 백한별 | { "resultMessage": "이번 달 결제 내역은 정산할 수 없습니다.", "resultData": 0 } | |||||||||||||||
66 | Book (교재) | [POST] api/book | 교재 등록 | 교재를 등록한다. ( 학원 관계자만 사용가능 ) | file (교재 사진 1장) req { bookName ( 교재 이름 ) bookPrice ( 교재 가격 ) bookComment ( 교재 소개 ) manager ( 교재 등록 담당자 ) classId ( 교재를 등록할 수업 ) bookAmount ( 교재 수량 ) } | 백한별 | { "resultMessage": "책 등록 성공", "resultData": 1 } | |||||||||||||||
67 | [GET] api/book | /getBookList/{classId} | 교재 조회 | classId를 입력받아 수업에 맞는 교재 출력 | classId (수업 PK) | 백한별 | { "resultMessage": "출력 완료", "resultData": [ { "bookId": 4, "bookName": "책이름", "bookPic": "652f05e3-52ac-42c2-835b-f020de956049.jpg", "bookPrice": 1000, "bookComment": "책소개", "manager": "매니저1", "classId": 1 }, } | |||||||||||||||
68 | [GET] api/book | GetBookListByAca NameBookName | 관리자가 학원 이름, 교재 이름 을 입력해 교재 검색 | 관리자가 학원 이름, 교재 이름을 입력해 교재 검색 | acaName (학원 이름) bookName (교재 이름) | 백한별 | { "resultData": [ { "bookId": 4, "bookName": "책1", "bookComment": "책입니다~", "bookPic": "4e2f5300-c299-4f95-ac98-5c1b0b9d27d3.jpg", "bookAmount": 0, "bookPrice": 1000, "manager": "담당자1", "createdAt": "2025-02-27 16:54:43.414984", "bookCount": "4" } .... } | |||||||||||||||
69 | [GET] api/book | GetBookInfo/{bookId} | 교재 상세 정보 가져오기 | 교재 상세 정보 가져오기 | bookId (교재 PK) | 백한별 | { "resultMessage": "정보 가져오기 성공", "resultData": { "bookId": 1, "bookName": "미적분", "bookComment": "<p>미적분</p>", "bookAmount": 145, "bookPic": "c2c23e8b-6fb1-4e46-af09-36ee5ffdb0cc.jpg", "bookPrice": 15000, "manager": "장재웅", "classId": 2, "createdAt": "2025-03-05 08:05:37.129551", "productId": 3 } } | |||||||||||||||
70 | [PUT] api/book | updateBook | 교재 수정 | 교재 수정하기 | bookId ( 교재 PK) bookName ( 교재 이름 ) bookPrice ( 교재 가격 ) bookComment ( 교재 소개 ) bookPic ( 교재 사진 ) manager ( 담당자 ) classId ( 등록된 수업 ) | 백한별 | { "resultMessage": "수정 완료", "resultData": 1 } | |||||||||||||||
71 | [DELDETE] api/book | deleteBook | 교재 삭제 | 교재 삭제하기 | bookId ( 교재 PK) | 백한별 | { "resultMessage": "삭제 완료", "resultData": 1 } | |||||||||||||||
72 | Review (리뷰) | [POST] api/review | postReview | 리뷰 등록하기 | 리뷰를 등록한다. 학원 클래스(수업)을 들은 학생만 작성가능 | joinClassId(수강생 pk) userId(사용자 pk) comment (리뷰 내용) star(리뷰 평점) banReview(금지 여부) pics(사진) | 구수영 | { "resultMessage": "리뷰 등록 성공", "resultData": 1 } | ||||||||||||||
73 | [GET] api/review/academy/all | getAcademyReviewsAll | 학원 리뷰 전체 조회 | 특정 학원의 전체 리뷰를 조회한다. | acaId(학원 pk) | 장재웅 | { "resultMessage": "작성된 리뷰를 조회하였습니다.", "resultData": [ { "reviewId": 7, "classId": 5, "className": "금빛수학학원", "acaId": 2, "userId": 3, "comment": "재밌게 배우는 수학. 환영합니다.", "star": 5, "createdAt": "2025-03-17 18:36:19.000000", "myReviewCount": 1, "banReview": 0 } ] } | { "resultMessage": "작성한 리뷰가 없습니다.", "resultData": [] } | ||||||||||||||
74 | [GET] api/review/me | getMeReviews | 본인이 작성한 전체 리뷰 조회 | 본인이 작성한 전체 리뷰를 조회한다. | userId(사용자 pk) | 장재웅 | { "resultMessage": "작성한 리뷰를 조회하였습니다.", "resultData": [ { "reviewId": 4, "classId": 3, "className": "즐거운 수학교실", "acaId": 1, "userId": 2, "writerName": "재진", "comment": "수업이 너무 유익합니다.", "star": 4, "createdAt": "2025-03-17 18:14:25.000000", "myReviewCount": 2, "banReview": 0 }, { "reviewId": 6, "classId": 4, "className": "고등영어 심화과정", "acaId": 1, "userId": 2, "writerName": "재진", "comment": "실력향샹이 많이 되었습니다.", "star": 4, "createdAt": "2025-03-17 18:35:21.000000", "myReviewCount": 2, "banReview": 0, "reviewPic": "default.jpg" } ] } | { "resultMessage": "본인이 관리하는 학원의 리뷰만 조회할 수 있습니다.", "resultData": [] } | ||||||||||||||
75 | [GET] api/review/me/pic | getMePicReviews | 본인이 작성한 리뷰 조회(사진o) | 본인이 작성한 리뷰중에서 사진이 있는것만 조회한다. | userId(사용자 pk) | 장재웅 | { "resultMessage": "작성한 리뷰를 조회하였습니다.", "resultData": [ { "reviewId": 5, "classId": 3, "className": "고등 수학 심화과정", "acaId": 1, "userId": 2, "writerName": "재진", "comment": "수학을 심도있게 공부할 수 있습니다.", "star": 3, "createdAt": "2025-03-17 18:34:26.000000", "myReviewCount": 1, "banReview": 0, "reviewPic": "default.jpg" } ] } | { "resultMessage": "리뷰가 존재하지 않습니다.", "resultData": [] } | ||||||||||||||
76 | [GET] api/review/me/noPic | getMeNoPicReviews | 본인이 작성한 리뷰 조회(사진x) | 본인이 작성한 리뷰중에서 사진이 없는것만 조회한다. | userId(사용자 pk) | 장재웅 | { "resultMessage": "작성한 리뷰를 조회하였습니다.", "resultData": [ { "reviewId": 4, "classId": 2, "className": "222", "acaId": 1, "userId": 2, "writerName": "재진", "comment": "영어를 심도있게 공부할 수 있습니다.", "star": 4, "createdAt": "2025-03-17 18:14:25.000000", "myReviewCount": 1, "banReview": 0 } ] } | |||||||||||||||
77 | [GET] api/review/academy/pic | getAcademyPicReviews | 학원 리뷰 조회(사진o) | 학원 리뷰중에서 사진이 있는것만 조회한다. | acaId(학원 pk) | 장재웅 | { "resultMessage": "리뷰가 조회되었습니다.", "resultData": [ { "reviewId": 2, "classId": 2, "className": "수학심화반", "acaId": 15, "userId": 3, "writerName": "현수", "comment": "예습, 복습, 응용이 확실하게 잡혀있습니다.", "star": 5, "createdAt": "2025-03-17 14:51:34.000000", "myReviewCount": 1, "banReview": 0, "reviewPic": "mathPic.jpg" } ] } | |||||||||||||||
78 | [GET] api/review/academy/noPic | getAcademyNoPicReviews | 학원 리뷰 조회(사진x) | 학원 리뷰중에서 사진이 없는것만 조회한다. | acaId(학원 pk) | 장재웅 | { "resultMessage": "리뷰가 조회되었습니다.", "resultData": [ { "reviewId": 10, "classId": 12, "className": "영어심화반", "acaId": 15, "userId": 3, "writerName": "현수", "comment": "영어에 대한 이해도가 달라졌습니다..", "star": 5, "createdAt": "2025-03-17 14:51:34.000000", "myReviewCount": 1, "banReview": 0, "reviewPic": "englishPic.jpg" } ] } | |||||||||||||||
79 | [PUT] api/review/user | putReview | 리뷰 수정하기 | 리뷰를 수정한다. | userId(사용자 pk) comment(리뷰 내용) star(리뷰 평점) | 백한별 | { "resultMessage": "리뷰 수정이 완료되었습니다.", "resultData": 1 } | { "resultMessage": "수정할 리뷰가 존재하지 않거나 권한이 없습니다.", "resultData": 0 } | ||||||||||||||
80 | [DELETE] api/review/academy | delAcademyReview | 본인 학원에 올려진 리뷰 삭제 | 학원관계자가 본인 학원에 올려진 리뷰를 삭제한다. | acaId(학원 pk) reviewId(리뷰 pk) | 장재웅 | { "resultMessage": "리뷰를 삭제하였습니다.", "resultData": 1 } | { "resultMessage": "삭제하려는 리뷰가 존재하지 않습니다.", "resultData": 0 } | ||||||||||||||
81 | [DELETE] api/review/me | delMeReview | 본인이 작성한 리뷰 삭제 | 본인이 작성했던 리뷰를 삭제한다. | userId(사용자 pk) reviewId(리뷰 pk) | 장재웅 | { "resultMessage": "리뷰를 삭제하였습니다.", "resultData": 1 } | { "resultMessage": "삭제하려는 리뷰가 존재하지 않습니다.", "resultData": 0 } | ||||||||||||||
82 | Like (좋아요) | [POST] api/like | postLike | 좋아요 등록 | 좋아요를 등록한다. | userId (유저 pk) acaId (학원 pk) | 이정민 | { "resultMessage": "좋아요가 성공적으로 등록되었습니다.", "resultData": { "liked": true } } | { "resultMessage": "좋아요 등록 중 오류가 발생했습니다.", "resultData": { "liked": false } } | |||||||||||||
83 | [DELETE] api/like | deleteLike | 좋아요 삭제 | 좋아요를 삭제한다. | userId (유저 pk) acaId (학원 pk) | 이정민 | { "resultMessage": "좋아요가 성공적으로 삭제되었습니다.", "resultData": { "liked": false } } | { "resultMessage": "좋아요 삭제에 실패했습니다. 좋아요가 존재하지 않을 수 있습니다.", "resultData": { "liked": false } } | ||||||||||||||
84 | [GET] api/like/user | getLikeList | 본인이 좋아요 한 학원 목록 리스트 조회 | 본인이 좋아요 한 학원 리스트 목록을 조회 | userId (유저 pk) | 이정민 | { "resultMessage": "해당 유저가 좋아요한 학원 목록 조회가 완료되었습니다.", "resultData": [ { "acaId": 10, "acaPic": "default.jpg" } ] } | { "resultMessage": "해당 유저가 좋아요한 학원이 없습니다.", "resultData": [] } | ||||||||||||||
85 | [GET] api/like/list | getLikeList | 특정 학원을 좋아요한 유저 목록 리스트 불러오기 | 특정 학원을 좋아요한 유저들의 ID와 프로필 사진 목록을 조회 | acaId(학원 pk) | 이정민 | { "resultMessage": "좋아요를 누른 유저 목록 조회가 완료되었습니다.", "resultData": [ { "userId": 9, "userPic": "default_user.jpg" } ] } | { "resultMessage": "유저가 좋아요한 학원 목록 조회가 완료되었습니다.", "resultData": [ { "acaId": 2, "acaPic": "default.jpg" } ] } | ||||||||||||||
86 | Tag (태그) | [GET] api/academy | getTagListBySearchName | 공백이나 단어를 입력받아 사이트에 등록된 태그 리스트 출력하기 | 공백이나 단어를 입력받아 사이트에 등록된 태그 리스트 출력하기 | tagName(태그 이름) | 백한별 | { "resultMessage": "학원 리스트 불러오기 성공", "resultData": [ { "tagId": 1, "tagName": "초등 영어" }, { "tagId": 2, "tagName": "중등 영어" }, { "tagId": 3, "tagName": "고등 영어" }, { "tagId": 4, "tagName": "영어 회화" }, { "tagId": 5, "tagName": "영어 작문" }, .... } | ||||||||||||||
87 | Search (검색) | [GET] api/search/ | popularSearch | 인기 태그 불러오기 | 가장 많이 검색된 태그를 불러온다. | 백한별 | "resultMessage": "인기 검색어 출력 완료", "resultData": [ { "tagName": "초등 영어", "tagCount": 131 }, { "tagName": "재수 학원", "tagCount": 51 }, { "tagName": "디지털 마케팅", "tagCount": 22 }, { "tagName": "음악 입시", "tagCount": 17 }, { "tagName": "미술 입시", "tagCount": 16 }, { "tagName": "영어 작문", "tagCount": 7 }, { "tagName": "영어 독해", "tagCount": 4 }, { "tagName": "중등 영어", "tagCount": 3 }, { "tagName": "STEM", "tagCount": 3 }, { "tagName": "AP 과목", "tagCount": 2 } ] | |||||||||||||||
88 | Class (강좌) | [POST] api/acaClass | postClass | 강좌 등록하기 | 학원마다 강좌를 등록한다. | acaId(학원 pk) className(강좌 이름) classComment(강좌 내용) startDate(시작 날짜) endDate(종료 날짜) startTime(시작 시간) endTime(종료 시간) price(수강료) | 구수영 | { "resultMessage" : "강좌 등록 성공", "resultData" : 1 } | { "resultMessage" : "강좌 등록 실패", "resultData" : 0 } | |||||||||||||
89 | [POST] api/class/weekdays | postDay | 요일 등록하기 | 요일을 등록한다.(월,화,수,목,금,토,일) | dayId(요일 pk) day(요일) | 구수영 | { "resultMessage" : "요일 등록 성공", "resultData" : 1 } | { "resultMessage" : "요일 등록 실패", "resultData" : 0 } | ||||||||||||||
90 | [POST] api/class/dayRelation | postDayRelation | 요일 관계 등록하기 | 강좌마다 열리는 날을 등록한다. | classId(강좌 pk) dayId(요일 pk) | 구수영 | { "resultMessage" : "요일 관계 등록 성공", "resultData" : 1 } | { "resultMessage" : "요일 관계 등록 실패", "resultData" : 0 } | ||||||||||||||
91 | [POST] api/class/classCategory | postClassCategory | 카테고리 등록하기 | 강좌에 적합한 카테고리를 등록한다. | classId(강좌 pk) categoryId(카테고리 pk) | 구수영 | { "resultMessage": "카테고리 등록 성공", "resultData": 1 } | { "resultMessage": "카테고리 등록 실패", "resultData": 0 } | ||||||||||||||
92 | [GET] api/acaClass/detail | getDetailClass | 강좌 세부사항 조회하기 | 강좌에대한 자세한 사항을 불러온다. | acaId(학원 pk) | 구수영 | { "resultMessage": "상세정보 불러오기에 성공하였습니다.", "resultData": [ { "classId": "int", "className": "string", "classComment": "string", "startDate": "string", "endDate": "string", "startTime": "string", "endTime": "string", "price": "int", "day": "List<string>", "yearsAndLevel": "List<string>" } ] } | { "resultMessage": "상세정보 불러오기에 실패하였습니다.", "resultData": null } | ||||||||||||||
93 | [GET] api/acaClass | getClass | 강좌 불러오기 | 학원에서 열리는 강좌들을 불러온다. | acaId(학원 pk) | 구수영 | { "resultMessage": "학원 강좌 정보 불러오기에 성공하였습니다.", "resultData": [ { "acaPic" : "string", "classId" : "long", "className" : "string", "startDate" : "string", "endDate" : "string", } ] } | { "resultMessage": "학원 강좌 정보 불러오기에 실패하였습니다.", "resultData": null } | ||||||||||||||
94 | [GET] api/acaClass/acaClassUser | getClassUser | 수강생 정보 불러오기 | 강좌를 수강한 학생들의 정보를 불러온다. | classId(강좌 pk) | 구수영 | { "resultMessage": "등록한 강좌 정보 불러오기에 성공하였습니다.", "resultData": [ { "userId" : "string", "userPic": "string", "name": "string", "phone": "string", "birth": "string" } ] } | { "resultMessage": "등록한 강좌 정보 불러오기에 실패하였습니다.", "resultData": null } | ||||||||||||||
95 | [PUT] api/acaClass | updClass | 강좌 수정하기 | 강좌 정보를 수정한다. | acaId(학원 pk) classId(강좌 pk) className(강좌 이름) classComment(강좌 내용) startDate(시작 날짜) endDate(종료 날짜) startTime(시작 시간) endTime(종료 시간) price(수강료) | 구수영 | { "resultMessage": "강좌 수정 성공", "resultData": 1 } | { "resultMessage": "강좌 수정 실패", "resultData": 0 } | ||||||||||||||
96 | [DELETE] api/acaClass | delClass | 강좌 삭제하기 | 강좌 정보를 삭제한다. | classId(강좌 pk) acaId(학원 pk) | 구수영 | { "resultMessage": "강좌 삭제 성공", "resultData": 1 } | "resultMessage": "강좌 삭제 실패", "resultData": 0 } | ||||||||||||||
97 | [DELETE] api/acaClass/day | delClassDay | 강좌 요일 삭제하기 | 강좌가 열렸던 날을 삭제한다. | classId(강좌 pk) dayId(요일 pk) | 구수영 | { "resultMessage": "개강날 삭제에 성공하였습니다.", "resultData": 1 } | { "resultMessage": "개강날 삭제에 실패하였습니다.", "resultData": 0 } | ||||||||||||||
98 | Exam (시험) | [POST] api/exam | postExam | 시험 등록하기 | 강좌에 따른 시험을 등록한다. | classId(강좌 pk) examtName(시험 이름) examType(시험 유형) | 구수영 | { "resultMessage": "시험 등록 성공", "resultData": 1 } | { "resultMessage": "시험 등록 실패", "resultData": 0 } | |||||||||||||
99 | Grade (성적) | [POST] api/grade | postGrade | 성적 등록하기 | 성적을 등록한다. | joinClassId(수강생 pk) examId(시험 pk) score(과목 점수) pass(패스 여부) examDate(시험 날짜) processingStatus(처리 상태) | 구수영 | { "resultMessage" : "성적이 성공적으로 입력되었습니다.", "resultData" : 1 } | { "resultMessage": "이미 성적을 입력하였습니다.", "resultData": 0 } | |||||||||||||
100 | [GET] api/grade | selGradeScore | 수강생 한 명의 시험 점수 가져오기 | 수강생 한명에 대한 성적을 불러온다. | userId(유저 pk) classId(강좌 pk) | 구수영 | { "resultMessage": "성적 불러오기에 성공하였습니다.", "resultData": [ { "examName": "string", "examDate": "string", "score": int, "pass": int } ] } | { "resultMessage": "성적 불러오기에 실패하였습니다." } |