移除快手小店以及 api
This commit is contained in:
@@ -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>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user