From 06213d3414d28f8d30a4472e05da0aa8358c9a2f Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Thu, 1 Feb 2024 19:07:46 +0800 Subject: [PATCH] Add tool submit and cancel management --- src/constants/common.constants.ts | 9 ++- src/pages/Tools/All.tsx | 5 -- src/pages/Tools/Store.tsx | 5 ++ src/pages/Tools/index.tsx | 106 ++++++++++++++++++++++++++++-- src/router/tools.tsx | 2 +- src/services/tool.tsx | 4 ++ 6 files changed, 117 insertions(+), 14 deletions(-) delete mode 100644 src/pages/Tools/All.tsx create mode 100644 src/pages/Tools/Store.tsx diff --git a/src/constants/common.constants.ts b/src/constants/common.constants.ts index 958fb05..aada843 100644 --- a/src/constants/common.constants.ts +++ b/src/constants/common.constants.ts @@ -74,10 +74,15 @@ export const DATABASE_EXECUTE_ERROR = 30050 export const DATABASE_DUPLICATE_KEY = 30051 export const DATABASE_NO_RECORD_FOUND = 30052 +export const TOOL_SUBMIT_SUCCESS = 40010 +export const TOOL_CANCEL_SUCCESS = 40011 export const TOOL_ILLEGAL_VERSION = 40050 export const TOOL_UNDER_REVIEW = 40051 -export const TOOL_HAS_UNPUBLISHED_VERSION = 40052 -export const TOOL_HAS_BEEN_PUBLISHED = 40053 +export const TOOL_NOT_UNDER_REVIEW = 40052 +export const TOOL_HAS_UNPUBLISHED_VERSION = 40053 +export const TOOL_HAS_BEEN_PUBLISHED = 40054 +export const TOOL_SUBMIT_ERROR = 40060 +export const TOOL_CANCEL_ERROR = 40061 export const API_AVATAR_SUCCESS = 50100 export const API_AVATAR_ERROR = 50150 diff --git a/src/pages/Tools/All.tsx b/src/pages/Tools/All.tsx deleted file mode 100644 index b5af6ff..0000000 --- a/src/pages/Tools/All.tsx +++ /dev/null @@ -1,5 +0,0 @@ -const All = () => { - return <> -} - -export default All diff --git a/src/pages/Tools/Store.tsx b/src/pages/Tools/Store.tsx new file mode 100644 index 0000000..34bdf42 --- /dev/null +++ b/src/pages/Tools/Store.tsx @@ -0,0 +1,5 @@ +const Store = () => { + return <> +} + +export default Store diff --git a/src/pages/Tools/index.tsx b/src/pages/Tools/index.tsx index 331cf38..f392793 100644 --- a/src/pages/Tools/index.tsx +++ b/src/pages/Tools/index.tsx @@ -6,12 +6,22 @@ import { DATABASE_DELETE_SUCCESS, DATABASE_SELECT_SUCCESS, DATABASE_UPDATE_SUCCESS, + TOOL_CANCEL_SUCCESS, + TOOL_HAS_BEEN_PUBLISHED, TOOL_HAS_UNPUBLISHED_VERSION, TOOL_ILLEGAL_VERSION, + TOOL_NOT_UNDER_REVIEW, + TOOL_SUBMIT_SUCCESS, TOOL_UNDER_REVIEW } from '@/constants/common.constants' import { getLoginStatus } from '@/util/auth' -import { r_tool_delete, r_tool_get, r_tool_upgrade } from '@/services/tool' +import { + r_tool_cancel, + r_tool_delete, + r_tool_get, + r_tool_submit, + r_tool_upgrade +} from '@/services/tool' import FitFullscreen from '@/components/common/FitFullscreen' import HideScrollbar from '@/components/common/HideScrollbar' import FlexBox from '@/components/common/FlexBox' @@ -113,9 +123,11 @@ interface ToolCardProps { tools: ToolVo[] onDelete?: (tool: ToolVo) => void onUpgrade?: (tool: ToolVo) => void + onSubmit?: (tool: ToolVo) => void + onCancel?: (tool: ToolVo) => void } -const ToolCard = ({ tools, onDelete, onUpgrade }: ToolCardProps) => { +const ToolCard = ({ tools, onDelete, onUpgrade, onSubmit, onCancel }: ToolCardProps) => { const navigate = useNavigate() const [selectedTool, setSelectedTool] = useState(tools[0]) @@ -137,13 +149,17 @@ const ToolCard = ({ tools, onDelete, onUpgrade }: ToolCardProps) => { const handleOnPublishTool = () => { if (selectedTool.publish === '0' && ['NONE', 'REJECT'].includes(selectedTool.review)) { - return () => {} + return () => { + onSubmit?.(selectedTool) + } } } const handleOnCancelReview = () => { if (selectedTool.publish === '0' && selectedTool.review === 'PROCESSING') { - return () => {} + return () => { + onCancel?.(selectedTool) + } } } @@ -199,7 +215,7 @@ const Tools = () => { const handleOnDeleteTool = (tool: ToolVo) => { modal .confirm({ - title: '确定删除', + title: '删除', content: `确定删除工具 ${tool.name}:${tool.ver} 吗?` }) .then( @@ -228,7 +244,7 @@ const Tools = () => { const handleOnUpgradeTool = (tool: ToolVo) => { void modal.confirm({ - title: '更新应用', + title: '更新工具', content: ( <> @@ -301,6 +317,82 @@ const Tools = () => { }) } + const handleOnSubmitTool = (tool: ToolVo) => { + modal + .confirm({ + title: '提交审核', + content: `确定提交审核工具 ${tool.name}:${tool.ver} 吗?` + }) + .then( + (confirmed) => { + if (confirmed) { + setLoading(true) + + void r_tool_submit(tool.id) + .then((res) => { + const response = res.data + switch (response.code) { + case TOOL_SUBMIT_SUCCESS: + void message.success('提交审核成功') + getTool() + break + case TOOL_UNDER_REVIEW: + void message.warning('工具审核中,请勿重复提交') + break + case TOOL_HAS_BEEN_PUBLISHED: + void message.warning('工具已发布,请创建新版本') + break + default: + void message.error('提交审核失败,请稍后重试') + } + }) + .finally(() => { + setLoading(false) + }) + } + }, + () => {} + ) + } + + const handleOnCancelTool = (tool: ToolVo) => { + modal + .confirm({ + title: '取消审核', + content: `确定取消审核工具 ${tool.name}:${tool.ver} 吗?` + }) + .then( + (confirmed) => { + if (confirmed) { + setLoading(true) + + void r_tool_cancel(tool.id) + .then((res) => { + const response = res.data + switch (response.code) { + case TOOL_CANCEL_SUCCESS: + void message.success('取消审核成功') + getTool() + break + case TOOL_NOT_UNDER_REVIEW: + void message.warning('工具非审核状态') + break + case TOOL_HAS_BEEN_PUBLISHED: + void message.warning('工具已发布,请创建新版本') + break + default: + void message.error('取消审核失败,请稍后重试') + } + }) + .finally(() => { + setLoading(false) + }) + } + }, + () => {} + ) + } + const getTool = () => { if (loading) { return @@ -356,6 +448,8 @@ const Tools = () => { tools={value} onDelete={handleOnDeleteTool} onUpgrade={handleOnUpgradeTool} + onSubmit={handleOnSubmitTool} + onCancel={handleOnCancelTool} /> ))} diff --git a/src/router/tools.tsx b/src/router/tools.tsx index 4e94d80..2bc88ac 100644 --- a/src/router/tools.tsx +++ b/src/router/tools.tsx @@ -13,7 +13,7 @@ export const tools: RouteJsonObject[] = [ path: 'store', absolutePath: '/store', id: 'tools-store', - component: lazy(() => import('@/pages/Tools')), + component: lazy(() => import('@/pages/Tools/Store')), name: '工具商店', titlePostfix: ' - 商店', icon: lazy(() => import('~icons/oxygen/store')), diff --git a/src/services/tool.tsx b/src/services/tool.tsx index 9f7da61..e36ece2 100644 --- a/src/services/tool.tsx +++ b/src/services/tool.tsx @@ -24,4 +24,8 @@ export const r_tool_detail = (username: string, toolId: string, ver: string) => export const r_tool_update = (param: ToolUpdateParam) => request.put(URL_TOOL, param) +export const r_tool_submit = (id: string) => request.post(`${URL_TOOL}/${id}`) + +export const r_tool_cancel = (id: string) => request.put(`${URL_TOOL}/${id}`) + export const r_tool_delete = (id: string) => request.delete(`${URL_TOOL}/${id}`)