feat: 项目接口联调

This commit is contained in:
JiaJun
2026-04-10 09:27:11 +08:00
parent 906fa63870
commit af3ed15ba2
62 changed files with 4307 additions and 982 deletions

View File

@@ -0,0 +1,61 @@
import type {SelectedProductState} from '@/types'
type RedeemValidationParams = {
sessionId?: string
selectedProduct: SelectedProductState | null
selectedAddressId: string
}
type RedeemValidationResult =
| { valid: true }
| { valid: false; message: string }
export function validateRedeemSubmission({
sessionId,
selectedProduct,
selectedAddressId,
}: RedeemValidationParams): RedeemValidationResult {
if (!sessionId) {
return {
valid: false,
message: 'Session expired. Please log in again.',
}
}
if (!selectedProduct) {
return {
valid: false,
message: 'No product selected.',
}
}
if (selectedProduct.categoryId === 'PHYSICAL' && !selectedAddressId) {
return {
valid: false,
message: 'Please select a shipping address.',
}
}
return {valid: true}
}
type AddAddressValidationParams = {
isAddAddressFormValid: boolean
}
type AddAddressValidationResult =
| { valid: true }
| { valid: false; message: string }
export function validateAddAddressSubmission({
isAddAddressFormValid,
}: AddAddressValidationParams): AddAddressValidationResult {
if (!isAddAddressFormValid) {
return {
valid: false,
message: 'Please complete all required address fields.',
}
}
return {valid: true}
}