移除快手小店以及 api

This commit is contained in:
yml2213
2026-07-09 21:03:39 +08:00
parent a075b8acf7
commit ffbc19a9db
38 changed files with 110 additions and 2724 deletions
+9 -128
View File
@@ -1,21 +1,16 @@
import {
CheckCircleOutlined,
ClockCircleOutlined,
ExclamationCircleOutlined,
LinkOutlined,
LoadingOutlined,
ReloadOutlined,
SendOutlined,
SwapOutlined,
} from '@ant-design/icons'
import {
Alert,
Button,
Card,
Collapse,
Empty,
Image,
Input,
Space,
Spin,
Tooltip,
@@ -39,7 +34,6 @@ import {
fetchClaimDetail,
rebindKuaishouCloudClaimRole,
redeemKuaishouCloudClaim,
verifyKuaishouCloudClaimTicket,
} from '@/services/claim'
import type {
ClaimDetailData,
@@ -66,14 +60,12 @@ export default function ClaimPage() {
const token = String(routeToken || '').trim()
const [loading, setLoading] = useState(true)
const [submitting, setSubmitting] = useState(false)
const [refreshingRole, setRefreshingRole] = useState(false)
const [confirmingRole, setConfirmingRole] = useState(false)
const [rebindingRole, setRebindingRole] = useState(false)
const [redeeming, setRedeeming] = useState(false)
const [errorMessage, setErrorMessage] = useState('')
const [detail, setDetail] = useState<ClaimDetailData | null>(null)
const [ticketCode, setTicketCode] = useState('')
const [qrCodeDataUrl, setQrCodeDataUrl] = useState('')
const pollTimerRef = useRef<number>(0)
@@ -117,7 +109,6 @@ export default function ClaimPage() {
const applyDetail = useCallback(
async (nextDetail: ClaimDetailData) => {
setDetail(nextDetail)
setTicketCode((current) => current || nextDetail.kuaishouCloudFulfillment?.ticket.code || '')
await generateQRCode(
String(nextDetail.kuaishouCloudFulfillment?.binding.bindUrl || '').trim(),
)
@@ -208,7 +199,6 @@ export default function ClaimPage() {
rolePollBaselineAtRef.current = 0
rolePollBaselineKeyRef.current = ''
setDetail(null)
setTicketCode('')
setQrCodeDataUrl('')
void loadDetail()
@@ -234,27 +224,6 @@ export default function ClaimPage() {
}
}, [loadDetail, resolveNextPollDelay, snapshot, stopPolling])
async function submitTicket() {
const normalizedTicketCode = ticketCode.trim()
if (!normalizedTicketCode) {
showError('请输入核销码')
return
}
setSubmitting(true)
try {
const response = await verifyKuaishouCloudClaimTicket(token, {
ticketCode: normalizedTicketCode,
})
await applyDetail(response.data)
showSuccess('核销已完成,系统已开始准备绑定资源')
} catch (error) {
showError(error instanceof Error ? error.message : '核销码验证失败')
} finally {
setSubmitting(false)
}
}
async function refreshRole() {
setRefreshingRole(true)
try {
@@ -318,7 +287,7 @@ export default function ClaimPage() {
async function rebindRole() {
try {
await showConfirm(
'换绑后当前绑定链接会失效,系统会退还当前虚拟号并生成新的绑定二维码。核销码和领取商品不会改变,但需要重新扫码绑定角色。',
'换绑后当前绑定链接会失效,系统会退还当前虚拟号并生成新的绑定二维码。领取商品不会改变,但需要重新扫码绑定角色。',
'确认换绑角色',
{
okText: '确认换绑',
@@ -407,15 +376,11 @@ export default function ClaimPage() {
) : detail && snapshot.flow ? (
<KuaishouCloudClaimSteps
snapshot={snapshot}
ticketCode={ticketCode}
qrCodeDataUrl={qrCodeDataUrl}
submitting={submitting}
refreshingRole={refreshingRole}
confirmingRole={confirmingRole}
rebindingRole={rebindingRole}
redeeming={redeeming}
onTicketCodeChange={setTicketCode}
onSubmitTicket={submitTicket}
onOpenBindUrl={openBindUrl}
onRefreshRole={refreshRole}
onRebindRole={rebindRole}
@@ -474,8 +439,6 @@ function createClaimSnapshot(
String(flow?.dispatch.status || '').trim() === 'failed'
const isCompleted = isKuaishouCloudCompletedStatus(task?.status)
const hasRedeemResult = isDispatched || hasKuaishouCloudRedeemResultStatus(task?.status)
const canSubmitTicket = !isClaimInactiveTaskStatus(task?.status)
const currentStep = resolveCurrentStep({
isFeifeiFlow,
isCompleted,
@@ -524,7 +487,6 @@ function createClaimSnapshot(
isRedeemFailed,
isCompleted,
hasRedeemResult,
canSubmitTicket,
currentStep,
progressText,
resultTitle,
@@ -691,15 +653,11 @@ function ClaimHeaderCard({
function KuaishouCloudClaimSteps({
snapshot,
ticketCode,
qrCodeDataUrl,
submitting,
refreshingRole,
confirmingRole,
rebindingRole,
redeeming,
onTicketCodeChange,
onSubmitTicket,
onOpenBindUrl,
onRefreshRole,
onRebindRole,
@@ -707,15 +665,11 @@ function KuaishouCloudClaimSteps({
onConfirmRedeem,
}: {
snapshot: ClaimSnapshot
ticketCode: string
qrCodeDataUrl: string
submitting: boolean
refreshingRole: boolean
confirmingRole: boolean
rebindingRole: boolean
redeeming: boolean
onTicketCodeChange: (value: string) => void
onSubmitTicket: () => void
onOpenBindUrl: (useCurrentPage?: boolean) => void
onRefreshRole: () => void
onRebindRole: () => void
@@ -727,17 +681,7 @@ function KuaishouCloudClaimSteps({
}
if (snapshot.currentStep === 1) {
return (
<ClaimTicketStep
ticketCode={ticketCode}
canSubmitTicket={snapshot.canSubmitTicket && !submitting}
submitting={submitting}
isBindingPreparing={snapshot.isBindingPreparing}
flow={snapshot.flow}
onTicketCodeChange={onTicketCodeChange}
onSubmitTicket={onSubmitTicket}
/>
)
return <ClaimDeprecatedTicketStep />
}
if (snapshot.currentStep === 2) {
@@ -773,84 +717,21 @@ function KuaishouCloudClaimSteps({
return <ClaimResultStep snapshot={snapshot} />
}
function ClaimTicketStep({
ticketCode,
canSubmitTicket,
submitting,
isBindingPreparing,
flow,
onTicketCodeChange,
onSubmitTicket,
}: {
ticketCode: string
canSubmitTicket: boolean
submitting: boolean
isBindingPreparing: boolean
flow: ClaimKuaishouCloudFlowInfo
onTicketCodeChange: (value: string) => void
onSubmitTicket: () => void
}) {
function ClaimDeprecatedTicketStep() {
return (
<Card className="claim-content-card">
<Typography.Title level={2}> 1 </Typography.Title>
<Typography.Title level={2}></Typography.Title>
<p className="claim-muted">
</p>
<Input
size="large"
value={ticketCode}
placeholder="粘贴快手核销码"
disabled={!canSubmitTicket}
onChange={(event) => onTicketCodeChange(event.target.value)}
onPressEnter={onSubmitTicket}
/>
<Button
type="primary"
size="large"
icon={<SendOutlined />}
loading={submitting}
disabled={!canSubmitTicket}
onClick={onSubmitTicket}
>
</Button>
<Alert
type="info"
type="warning"
showIcon
icon={<ClockCircleOutlined />}
message={
isBindingPreparing
? '核销完成后会自动准备绑定资源。'
: '核销完成后会自动进入扫码绑定步骤。'
}
icon={<ExclamationCircleOutlined />}
message="快手小店核销入口已下线"
description="电子凭证发码、查询和核销请以新的电子凭证流程为准。"
/>
{flow.guideImages.length > 0 ? (
<Collapse
defaultActiveKey={['guide']}
items={[
{
key: 'guide',
label: '查看核销码图文指引',
children: (
<Image.PreviewGroup>
<div className="claim-guide-grid">
{flow.guideImages.map((imageUrl, index) => (
<figure key={imageUrl} className="claim-guide-figure">
<Image src={imageUrl} alt={`步骤 ${index + 1}`} />
<figcaption> {index + 1}</figcaption>
</figure>
))}
</div>
</Image.PreviewGroup>
),
},
]}
/>
) : null}
</Card>
)
}