686 lines
17 KiB
TypeScript
686 lines
17 KiB
TypeScript
import { del, get, post, postForm, put } from '@/api/http'
|
|
|
|
export interface LoginPayload {
|
|
loginType?: string
|
|
account?: string
|
|
username?: string
|
|
mobile?: string
|
|
email?: string
|
|
password?: string
|
|
code?: string
|
|
}
|
|
|
|
export interface RegisterPayload {
|
|
registerType?: string
|
|
username?: string
|
|
password?: string
|
|
mobile?: string
|
|
email?: string
|
|
code?: string
|
|
nickname?: string
|
|
inviteCode?: string
|
|
}
|
|
|
|
export interface TokenPair {
|
|
accessToken: string
|
|
refreshToken?: string
|
|
expiresIn?: number
|
|
}
|
|
|
|
export interface CurrentMember {
|
|
userId?: number
|
|
id?: number
|
|
username?: string
|
|
nickname?: string
|
|
mobile?: string
|
|
email?: string
|
|
avatar?: string
|
|
inviteCode?: string
|
|
agentLevel?: number
|
|
commissionRate?: number
|
|
inviteCount?: number
|
|
verifyStatus?: number
|
|
}
|
|
|
|
export interface FileInfo {
|
|
name?: string
|
|
url?: string
|
|
}
|
|
|
|
export interface MemberVerifyFieldPolicy {
|
|
code?: string
|
|
label?: string
|
|
type?: 'TEXT' | 'IMAGE' | 'IMAGE_LIST' | string
|
|
enabled?: boolean
|
|
required?: boolean
|
|
readonly?: boolean
|
|
source?: string
|
|
maxCount?: number
|
|
sort?: number
|
|
placeholder?: string
|
|
}
|
|
|
|
export interface MemberVerifyPolicy {
|
|
enabled?: boolean
|
|
forceRequired?: boolean
|
|
forceScenes?: string[]
|
|
fields?: MemberVerifyFieldPolicy[]
|
|
}
|
|
|
|
export interface MemberVerifyCurrent {
|
|
memberUserId?: number
|
|
status?: number
|
|
verifyEnabled?: boolean
|
|
forceRequired?: boolean
|
|
forceScenes?: string[]
|
|
currentRecordId?: number
|
|
verifyNo?: string
|
|
mobile?: string
|
|
realName?: string
|
|
idCardNo?: string
|
|
idCardFrontUrl?: string
|
|
idCardBackUrl?: string
|
|
supportDocs?: string[]
|
|
submitRemark?: string
|
|
auditRemark?: string
|
|
submitTime?: string
|
|
auditTime?: string
|
|
verifiedTime?: string
|
|
policy?: MemberVerifyPolicy
|
|
}
|
|
|
|
export interface MemberVerifySubmitPayload {
|
|
realName?: string
|
|
idCardNo?: string
|
|
idCardFrontUrl?: string
|
|
idCardBackUrl?: string
|
|
supportDocs?: string[]
|
|
submitRemark?: string
|
|
}
|
|
|
|
export interface MemberAuthPublicConfig {
|
|
registerMethods?: string[]
|
|
loginMethods?: string[]
|
|
mobileVerificationEnabled?: boolean
|
|
emailVerificationEnabled?: boolean
|
|
}
|
|
|
|
export interface MemberSiteConfig {
|
|
siteName?: string
|
|
siteFaviconUrl?: string
|
|
siteLogoUrl?: string
|
|
customerServiceType?: 'QR_CODE' | 'URL'
|
|
customerServiceQrUrl?: string
|
|
customerServiceUrl?: string
|
|
homeFooterContent?: string
|
|
}
|
|
|
|
export interface CaptchaInfo {
|
|
captchaId?: string
|
|
captchaBase64?: string
|
|
}
|
|
|
|
export interface DurationOption {
|
|
durationDays?: number
|
|
durationUnit?: string
|
|
durationValue?: number
|
|
displayName?: string
|
|
multiplier?: number
|
|
}
|
|
|
|
export interface StaticRegion {
|
|
regionId?: number
|
|
regionCode?: string
|
|
regionName?: string
|
|
regionNameZh?: string
|
|
countryCode?: string
|
|
countryName?: string
|
|
basePrice?: number
|
|
iconUrl?: string
|
|
}
|
|
|
|
export interface QiYunNodeOption {
|
|
qiyunAreaId?: string
|
|
qiyunAreaName?: string
|
|
qiyunNodeId?: string
|
|
qiyunNodeName?: string
|
|
qiyunIsp?: string
|
|
basePrice?: number
|
|
priceType?: string
|
|
availableQuantity?: number
|
|
}
|
|
|
|
export interface StaticPackage {
|
|
productId?: number
|
|
productCode?: string
|
|
productName?: string
|
|
currency?: string
|
|
qiyunProductType?: string
|
|
upstreamProviderId?: number
|
|
qiyunProjectRequired?: boolean
|
|
defaultNodePrice?: number
|
|
durations?: DurationOption[]
|
|
regions?: StaticRegion[]
|
|
}
|
|
|
|
export interface PackageCatalog {
|
|
staticPackages?: StaticPackage[]
|
|
dynamicPackages?: unknown[]
|
|
durations?: unknown[]
|
|
}
|
|
|
|
export interface StaticPurchasePayload {
|
|
productId?: number
|
|
durationDays?: number
|
|
durationUnit?: string
|
|
durationValue?: number
|
|
purposeWeb?: string
|
|
qiyunPid?: string
|
|
qiyunProjectName?: string
|
|
qiyunAreaId?: string
|
|
qiyunAreaName?: string
|
|
qiyunNodeId?: string
|
|
qiyunNodeName?: string
|
|
qiyunIsp?: string
|
|
proxyAccountMode?: 'RANDOM' | 'CUSTOM'
|
|
proxyUsername?: string
|
|
proxyPassword?: string
|
|
proxyPortMode?: 'RANDOM' | 'CUSTOM'
|
|
proxyPort?: string
|
|
quantity?: number
|
|
items: Array<{
|
|
regionId?: number
|
|
qiyunAreaId?: string
|
|
qiyunAreaName?: string
|
|
qiyunNodeId?: string
|
|
qiyunNodeName?: string
|
|
qiyunIsp?: string
|
|
quantity?: number
|
|
}>
|
|
}
|
|
|
|
export interface OrderSubmit {
|
|
orderNo?: string
|
|
orderStatus?: string
|
|
payStatus?: string
|
|
openStatus?: string
|
|
saleAmount?: number
|
|
payAmount?: number
|
|
currency?: string
|
|
message?: string
|
|
}
|
|
|
|
export interface BatchOrderSubmit {
|
|
orderCount?: number
|
|
totalSaleAmount?: number
|
|
orders?: OrderSubmit[]
|
|
}
|
|
|
|
export interface PageResult<T> {
|
|
list: T[]
|
|
total: number
|
|
}
|
|
|
|
export interface WalletOverview {
|
|
balance?: number
|
|
frozenBalance?: number
|
|
totalRechargeAmount?: number
|
|
totalConsumeAmount?: number
|
|
totalRefundAmount?: number
|
|
}
|
|
|
|
export interface WalletFlow {
|
|
id?: number
|
|
flowNo?: string
|
|
userId?: number
|
|
memberUserId?: number
|
|
bizType?: string
|
|
changeType?: 'IN' | 'OUT' | string
|
|
changeAmount?: number
|
|
beforeBalance?: number
|
|
afterBalance?: number
|
|
relatedOrderNo?: string
|
|
remark?: string
|
|
operateBy?: number
|
|
createTime?: string
|
|
}
|
|
|
|
export interface WalletRechargePromotionRule {
|
|
rechargeAmount?: number
|
|
giftAmount?: number
|
|
}
|
|
|
|
export interface WalletRechargePromotionConfig {
|
|
enabled?: boolean
|
|
title?: string
|
|
minRechargeAmount?: number
|
|
quickAmounts?: number[]
|
|
rules?: WalletRechargePromotionRule[]
|
|
}
|
|
|
|
export interface WalletRechargePayload {
|
|
amount: number
|
|
paymentType: string
|
|
clientType?: string
|
|
returnUrl?: string
|
|
remark?: string
|
|
}
|
|
|
|
export interface WalletRechargeSubmit {
|
|
id?: number
|
|
rechargeNo?: string
|
|
payOrderNo?: string
|
|
payStatus?: string
|
|
paymentType?: string
|
|
paymentCompleted?: boolean
|
|
payAction?: string
|
|
payData?: string
|
|
payMessage?: string
|
|
gatewayOrderNo?: string
|
|
amount?: number
|
|
giftAmount?: number
|
|
creditedAmount?: number
|
|
promotionApplied?: boolean
|
|
promotionRuleDescription?: string
|
|
currency?: string
|
|
payableAmount?: number
|
|
payableCurrency?: string
|
|
exchangeRate?: number
|
|
exchangeRateFactor?: number
|
|
exchangeRateApplied?: number
|
|
exchangeRateSource?: string
|
|
}
|
|
|
|
export interface WalletRechargeOrder {
|
|
id?: number
|
|
rechargeNo?: string
|
|
payOrderNo?: string
|
|
memberUserId?: number
|
|
paymentType?: string
|
|
payStatus?: string
|
|
channelOrderNo?: string
|
|
clientType?: string
|
|
returnUrl?: string
|
|
amount?: number
|
|
giftAmount?: number
|
|
creditedAmount?: number
|
|
promotionRuleSnapshot?: string
|
|
currency?: string
|
|
paidTime?: string
|
|
remark?: string
|
|
createTime?: string
|
|
updateTime?: string
|
|
}
|
|
|
|
export interface DistributionAccount {
|
|
id?: number
|
|
userId?: number
|
|
memberUserId?: number
|
|
availableBalance?: number
|
|
frozenBalance?: number
|
|
totalEarnedAmount?: number
|
|
totalRevokedAmount?: number
|
|
totalTransferAmount?: number
|
|
totalWithdrawAmount?: number
|
|
withdrawThreshold?: number
|
|
withdrawFeeRate?: number
|
|
status?: number
|
|
createTime?: string
|
|
updateTime?: string
|
|
}
|
|
|
|
export interface DistributionCommission {
|
|
id?: number
|
|
orderNo?: string
|
|
levelNo?: number
|
|
rate?: number
|
|
baseAmount?: number
|
|
commissionAmount?: number
|
|
commissionStatus?: string
|
|
confirmTime?: string
|
|
invalidTime?: string
|
|
createTime?: string
|
|
remark?: string
|
|
}
|
|
|
|
export interface NoticeItem {
|
|
id?: number
|
|
title?: string
|
|
publishStatus?: number
|
|
type?: number
|
|
publisherName?: string
|
|
level?: string
|
|
publishTime?: string
|
|
isRead?: number
|
|
targetType?: number
|
|
createTime?: string
|
|
revokeTime?: string
|
|
}
|
|
|
|
export interface NoticeDetail extends NoticeItem {
|
|
content?: string
|
|
}
|
|
|
|
export interface OpenApiApplyCurrent {
|
|
id?: number
|
|
applyNo?: string
|
|
memberUserId?: number
|
|
status?: number
|
|
contactName?: string
|
|
contactMobile?: string
|
|
contactEmail?: string
|
|
companyName?: string
|
|
purpose?: string
|
|
scenarioDescription?: string
|
|
allowIpList?: string
|
|
submitRemark?: string
|
|
auditRemark?: string
|
|
submitTime?: string
|
|
auditTime?: string
|
|
openApiAppId?: number
|
|
}
|
|
|
|
export interface OpenApiApplyPayload {
|
|
contactName: string
|
|
contactMobile?: string
|
|
contactEmail?: string
|
|
companyName?: string
|
|
purpose: string
|
|
scenarioDescription: string
|
|
allowIpList?: string
|
|
submitRemark?: string
|
|
}
|
|
|
|
export interface OpenApiCredential {
|
|
id?: number
|
|
appId?: string
|
|
appName?: string
|
|
appSecret?: string
|
|
status?: number
|
|
allowIpList?: string
|
|
callbackUrl?: string
|
|
callbackSecret?: string
|
|
lastAuthTime?: string
|
|
lastAuthIp?: string
|
|
}
|
|
|
|
export interface OpenApiCallbackConfig {
|
|
openApiAppId?: number
|
|
callbackUrl?: string
|
|
callbackSecret?: string
|
|
}
|
|
|
|
export interface OpenApiAccount {
|
|
id?: number
|
|
openApiAppId?: number
|
|
memberUserId?: number
|
|
balance?: number
|
|
frozenBalance?: number
|
|
totalRechargeAmount?: number
|
|
totalConsumeAmount?: number
|
|
totalRefundAmount?: number
|
|
status?: number
|
|
createTime?: string
|
|
updateTime?: string
|
|
}
|
|
|
|
export interface OpenApiRechargePayload {
|
|
amount: number
|
|
paymentType: string
|
|
clientType?: string
|
|
returnUrl?: string
|
|
remark?: string
|
|
}
|
|
|
|
export interface OpenApiRechargeSubmit {
|
|
id?: number
|
|
rechargeNo?: string
|
|
payOrderNo?: string
|
|
payStatus?: string
|
|
paymentType?: string
|
|
paymentCompleted?: boolean
|
|
amount?: number
|
|
giftAmount?: number
|
|
creditedAmount?: number
|
|
currency?: string
|
|
payAction?: string
|
|
payData?: string
|
|
payMessage?: string
|
|
gatewayOrderNo?: string
|
|
payableAmount?: number
|
|
payableCurrency?: string
|
|
exchangeRate?: number
|
|
}
|
|
|
|
export interface OpenApiAccountFlow {
|
|
id?: number
|
|
flowNo?: string
|
|
bizType?: string
|
|
changeType?: string
|
|
changeAmount?: number
|
|
beforeBalance?: number
|
|
afterBalance?: number
|
|
relatedOrderNo?: string
|
|
remark?: string
|
|
createTime?: string
|
|
}
|
|
|
|
export interface OpenApiRechargeOrder {
|
|
id?: number
|
|
rechargeNo?: string
|
|
payOrderNo?: string
|
|
paymentType?: string
|
|
payStatus?: string
|
|
amount?: number
|
|
giftAmount?: number
|
|
creditedAmount?: number
|
|
currency?: string
|
|
paidTime?: string
|
|
remark?: string
|
|
createTime?: string
|
|
}
|
|
|
|
export interface OpenApiCallbackLog {
|
|
id?: number
|
|
orderNo?: string
|
|
callbackUrl?: string
|
|
eventType?: string
|
|
responseStatus?: number
|
|
deliveryStatus?: string
|
|
errorMessage?: string
|
|
attemptNo?: number
|
|
triggerTime?: string
|
|
finishTime?: string
|
|
createTime?: string
|
|
}
|
|
|
|
export const MemberAPI = {
|
|
authConfig() {
|
|
return get<MemberAuthPublicConfig>('/api/v1/member/auth/config')
|
|
},
|
|
siteConfig() {
|
|
return get<MemberSiteConfig>('/api/v1/member/site-config')
|
|
},
|
|
captcha(scene: 'LOGIN' | 'REGISTER') {
|
|
return get<CaptchaInfo>('/api/v1/member/auth/captcha', { params: { scene } })
|
|
},
|
|
sendMobileCode(params: {
|
|
mobile: string
|
|
scene: 'LOGIN' | 'REGISTER'
|
|
captchaId: string
|
|
captchaCode: string
|
|
}) {
|
|
return post<void>('/api/v1/member/auth/mobile/code', undefined, { params })
|
|
},
|
|
sendEmailCode(params: {
|
|
email: string
|
|
scene: 'LOGIN' | 'REGISTER'
|
|
captchaId: string
|
|
captchaCode: string
|
|
}) {
|
|
return post<void>('/api/v1/member/auth/email/code', undefined, { params })
|
|
},
|
|
login(data: LoginPayload) {
|
|
return post<TokenPair>('/api/v1/member/auth/login', data)
|
|
},
|
|
register(data: RegisterPayload) {
|
|
return post<TokenPair>('/api/v1/member/auth/register', data)
|
|
},
|
|
me() {
|
|
return get<CurrentMember>('/api/v1/member/auth/me')
|
|
},
|
|
logout() {
|
|
return del<void>('/api/v1/member/auth/logout')
|
|
},
|
|
publicCatalog() {
|
|
return get<PackageCatalog>('/api/v1/public/package-center/catalog')
|
|
},
|
|
memberCatalog() {
|
|
return get<PackageCatalog>('/api/v1/member/package-center/catalog')
|
|
},
|
|
qiyunProjects(productId: number) {
|
|
return get<Array<{ id?: string; value?: string; extra?: Record<string, unknown> }>>(
|
|
'/api/v1/member/package-center/qiyun/projects',
|
|
{ params: { productId } },
|
|
)
|
|
},
|
|
qiyunAreas(productId: number, pid?: string) {
|
|
return get<Array<{ id?: string; value?: string; extra?: Record<string, unknown> }>>(
|
|
'/api/v1/member/package-center/qiyun/areas',
|
|
{ params: { productId, pid } },
|
|
)
|
|
},
|
|
staticInventories(
|
|
productId: number,
|
|
params?: { purposeWeb?: string; qiyunPid?: string; qiyunAreaId?: string },
|
|
) {
|
|
return get<QiYunNodeOption[]>('/api/v1/member/package-center/static-inventory', {
|
|
params: { productId, ...params },
|
|
})
|
|
},
|
|
purchaseStaticPackage(data: StaticPurchasePayload) {
|
|
return post<BatchOrderSubmit>('/api/v1/member/package-center/static-orders', data)
|
|
},
|
|
payOrder(orderNo: string, data?: { paymentType?: string }) {
|
|
return post<OrderSubmit>(`/api/v1/member/orders/${orderNo}/pay`, data)
|
|
},
|
|
wallet() {
|
|
return get<WalletOverview>('/api/v1/member/wallet')
|
|
},
|
|
walletFlows(params?: Record<string, unknown>) {
|
|
return get<PageResult<WalletFlow>>('/api/v1/member/wallet/flows', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
walletRechargePromotionConfig() {
|
|
return get<WalletRechargePromotionConfig>('/api/v1/member/wallet/recharges/promotion-config')
|
|
},
|
|
previewWalletRecharge(data: WalletRechargePayload) {
|
|
return post<WalletRechargeSubmit>('/api/v1/member/wallet/recharges/preview', data)
|
|
},
|
|
createWalletRecharge(data: WalletRechargePayload) {
|
|
return post<WalletRechargeSubmit>('/api/v1/member/wallet/recharges', data)
|
|
},
|
|
walletRechargeOrders(params?: Record<string, unknown>) {
|
|
return get<PageResult<WalletRechargeOrder>>('/api/v1/member/wallet/recharges', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
walletRechargeDetail(rechargeNo: string) {
|
|
return get<WalletRechargeOrder>(`/api/v1/member/wallet/recharges/${rechargeNo}`)
|
|
},
|
|
retryWalletRechargePaymentStatus(rechargeNo: string) {
|
|
return post<WalletRechargeSubmit>(`/api/v1/member/wallet/recharges/${rechargeNo}/retry-payment-status`)
|
|
},
|
|
distributionAccount() {
|
|
return get<DistributionAccount>('/api/v1/member/distribution/account')
|
|
},
|
|
distributionCommissions(params?: Record<string, unknown>) {
|
|
return get<PageResult<DistributionCommission>>('/api/v1/member/distribution/commissions', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
orders(params?: Record<string, unknown>) {
|
|
return get<PageResult<unknown>>('/api/v1/member/orders', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
staticAssets(params?: Record<string, unknown>) {
|
|
return get<PageResult<unknown>>('/api/v1/member/static-assets', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
dynamicChannels(params?: Record<string, unknown>) {
|
|
return get<PageResult<unknown>>('/api/v1/member/dynamic-channels', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
verifyCurrent() {
|
|
return get<MemberVerifyCurrent>('/api/v1/member/verify/current')
|
|
},
|
|
verifyPolicy() {
|
|
return get<MemberVerifyPolicy>('/api/v1/member/verify/policy')
|
|
},
|
|
submitVerify(data: MemberVerifySubmitPayload) {
|
|
return post<void>('/api/v1/member/verify/submit', data)
|
|
},
|
|
uploadFile(file: File) {
|
|
const formData = new FormData()
|
|
formData.append('file', file)
|
|
return postForm<FileInfo>('/api/v1/files', formData)
|
|
},
|
|
openApiCurrent() {
|
|
return get<OpenApiApplyCurrent | null>('/api/v1/member/open-api/current')
|
|
},
|
|
openApiCredential() {
|
|
return get<OpenApiCredential | null>('/api/v1/member/open-api/credential')
|
|
},
|
|
submitOpenApiApply(data: OpenApiApplyPayload) {
|
|
return post<void>('/api/v1/member/open-api/submit', data)
|
|
},
|
|
openApiCallbackConfig() {
|
|
return get<OpenApiCallbackConfig>('/api/v1/member/open-api/callback-config')
|
|
},
|
|
updateOpenApiCallbackConfig(data: { callbackUrl?: string; callbackSecret?: string }) {
|
|
return put<OpenApiCallbackConfig>('/api/v1/member/open-api/callback-config', data)
|
|
},
|
|
openApiCallbackLogs(params?: Record<string, unknown>) {
|
|
return get<PageResult<OpenApiCallbackLog>>('/api/v1/member/open-api/callback-logs', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
retryOpenApiCallback(id: number) {
|
|
return post<void>(`/api/v1/member/open-api/callback-logs/${id}/retry`)
|
|
},
|
|
openApiAccount() {
|
|
return get<OpenApiAccount>('/api/v1/member/open-api/account')
|
|
},
|
|
openApiAccountFlows(params?: Record<string, unknown>) {
|
|
return get<PageResult<OpenApiAccountFlow>>('/api/v1/member/open-api/account/flows', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
previewOpenApiRecharge(data: OpenApiRechargePayload) {
|
|
return post<OpenApiRechargeSubmit>('/api/v1/member/open-api/account/recharges/preview', data)
|
|
},
|
|
createOpenApiRecharge(data: OpenApiRechargePayload) {
|
|
return post<OpenApiRechargeSubmit>('/api/v1/member/open-api/account/recharges', data)
|
|
},
|
|
openApiRechargeOrders(params?: Record<string, unknown>) {
|
|
return get<PageResult<OpenApiRechargeOrder>>('/api/v1/member/open-api/account/recharges', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
updateProfile(data: unknown) {
|
|
return put<CurrentMember>('/api/v1/member/profile', data)
|
|
},
|
|
notices(params?: Record<string, unknown>) {
|
|
return get<PageResult<NoticeItem>>('/api/v1/member/notices', {
|
|
params: params as Record<string, string | number | boolean | null | undefined>,
|
|
})
|
|
},
|
|
noticeDetail(id: number) {
|
|
return get<NoticeDetail>(`/api/v1/member/notices/${id}/detail`)
|
|
},
|
|
}
|