From 6290634171f9b3c46fe3a7179bc6fdf796cf7a25 Mon Sep 17 00:00:00 2001 From: bicochan Date: Mon, 21 Apr 2025 10:44:30 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20organization=20->=20user-organization?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=A6=AC=EB=84=A4=EC=9D=B4=EB=B0=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/menu/api/organization-service.ts | 17 ----- .../menu/api/user-organization-service.ts | 17 +++++ apps/cs/src/pages/menu/lib/utils.ts | 72 ++++++++++--------- ...face.ts => user-organization-interface.ts} | 8 +-- .../menu/ui/organization-search-dialog.tsx | 19 ++--- apps/cs/src/pages/menu/ui/type-menu-form.tsx | 2 +- 6 files changed, 72 insertions(+), 63 deletions(-) delete mode 100644 apps/cs/src/pages/menu/api/organization-service.ts create mode 100644 apps/cs/src/pages/menu/api/user-organization-service.ts rename apps/cs/src/pages/menu/model/{organization-interface.ts => user-organization-interface.ts} (51%) diff --git a/apps/cs/src/pages/menu/api/organization-service.ts b/apps/cs/src/pages/menu/api/organization-service.ts deleted file mode 100644 index 9409f81b5..000000000 --- a/apps/cs/src/pages/menu/api/organization-service.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { client } from "@/shared/api"; -import { ENDPOINT } from "@/shared/config"; -import type { - Organization, - OrganizationService, -} from "../model/organization-interface"; - -export class OrganizationApiService implements OrganizationService { - public async getOrganizationUserTreeList(): Promise { - const response = await client.get( - `${ENDPOINT.CMS_SERVICE.USER_ORGANIZATION}/treeuser`, - ); - return response.data; - } -} - -export const OrganizationApi = new OrganizationApiService(); diff --git a/apps/cs/src/pages/menu/api/user-organization-service.ts b/apps/cs/src/pages/menu/api/user-organization-service.ts new file mode 100644 index 000000000..daa6e2ffe --- /dev/null +++ b/apps/cs/src/pages/menu/api/user-organization-service.ts @@ -0,0 +1,17 @@ +import { client } from "@/shared/api"; +import { ENDPOINT } from "@/shared/config"; +import type { + UserOrganization, + UserOrganizationService, +} from "../model/user-organization-interface"; + +export class UserOrganizationApiService implements UserOrganizationService { + public async getUserOrganizationTreeList(): Promise { + const response = await client.get( + `${ENDPOINT.CMS_SERVICE.USER_ORGANIZATION}/treeuser`, + ); + return response.data; + } +} + +export const UserOrganizationApi = new UserOrganizationApiService(); diff --git a/apps/cs/src/pages/menu/lib/utils.ts b/apps/cs/src/pages/menu/lib/utils.ts index 1c31a1f92..274a0a057 100644 --- a/apps/cs/src/pages/menu/lib/utils.ts +++ b/apps/cs/src/pages/menu/lib/utils.ts @@ -1,6 +1,9 @@ import type { DropOptions, NodeModel } from "@minoru/react-dnd-treeview"; import type { TreeMenu, TreeNode } from "../model/menu-interface"; -import type { Organization, User } from "../model/organization-interface"; +import type { + UserOrganization, + User, +} from "../model/user-organization-interface"; export const generateMenuTreeData = ( data: TreeMenu[], @@ -107,44 +110,47 @@ export const handleNodeTextChange = callback(newTree); }; -export const generateOrganizationTreeData = ( - organizations: Organization[], -): NodeModel[] => { - return organizations.reduce[]>((acc, org) => { - const orgNode: NodeModel = { - id: org.ognzSn, - parent: org.upOgnzSn ?? 0, - text: org.ognzNm, - data: org, - droppable: false, - }; +export const generateUserOrganizationTreeData = ( + organizations: UserOrganization[], +): NodeModel[] => { + return organizations.reduce[]>( + (acc, org) => { + const orgNode: NodeModel = { + id: org.ognzSn, + parent: org.upOgnzSn ?? 0, + text: org.ognzNm, + data: org, + droppable: false, + }; - acc.push(orgNode); + acc.push(orgNode); - if (org.children?.length) { - acc.push(...generateOrganizationTreeData(org.children)); - } + if (org.children?.length) { + acc.push(...generateUserOrganizationTreeData(org.children)); + } - if (org.users?.length) { - acc.push( - ...org.users.map((user) => ({ - id: user.userUnqId, - parent: org.ognzSn, - text: user.userNm, - data: user, - droppable: false, - })), - ); - } + if (org.users?.length) { + acc.push( + ...org.users.map((user) => ({ + id: user.userUnqId, + parent: org.ognzSn, + text: user.userNm, + data: user, + droppable: false, + })), + ); + } - return acc; - }, []); + return acc; + }, + [], + ); }; -export const filterOrganizationTreeDataByKeyword = ( - treeData: NodeModel[], +export const filterUserOrganizationTreeDataByKeyword = ( + treeData: NodeModel[], keyword: string, -): NodeModel[] => { +): NodeModel[] => { return Array.from( treeData.reduce((matchedNodes, node) => { if (!node.text.includes(keyword)) return matchedNodes; @@ -160,6 +166,6 @@ export const filterOrganizationTreeDataByKeyword = ( } return matchedNodes; - }, new Set>()), + }, new Set>()), ); }; diff --git a/apps/cs/src/pages/menu/model/organization-interface.ts b/apps/cs/src/pages/menu/model/user-organization-interface.ts similarity index 51% rename from apps/cs/src/pages/menu/model/organization-interface.ts rename to apps/cs/src/pages/menu/model/user-organization-interface.ts index 082437110..c788b44e0 100644 --- a/apps/cs/src/pages/menu/model/organization-interface.ts +++ b/apps/cs/src/pages/menu/model/user-organization-interface.ts @@ -5,14 +5,14 @@ export interface User { jbgdSeCd: string; } -export interface Organization { +export interface UserOrganization { ognzSn: number; upOgnzSn: number; ognzNm: string; users: User[]; - children: Organization[]; + children: UserOrganization[]; } -export interface OrganizationService { - getOrganizationUserTreeList(): Promise; +export interface UserOrganizationService { + getUserOrganizationTreeList(): Promise; } diff --git a/apps/cs/src/pages/menu/ui/organization-search-dialog.tsx b/apps/cs/src/pages/menu/ui/organization-search-dialog.tsx index ed825508c..41749b26b 100644 --- a/apps/cs/src/pages/menu/ui/organization-search-dialog.tsx +++ b/apps/cs/src/pages/menu/ui/organization-search-dialog.tsx @@ -20,14 +20,17 @@ import { } from "@common/components/ui"; import { cn } from "@common/components/lib"; import { ENDPOINT } from "@/shared/config"; -import { OrganizationApi } from "../api/organization-service"; -import type { Organization, User } from "../model/organization-interface"; +import { UserOrganizationApi } from "../api/user-organization-service"; +import type { + UserOrganization, + User, +} from "../model/user-organization-interface"; import { - filterOrganizationTreeDataByKeyword, - generateOrganizationTreeData, + filterUserOrganizationTreeDataByKeyword, + generateUserOrganizationTreeData, } from "../lib/utils"; -type TreeModel = Organization | User; +type TreeModel = UserOrganization | User; interface OrganizationSearchDialogProps { handleUserSelect: (user: User) => void; @@ -44,8 +47,8 @@ function OrganizationSearchDialog({ const { data: treeData } = useQuery({ queryKey: [ENDPOINT.CMS_SERVICE.USER_ORGANIZATION], - queryFn: () => OrganizationApi.getOrganizationUserTreeList(), - select: (data) => generateOrganizationTreeData(data), + queryFn: () => UserOrganizationApi.getUserOrganizationTreeList(), + select: (data) => generateUserOrganizationTreeData(data), }); const handleSelectNode = (node: NodeModel) => { @@ -79,7 +82,7 @@ function OrganizationSearchDialog({