Files
one-pipe-system/src/api/modules/card.ts
sexygoat 5c6312c407
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Failing after 6s
fetch(add): 新增
2026-01-27 09:18:45 +08:00

350 lines
9.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 网卡相关 API
*/
import { BaseService } from '../BaseService'
import type {
Card,
SimCardProduct,
CardQueryParams,
CardImportBatch,
CardOperationParams,
CardAssignParams,
BatchRechargeRecord,
CardChangeApplication,
ProcessCardChangeParams,
FlowDetail,
SuspendResumeRecord,
CardOrder,
BaseResponse,
PaginationResponse,
ListResponse
} from '@/types/api'
export class CardService extends BaseService {
// ========== 号卡商品管理 ==========
/**
* 获取号卡商品列表
* @param params 查询参数
*/
static getSimCardProducts(params?: any): Promise<PaginationResponse<SimCardProduct>> {
return this.getPage<SimCardProduct>('/api/simcard-products', params)
}
/**
* 创建号卡商品
* @param data 商品数据
*/
static createSimCardProduct(data: Partial<SimCardProduct>): Promise<BaseResponse> {
return this.create('/api/simcard-products', data)
}
/**
* 更新号卡商品
* @param id 商品ID
* @param data 商品数据
*/
static updateSimCardProduct(
id: string | number,
data: Partial<SimCardProduct>
): Promise<BaseResponse> {
return this.update(`/api/simcard-products/${id}`, data)
}
/**
* 删除号卡商品
* @param id 商品ID
*/
static deleteSimCardProduct(id: string | number): Promise<BaseResponse> {
return this.remove(`/api/simcard-products/${id}`)
}
/**
* 号卡分配
* @param params 分配参数
*/
static assignCard(params: CardAssignParams): Promise<BaseResponse> {
return this.post<BaseResponse>('/api/simcard-products/assign', params)
}
// ========== 网卡管理 ==========
/**
* 获取网卡列表
* @param params 查询参数
*/
static getCards(params?: CardQueryParams): Promise<PaginationResponse<Card>> {
return this.getPage<Card>('/api/cards', params)
}
/**
* 根据ICCID获取单卡信息
* @param iccid ICCID
*/
static getCardByIccid(iccid: string): Promise<BaseResponse<Card>> {
return this.getOne<Card>(`/api/cards/iccid/${iccid}`)
}
/**
* 网卡操作(充值、停复机、增减流量等)
* @param params 操作参数
*/
static cardOperation(params: CardOperationParams): Promise<BaseResponse> {
return this.post<BaseResponse>('/api/cards/operation', params)
}
/**
* 套餐充值
* @param iccid ICCID
* @param packageId 套餐ID
*/
static rechargePackage(iccid: string, packageId: string | number): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/cards/${iccid}/recharge`, { packageId })
}
/**
* 停机
* @param iccid ICCID
* @param remark 备注
*/
static suspend(iccid: string, remark?: string): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/cards/${iccid}/suspend`, { remark })
}
/**
* 复机
* @param iccid ICCID
* @param remark 备注
*/
static resume(iccid: string, remark?: string): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/cards/${iccid}/resume`, { remark })
}
/**
* 获取流量详情
* @param iccid ICCID
* @param startDate 开始日期
* @param endDate 结束日期
*/
static getFlowDetails(
iccid: string,
startDate?: string,
endDate?: string
): Promise<ListResponse<FlowDetail>> {
return this.getList<FlowDetail>(`/api/cards/${iccid}/flow-details`, {
startDate,
endDate
})
}
/**
* 获取停复机记录
* @param iccid ICCID
*/
static getSuspendResumeRecords(iccid: string): Promise<ListResponse<SuspendResumeRecord>> {
return this.getList<SuspendResumeRecord>(`/api/cards/${iccid}/suspend-resume-records`)
}
/**
* 获取往期订单
* @param iccid ICCID
*/
static getCardOrders(iccid: string): Promise<ListResponse<CardOrder>> {
return this.getList<CardOrder>(`/api/cards/${iccid}/orders`)
}
/**
* 更改过期时间
* @param iccid ICCID
* @param expireTime 过期时间
*/
static changeExpireTime(iccid: string, expireTime: string): Promise<BaseResponse> {
return this.put<BaseResponse>(`/api/cards/${iccid}/expire-time`, { expireTime })
}
/**
* 增加流量
* @param iccid ICCID
* @param flow 流量MB
*/
static addFlow(iccid: string, flow: number): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/cards/${iccid}/add-flow`, { flow })
}
/**
* 减少流量
* @param iccid ICCID
* @param flow 流量MB
*/
static reduceFlow(iccid: string, flow: number): Promise<BaseResponse> {
return this.post<BaseResponse>(`/api/cards/${iccid}/reduce-flow`, { flow })
}
/**
* 变更钱包余额
* @param iccid ICCID
* @param amount 金额
*/
static changeWalletBalance(iccid: string, amount: number): Promise<BaseResponse> {
return this.put<BaseResponse>(`/api/cards/${iccid}/wallet`, { amount })
}
// ========== 批量操作 ==========
/**
* 获取导入批次列表
* @param params 查询参数
*/
static getImportBatches(params?: any): Promise<PaginationResponse<CardImportBatch>> {
return this.getPage<CardImportBatch>('/api/cards/import-batches', params)
}
/**
* 批量导入网卡
* @param file Excel文件
* @param params 额外参数
*/
static importCards(file: File, params?: Record<string, any>): Promise<BaseResponse> {
return this.upload('/api/cards/import', file, params)
}
/**
* 获取导入失败记录
* @param batchId 批次ID
*/
static getImportFailures(batchId: string | number): Promise<ListResponse<any>> {
return this.getList(`/api/cards/import-batches/${batchId}/failures`)
}
/**
* 批量充值记录列表
* @param params 查询参数
*/
static getBatchRechargeRecords(params?: any): Promise<PaginationResponse<BatchRechargeRecord>> {
return this.getPage<BatchRechargeRecord>('/api/cards/batch-recharge-records', params)
}
/**
* 批量充值导入
* @param file Excel文件
*/
static batchRecharge(file: File): Promise<BaseResponse> {
return this.upload('/api/cards/batch-recharge', file)
}
// ========== 换卡管理 ==========
/**
* 获取换卡申请列表
* @param params 查询参数
*/
static getCardChangeApplications(
params?: any
): Promise<PaginationResponse<CardChangeApplication>> {
return this.getPage<CardChangeApplication>('/api/card-change-applications', params)
}
/**
* 处理换卡申请
* @param params 处理参数
*/
static processCardChange(params: ProcessCardChangeParams): Promise<BaseResponse> {
return this.post<BaseResponse>('/api/card-change-applications/process', params)
}
/**
* 创建换卡通知
* @param iccids ICCID列表
* @param reason 换卡原因
*/
static createCardChangeNotice(iccids: string[], reason: string): Promise<BaseResponse> {
return this.post<BaseResponse>('/api/card-change-notices', { iccids, reason })
}
/**
* 获取换卡通知记录
* @param params 查询参数
*/
static getCardChangeNotices(params?: any): Promise<PaginationResponse<any>> {
return this.getPage('/api/card-change-notices', params)
}
// ========== ICCID批量导入相关 ==========
/**
* 批量导入ICCID新版使用 JSON 格式)
* @param data 导入请求参数
*/
static importIotCards(data: {
carrier_id: number
file_key: string
batch_no?: string
}): Promise<BaseResponse<{ task_id: number; task_no: string; message: string }>> {
return this.post<BaseResponse<{ task_id: number; task_no: string; message: string }>>(
'/api/admin/iot-cards/import',
data
)
}
/**
* 获取导入任务列表
* @param params 查询参数
*/
static getIotCardImportTasks(params?: any): Promise<PaginationResponse<any>> {
return this.getPage('/api/admin/iot-cards/import-tasks', params)
}
/**
* 获取导入任务详情
* @param id 任务ID
*/
static getIotCardImportTaskDetail(id: number): Promise<BaseResponse<any>> {
return this.getOne(`/api/admin/iot-cards/import-tasks/${id}`)
}
// ========== 单卡列表(未绑定设备)相关 ==========
/**
* 获取单卡列表(未绑定设备)
* @param params 查询参数
*/
static getStandaloneIotCards(params?: any): Promise<PaginationResponse<any>> {
return this.getPage('/api/admin/iot-cards/standalone', params)
}
/**
* 批量分配单卡
* @param data 分配参数
*/
static allocateStandaloneCards(data: any): Promise<BaseResponse<any>> {
return this.post('/api/admin/iot-cards/standalone/allocate', data)
}
/**
* 批量回收单卡
* @param data 回收参数
*/
static recallStandaloneCards(data: any): Promise<BaseResponse<any>> {
return this.post('/api/admin/iot-cards/standalone/recall', data)
}
// ========== 资产分配记录相关 ==========
/**
* 获取资产分配记录列表
* @param params 查询参数
*/
static getAssetAllocationRecords(params?: any): Promise<PaginationResponse<any>> {
return this.getPage('/api/admin/asset-allocation-records', params)
}
/**
* 获取资产分配记录详情
* @param id 记录ID
*/
static getAssetAllocationRecordDetail(id: number): Promise<BaseResponse<any>> {
return this.getOne(`/api/admin/asset-allocation-records/${id}`)
}
}