From b550ee22550225b8f30ccc16f1203c4e26d3af3d Mon Sep 17 00:00:00 2001 From: jacy-dukang Date: Sun, 12 Jul 2026 17:46:39 +0800 Subject: [PATCH] =?UTF-8?q?OSS=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=88=A0=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin-web/src/App.tsx | 2 - apps/admin-web/src/layouts/AdminLayout.tsx | 1 - .../admin-web/src/pages/OssUploadLogsPage.tsx | 247 ------------------ 3 files changed, 250 deletions(-) delete mode 100644 apps/admin-web/src/pages/OssUploadLogsPage.tsx diff --git a/apps/admin-web/src/App.tsx b/apps/admin-web/src/App.tsx index e5d61e2..e345e66 100644 --- a/apps/admin-web/src/App.tsx +++ b/apps/admin-web/src/App.tsx @@ -29,7 +29,6 @@ import ResourcesPage from './pages/ResourcesPage'; import StoreBillsPage from './pages/StoreBillsPage'; import PartnerBillsPage from './pages/PartnerBillsPage'; import TicketsPage from './pages/TicketsPage'; -import OssUploadLogsPage from './pages/OssUploadLogsPage'; import UserLogsPage from './pages/UserLogsPage'; import HqLogsPage from './pages/HqLogsPage'; import ThirdPartyLogsPage from './pages/ThirdPartyLogsPage'; @@ -87,7 +86,6 @@ export default function App() { } /> } /> } /> - } /> } /> } /> } /> diff --git a/apps/admin-web/src/layouts/AdminLayout.tsx b/apps/admin-web/src/layouts/AdminLayout.tsx index 823bfa3..b841023 100644 --- a/apps/admin-web/src/layouts/AdminLayout.tsx +++ b/apps/admin-web/src/layouts/AdminLayout.tsx @@ -90,7 +90,6 @@ const MENU_ITEMS: MenuProps['items'] = [ { key: '/logs/stores', label: '商户日志' }, { key: '/logs/partners', label: '合伙人日志' }, { key: '/logs/hq', label: 'HQ 操作日志' }, - { key: '/logs/oss', label: 'OSS 上传日志' }, { key: '/logs/third-party', label: '第三方日志' }, ], }, diff --git a/apps/admin-web/src/pages/OssUploadLogsPage.tsx b/apps/admin-web/src/pages/OssUploadLogsPage.tsx deleted file mode 100644 index 6be92a1..0000000 --- a/apps/admin-web/src/pages/OssUploadLogsPage.tsx +++ /dev/null @@ -1,247 +0,0 @@ -import { useState } from 'react'; -import { Button, Descriptions, Drawer, Form, Input, Select, Table, Tag, Typography } from 'antd'; -import type { ColumnsType } from 'antd/es/table'; -import { request } from '../lib/api'; -import { fmtTime } from '../lib/constants'; -import { useAdminList } from '../lib/useAdminList'; - -type Row = { - id: string; - scene: string; - status: string; - actorType: string | null; - actorId: string | null; - clientApp: string | null; - bizType: string | null; - mediaType: string | null; - fileName: string | null; - fileSize: number | null; - mimeType: string | null; - ossKey: string | null; - url: string | null; - bucket: string | null; - mock: boolean | null; - errorMessage?: string | null; - createdAt: string; -}; - -const SCENE_OPTIONS = [ - { value: 'UPLOAD_PUT_OBJECT', label: '服务端上传' }, - { value: 'UPLOAD_TOKEN', label: '直传凭证' }, -]; - -const STATUS_OPTIONS = [ - { value: 'SUCCESS', label: 'SUCCESS' }, - { value: 'FAILED', label: 'FAILED' }, - { value: 'PENDING', label: 'PENDING' }, -]; - -const CLIENT_APP_OPTIONS = [ - { value: 'HQ_WEB', label: 'HQ WebAdmin' }, - { value: 'USER_H5', label: 'C 端 H5' }, - { value: 'USER_MINI', label: 'C 端小程序' }, - { value: 'SHOP_H5', label: '门店 H5' }, - { value: 'PARTNER_H5', label: '合伙人 H5' }, -]; - -const STATUS_COLOR: Record = { - SUCCESS: 'success', - FAILED: 'error', - PENDING: 'processing', -}; - -function formatFileSize(size: number | null | undefined) { - if (size == null || size <= 0) return '—'; - if (size < 1024) return `${size} B`; - if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`; - return `${(size / 1024 / 1024).toFixed(2)} MB`; -} - -function JsonBlock({ value }: { value: unknown }) { - if (value == null) return ; - return ( -
-      {JSON.stringify(value, null, 2)}
-    
- ); -} - -export default function OssUploadLogsPage() { - const [filters, setFilters] = useState>({}); - const { data, loading, page, pageSize, setPage, setPageSize } = useAdminList( - '/admin/logs/oss', - () => { - const qs = new URLSearchParams(); - if (filters.scene) qs.set('scene', filters.scene); - if (filters.status) qs.set('status', filters.status); - if (filters.bizType) qs.set('bizType', filters.bizType); - if (filters.clientApp) qs.set('clientApp', filters.clientApp); - if (filters.refId) qs.set('refId', filters.refId); - return qs; - }, - [filters], - ); - const [detail, setDetail] = useState | null>(null); - const [drawerOpen, setDrawerOpen] = useState(false); - - const columns: ColumnsType = [ - { title: '时间', dataIndex: 'createdAt', width: 160, render: fmtTime }, - { - title: '场景', - dataIndex: 'scene', - width: 120, - render: (v: string) => SCENE_OPTIONS.find((o) => o.value === v)?.label ?? v, - }, - { - title: '状态', - dataIndex: 'status', - width: 90, - render: (v: string) => {v}, - }, - { title: '端', dataIndex: 'clientApp', width: 110, render: (v) => v || '—' }, - { - title: '操作者', - width: 120, - render: (_, r) => (r.actorType && r.actorId ? `${r.actorType}#${r.actorId}` : '—'), - }, - { title: '业务类型', dataIndex: 'bizType', width: 120, render: (v) => v || '—' }, - { title: '文件名', dataIndex: 'fileName', ellipsis: true, render: (v) => v || '—' }, - { - title: '大小', - dataIndex: 'fileSize', - width: 90, - render: (v: number | null) => formatFileSize(v), - }, - { title: 'OSS Key', dataIndex: 'ossKey', ellipsis: true, width: 160, render: (v) => v || '—' }, - { - title: 'Mock', - dataIndex: 'mock', - width: 70, - render: (v: boolean | null) => (v == null ? '—' : v ? '是' : '否'), - }, - { - title: '错误', - dataIndex: 'errorMessage', - ellipsis: true, - render: (v: string | null | undefined) => v || '—', - }, - { - title: '操作', - width: 80, - fixed: 'right', - render: (_, row) => ( - - ), - }, - ]; - - return ( -
- OSS 上传日志 - - 记录各端经 /common/resources/upload 的文件上传与直传凭证申请。 - -
{ - setFilters(v); - setPage(1); - }} - > - - - - - - - - - - -
- { - setPage(p); - setPageSize(ps); - }, - }} - /> - setDrawerOpen(false)}> - {detail && ( - - {String(detail.id)} - {String(detail.scene)} - - {String(detail.status)} - - {String(detail.clientApp ?? '—')} - - {detail.actorType ? `${String(detail.actorType)}#${String(detail.actorId)}` : '—'} - - {String(detail.bizType ?? '—')} - {String(detail.mediaType ?? '—')} - {String(detail.fileName ?? '—')} - {formatFileSize(detail.fileSize as number | null)} - {String(detail.mimeType ?? '—')} - {String(detail.bucket ?? '—')} - {String(detail.ossKey ?? '—')} - - {detail.url ? ( - - {String(detail.url)} - - ) : ( - '—' - )} - - {detail.mock == null ? '—' : detail.mock ? '是' : '否'} - - {detail.errorMessage ? ( - - {String(detail.errorMessage)} - - ) : ( - '—' - )} - - {fmtTime(String(detail.createdAt))} - - - - - - - - )} - - - ); -}