diff --git a/app/(sub-page)/my/components/my-result-container.tsx b/app/(sub-page)/my/components/my-result-container.tsx new file mode 100644 index 00000000..fbe77272 --- /dev/null +++ b/app/(sub-page)/my/components/my-result-container.tsx @@ -0,0 +1,18 @@ +import UserCreditResult from '@/app/ui/user/user-credit-result'; +import Button from '@/app/ui/view/atom/button/button'; +import Link from 'next/link'; +import React from 'react'; + +export default function MyResultContainer() { + return ( +
+

마이페이지

+ +
+ +
+
+ ); +} diff --git a/app/(sub-page)/my/page.tsx b/app/(sub-page)/my/page.tsx index 5163cb5a..6f8d6fec 100644 --- a/app/(sub-page)/my/page.tsx +++ b/app/(sub-page)/my/page.tsx @@ -6,6 +6,7 @@ import ContentContainer from '@/app/ui/view/atom/content-container'; import Drawer from '@/app/ui/view/molecule/drawer/drawer'; import { DIALOG_KEY } from '@/app/utils/key/dialog-key.util'; import { Suspense } from 'react'; +import MyResultContainer from './components/my-result-container'; export default function MyPage() { return ( @@ -16,7 +17,8 @@ export default function MyPage() { -
+
+
diff --git a/app/business/user/user.validation.ts b/app/business/user/user.validation.ts index 346ec8ef..ae8aaafd 100644 --- a/app/business/user/user.validation.ts +++ b/app/business/user/user.validation.ts @@ -1,11 +1,19 @@ import { z } from 'zod'; // api 변경 예정 + export const UserInfoResponseSchema = z.object({ studentNumber: z.string(), studentName: z.string(), - major: z.string(), - isSumbitted: z.boolean(), + completionDivision: z.array( + z.object({ + majorType: z.string(), + major: z.string(), + }), + ), + totalCredit: z.number(), + takenCredit: z.number(), + graduated: z.boolean(), }); export const ValidateTokenResponseSchema = z.object({ diff --git a/app/layout.tsx b/app/layout.tsx index edd4cb0e..f3a04062 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -24,7 +24,7 @@ export default function RootLayout({ /> -
+
diff --git a/app/mocks/db.mock.ts b/app/mocks/db.mock.ts index 1bbc2871..6c5e0512 100644 --- a/app/mocks/db.mock.ts +++ b/app/mocks/db.mock.ts @@ -86,15 +86,30 @@ export const mockDatabase: MockDatabaseAction = { return { studentNumber: '', studentName: '', - major: '', - isSumbitted: false, + completionDivision: [ + { + majorType: '', + major: '', + }, + ], + totalCredit: 0, + takenCredit: 0, + graduated: false, }; } return { studentNumber: user.studentNumber, studentName: user.name, - major: user.major, - isSumbitted: user.isSumbitted, + completionDivision: [ + { + majorType: 'primary', + major: '디지털컨텐츠디자인학과', + }, + ], + + totalCredit: 132, + takenCredit: 50, + graduated: false, }; }, }; diff --git a/app/ui/lecture/lecture-search/empty-data-container.tsx b/app/ui/lecture/lecture-search/empty-data-container.tsx deleted file mode 100644 index 3de66dab..00000000 --- a/app/ui/lecture/lecture-search/empty-data-container.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import Image from 'next/image'; -import searchResultIcon from '@/public/assets/searchResultIcon.svg'; -import List from '../../view/molecule/list'; - -const emptyDataRender = () => { - return ( -
- search-result-icon -
- 검색 결과가 표시됩니다 -
한 글자 이상 검색해주세요 -
-
- ); -}; - -export default function EmptyDataContainer() { - return ; -} diff --git a/app/ui/lecture/lecture-search/index.tsx b/app/ui/lecture/lecture-search/index.tsx index 5519f0cf..6d694c08 100644 --- a/app/ui/lecture/lecture-search/index.tsx +++ b/app/ui/lecture/lecture-search/index.tsx @@ -2,14 +2,29 @@ import { useAtomValue } from 'jotai'; import LectureSearchBar from './lecture-search-bar'; import { searchWordAtom } from '@/app/store/search-word'; -import EmptyDataContainer from './empty-data-container'; import { Suspense } from 'react'; import { LectureSearchResultSpinner } from './lecture-search-result/lecture-search-result-spinner'; import LectureSearchResult from './lecture-search-result'; +import Image from 'next/image'; +import searchResultIcon from '@/public/assets/searchResultIcon.svg'; +import List from '../../view/molecule/list'; + +const emptyDataRender = () => { + return ( +
+ search-result-icon +
+ 검색 결과가 표시됩니다 +
한 글자 이상 검색해주세요 +
+
+ ); +}; export default function LectureSearch() { const searchWord = useAtomValue(searchWordAtom); const searchable = searchWord.keyword && searchWord.keyword.length > 1; + return (
@@ -19,7 +34,7 @@ export default function LectureSearch() { ) : ( - + )}
diff --git a/app/ui/user/user-credit-result.tsx b/app/ui/user/user-credit-result.tsx new file mode 100644 index 00000000..a9b45591 --- /dev/null +++ b/app/ui/user/user-credit-result.tsx @@ -0,0 +1,22 @@ +import { getUserInfo } from '@/app/business/user/user.query'; +import books from '@/public/assets/books.png'; +import pencil from '@/public/assets/pencil.png'; +import Image from 'next/image'; + +export default async function UserCreditResult() { + const userInfo = await getUserInfo(); + return ( +
+
+ pencil +
+

+ {userInfo.studentName}님, 총 기준학점 중 {userInfo.takenCredit}학점을 + 수강하셨습니다! +

+
+ books +
+
+ ); +} diff --git a/app/ui/user/user-info-navigator/user-info-navigator.tsx b/app/ui/user/user-info-navigator/user-info-navigator.tsx index 69701268..56caea14 100644 --- a/app/ui/user/user-info-navigator/user-info-navigator.tsx +++ b/app/ui/user/user-info-navigator/user-info-navigator.tsx @@ -13,7 +13,7 @@ export default async function UserInfoNavigator() { {userInfo.studentName}
-
{userInfo.major}
+
{userInfo.completionDivision[0].major}
{userInfo.studentNumber}
diff --git a/app/ui/view/molecule/drawer/drawer.tsx b/app/ui/view/molecule/drawer/drawer.tsx index b9494403..438deb64 100644 --- a/app/ui/view/molecule/drawer/drawer.tsx +++ b/app/ui/view/molecule/drawer/drawer.tsx @@ -25,6 +25,7 @@ const Drawer = ({ children, drawerKey, onClose, className }: DrawerProps) => { className, )} > +
{children} diff --git a/public/assets/books.png b/public/assets/books.png new file mode 100644 index 00000000..7be58f30 Binary files /dev/null and b/public/assets/books.png differ diff --git a/public/assets/pencil.png b/public/assets/pencil.png new file mode 100644 index 00000000..6008c1f9 Binary files /dev/null and b/public/assets/pencil.png differ