diff --git a/.image/common/ai-feature.png b/.image/common/ai-feature.png index e659dd1a2..1c22dbe4e 100644 Binary files a/.image/common/ai-feature.png and b/.image/common/ai-feature.png differ diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts index 96c85d129..7fe887645 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -332,22 +332,22 @@ setupVbenVxeTable({ }, }); - // add by 星语:数量格式化,例如说:金额 - vxeUI.formats.add('formatNumber', { + // add by 星语:数量格式化,保留 3 位 + vxeUI.formats.add('formatAmount3', { tableCellFormatMethod({ cellValue }) { return erpCountInputFormatter(cellValue); }, }); - + // add by 星语:数量格式化,保留 2 位 vxeUI.formats.add('formatAmount2', { tableCellFormatMethod({ cellValue }, digits = 2) { - return `${erpNumberFormatter(cellValue, digits)}元`; + return `${erpNumberFormatter(cellValue, digits)}`; }, }); vxeUI.formats.add('formatFenToYuanAmount', { tableCellFormatMethod({ cellValue }, digits = 2) { - return `${erpNumberFormatter(fenToYuan(cellValue), digits)}元`; + return `${erpNumberFormatter(fenToYuan(cellValue), digits)}`; }, }); }, diff --git a/apps/web-antd/src/api/crm/contract/index.ts b/apps/web-antd/src/api/crm/contract/index.ts index a4f2a2c7c..53abb523e 100644 --- a/apps/web-antd/src/api/crm/contract/index.ts +++ b/apps/web-antd/src/api/crm/contract/index.ts @@ -50,6 +50,7 @@ export namespace CrmContractApi { creatorName: string; updateTime?: Date; products?: ContractProduct[]; + contactName?: string; } } diff --git a/apps/web-antd/src/api/crm/customer/index.ts b/apps/web-antd/src/api/crm/customer/index.ts index 8ef8503c2..e8983894e 100644 --- a/apps/web-antd/src/api/crm/customer/index.ts +++ b/apps/web-antd/src/api/crm/customer/index.ts @@ -37,6 +37,7 @@ export namespace CrmCustomerApi { updateTime: Date; // 更新时间 poolDay?: number; // 距离进入公海天数 } + export interface CustomerImport { ownerUserId: number; file: File; diff --git a/apps/web-antd/src/api/erp/finance/payment/index.ts b/apps/web-antd/src/api/erp/finance/payment/index.ts index e9dc1847a..c988b1286 100644 --- a/apps/web-antd/src/api/erp/finance/payment/index.ts +++ b/apps/web-antd/src/api/erp/finance/payment/index.ts @@ -2,35 +2,58 @@ import type { PageParam, PageResult } from '@vben/request'; import { requestClient } from '#/api/request'; -namespace ErpFinancePaymentApi { +export namespace ErpFinancePaymentApi { + /** 付款单项 */ + export interface FinancePaymentItem { + id?: number; + row_id?: number; // 前端使用的临时ID + bizId: number; // 业务ID + bizType: number; // 业务类型 + bizNo: string; // 业务编号 + totalPrice: number; // 应付金额 + paidPrice: number; // 已付金额 + paymentPrice: number; // 本次付款 + remark?: string; // 备注 + } + /** 付款单信息 */ export interface FinancePayment { id?: number; // 付款单编号 no: string; // 付款单号 supplierId: number; // 供应商编号 + supplierName?: string; // 供应商名称 paymentTime: Date; // 付款时间 totalPrice: number; // 合计金额,单位:元 + discountPrice: number; // 优惠金额 + paymentPrice: number; // 实际付款金额 status: number; // 状态 remark: string; // 备注 + fileUrl?: string; // 附件 + accountId?: number; // 付款账户 + accountName?: string; // 账户名称 + financeUserId?: number; // 财务人员 + financeUserName?: string; // 财务人员姓名 + creator?: string; // 创建人 + creatorName?: string; // 创建人姓名 + items?: FinancePaymentItem[]; // 付款明细 + bizNo?: string; // 业务单号 } /** 付款单分页查询参数 */ export interface FinancePaymentPageParams extends PageParam { no?: string; + paymentTime?: [string, string]; supplierId?: number; + creator?: string; + financeUserId?: number; + accountId?: number; status?: number; - } - - /** 付款单状态更新参数 */ - export interface FinancePaymentStatusParams { - id: number; - status: number; + remark?: string; + bizNo?: string; } } -/** - * 查询付款单分页 - */ +/** 查询付款单分页 */ export function getFinancePaymentPage( params: ErpFinancePaymentApi.FinancePaymentPageParams, ) { @@ -42,47 +65,35 @@ export function getFinancePaymentPage( ); } -/** - * 查询付款单详情 - */ +/** 查询付款单详情 */ export function getFinancePayment(id: number) { return requestClient.get( `/erp/finance-payment/get?id=${id}`, ); } -/** - * 新增付款单 - */ +/** 新增付款单 */ export function createFinancePayment( data: ErpFinancePaymentApi.FinancePayment, ) { return requestClient.post('/erp/finance-payment/create', data); } -/** - * 修改付款单 - */ +/** 修改付款单 */ export function updateFinancePayment( data: ErpFinancePaymentApi.FinancePayment, ) { return requestClient.put('/erp/finance-payment/update', data); } -/** - * 更新付款单的状态 - */ -export function updateFinancePaymentStatus( - params: ErpFinancePaymentApi.FinancePaymentStatusParams, -) { +/** 更新付款单的状态 */ +export function updateFinancePaymentStatus(id: number, status: number) { return requestClient.put('/erp/finance-payment/update-status', null, { - params, + params: { id, status }, }); } -/** - * 删除付款单 - */ +/** 删除付款单 */ export function deleteFinancePayment(ids: number[]) { return requestClient.delete('/erp/finance-payment/delete', { params: { @@ -91,9 +102,7 @@ export function deleteFinancePayment(ids: number[]) { }); } -/** - * 导出付款单 Excel - */ +/** 导出付款单 Excel */ export function exportFinancePayment( params: ErpFinancePaymentApi.FinancePaymentPageParams, ) { diff --git a/apps/web-antd/src/api/erp/finance/receipt/index.ts b/apps/web-antd/src/api/erp/finance/receipt/index.ts index 37b70e764..a02f8c5e8 100644 --- a/apps/web-antd/src/api/erp/finance/receipt/index.ts +++ b/apps/web-antd/src/api/erp/finance/receipt/index.ts @@ -3,34 +3,57 @@ import type { PageParam, PageResult } from '@vben/request'; import { requestClient } from '#/api/request'; namespace ErpFinanceReceiptApi { + /** 收款单项 */ + export interface FinanceReceiptItem { + id?: number; + row_id?: number; // 前端使用的临时ID + bizId: number; // 业务ID + bizType: number; // 业务类型 + bizNo: string; // 业务编号 + totalPrice: number; // 应收金额 + receiptedPrice: number; // 已收金额 + receiptPrice: number; // 本次收款 + remark?: string; // 备注 + } + /** 收款单信息 */ export interface FinanceReceipt { id?: number; // 收款单编号 no: string; // 收款单号 customerId: number; // 客户编号 + customerName?: string; // 客户名称 receiptTime: Date; // 收款时间 totalPrice: number; // 合计金额,单位:元 + discountPrice: number; // 优惠金额 + receiptPrice: number; // 实际收款金额 status: number; // 状态 remark: string; // 备注 + fileUrl?: string; // 附件 + accountId?: number; // 收款账户 + accountName?: string; // 账户名称 + financeUserId?: number; // 财务人员 + financeUserName?: string; // 财务人员姓名 + creator?: string; // 创建人 + creatorName?: string; // 创建人姓名 + items?: FinanceReceiptItem[]; // 收款明细 + bizNo?: string; // 业务单号 } /** 收款单分页查询参数 */ export interface FinanceReceiptPageParams extends PageParam { no?: string; + receiptTime?: [string, string]; customerId?: number; + creator?: string; + financeUserId?: number; + accountId?: number; status?: number; - } - - /** 收款单状态更新参数 */ - export interface FinanceReceiptStatusParams { - id: number; - status: number; + remark?: string; + bizNo?: string; } } -/** - * 查询收款单分页 - */ +/** 查询收款单分页 */ export function getFinanceReceiptPage( params: ErpFinanceReceiptApi.FinanceReceiptPageParams, ) { @@ -42,47 +65,35 @@ export function getFinanceReceiptPage( ); } -/** - * 查询收款单详情 - */ +/** 查询收款单详情 */ export function getFinanceReceipt(id: number) { return requestClient.get( `/erp/finance-receipt/get?id=${id}`, ); } -/** - * 新增收款单 - */ +/** 新增收款单 */ export function createFinanceReceipt( data: ErpFinanceReceiptApi.FinanceReceipt, ) { return requestClient.post('/erp/finance-receipt/create', data); } -/** - * 修改收款单 - */ +/** 修改收款单 */ export function updateFinanceReceipt( data: ErpFinanceReceiptApi.FinanceReceipt, ) { return requestClient.put('/erp/finance-receipt/update', data); } -/** - * 更新收款单的状态 - */ -export function updateFinanceReceiptStatus( - params: ErpFinanceReceiptApi.FinanceReceiptStatusParams, -) { +/** 更新收款单的状态 */ +export function updateFinanceReceiptStatus(id: number, status: number) { return requestClient.put('/erp/finance-receipt/update-status', null, { - params, + params: { id, status }, }); } -/** - * 删除收款单 - */ +/** 删除收款单 */ export function deleteFinanceReceipt(ids: number[]) { return requestClient.delete('/erp/finance-receipt/delete', { params: { @@ -91,9 +102,7 @@ export function deleteFinanceReceipt(ids: number[]) { }); } -/** - * 导出收款单 Excel - */ +/** 导出收款单 Excel */ export function exportFinanceReceipt( params: ErpFinanceReceiptApi.FinanceReceiptPageParams, ) { diff --git a/apps/web-antd/src/api/erp/product/category/index.ts b/apps/web-antd/src/api/erp/product/category/index.ts index 74e5465c1..87c855319 100644 --- a/apps/web-antd/src/api/erp/product/category/index.ts +++ b/apps/web-antd/src/api/erp/product/category/index.ts @@ -14,9 +14,10 @@ export namespace ErpProductCategoryApi { } /** 查询产品分类列表 */ -export function getProductCategoryList() { +export function getProductCategoryList(params?: any) { return requestClient.get( '/erp/product-category/list', + { params }, ); } diff --git a/apps/web-antd/src/api/erp/purchase/in/index.ts b/apps/web-antd/src/api/erp/purchase/in/index.ts index 03b492a99..f807e2800 100644 --- a/apps/web-antd/src/api/erp/purchase/in/index.ts +++ b/apps/web-antd/src/api/erp/purchase/in/index.ts @@ -49,13 +49,6 @@ export namespace ErpPurchaseInApi { supplierId?: number; status?: number; } - - // TODO @nehc:updatePurchaseInStatus 是不是需要? - /** 采购入库状态更新参数 */ - export interface PurchaseInStatusParams { - id: number; - status: number; - } } /** diff --git a/apps/web-antd/src/api/erp/purchase/order/index.ts b/apps/web-antd/src/api/erp/purchase/order/index.ts index ec08dc179..e2cc7a214 100644 --- a/apps/web-antd/src/api/erp/purchase/order/index.ts +++ b/apps/web-antd/src/api/erp/purchase/order/index.ts @@ -100,12 +100,7 @@ export function updatePurchaseOrderStatus(id: number, status: number) { } /** 删除采购订单 */ -export function deletePurchaseOrder(id: number) { - return requestClient.delete(`/erp/purchase-order/delete?id=${id}`); -} - -/** 批量删除采购订单 */ -export function deletePurchaseOrderList(ids: number[]) { +export function deletePurchaseOrder(ids: number[]) { return requestClient.delete('/erp/purchase-order/delete', { params: { ids: ids.join(',') }, }); diff --git a/apps/web-antd/src/api/erp/purchase/return/index.ts b/apps/web-antd/src/api/erp/purchase/return/index.ts index 86423c46f..4114f1908 100644 --- a/apps/web-antd/src/api/erp/purchase/return/index.ts +++ b/apps/web-antd/src/api/erp/purchase/return/index.ts @@ -96,11 +96,9 @@ export function updatePurchaseReturn( /** * 更新采购退货的状态 */ -export function updatePurchaseReturnStatus( - params: ErpPurchaseReturnApi.PurchaseReturnStatusParams, -) { +export function updatePurchaseReturnStatus(id: number, status: number) { return requestClient.put('/erp/purchase-return/update-status', null, { - params, + params: { id, status }, }); } diff --git a/apps/web-antd/src/api/erp/sale/order/index.ts b/apps/web-antd/src/api/erp/sale/order/index.ts index 37ce1be49..6aff41d82 100644 --- a/apps/web-antd/src/api/erp/sale/order/index.ts +++ b/apps/web-antd/src/api/erp/sale/order/index.ts @@ -24,6 +24,7 @@ export namespace ErpSaleOrderApi { depositPrice?: number; // 定金金额,单位:元 items?: SaleOrderItem[]; // 销售订单产品明细列表 } + export interface SaleOrderItem { id?: number; // 订单项编号 orderId?: number; // 采购订单编号 @@ -66,6 +67,13 @@ export function getSaleOrder(id: number) { ); } +/** 查询销售订单项列表 */ +export function getSaleOrderItemListByOrderId(orderId: number) { + return requestClient.get( + `/erp/sale-order/item/list-by-order-id?orderId=${orderId}`, + ); +} + /** 新增销售订单 */ export function createSaleOrder(data: ErpSaleOrderApi.SaleOrder) { return requestClient.post('/erp/sale-order/create', data); diff --git a/apps/web-antd/src/api/erp/sale/out/index.ts b/apps/web-antd/src/api/erp/sale/out/index.ts index dc4f5d05f..d78a91baf 100644 --- a/apps/web-antd/src/api/erp/sale/out/index.ts +++ b/apps/web-antd/src/api/erp/sale/out/index.ts @@ -23,6 +23,7 @@ export namespace ErpSaleOutApi { fileUrl?: string; // 附件地址 items?: SaleOutItem[]; } + export interface SaleOutItem { count?: number; id?: number; @@ -49,17 +50,9 @@ export namespace ErpSaleOutApi { customerId?: number; status?: number; } - - /** 销售出库状态更新参数 */ - export interface SaleOutStatusParams { - id: number; - status: number; - } } -/** - * 查询销售出库分页 - */ +/** 查询销售出库分页 */ export function getSaleOutPage(params: ErpSaleOutApi.SaleOutPageParams) { return requestClient.get>( '/erp/sale-out/page', @@ -69,39 +62,29 @@ export function getSaleOutPage(params: ErpSaleOutApi.SaleOutPageParams) { ); } -/** - * 查询销售出库详情 - */ +/** 查询销售出库详情 */ export function getSaleOut(id: number) { return requestClient.get(`/erp/sale-out/get?id=${id}`); } -/** - * 新增销售出库 - */ +/** 新增销售出库 */ export function createSaleOut(data: ErpSaleOutApi.SaleOut) { return requestClient.post('/erp/sale-out/create', data); } -/** - * 修改销售出库 - */ +/** 修改销售出库 */ export function updateSaleOut(data: ErpSaleOutApi.SaleOut) { return requestClient.put('/erp/sale-out/update', data); } -/** - * 更新销售出库的状态 - */ -export function updateSaleOutStatus(params: ErpSaleOutApi.SaleOutStatusParams) { +/** 更新销售出库的状态 */ +export function updateSaleOutStatus(id: number, status: number) { return requestClient.put('/erp/sale-out/update-status', null, { - params, + params: { id, status }, }); } -/** - * 删除销售出库 - */ +/** 删除销售出库 */ export function deleteSaleOut(ids: number[]) { return requestClient.delete('/erp/sale-out/delete', { params: { @@ -110,9 +93,7 @@ export function deleteSaleOut(ids: number[]) { }); } -/** - * 导出销售出库 Excel - */ +/** 导出销售出库 Excel */ export function exportSaleOut(params: ErpSaleOutApi.SaleOutPageParams) { return requestClient.download('/erp/sale-out/export-excel', { params, diff --git a/apps/web-antd/src/api/erp/sale/return/index.ts b/apps/web-antd/src/api/erp/sale/return/index.ts index 91057f4df..adc718cc3 100644 --- a/apps/web-antd/src/api/erp/sale/return/index.ts +++ b/apps/web-antd/src/api/erp/sale/return/index.ts @@ -22,6 +22,7 @@ export namespace ErpSaleReturnApi { fileUrl?: string; // 附件地址 items?: SaleReturnItem[]; } + export interface SaleReturnItem { count?: number; id?: number; @@ -48,12 +49,6 @@ export namespace ErpSaleReturnApi { customerId?: number; status?: number; } - - /** 销售退货状态更新参数 */ - export interface SaleReturnStatusParams { - id: number; - status: number; - } } /** @@ -96,11 +91,9 @@ export function updateSaleReturn(data: ErpSaleReturnApi.SaleReturn) { /** * 更新销售退货的状态 */ -export function updateSaleReturnStatus( - params: ErpSaleReturnApi.SaleReturnStatusParams, -) { +export function updateSaleReturnStatus(id: number, status: number) { return requestClient.put('/erp/sale-return/update-status', null, { - params, + params: { id, status }, }); } diff --git a/apps/web-antd/src/api/erp/stock/check/index.ts b/apps/web-antd/src/api/erp/stock/check/index.ts index 60d581405..386948432 100644 --- a/apps/web-antd/src/api/erp/stock/check/index.ts +++ b/apps/web-antd/src/api/erp/stock/check/index.ts @@ -17,6 +17,7 @@ export namespace ErpStockCheckApi { creatorName?: string; // 创建人 items?: StockCheckItem[]; // 盘点产品清单 } + export interface StockCheckItem { id?: number; // 编号 warehouseId?: number; // 仓库编号 @@ -38,12 +39,6 @@ export namespace ErpStockCheckApi { no?: string; status?: number; } - - /** 库存盘点单状态更新参数 */ - export interface StockCheckStatusParams { - id: number; - status: number; - } } /** @@ -86,11 +81,9 @@ export function updateStockCheck(data: ErpStockCheckApi.StockCheck) { /** * 更新库存盘点单的状态 */ -export function updateStockCheckStatus( - params: ErpStockCheckApi.StockCheckStatusParams, -) { +export function updateStockCheckStatus(id: number, status: number) { return requestClient.put('/erp/stock-check/update-status', null, { - params, + params: { id, status }, }); } diff --git a/apps/web-antd/src/api/erp/stock/in/index.ts b/apps/web-antd/src/api/erp/stock/in/index.ts index 8fe9bafd4..18e109314 100644 --- a/apps/web-antd/src/api/erp/stock/in/index.ts +++ b/apps/web-antd/src/api/erp/stock/in/index.ts @@ -42,12 +42,6 @@ export namespace ErpStockInApi { supplierId?: number; status?: number; } - - /** 其它入库单状态更新参数 */ - export interface StockInStatusParams { - id: number; - status: number; - } } /** @@ -86,9 +80,9 @@ export function updateStockIn(data: ErpStockInApi.StockIn) { /** * 更新其它入库单的状态 */ -export function updateStockInStatus(params: ErpStockInApi.StockInStatusParams) { +export function updateStockInStatus(id: number, status: number) { return requestClient.put('/erp/stock-in/update-status', null, { - params, + params: { id, status }, }); } diff --git a/apps/web-antd/src/api/erp/stock/move/index.ts b/apps/web-antd/src/api/erp/stock/move/index.ts index 33e49f299..04bb46ee4 100644 --- a/apps/web-antd/src/api/erp/stock/move/index.ts +++ b/apps/web-antd/src/api/erp/stock/move/index.ts @@ -42,12 +42,6 @@ export namespace ErpStockMoveApi { no?: string; status?: number; } - - /** 库存调拨单状态更新参数 */ - export interface StockMoveStatusParams { - id: number; - status: number; - } } /** @@ -88,11 +82,9 @@ export function updateStockMove(data: ErpStockMoveApi.StockMove) { /** * 更新库存调拨单的状态 */ -export function updateStockMoveStatus( - params: ErpStockMoveApi.StockMoveStatusParams, -) { +export function updateStockMoveStatus(id: number, status: number) { return requestClient.put('/erp/stock-move/update-status', null, { - params, + params: { id, status }, }); } @@ -111,7 +103,5 @@ export function deleteStockMove(ids: number[]) { * 导出库存调拨单 Excel */ export function exportStockMove(params: ErpStockMoveApi.StockMovePageParams) { - return requestClient.download('/erp/stock-move/export-excel', { - params, - }); + return requestClient.download('/erp/stock-move/export-excel', { params }); } diff --git a/apps/web-antd/src/api/erp/stock/out/index.ts b/apps/web-antd/src/api/erp/stock/out/index.ts index a3873f948..2f64ff867 100644 --- a/apps/web-antd/src/api/erp/stock/out/index.ts +++ b/apps/web-antd/src/api/erp/stock/out/index.ts @@ -39,12 +39,6 @@ export namespace ErpStockOutApi { customerId?: number; status?: number; } - - /** 其它出库单状态更新参数 */ - export interface StockOutStatusParams { - id: number; - status: number; - } } /** @@ -85,11 +79,9 @@ export function updateStockOut(data: ErpStockOutApi.StockOut) { /** * 更新其它出库单的状态 */ -export function updateStockOutStatus( - params: ErpStockOutApi.StockOutStatusParams, -) { +export function updateStockOutStatus(id: number, status: number) { return requestClient.put('/erp/stock-out/update-status', null, { - params, + params: { id, status }, }); } diff --git a/apps/web-antd/src/api/iot/alert/config/index.ts b/apps/web-antd/src/api/iot/alert/config/index.ts new file mode 100644 index 000000000..26e114c0c --- /dev/null +++ b/apps/web-antd/src/api/iot/alert/config/index.ts @@ -0,0 +1,94 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace AlertConfigApi { + /** IoT 告警配置 VO */ + export interface AlertConfig { + id?: number; + name: string; + description?: string; + level?: number; + status?: number; + sceneRuleIds?: number[]; + receiveUserIds?: number[]; + receiveUserNames?: string; + receiveTypes?: number[]; + createTime?: Date; + updateTime?: Date; + } +} + +/** IoT 告警配置 */ +export interface AlertConfig { + id?: number; + name?: string; + description?: string; + level?: number; + status?: number; + sceneRuleIds?: number[]; + receiveUserIds?: number[]; + receiveUserNames?: string; + receiveTypes?: number[]; + createTime?: Date; + updateTime?: Date; +} + +/** 查询告警配置分页 */ +export function getAlertConfigPage(params: PageParam) { + return requestClient.get>( + '/iot/alert-config/page', + { params }, + ); +} + +/** 查询告警配置详情 */ +export function getAlertConfig(id: number) { + return requestClient.get( + `/iot/alert-config/get?id=${id}`, + ); +} + +/** 查询所有告警配置列表 */ +export function getAlertConfigList() { + return requestClient.get( + '/iot/alert-config/list', + ); +} + +/** 新增告警配置 */ +export function createAlertConfig(data: AlertConfig) { + return requestClient.post('/iot/alert-config/create', data); +} + +/** 修改告警配置 */ +export function updateAlertConfig(data: AlertConfig) { + return requestClient.put('/iot/alert-config/update', data); +} + +/** 删除告警配置 */ +export function deleteAlertConfig(id: number) { + return requestClient.delete(`/iot/alert-config/delete?id=${id}`); +} + +/** 批量删除告警配置 */ +export function deleteAlertConfigList(ids: number[]) { + return requestClient.delete('/iot/alert-config/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 启用/禁用告警配置 */ +export function toggleAlertConfig(id: number, enabled: boolean) { + return requestClient.put(`/iot/alert-config/toggle`, { + id, + enabled, + }); +} + +/** 获取告警配置简单列表 */ +export function getSimpleAlertConfigList() { + return requestClient.get( + '/iot/alert-config/simple-list', + ); +} diff --git a/apps/web-antd/src/api/iot/alert/record/index.ts b/apps/web-antd/src/api/iot/alert/record/index.ts new file mode 100644 index 000000000..6d2afcfcf --- /dev/null +++ b/apps/web-antd/src/api/iot/alert/record/index.ts @@ -0,0 +1,82 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace AlertRecordApi { + /** IoT 告警记录 VO */ + export interface AlertRecord { + id?: number; + configId?: number; + configName?: string; + configLevel?: number; + deviceId?: number; + deviceName?: string; + productId?: number; + productName?: string; + deviceMessage?: string; + processStatus?: boolean; + processRemark?: string; + processTime?: Date; + createTime?: Date; + } +} + +/** IoT 告警记录 */ +export interface AlertRecord { + id?: number; + configId?: number; + configName?: string; + configLevel?: number; + deviceId?: number; + deviceName?: string; + productId?: number; + productName?: string; + deviceMessage?: string; + processStatus?: boolean; + processRemark?: string; + processTime?: Date; + createTime?: Date; +} + +/** 查询告警记录分页 */ +export function getAlertRecordPage(params: PageParam) { + return requestClient.get>( + '/iot/alert-record/page', + { params }, + ); +} + +/** 查询告警记录详情 */ +export function getAlertRecord(id: number) { + return requestClient.get( + `/iot/alert-record/get?id=${id}`, + ); +} + +/** 处理告警记录 */ +export function processAlertRecord(id: number, remark?: string) { + return requestClient.put('/iot/alert-record/process', { + id, + remark, + }); +} + +/** 批量处理告警记录 */ +export function batchProcessAlertRecord(ids: number[], remark?: string) { + return requestClient.put('/iot/alert-record/batch-process', { + ids, + remark, + }); +} + +/** 删除告警记录 */ +export function deleteAlertRecord(id: number) { + return requestClient.delete(`/iot/alert-record/delete?id=${id}`); +} + +/** 批量删除告警记录 */ +export function deleteAlertRecordList(ids: number[]) { + return requestClient.delete('/iot/alert-record/delete-list', { + params: { ids: ids.join(',') }, + }); +} diff --git a/apps/web-antd/src/api/iot/device/device/index.ts b/apps/web-antd/src/api/iot/device/device/index.ts new file mode 100644 index 000000000..650fe0875 --- /dev/null +++ b/apps/web-antd/src/api/iot/device/device/index.ts @@ -0,0 +1,196 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IotDeviceApi { + /** IoT 设备 VO */ + export interface Device { + id?: number; // 设备 ID,主键,自增 + deviceName: string; // 设备名称 + productId: number; // 产品编号 + productKey?: string; // 产品标识 + deviceType?: number; // 设备类型 + nickname?: string; // 设备备注名称 + gatewayId?: number; // 网关设备 ID + state?: number; // 设备状态 + status?: number; // 设备状态(兼容字段) + onlineTime?: Date; // 最后上线时间 + offlineTime?: Date; // 最后离线时间 + activeTime?: Date; // 设备激活时间 + createTime?: Date; // 创建时间 + ip?: string; // 设备的 IP 地址 + firmwareVersion?: string; // 设备的固件版本 + deviceSecret?: string; // 设备密钥,用于设备认证,需安全存储 + mqttClientId?: string; // MQTT 客户端 ID + mqttUsername?: string; // MQTT 用户名 + mqttPassword?: string; // MQTT 密码 + authType?: string; // 认证类型 + locationType?: number; // 定位类型 + latitude?: number; // 设备位置的纬度 + longitude?: number; // 设备位置的经度 + areaId?: number; // 地区编码 + address?: string; // 设备详细地址 + serialNumber?: string; // 设备序列号 + config?: string; // 设备配置 + groupIds?: number[]; // 添加分组 ID + picUrl?: string; // 设备图片 + location?: string; // 位置信息(格式:经度,纬度) + } + + /** IoT 设备属性详细 VO */ + export interface DevicePropertyDetail { + identifier: string; // 属性标识符 + value: string; // 最新值 + updateTime: Date; // 更新时间 + name: string; // 属性名称 + dataType: string; // 数据类型 + dataSpecs: any; // 数据定义 + dataSpecsList: any[]; // 数据定义列表 + } + + /** IoT 设备属性 VO */ + export interface DeviceProperty { + identifier: string; // 属性标识符 + value: string; // 最新值 + updateTime: Date; // 更新时间 + } + + /** 设备认证参数 VO */ + export interface DeviceAuthInfo { + clientId: string; // 客户端 ID + username: string; // 用户名 + password: string; // 密码 + } + + /** IoT 设备发送消息 Request VO */ + export interface DeviceMessageSendReq { + deviceId: number; // 设备编号 + method: string; // 请求方法 + params?: any; // 请求参数 + } + + /** 设备分组更新请求 */ + export interface DeviceGroupUpdateReq { + ids: number[]; // 设备 ID 列表 + groupIds: number[]; // 分组 ID 列表 + } +} + +/** IoT 设备状态枚举 */ +export enum DeviceStateEnum { + INACTIVE = 0, // 未激活 + OFFLINE = 2, // 离线 + ONLINE = 1, // 在线 +} + +/** 查询设备分页 */ +export function getDevicePage(params: PageParam) { + return requestClient.get>( + '/iot/device/page', + { params }, + ); +} + +/** 查询设备详情 */ +export function getDevice(id: number) { + return requestClient.get(`/iot/device/get?id=${id}`); +} + +/** 新增设备 */ +export function createDevice(data: IotDeviceApi.Device) { + return requestClient.post('/iot/device/create', data); +} + +/** 修改设备 */ +export function updateDevice(data: IotDeviceApi.Device) { + return requestClient.put('/iot/device/update', data); +} + +/** 修改设备分组 */ +export function updateDeviceGroup(data: IotDeviceApi.DeviceGroupUpdateReq) { + return requestClient.put('/iot/device/update-group', data); +} + +/** 删除单个设备 */ +export function deleteDevice(id: number) { + return requestClient.delete(`/iot/device/delete?id=${id}`); +} + +/** 删除多个设备 */ +export function deleteDeviceList(ids: number[]) { + return requestClient.delete('/iot/device/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 导出设备 */ +export function exportDeviceExcel(params: any) { + return requestClient.download('/iot/device/export-excel', { params }); +} + +/** 获取设备数量 */ +export function getDeviceCount(productId: number) { + return requestClient.get(`/iot/device/count?productId=${productId}`); +} + +/** 获取设备的精简信息列表 */ +export function getSimpleDeviceList(deviceType?: number, productId?: number) { + return requestClient.get('/iot/device/simple-list', { + params: { deviceType, productId }, + }); +} + +/** 根据产品编号,获取设备的精简信息列表 */ +export function getDeviceListByProductId(productId: number) { + return requestClient.get('/iot/device/simple-list', { + params: { productId }, + }); +} + +/** 获取导入模板 */ +export function importDeviceTemplate() { + return requestClient.download('/iot/device/get-import-template'); +} + +/** 获取设备属性最新数据 */ +export function getLatestDeviceProperties(params: any) { + return requestClient.get( + '/iot/device/property/get-latest', + { params }, + ); +} + +/** 获取设备属性历史数据 */ +export function getHistoryDevicePropertyList(params: any) { + return requestClient.get>( + '/iot/device/property/history-list', + { params }, + ); +} + +/** 获取设备认证信息 */ +export function getDeviceAuthInfo(id: number) { + return requestClient.get( + '/iot/device/get-auth-info', + { params: { id } }, + ); +} + +/** 查询设备消息分页 */ +export function getDeviceMessagePage(params: PageParam) { + return requestClient.get>('/iot/device/message/page', { + params, + }); +} + +/** 查询设备消息配对分页 */ +export function getDeviceMessagePairPage(params: PageParam) { + return requestClient.get>('/iot/device/message/pair-page', { + params, + }); +} + +/** 发送设备消息 */ +export function sendDeviceMessage(params: IotDeviceApi.DeviceMessageSendReq) { + return requestClient.post('/iot/device/message/send', params); +} diff --git a/apps/web-antd/src/api/iot/device/group/index.ts b/apps/web-antd/src/api/iot/device/group/index.ts new file mode 100644 index 000000000..18cac3097 --- /dev/null +++ b/apps/web-antd/src/api/iot/device/group/index.ts @@ -0,0 +1,51 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IotDeviceGroupApi { + /** IoT 设备分组 VO */ + export interface DeviceGroup { + id?: number; // 分组 ID + name: string; // 分组名字 + status?: number; // 分组状态 + description?: string; // 分组描述 + deviceCount?: number; // 设备数量 + } +} + +/** 查询设备分组分页 */ +export function getDeviceGroupPage(params: PageParam) { + return requestClient.get>( + '/iot/device-group/page', + { params }, + ); +} + +/** 查询设备分组详情 */ +export function getDeviceGroup(id: number) { + return requestClient.get( + `/iot/device-group/get?id=${id}`, + ); +} + +/** 新增设备分组 */ +export function createDeviceGroup(data: IotDeviceGroupApi.DeviceGroup) { + return requestClient.post('/iot/device-group/create', data); +} + +/** 修改设备分组 */ +export function updateDeviceGroup(data: IotDeviceGroupApi.DeviceGroup) { + return requestClient.put('/iot/device-group/update', data); +} + +/** 删除设备分组 */ +export function deleteDeviceGroup(id: number) { + return requestClient.delete(`/iot/device-group/delete?id=${id}`); +} + +/** 获取设备分组的精简信息列表 */ +export function getSimpleDeviceGroupList() { + return requestClient.get( + '/iot/device-group/simple-list', + ); +} diff --git a/apps/web-antd/src/api/iot/ota/firmware/index.ts b/apps/web-antd/src/api/iot/ota/firmware/index.ts new file mode 100644 index 000000000..1b8ae5b69 --- /dev/null +++ b/apps/web-antd/src/api/iot/ota/firmware/index.ts @@ -0,0 +1,90 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IoTOtaFirmwareApi { + /** IoT OTA 固件 VO */ + export interface Firmware { + id?: number; + name: string; + version: string; + productId: number; + productName?: string; + description?: string; + fileUrl?: string; + fileMd5?: string; + fileSize?: number; + status?: number; + createTime?: Date; + updateTime?: Date; + } +} + +/** IoT OTA 固件 */ +export interface IoTOtaFirmware { + id?: number; + name?: string; + version?: string; + productId?: number; + productName?: string; + description?: string; + fileUrl?: string; + fileMd5?: string; + fileSize?: number; + status?: number; + createTime?: Date; + updateTime?: Date; +} + +/** 查询 OTA 固件分页 */ +export function getOtaFirmwarePage(params: PageParam) { + return requestClient.get>( + '/iot/ota/firmware/page', + { params }, + ); +} + +/** 查询 OTA 固件详情 */ +export function getOtaFirmware(id: number) { + return requestClient.get( + `/iot/ota/firmware/get?id=${id}`, + ); +} + +/** 新增 OTA 固件 */ +export function createOtaFirmware(data: IoTOtaFirmware) { + return requestClient.post('/iot/ota/firmware/create', data); +} + +/** 修改 OTA 固件 */ +export function updateOtaFirmware(data: IoTOtaFirmware) { + return requestClient.put('/iot/ota/firmware/update', data); +} + +/** 删除 OTA 固件 */ +export function deleteOtaFirmware(id: number) { + return requestClient.delete(`/iot/ota/firmware/delete?id=${id}`); +} + +/** 批量删除 OTA 固件 */ +export function deleteOtaFirmwareList(ids: number[]) { + return requestClient.delete('/iot/ota/firmware/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 更新 OTA 固件状态 */ +export function updateOtaFirmwareStatus(id: number, status: number) { + return requestClient.put(`/iot/ota/firmware/update-status`, { + id, + status, + }); +} + +/** 根据产品 ID 查询固件列表 */ +export function getOtaFirmwareListByProductId(productId: number) { + return requestClient.get( + '/iot/ota/firmware/list-by-product-id', + { params: { productId } }, + ); +} diff --git a/apps/web-antd/src/api/iot/ota/task/index.ts b/apps/web-antd/src/api/iot/ota/task/index.ts new file mode 100644 index 000000000..25ef2429f --- /dev/null +++ b/apps/web-antd/src/api/iot/ota/task/index.ts @@ -0,0 +1,98 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IoTOtaTaskApi { + /** IoT OTA 升级任务 VO */ + export interface Task { + id?: number; + name: string; + description?: string; + firmwareId: number; + firmwareName?: string; + productId?: number; + productName?: string; + deviceScope?: number; + deviceIds?: number[]; + status?: number; + successCount?: number; + failureCount?: number; + pendingCount?: number; + createTime?: Date; + updateTime?: Date; + } +} + +/** IoT OTA 升级任务 */ +export interface OtaTask { + id?: number; + name?: string; + description?: string; + firmwareId?: number; + firmwareName?: string; + productId?: number; + productName?: string; + deviceScope?: number; + deviceIds?: number[]; + status?: number; + successCount?: number; + failureCount?: number; + pendingCount?: number; + createTime?: Date; + updateTime?: Date; +} + +/** 查询 OTA 升级任务分页 */ +export function getOtaTaskPage(params: PageParam) { + return requestClient.get>( + '/iot/ota/task/page', + { params }, + ); +} + +/** 查询 OTA 升级任务详情 */ +export function getOtaTask(id: number) { + return requestClient.get(`/iot/ota/task/get?id=${id}`); +} + +/** 新增 OTA 升级任务 */ +export function createOtaTask(data: OtaTask) { + return requestClient.post('/iot/ota/task/create', data); +} + +/** 修改 OTA 升级任务 */ +export function updateOtaTask(data: OtaTask) { + return requestClient.put('/iot/ota/task/update', data); +} + +/** 删除 OTA 升级任务 */ +export function deleteOtaTask(id: number) { + return requestClient.delete(`/iot/ota/task/delete?id=${id}`); +} + +/** 批量删除 OTA 升级任务 */ +export function deleteOtaTaskList(ids: number[]) { + return requestClient.delete('/iot/ota/task/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 取消 OTA 升级任务 */ +export function cancelOtaTask(id: number) { + return requestClient.put(`/iot/ota/task/cancel?id=${id}`); +} + +/** 启动 OTA 升级任务 */ +export function startOtaTask(id: number) { + return requestClient.put(`/iot/ota/task/start?id=${id}`); +} + +/** 暂停 OTA 升级任务 */ +export function pauseOtaTask(id: number) { + return requestClient.put(`/iot/ota/task/pause?id=${id}`); +} + +/** 恢复 OTA 升级任务 */ +export function resumeOtaTask(id: number) { + return requestClient.put(`/iot/ota/task/resume?id=${id}`); +} diff --git a/apps/web-antd/src/api/iot/ota/task/record/index.ts b/apps/web-antd/src/api/iot/ota/task/record/index.ts new file mode 100644 index 000000000..3ad7b0990 --- /dev/null +++ b/apps/web-antd/src/api/iot/ota/task/record/index.ts @@ -0,0 +1,101 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IoTOtaTaskRecordApi { + /** IoT OTA 升级任务记录 VO */ + export interface TaskRecord { + id?: number; + taskId: number; + taskName?: string; + deviceId: number; + deviceName?: string; + firmwareId?: number; + firmwareName?: string; + firmwareVersion?: string; + status?: number; + progress?: number; + errorMessage?: string; + startTime?: Date; + endTime?: Date; + createTime?: Date; + } +} + +/** IoT OTA 升级任务记录 */ +export interface OtaTaskRecord { + id?: number; + taskId?: number; + taskName?: string; + deviceId?: number; + deviceName?: string; + firmwareId?: number; + firmwareName?: string; + firmwareVersion?: string; + status?: number; + progress?: number; + errorMessage?: string; + startTime?: Date; + endTime?: Date; + createTime?: Date; +} + +/** 查询 OTA 升级任务记录分页 */ +export function getOtaTaskRecordPage(params: PageParam) { + return requestClient.get>( + '/iot/ota/task/record/page', + { params }, + ); +} + +/** 查询 OTA 升级任务记录详情 */ +export function getOtaTaskRecord(id: number) { + return requestClient.get( + `/iot/ota/task/record/get?id=${id}`, + ); +} + +/** 根据任务 ID 查询记录列表 */ +export function getOtaTaskRecordListByTaskId(taskId: number) { + return requestClient.get( + '/iot/ota/task/record/list-by-task-id', + { params: { taskId } }, + ); +} + +/** 根据设备 ID 查询记录列表 */ +export function getOtaTaskRecordListByDeviceId(deviceId: number) { + return requestClient.get( + '/iot/ota/task/record/list-by-device-id', + { params: { deviceId } }, + ); +} + +/** 根据固件 ID 查询记录列表 */ +export function getOtaTaskRecordListByFirmwareId(firmwareId: number) { + return requestClient.get( + '/iot/ota/task/record/list-by-firmware-id', + { params: { firmwareId } }, + ); +} + +/** 重试升级任务记录 */ +export function retryOtaTaskRecord(id: number) { + return requestClient.put(`/iot/ota/task/record/retry?id=${id}`); +} + +/** 取消升级任务记录 */ +export function cancelOtaTaskRecord(id: number) { + return requestClient.put(`/iot/ota/task/record/cancel?id=${id}`); +} + +/** 获取升级任务记录状态统计 */ +export function getOtaTaskRecordStatusStatistics( + firmwareId?: number, + taskId?: number, +) { + return requestClient.get>( + '/iot/ota/task/record/status-statistics', + { params: { firmwareId, taskId } }, + ); +} diff --git a/apps/web-antd/src/api/iot/product/category/index.ts b/apps/web-antd/src/api/iot/product/category/index.ts new file mode 100644 index 000000000..72f04b6b3 --- /dev/null +++ b/apps/web-antd/src/api/iot/product/category/index.ts @@ -0,0 +1,57 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IotProductCategoryApi { + /** IoT 產品分類 VO */ + export interface ProductCategory { + id?: number; // 分類 ID + name: string; // 分類名稱 + parentId?: number; // 父级分類 ID + sort?: number; // 分類排序 + status?: number; // 分類狀態 + description?: string; // 分類描述 + createTime?: string; // 創建時間 + } +} + +/** 查詢產品分類分頁 */ +export function getProductCategoryPage(params: PageParam) { + return requestClient.get>( + '/iot/product-category/page', + { params }, + ); +} + +/** 查詢產品分類詳情 */ +export function getProductCategory(id: number) { + return requestClient.get( + `/iot/product-category/get?id=${id}`, + ); +} + +/** 新增產品分類 */ +export function createProductCategory( + data: IotProductCategoryApi.ProductCategory, +) { + return requestClient.post('/iot/product-category/create', data); +} + +/** 修改產品分類 */ +export function updateProductCategory( + data: IotProductCategoryApi.ProductCategory, +) { + return requestClient.put('/iot/product-category/update', data); +} + +/** 刪除產品分類 */ +export function deleteProductCategory(id: number) { + return requestClient.delete(`/iot/product-category/delete?id=${id}`); +} + +/** 獲取產品分類精簡列表 */ +export function getSimpleProductCategoryList() { + return requestClient.get( + '/iot/product-category/simple-list', + ); +} diff --git a/apps/web-antd/src/api/iot/product/product/index.ts b/apps/web-antd/src/api/iot/product/product/index.ts new file mode 100644 index 000000000..71bc3ade3 --- /dev/null +++ b/apps/web-antd/src/api/iot/product/product/index.ts @@ -0,0 +1,99 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace IotProductApi { + /** IoT 产品 VO */ + export interface Product { + id?: number; // 产品编号 + name: string; // 产品名称 + productKey?: string; // 产品标识 + protocolId?: number; // 协议编号 + protocolType?: number; // 接入协议类型 + categoryId?: number; // 产品所属品类标识符 + categoryName?: string; // 产品所属品类名称 + icon?: string; // 产品图标 + picUrl?: string; // 产品图片 + description?: string; // 产品描述 + status?: number; // 产品状态 + deviceType?: number; // 设备类型 + locationType?: number; // 定位类型 + netType?: number; // 联网方式 + codecType?: string; // 数据格式(编解码器类型) + dataFormat?: number; // 数据格式 + validateType?: number; // 认证方式 + deviceCount?: number; // 设备数量 + createTime?: Date; // 创建时间 + } +} + +/** IOT 产品设备类型枚举类 */ +export enum DeviceTypeEnum { + DEVICE = 0, // 直连设备 + GATEWAY = 2, // 网关设备 + GATEWAY_SUB = 1, // 网关子设备 +} + +/** IOT 产品定位类型枚举类 */ +export enum LocationTypeEnum { + IP = 1, // IP 定位 + MANUAL = 3, // 手动定位 + MODULE = 2, // 设备定位 +} + +/** IOT 数据格式(编解码器类型)枚举类 */ +export enum CodecTypeEnum { + ALINK = 'Alink', // 阿里云 Alink 协议 +} + +/** 查询产品分页 */ +export function getProductPage(params: PageParam) { + return requestClient.get>( + '/iot/product/page', + { params }, + ); +} + +/** 查询产品详情 */ +export function getProduct(id: number) { + return requestClient.get(`/iot/product/get?id=${id}`); +} + +/** 新增产品 */ +export function createProduct(data: IotProductApi.Product) { + return requestClient.post('/iot/product/create', data); +} + +/** 修改产品 */ +export function updateProduct(data: IotProductApi.Product) { + return requestClient.put('/iot/product/update', data); +} + +/** 删除产品 */ +export function deleteProduct(id: number) { + return requestClient.delete(`/iot/product/delete?id=${id}`); +} + +/** 导出产品 Excel */ +export function exportProduct(params: any) { + return requestClient.download('/iot/product/export-excel', { params }); +} + +/** 更新产品状态 */ +export function updateProductStatus(id: number, status: number) { + return requestClient.put( + `/iot/product/update-status?id=${id}&status=${status}`, + ); +} + +/** 查询产品(精简)列表 */ +export function getSimpleProductList() { + return requestClient.get('/iot/product/simple-list'); +} + +/** 根据 ProductKey 获取产品信息 */ +export function getProductByKey(productKey: string) { + return requestClient.get('/iot/product/get-by-key', { + params: { productKey }, + }); +} diff --git a/apps/web-antd/src/api/iot/rule/data/rule/index.ts b/apps/web-antd/src/api/iot/rule/data/rule/index.ts new file mode 100644 index 000000000..55e50184a --- /dev/null +++ b/apps/web-antd/src/api/iot/rule/data/rule/index.ts @@ -0,0 +1,83 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace DataRuleApi { + /** IoT 数据流转规则 VO */ + export interface Rule { + id?: number; + name: string; + description?: string; + status?: number; + productId?: number; + productKey?: string; + sourceConfigs?: SourceConfig[]; + sinkIds?: number[]; + createTime?: Date; + } + + /** IoT 数据源配置 */ + export interface SourceConfig { + productId?: number; + productKey?: string; + deviceId?: number; + type?: string; + topic?: string; + } +} + +/** IoT 数据流转规则 */ +export interface DataRule { + id?: number; + name?: string; + description?: string; + status?: number; + productId?: number; + productKey?: string; + sourceConfigs?: any[]; + sinkIds?: number[]; + createTime?: Date; +} + +/** 查询数据流转规则分页 */ +export function getDataRulePage(params: PageParam) { + return requestClient.get>( + '/iot/data-rule/page', + { params }, + ); +} + +/** 查询数据流转规则详情 */ +export function getDataRule(id: number) { + return requestClient.get(`/iot/data-rule/get?id=${id}`); +} + +/** 新增数据流转规则 */ +export function createDataRule(data: DataRule) { + return requestClient.post('/iot/data-rule/create', data); +} + +/** 修改数据流转规则 */ +export function updateDataRule(data: DataRule) { + return requestClient.put('/iot/data-rule/update', data); +} + +/** 删除数据流转规则 */ +export function deleteDataRule(id: number) { + return requestClient.delete(`/iot/data-rule/delete?id=${id}`); +} + +/** 批量删除数据流转规则 */ +export function deleteDataRuleList(ids: number[]) { + return requestClient.delete('/iot/data-rule/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 更新数据流转规则状态 */ +export function updateDataRuleStatus(id: number, status: number) { + return requestClient.put(`/iot/data-rule/update-status`, { + id, + status, + }); +} diff --git a/apps/web-antd/src/api/iot/rule/data/sink/index.ts b/apps/web-antd/src/api/iot/rule/data/sink/index.ts new file mode 100644 index 000000000..4614c2a6e --- /dev/null +++ b/apps/web-antd/src/api/iot/rule/data/sink/index.ts @@ -0,0 +1,148 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace DataSinkApi { + /** IoT 数据流转目的 VO */ + export interface Sink { + id?: number; + name: string; + description?: string; + status?: number; + type: string; + config?: any; + createTime?: Date; + } +} + +/** IoT 数据流转目的 */ +export interface DataSinkVO { + id?: number; + name?: string; + description?: string; + status?: number; + type?: string; + config?: any; + createTime?: Date; +} + +/** IoT 数据目的类型枚举 */ +export enum IotDataSinkTypeEnum { + HTTP = 'HTTP', + KAFKA = 'KAFKA', + MQTT = 'MQTT', + RABBITMQ = 'RABBITMQ', + REDIS_STREAM = 'REDIS_STREAM', + ROCKETMQ = 'ROCKETMQ', +} + +/** HTTP 配置 */ +export interface HttpConfig { + url?: string; + method?: string; + headers?: Record; + timeout?: number; +} + +/** MQTT 配置 */ +export interface MqttConfig { + broker?: string; + port?: number; + topic?: string; + username?: string; + password?: string; + clientId?: string; + qos?: number; +} + +/** Kafka 配置 */ +export interface KafkaMQConfig { + bootstrapServers?: string; + topic?: string; + acks?: string; + retries?: number; + batchSize?: number; +} + +/** RabbitMQ 配置 */ +export interface RabbitMQConfig { + host?: string; + port?: number; + virtualHost?: string; + username?: string; + password?: string; + exchange?: string; + routingKey?: string; + queue?: string; +} + +/** RocketMQ 配置 */ +export interface RocketMQConfig { + nameServer?: string; + topic?: string; + tag?: string; + producerGroup?: string; +} + +/** Redis Stream 配置 */ +export interface RedisStreamMQConfig { + host?: string; + port?: number; + password?: string; + database?: number; + streamKey?: string; + maxLen?: number; +} + +/** 查询数据流转目的分页 */ +export function getDataSinkPage(params: PageParam) { + return requestClient.get>( + '/iot/data-sink/page', + { params }, + ); +} + +/** 查询数据流转目的详情 */ +export function getDataSink(id: number) { + return requestClient.get(`/iot/data-sink/get?id=${id}`); +} + +/** 查询所有数据流转目的列表 */ +export function getDataSinkList() { + return requestClient.get('/iot/data-sink/list'); +} + +/** 查询数据流转目的简单列表 */ +export function getDataSinkSimpleList() { + return requestClient.get('/iot/data-sink/simple-list'); +} + +/** 新增数据流转目的 */ +export function createDataSink(data: DataSinkVO) { + return requestClient.post('/iot/data-sink/create', data); +} + +/** 修改数据流转目的 */ +export function updateDataSink(data: DataSinkVO) { + return requestClient.put('/iot/data-sink/update', data); +} + +/** 删除数据流转目的 */ +export function deleteDataSink(id: number) { + return requestClient.delete(`/iot/data-sink/delete?id=${id}`); +} + +/** 批量删除数据流转目的 */ +export function deleteDataSinkList(ids: number[]) { + return requestClient.delete('/iot/data-sink/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 更新数据流转目的状态 */ +export function updateDataSinkStatus(id: number, status: number) { + return requestClient.put(`/iot/data-sink/update-status`, { + id, + status, + }); +} diff --git a/apps/web-antd/src/api/iot/rule/scene/index.ts b/apps/web-antd/src/api/iot/rule/scene/index.ts new file mode 100644 index 000000000..247b9a5f7 --- /dev/null +++ b/apps/web-antd/src/api/iot/rule/scene/index.ts @@ -0,0 +1,155 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace RuleSceneApi { + /** IoT 场景联动规则 VO */ + export interface SceneRule { + id?: number; + name: string; + description?: string; + status?: number; + triggers?: Trigger[]; + actions?: Action[]; + createTime?: Date; + } + + /** IoT 场景联动规则触发器 */ + export interface Trigger { + type?: string; + productId?: number; + deviceId?: number; + identifier?: string; + operator?: string; + value?: any; + cronExpression?: string; + conditionGroups?: TriggerConditionGroup[]; + } + + /** IoT 场景联动规则触发条件组 */ + export interface TriggerConditionGroup { + conditions?: TriggerCondition[]; + operator?: string; + } + + /** IoT 场景联动规则触发条件 */ + export interface TriggerCondition { + productId?: number; + deviceId?: number; + identifier?: string; + operator?: string; + value?: any; + type?: string; + } + + /** IoT 场景联动规则动作 */ + export interface Action { + type?: string; + productId?: number; + deviceId?: number; + identifier?: string; + value?: any; + alertConfigId?: number; + } +} + +/** IoT 场景联动规则 */ +export interface IotSceneRule { + id?: number; + name?: string; + description?: string; + status?: number; + triggers?: Trigger[]; + actions?: Action[]; + createTime?: Date; +} + +/** IoT 场景联动规则触发器 */ +export interface Trigger { + type?: string; + productId?: number; + deviceId?: number; + identifier?: string; + operator?: string; + value?: any; + cronExpression?: string; + conditionGroups?: TriggerConditionGroup[]; +} + +/** IoT 场景联动规则触发条件组 */ +export interface TriggerConditionGroup { + conditions?: TriggerCondition[]; + operator?: string; +} + +/** IoT 场景联动规则触发条件 */ +export interface TriggerCondition { + productId?: number; + deviceId?: number; + identifier?: string; + operator?: string; + value?: any; + type?: string; +} + +/** IoT 场景联动规则动作 */ +export interface Action { + type?: string; + productId?: number; + deviceId?: number; + identifier?: string; + value?: any; + alertConfigId?: number; +} + +/** 查询场景联动规则分页 */ +export function getSceneRulePage(params: PageParam) { + return requestClient.get>( + '/iot/scene-rule/page', + { params }, + ); +} + +/** 查询场景联动规则详情 */ +export function getSceneRule(id: number) { + return requestClient.get( + `/iot/scene-rule/get?id=${id}`, + ); +} + +/** 新增场景联动规则 */ +export function createSceneRule(data: IotSceneRule) { + return requestClient.post('/iot/scene-rule/create', data); +} + +/** 修改场景联动规则 */ +export function updateSceneRule(data: IotSceneRule) { + return requestClient.put('/iot/scene-rule/update', data); +} + +/** 删除场景联动规则 */ +export function deleteSceneRule(id: number) { + return requestClient.delete(`/iot/scene-rule/delete?id=${id}`); +} + +/** 批量删除场景联动规则 */ +export function deleteSceneRuleList(ids: number[]) { + return requestClient.delete('/iot/scene-rule/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 更新场景联动规则状态 */ +export function updateSceneRuleStatus(id: number, status: number) { + return requestClient.put(`/iot/scene-rule/update-status`, { + id, + status, + }); +} + +/** 获取场景联动规则简单列表 */ +export function getSimpleRuleSceneList() { + return requestClient.get( + '/iot/scene-rule/simple-list', + ); +} diff --git a/apps/web-antd/src/api/iot/statistics/index.ts b/apps/web-antd/src/api/iot/statistics/index.ts new file mode 100644 index 000000000..588eefcc4 --- /dev/null +++ b/apps/web-antd/src/api/iot/statistics/index.ts @@ -0,0 +1,69 @@ +import { requestClient } from '#/api/request'; + +export namespace IotStatisticsApi { + /** IoT 统计摘要数据 */ + export interface StatisticsSummary { + productCategoryCount: number; + productCount: number; + deviceCount: number; + deviceMessageCount: number; + productCategoryTodayCount: number; + productTodayCount: number; + deviceTodayCount: number; + deviceMessageTodayCount: number; + deviceOnlineCount: number; + deviceOfflineCount: number; + deviceInactiveCount: number; + productCategoryDeviceCounts: Record; + } + + /** 时间戳-数值的键值对类型 */ + export interface TimeValueItem { + [key: string]: number; + } + + /** IoT 消息统计数据类型 */ + export interface DeviceMessageSummary { + statType: number; + upstreamCounts: TimeValueItem[]; + downstreamCounts: TimeValueItem[]; + } + + /** 消息统计数据项(按日期) */ + export interface DeviceMessageSummaryByDate { + time: string; + upstreamCount: number; + downstreamCount: number; + } + + /** 消息统计接口参数 */ + export interface DeviceMessageReq { + interval: number; + times?: string[]; + } +} + +/** 获取 IoT 统计摘要数据 */ +export function getStatisticsSummary() { + return requestClient.get( + '/iot/statistics/get-summary', + ); +} + +/** 获取设备消息的数据统计(按日期) */ +export function getDeviceMessageSummaryByDate( + params: IotStatisticsApi.DeviceMessageReq, +) { + return requestClient.get( + '/iot/statistics/get-device-message-summary-by-date', + { params }, + ); +} + +/** 获取设备消息统计摘要 */ +export function getDeviceMessageSummary(statType: number) { + return requestClient.get( + '/iot/statistics/get-device-message-summary', + { params: { statType } }, + ); +} diff --git a/apps/web-antd/src/api/iot/thingmodel/index.ts b/apps/web-antd/src/api/iot/thingmodel/index.ts new file mode 100644 index 000000000..d97704b7f --- /dev/null +++ b/apps/web-antd/src/api/iot/thingmodel/index.ts @@ -0,0 +1,191 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace ThingModelApi { + /** IoT 物模型数据 VO */ + export interface ThingModel { + id?: number; + productId?: number; + productKey?: string; + identifier: string; + name: string; + desc?: string; + type: string; + property?: ThingModelProperty; + event?: ThingModelEvent; + service?: ThingModelService; + } + + /** IoT 物模型属性 */ + export interface Property { + identifier: string; + name: string; + accessMode: string; + dataType: string; + dataSpecs?: any; + dataSpecsList?: any[]; + desc?: string; + } + + /** IoT 物模型服务 */ + export interface Service { + identifier: string; + name: string; + callType: string; + inputData?: any[]; + outputData?: any[]; + desc?: string; + } + + /** IoT 物模型事件 */ + export interface Event { + identifier: string; + name: string; + type: string; + outputData?: any[]; + desc?: string; + } +} + +/** IoT 物模型数据 */ +export interface ThingModelData { + id?: number; + productId?: number; + productKey?: string; + identifier?: string; + name?: string; + desc?: string; + type?: string; + dataType?: string; + property?: ThingModelProperty; + event?: ThingModelEvent; + service?: ThingModelService; +} + +/** IoT 物模型属性 */ +export interface ThingModelProperty { + identifier?: string; + name?: string; + accessMode?: string; + dataType?: string; + dataSpecs?: any; + dataSpecsList?: any[]; + desc?: string; +} + +/** IoT 物模型服务 */ +export interface ThingModelService { + identifier?: string; + name?: string; + callType?: string; + inputData?: any[]; + outputData?: any[]; + desc?: string; +} + +/** IoT 物模型事件 */ +export interface ThingModelEvent { + identifier?: string; + name?: string; + type?: string; + outputData?: any[]; + desc?: string; +} + +/** IoT 数据定义(数值型) */ +export interface DataSpecsNumberData { + min?: number | string; + max?: number | string; + step?: number | string; + unit?: string; + unitName?: string; +} + +/** IoT 数据定义(枚举/布尔型) */ +export interface DataSpecsEnumOrBoolData { + value: number | string; + name: string; +} + +/** IoT 物模型表单校验规则 */ +export interface ThingModelFormRules { + [key: string]: any; +} + +/** 验证布尔型名称 */ +export const validateBoolName = (_rule: any, value: any, callback: any) => { + if (value) { + callback(); + } else { + callback(new Error('枚举描述不能为空')); + } +}; + +/** 查询产品物模型分页 */ +export function getThingModelPage(params: PageParam) { + return requestClient.get>( + '/iot/thing-model/page', + { params }, + ); +} + +/** 查询产品物模型详情 */ +export function getThingModel(id: number) { + return requestClient.get( + `/iot/thing-model/get?id=${id}`, + ); +} + +/** 根据产品 ID 查询物模型列表 */ +export function getThingModelListByProductId(productId: number) { + return requestClient.get( + '/iot/thing-model/list-by-product-id', + { params: { productId } }, + ); +} + +/** 根据产品标识查询物模型列表 */ +export function getThingModelListByProductKey(productKey: string) { + return requestClient.get( + '/iot/thing-model/list-by-product-key', + { params: { productKey } }, + ); +} + +/** 新增物模型 */ +export function createThingModel(data: ThingModelData) { + return requestClient.post('/iot/thing-model/create', data); +} + +/** 修改物模型 */ +export function updateThingModel(data: ThingModelData) { + return requestClient.put('/iot/thing-model/update', data); +} + +/** 删除物模型 */ +export function deleteThingModel(id: number) { + return requestClient.delete(`/iot/thing-model/delete?id=${id}`); +} + +/** 批量删除物模型 */ +export function deleteThingModelList(ids: number[]) { + return requestClient.delete('/iot/thing-model/delete-list', { + params: { ids: ids.join(',') }, + }); +} + +/** 导入物模型 TSL */ +export function importThingModelTSL(productId: number, tslData: any) { + return requestClient.post('/iot/thing-model/import-tsl', { + productId, + tslData, + }); +} + +/** 导出物模型 TSL */ +export function exportThingModelTSL(productId: number) { + return requestClient.get('/iot/thing-model/export-tsl', { + params: { productId }, + }); +} diff --git a/apps/web-antd/src/api/mall/market/banner/index.ts b/apps/web-antd/src/api/mall/market/banner/index.ts index 9f9b4fab2..d3b68156b 100644 --- a/apps/web-antd/src/api/mall/market/banner/index.ts +++ b/apps/web-antd/src/api/mall/market/banner/index.ts @@ -5,18 +5,18 @@ import { requestClient } from '#/api/request'; export namespace MallBannerApi { /** Banner 信息 */ export interface Banner { - id: number; - title: string; - picUrl: string; - status: number; - url: string; - position: number; - sort: number; - memo: string; + id: number; // Banner 编号 + title: string; // Banner 标题 + picUrl: string; // Banner 图片 + status: number; // 状态 + url: string; // 链接地址 + position: number; // Banner 位置 + sort: number; // 排序 + memo: string; // 备注 } } -/** 查询Banner管理列表 */ +/** 查询 Banner 管理列表 */ export function getBannerPage(params: PageParam) { return requestClient.get>( '/promotion/banner/page', @@ -24,24 +24,24 @@ export function getBannerPage(params: PageParam) { ); } -/** 查询Banner管理详情 */ +/** 查询 Banner 管理详情 */ export function getBanner(id: number) { return requestClient.get( `/promotion/banner/get?id=${id}`, ); } -/** 新增Banner管理 */ +/** 新增 Banner 管理 */ export function createBanner(data: MallBannerApi.Banner) { return requestClient.post('/promotion/banner/create', data); } -/** 修改Banner管理 */ +/** 修改 Banner 管理 */ export function updateBanner(data: MallBannerApi.Banner) { return requestClient.put('/promotion/banner/update', data); } -/** 删除Banner管理 */ +/** 删除 Banner 管理 */ export function deleteBanner(id: number) { return requestClient.delete(`/promotion/banner/delete?id=${id}`); } diff --git a/apps/web-antd/src/api/mall/product/brand.ts b/apps/web-antd/src/api/mall/product/brand.ts index 7b82eb728..d5483e218 100644 --- a/apps/web-antd/src/api/mall/product/brand.ts +++ b/apps/web-antd/src/api/mall/product/brand.ts @@ -5,18 +5,12 @@ import { requestClient } from '#/api/request'; export namespace MallBrandApi { /** 商品品牌 */ export interface Brand { - /** 品牌编号 */ - id?: number; - /** 品牌名称 */ - name: string; - /** 品牌图片 */ - picUrl: string; - /** 品牌排序 */ - sort?: number; - /** 品牌描述 */ - description?: string; - /** 开启状态 */ - status: number; + id?: number; // 品牌编号 + name: string; // 品牌名称 + picUrl: string; // 品牌图片 + sort?: number; // 品牌排序 + description?: string; // 品牌描述 + status: number; // 开启状态 } } diff --git a/apps/web-antd/src/api/mall/product/category.ts b/apps/web-antd/src/api/mall/product/category.ts index f30d6c6b7..a67662a7a 100644 --- a/apps/web-antd/src/api/mall/product/category.ts +++ b/apps/web-antd/src/api/mall/product/category.ts @@ -3,18 +3,12 @@ import { requestClient } from '#/api/request'; export namespace MallCategoryApi { /** 产品分类 */ export interface Category { - /** 分类编号 */ - id?: number; - /** 父分类编号 */ - parentId?: number; - /** 分类名称 */ - name: string; - /** 移动端分类图 */ - picUrl: string; - /** 分类排序 */ - sort: number; - /** 开启状态 */ - status: number; + id?: number; // 分类编号 + parentId?: number; // 父分类编号 + name: string; // 分类名称 + picUrl: string; // 移动端分类图 + sort: number; // 分类排序 + status: number; // 开启状态 } } diff --git a/apps/web-antd/src/api/mall/product/comment.ts b/apps/web-antd/src/api/mall/product/comment.ts index 8990c2048..83a94e9fe 100644 --- a/apps/web-antd/src/api/mall/product/comment.ts +++ b/apps/web-antd/src/api/mall/product/comment.ts @@ -4,47 +4,47 @@ import { requestClient } from '#/api/request'; export namespace MallCommentApi { export interface Property { - propertyId: number; - propertyName: string; - valueId: number; - valueName: string; + propertyId: number; // 属性 ID + propertyName: string; // 属性名称 + valueId: number; // 属性值 ID + valueName: string; // 属性值名称 } /** 商品评论 */ export interface Comment { - id: number; - userId: number; - userNickname: string; - userAvatar: string; - anonymous: boolean; - orderId: number; - orderItemId: number; - spuId: number; - spuName: string; - skuId: number; - visible: boolean; - scores: number; - descriptionScores: number; - benefitScores: number; - content: string; - picUrls: string[]; - replyStatus: boolean; - replyUserId: number; - replyContent: string; - replyTime: Date; - createTime: Date; - skuProperties: Property[]; + id: number; // 评论编号 + userId: number; // 用户编号 + userNickname: string; // 用户昵称 + userAvatar: string; // 用户头像 + anonymous: boolean; // 是否匿名 + orderId: number; // 订单编号 + orderItemId: number; // 订单项编号 + spuId: number; // 商品SPU编号 + spuName: string; // 商品名称 + skuId: number; // 商品SKU编号 + visible: boolean; // 是否可见 + scores: number; // 总评分 + descriptionScores: number; // 描述评分 + benefitScores: number; // 服务评分 + content: string; // 评论内容 + picUrls: string[]; // 评论图片 + replyStatus: boolean; // 是否回复 + replyUserId: number; // 回复人编号 + replyContent: string; // 回复内容 + replyTime: Date; // 回复时间 + createTime: Date; // 创建时间 + skuProperties: Property[]; // SKU 属性数组 } /** 评论可见性更新 */ export interface CommentVisibleUpdate { - id: number; - visible: boolean; + id: number; // 评论编号 + visible: boolean; // 是否可见 } /** 评论回复 */ export interface CommentReply { - id: number; - replyContent: string; + id: number; // 评论编号 + replyContent: string; // 回复内容 } } diff --git a/apps/web-antd/src/api/mall/product/favorite.ts b/apps/web-antd/src/api/mall/product/favorite.ts index 23f38d6bb..d9d47f3fc 100644 --- a/apps/web-antd/src/api/mall/product/favorite.ts +++ b/apps/web-antd/src/api/mall/product/favorite.ts @@ -5,12 +5,9 @@ import { requestClient } from '#/api/request'; export namespace MallFavoriteApi { /** 商品收藏 */ export interface Favorite { - /** 收藏编号 */ - id?: number; - /** 用户编号 */ - userId?: string; - /** 商品 SPU 编号 */ - spuId?: null | number; + id?: number; // 收藏编号 + userId?: string; // 用户编号 + spuId?: number; // 商品 SPU 编号 } } diff --git a/apps/web-antd/src/api/mall/product/history.ts b/apps/web-antd/src/api/mall/product/history.ts index f8505a738..5a5599db4 100644 --- a/apps/web-antd/src/api/mall/product/history.ts +++ b/apps/web-antd/src/api/mall/product/history.ts @@ -5,21 +5,15 @@ import { requestClient } from '#/api/request'; export namespace MallHistoryApi { /** 商品浏览记录 */ export interface BrowseHistory { - /** 记录编号 */ - id?: number; - /** 用户编号 */ - userId?: number; - /** 商品 SPU 编号 */ - spuId?: number; - /** 浏览时间 */ - createTime?: Date; + id?: number; // 记录编号 + userId?: number; // 用户编号 + spuId?: number; // 商品 SPU 编号 + createTime?: Date; // 浏览时间 } } /** * 获得商品浏览记录分页 - * - * @param params 请求参数 */ export function getBrowseHistoryPage(params: PageParam) { return requestClient.get>( diff --git a/apps/web-antd/src/api/mall/product/property.ts b/apps/web-antd/src/api/mall/product/property.ts index e13a700fa..083ce1dab 100644 --- a/apps/web-antd/src/api/mall/product/property.ts +++ b/apps/web-antd/src/api/mall/product/property.ts @@ -5,29 +5,22 @@ import { requestClient } from '#/api/request'; export namespace MallPropertyApi { /** 商品属性 */ export interface Property { - /** 属性编号 */ - id?: number; - /** 名称 */ - name: string; - /** 备注 */ - remark?: string; + id?: number; // 属性编号 + name: string; // 名称 + remark?: string; // 备注 } /** 属性值 */ export interface PropertyValue { - /** 属性值编号 */ - id?: number; - /** 属性项的编号 */ - propertyId?: number; - /** 名称 */ - name: string; - /** 备注 */ - remark?: string; + id?: number; // 属性值编号 + propertyId?: number; // 属性项的编号 + name: string; // 名称 + remark?: string; // 备注 } /** 属性值查询参数 */ export interface PropertyValueQuery extends PageParam { - propertyId?: number; + propertyId?: number; // 属性编号 } } diff --git a/apps/web-antd/src/api/mall/product/spu.ts b/apps/web-antd/src/api/mall/product/spu.ts index 76ca7b55a..38e8403ed 100644 --- a/apps/web-antd/src/api/mall/product/spu.ts +++ b/apps/web-antd/src/api/mall/product/spu.ts @@ -5,124 +5,73 @@ import { requestClient } from '#/api/request'; export namespace MallSpuApi { /** 商品属性 */ export interface Property { - /** 属性编号 */ - propertyId?: number; - /** 属性名称 */ - propertyName?: string; - /** 属性值编号 */ - valueId?: number; - /** 属性值名称 */ - valueName?: string; + propertyId?: number; // 属性编号 + propertyName?: string; // 属性名称 + valueId?: number; // 属性值编号 + valueName?: string; // 属性值名称 } /** 商品 SKU */ export interface Sku { - /** 商品 SKU 编号 */ - id?: number; - /** 商品 SKU 名称 */ - name?: string; - /** SPU 编号 */ - spuId?: number; - /** 属性数组 */ - properties?: Property[]; - /** 商品价格 */ - price?: number | string; - /** 市场价 */ - marketPrice?: number | string; - /** 成本价 */ - costPrice?: number | string; - /** 商品条码 */ - barCode?: string; - /** 图片地址 */ - picUrl?: string; - /** 库存 */ - stock?: number; - /** 商品重量,单位:kg 千克 */ - weight?: number; - /** 商品体积,单位:m^3 平米 */ - volume?: number; - /** 一级分销的佣金 */ - firstBrokeragePrice?: number | string; - /** 二级分销的佣金 */ - secondBrokeragePrice?: number | string; - /** 商品销量 */ - salesCount?: number; + id?: number; // 商品 SKU 编号 + name?: string; // 商品 SKU 名称 + spuId?: number; // SPU 编号 + properties?: Property[]; // 属性数组 + price?: number | string; // 商品价格 + marketPrice?: number | string; // 市场价 + costPrice?: number | string; // 成本价 + barCode?: string; // 商品条码 + picUrl?: string; // 图片地址 + stock?: number; // 库存 + weight?: number; // 商品重量,单位:kg 千克 + volume?: number; // 商品体积,单位:m^3 平米 + firstBrokeragePrice?: number | string; // 一级分销的佣金 + secondBrokeragePrice?: number | string; // 二级分销的佣金 + salesCount?: number; // 商品销量 } /** 优惠券模板 */ export interface GiveCouponTemplate { - /** 优惠券编号 */ - id?: number; - /** 优惠券名称 */ - name?: string; + id?: number; // 优惠券编号 + name?: string; // 优惠券名称 } /** 商品 SPU */ export interface Spu { - /** 商品编号 */ - id?: number; - /** 商品名称 */ - name?: string; - /** 商品分类 */ - categoryId?: number; - /** 关键字 */ - keyword?: string; - /** 单位 */ - unit?: number | undefined; - /** 商品封面图 */ - picUrl?: string; - /** 商品轮播图 */ - sliderPicUrls?: string[]; - /** 商品简介 */ - introduction?: string; - /** 配送方式 */ - deliveryTypes?: number[]; - /** 运费模版 */ - deliveryTemplateId?: number | undefined; - /** 商品品牌编号 */ - brandId?: number; - /** 商品规格 */ - specType?: boolean; - /** 分销类型 */ - subCommissionType?: boolean; - /** sku数组 */ - skus?: Sku[]; - /** 商品详情 */ - description?: string; - /** 商品排序 */ - sort?: number; - /** 赠送积分 */ - giveIntegral?: number; - /** 虚拟销量 */ - virtualSalesCount?: number; - /** 商品价格 */ - price?: number; - /** 商品拼团价格 */ - combinationPrice?: number; - /** 商品秒杀价格 */ - seckillPrice?: number; - /** 商品销量 */ - salesCount?: number; - /** 市场价 */ - marketPrice?: number; - /** 成本价 */ - costPrice?: number; - /** 商品库存 */ - stock?: number; - /** 商品创建时间 */ - createTime?: Date; - /** 商品状态 */ - status?: number; - /** 浏览量 */ - browseCount?: number; + id?: number; // 商品编号 + name?: string; // 商品名称 + categoryId?: number; // 商品分类 + keyword?: string; // 关键字 + unit?: number; // 单位 + picUrl?: string; // 商品封面图 + sliderPicUrls?: string[]; // 商品轮播图 + introduction?: string; // 商品简介 + deliveryTypes?: number[]; // 配送方式 + deliveryTemplateId?: number; // 运费模版 + brandId?: number; // 商品品牌编号 + specType?: boolean; // 商品规格 + subCommissionType?: boolean; // 分销类型 + skus?: Sku[]; // sku数组 + description?: string; // 商品详情 + sort?: number; // 商品排序 + giveIntegral?: number; // 赠送积分 + virtualSalesCount?: number; // 虚拟销量 + price?: number; // 商品价格 + combinationPrice?: number; // 商品拼团价格 + seckillPrice?: number; // 商品秒杀价格 + salesCount?: number; // 商品销量 + marketPrice?: number; // 市场价 + costPrice?: number; // 成本价 + stock?: number; // 商品库存 + createTime?: Date; // 商品创建时间 + status?: number; // 商品状态 + browseCount?: number; // 浏览量 } /** 商品状态更新 */ export interface StatusUpdate { - /** 商品编号 */ - id: number; - /** 商品状态 */ - status: number; + id: number; // 商品编号 + status: number; // 商品状态 } } diff --git a/apps/web-antd/src/api/mall/promotion/article/index.ts b/apps/web-antd/src/api/mall/promotion/article/index.ts index 9a2ac97d7..cf2f90b7a 100644 --- a/apps/web-antd/src/api/mall/promotion/article/index.ts +++ b/apps/web-antd/src/api/mall/promotion/article/index.ts @@ -5,32 +5,19 @@ import { requestClient } from '#/api/request'; export namespace MallArticleApi { /** 文章管理 */ export interface Article { - /** 文章编号 */ - id: number; - /** 分类编号 */ - categoryId: number; - /** 文章标题 */ - title: string; - /** 作者 */ - author: string; - /** 封面图 */ - picUrl: string; - /** 文章简介 */ - introduction: string; - /** 浏览数量 */ - browseCount: string; - /** 排序 */ - sort: number; - /** 状态 */ - status: number; - /** 商品编号 */ - spuId: number; - /** 是否热门 */ - recommendHot: boolean; - /** 是否轮播图 */ - recommendBanner: boolean; - /** 文章内容 */ - content: string; + id: number; // 文章编号 + categoryId: number; // 分类编号 + title: string; // 文章标题 + author: string; // 作者 + picUrl: string; // 封面图 + introduction: string; // 文章简介 + browseCount: string; // 浏览数量 + sort: number; // 排序 + status: number; // 状态 + spuId: number; // 商品编号 + recommendHot: boolean; // 是否热门 + recommendBanner: boolean; // 是否轮播图 + content: string; // 文章内容 } } diff --git a/apps/web-antd/src/api/mall/promotion/articleCategory/index.ts b/apps/web-antd/src/api/mall/promotion/articleCategory/index.ts index 8bf1cff42..49297af3f 100644 --- a/apps/web-antd/src/api/mall/promotion/articleCategory/index.ts +++ b/apps/web-antd/src/api/mall/promotion/articleCategory/index.ts @@ -5,16 +5,11 @@ import { requestClient } from '#/api/request'; export namespace MallArticleCategoryApi { /** 文章分类 */ export interface ArticleCategory { - /** 分类编号 */ - id: number; - /** 分类名称 */ - name: string; - /** 分类图片 */ - picUrl: string; - /** 状态 */ - status: number; - /** 排序 */ - sort: number; + id: number; // 分类编号 + name: string; // 分类名称 + picUrl: string; // 分类图片 + status: number; // 状态 + sort: number; // 排序 } } diff --git a/apps/web-antd/src/api/mall/promotion/bargain/bargainActivity.ts b/apps/web-antd/src/api/mall/promotion/bargain/bargainActivity.ts index c2a3dfdf0..e8501c5cb 100644 --- a/apps/web-antd/src/api/mall/promotion/bargain/bargainActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/bargain/bargainActivity.ts @@ -7,62 +7,40 @@ import { requestClient } from '#/api/request'; export namespace MallBargainActivityApi { /** 砍价活动 */ export interface BargainActivity { - /** 活动编号 */ - id?: number; - /** 活动名称 */ - name?: string; - /** 开始时间 */ - startTime?: Date; - /** 结束时间 */ - endTime?: Date; - /** 状态 */ - status?: number; - /** 达到该人数,才能砍到低价 */ - helpMaxCount?: number; - /** 最大帮砍次数 */ - bargainCount?: number; - /** 最大购买次数 */ - totalLimitCount?: number; - /** 商品 SPU 编号 */ - spuId: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 砍价起始价格,单位分 */ - bargainFirstPrice: number; - /** 砍价底价 */ - bargainMinPrice: number; - /** 活动库存 */ - stock: number; - /** 用户每次砍价的最小金额,单位:分 */ - randomMinPrice?: number; - /** 用户每次砍价的最大金额,单位:分 */ - randomMaxPrice?: number; + id?: number; // 活动编号 + name?: string; // 活动名称 + startTime?: Date; // 开始时间 + endTime?: Date; // 结束时间 + status?: number; // 状态 + helpMaxCount?: number; // 达到该人数,才能砍到低价 + bargainCount?: number; // 最大帮砍次数 + totalLimitCount?: number; // 最大购买次数 + spuId: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + bargainFirstPrice: number; // 砍价起始价格,单位分 + bargainMinPrice: number; // 砍价底价 + stock: number; // 活动库存 + randomMinPrice?: number; // 用户每次砍价的最小金额,单位:分 + randomMaxPrice?: number; // 用户每次砍价的最大金额,单位:分 } /** 砍价活动所需属性。选择的商品和属性的时候使用方便使用活动的通用封装 */ export interface BargainProduct { - /** 商品 SPU 编号 */ - spuId: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 砍价起始价格,单位分 */ - bargainFirstPrice: number; - /** 砍价底价 */ - bargainMinPrice: number; - /** 活动库存 */ - stock: number; + spuId: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + bargainFirstPrice: number; // 砍价起始价格,单位分 + bargainMinPrice: number; // 砍价底价 + stock: number; // 活动库存 } /** 扩展 SKU 配置 */ export type SkuExtension = { - /** 砍价活动配置 */ - productConfig: BargainProduct; + productConfig: BargainProduct; // 砍价活动配置 } & MallSpuApi.Sku; /** 扩展 SPU 配置 */ export interface SpuExtension extends MallSpuApi.Spu { - /** SKU 列表 */ - skus: SkuExtension[]; + skus: SkuExtension[]; // SKU 列表 } } diff --git a/apps/web-antd/src/api/mall/promotion/bargain/bargainHelp.ts b/apps/web-antd/src/api/mall/promotion/bargain/bargainHelp.ts index c8916b179..488d34f42 100644 --- a/apps/web-antd/src/api/mall/promotion/bargain/bargainHelp.ts +++ b/apps/web-antd/src/api/mall/promotion/bargain/bargainHelp.ts @@ -5,16 +5,11 @@ import { requestClient } from '#/api/request'; export namespace MallBargainHelpApi { /** 砍价记录 */ export interface BargainHelp { - /** 记录编号 */ - id: number; - /** 砍价记录编号 */ - record: number; - /** 用户编号 */ - userId: number; - /** 砍掉金额 */ - reducePrice: number; - /** 结束时间 */ - endTime: Date; + id: number; // 记录编号 + record: number; // 砍价记录编号 + userId: number; // 用户编号 + reducePrice: number; // 砍掉金额 + endTime: Date; // 结束时间 } } diff --git a/apps/web-antd/src/api/mall/promotion/bargain/bargainRecord.ts b/apps/web-antd/src/api/mall/promotion/bargain/bargainRecord.ts index 880b9def3..345606b8e 100644 --- a/apps/web-antd/src/api/mall/promotion/bargain/bargainRecord.ts +++ b/apps/web-antd/src/api/mall/promotion/bargain/bargainRecord.ts @@ -5,26 +5,16 @@ import { requestClient } from '#/api/request'; export namespace MallBargainRecordApi { /** 砍价记录 */ export interface BargainRecord { - /** 记录编号 */ - id: number; - /** 活动编号 */ - activityId: number; - /** 用户编号 */ - userId: number; - /** 商品 SPU 编号 */ - spuId: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 砍价起始价格 */ - bargainFirstPrice: number; - /** 砍价价格 */ - bargainPrice: number; - /** 状态 */ - status: number; - /** 订单编号 */ - orderId: number; - /** 结束时间 */ - endTime: Date; + id: number; // 记录编号 + activityId: number; // 活动编号 + userId: number; // 用户编号 + spuId: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + bargainFirstPrice: number; // 砍价起始价格 + bargainPrice: number; // 砍价价格 + status: number; // 状态 + orderId: number; // 订单编号 + endTime: Date; // 结束时间 } } diff --git a/apps/web-antd/src/api/mall/promotion/combination/combinationActivity.ts b/apps/web-antd/src/api/mall/promotion/combination/combinationActivity.ts index c0d53d6b2..b6da6218d 100644 --- a/apps/web-antd/src/api/mall/promotion/combination/combinationActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/combination/combinationActivity.ts @@ -7,59 +7,38 @@ import { requestClient } from '#/api/request'; export namespace MallCombinationActivityApi { /** 拼团活动所需属性 */ export interface CombinationProduct { - /** 商品 SPU 编号 */ - spuId: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 拼团价格 */ - combinationPrice: number; + spuId: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + combinationPrice: number; // 拼团价格 } /** 拼团活动 */ export interface CombinationActivity { - /** 活动编号 */ - id?: number; - /** 活动名称 */ - name?: string; - /** 商品 SPU 编号 */ - spuId?: number; - /** 总限购数量 */ - totalLimitCount?: number; - /** 单次限购数量 */ - singleLimitCount?: number; - /** 开始时间 */ - startTime?: Date; - /** 结束时间 */ - endTime?: Date; - /** 用户数量 */ - userSize?: number; - /** 总数量 */ - totalCount?: number; - /** 成功数量 */ - successCount?: number; - /** 订单用户数量 */ - orderUserCount?: number; - /** 虚拟成团 */ - virtualGroup?: number; - /** 状态 */ - status?: number; - /** 限制时长 */ - limitDuration?: number; - /** 拼团价格 */ - combinationPrice?: number; - /** 商品列表 */ - products: CombinationProduct[]; + id?: number; // 活动编号 + name?: string; // 活动名称 + spuId?: number; // 商品 SPU 编号 + totalLimitCount?: number; // 总限购数量 + singleLimitCount?: number; // 单次限购数量 + startTime?: Date; // 开始时间 + endTime?: Date; // 结束时间 + userSize?: number; // 用户数量 + totalCount?: number; // 总数量 + successCount?: number; // 成功数量 + orderUserCount?: number; // 订单用户数量 + virtualGroup?: number; // 虚拟成团 + status?: number; // 状态 + limitDuration?: number; // 限制时长 + combinationPrice?: number; // 拼团价格 + products: CombinationProduct[]; // 商品列表 } /** 扩展 SKU 配置 */ export type SkuExtension = { - /** 拼团活动配置 */ - productConfig: CombinationProduct; + productConfig: CombinationProduct; // 拼团活动配置 } & MallSpuApi.Sku; /** 扩展 SPU 配置 */ export interface SpuExtension extends MallSpuApi.Spu { - /** SKU 列表 */ - skus: SkuExtension[]; + skus: SkuExtension[]; // SKU 列表 } } diff --git a/apps/web-antd/src/api/mall/promotion/combination/combinationRecord.ts b/apps/web-antd/src/api/mall/promotion/combination/combinationRecord.ts index 3d2943feb..3faa2e7bb 100644 --- a/apps/web-antd/src/api/mall/promotion/combination/combinationRecord.ts +++ b/apps/web-antd/src/api/mall/promotion/combination/combinationRecord.ts @@ -5,44 +5,27 @@ import { requestClient } from '#/api/request'; export namespace MallCombinationRecordApi { /** 拼团记录 */ export interface CombinationRecord { - /** 拼团记录编号 */ - id: number; - /** 拼团活动编号 */ - activityId: number; - /** 用户昵称 */ - nickname: string; - /** 用户头像 */ - avatar: string; - /** 团长编号 */ - headId: number; - /** 过期时间 */ - expireTime: string; - /** 可参团人数 */ - userSize: number; - /** 已参团人数 */ - userCount: number; - /** 拼团状态 */ - status: number; - /** 商品名字 */ - spuName: string; - /** 商品图片 */ - picUrl: string; - /** 是否虚拟成团 */ - virtualGroup: boolean; - /** 开始时间 (订单付款后开始的时间) */ - startTime: string; - /** 结束时间(成团时间/失败时间) */ - endTime: string; + id: number; // 拼团记录编号 + activityId: number; // 拼团活动编号 + nickname: string; // 用户昵称 + avatar: string; // 用户头像 + headId: number; // 团长编号 + expireTime: string; // 过期时间 + userSize: number; // 可参团人数 + userCount: number; // 已参团人数 + status: number; // 拼团状态 + spuName: string; // 商品名字 + picUrl: string; // 商品图片 + virtualGroup: boolean; // 是否虚拟成团 + startTime: string; // 开始时间 (订单付款后开始的时间) + endTime: string; // 结束时间(成团时间/失败时间) } /** 拼团记录概要信息 */ export interface RecordSummary { - /** 待成团数量 */ - pendingCount: number; - /** 已成团数量 */ - successCount: number; - /** 已失败数量 */ - failCount: number; + pendingCount: number; // 待成团数量 + successCount: number; // 已成团数量 + failCount: number; // 已失败数量 } } diff --git a/apps/web-antd/src/api/mall/promotion/coupon/coupon.ts b/apps/web-antd/src/api/mall/promotion/coupon/coupon.ts index 6cba23c16..99792e4ed 100644 --- a/apps/web-antd/src/api/mall/promotion/coupon/coupon.ts +++ b/apps/web-antd/src/api/mall/promotion/coupon/coupon.ts @@ -5,46 +5,28 @@ import { requestClient } from '#/api/request'; export namespace MallCouponApi { /** 优惠券 */ export interface Coupon { - /** 优惠券编号 */ - id: number; - /** 优惠券名称 */ - name: string; - /** 优惠券状态 */ - status: number; - /** 优惠券类型 */ - type: number; - /** 优惠券金额 */ - price: number; - /** 使用门槛 */ - usePrice: number; - /** 商品范围 */ - productScope: number; - /** 商品编号数组 */ - productSpuIds: number[]; - /** 有效期类型 */ - validityType: number; - /** 固定日期-生效开始时间 */ - validStartTime: Date; - /** 固定日期-生效结束时间 */ - validEndTime: Date; - /** 领取日期-开始天数 */ - fixedStartTerm: number; - /** 领取日期-结束天数 */ - fixedEndTerm: number; - /** 每人限领个数 */ - takeLimitCount: number; - /** 是否设置满多少金额可用 */ - usePriceEnabled: boolean; - /** 商品分类编号数组 */ - productCategoryIds: number[]; + id: number; // 优惠券编号 + name: string; // 优惠券名称 + status: number; // 优惠券状态 + type: number; // 优惠券类型 + price: number; // 优惠券金额 + usePrice: number; // 使用门槛 + productScope: number; // 商品范围 + productSpuIds: number[]; // 商品编号数组 + validityType: number; // 有效期类型 + validStartTime: Date; // 固定日期-生效开始时间 + validEndTime: Date; // 固定日期-生效结束时间 + fixedStartTerm: number; // 领取日期-开始天数 + fixedEndTerm: number; // 领取日期-结束天数 + takeLimitCount: number; // 每人限领个数 + usePriceEnabled: boolean; // 是否设置满多少金额可用 + productCategoryIds: number[]; // 商品分类编号数组 } /** 发送优惠券 */ - export interface SendCoupon { - /** 优惠券编号 */ - couponId: number; - /** 用户编号数组 */ - userIds: number[]; + export interface CouponSendReqVO { + templateId: number; // 优惠券编号 + userIds: number[]; // 用户编号数组 } } @@ -62,6 +44,6 @@ export function getCouponPage(params: PageParam) { } /** 发送优惠券 */ -export function sendCoupon(data: MallCouponApi.SendCoupon) { +export function sendCoupon(data: MallCouponApi.CouponSendReqVO) { return requestClient.post('/promotion/coupon/send', data); } diff --git a/apps/web-antd/src/api/mall/promotion/coupon/couponTemplate.ts b/apps/web-antd/src/api/mall/promotion/coupon/couponTemplate.ts index f09455a1c..688e1db5b 100644 --- a/apps/web-antd/src/api/mall/promotion/coupon/couponTemplate.ts +++ b/apps/web-antd/src/api/mall/promotion/coupon/couponTemplate.ts @@ -5,54 +5,32 @@ import { requestClient } from '#/api/request'; export namespace MallCouponTemplateApi { /** 优惠券模板 */ export interface CouponTemplate { - /** 模板编号 */ - id: number; - /** 模板名称 */ - name: string; - /** 状态 */ - status: number; - /** 发放数量 */ - totalCount: number; - /** 每人限领个数 */ - takeLimitCount: number; - /** 领取方式 */ - takeType: number; - /** 使用门槛 */ - usePrice: number; - /** 商品范围 */ - productScope: number; - /** 商品范围值 */ - productScopeValues: number[]; - /** 有效期类型 */ - validityType: number; - /** 固定日期-生效开始时间 */ - validStartTime: Date; - /** 固定日期-生效结束时间 */ - validEndTime: Date; - /** 领取日期-开始天数 */ - fixedStartTerm: number; - /** 领取日期-结束天数 */ - fixedEndTerm: number; - /** 优惠类型 */ - discountType: number; - /** 折扣百分比 */ - discountPercent: number; - /** 优惠金额 */ - discountPrice: number; - /** 折扣上限 */ - discountLimitPrice: number; - /** 已领取数量 */ - takeCount: number; - /** 已使用数量 */ - useCount: number; + id: number; // 模板编号 + name: string; // 模板名称 + status: number; // 状态 + totalCount: number; // 发放数量 + takeLimitCount: number; // 每人限领个数 + takeType: number; // 领取方式 + usePrice: number; // 使用门槛 + productScope: number; // 商品范围 + productScopeValues: number[]; // 商品范围值 + validityType: number; // 有效期类型 + validStartTime: Date; // 固定日期-生效开始时间 + validEndTime: Date; // 固定日期-生效结束时间 + fixedStartTerm: number; // 领取日期-开始天数 + fixedEndTerm: number; // 领取日期-结束天数 + discountType: number; // 优惠类型 + discountPercent: number; // 折扣百分比 + discountPrice: number; // 优惠金额 + discountLimitPrice: number; // 折扣上限 + takeCount: number; // 已领取数量 + useCount: number; // 已使用数量 } /** 优惠券模板状态更新 */ export interface StatusUpdate { - /** 模板编号 */ - id: number; - /** 状态 */ - status: 0 | 1; + id: number; // 模板编号 + status: 0 | 1; // 状态 } } diff --git a/apps/web-antd/src/api/mall/promotion/discount/discountActivity.ts b/apps/web-antd/src/api/mall/promotion/discount/discountActivity.ts index f1e34ef74..9e469bcbb 100644 --- a/apps/web-antd/src/api/mall/promotion/discount/discountActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/discount/discountActivity.ts @@ -7,48 +7,33 @@ import { requestClient } from '#/api/request'; export namespace MallDiscountActivityApi { /** 限时折扣相关属性 */ export interface DiscountProduct { - /** 商品 SPU 编号 */ - spuId: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 折扣类型 */ - discountType: number; - /** 折扣百分比 */ - discountPercent: number; - /** 折扣价格 */ - discountPrice: number; + spuId: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + discountType: number; // 折扣类型 + discountPercent: number; // 折扣百分比 + discountPrice: number; // 折扣价格 } /** 限时折扣活动 */ export interface DiscountActivity { - /** 活动编号 */ - id?: number; - /** 商品 SPU 编号 */ - spuId?: number; - /** 活动名称 */ - name?: string; - /** 状态 */ - status?: number; - /** 备注 */ - remark?: string; - /** 开始时间 */ - startTime?: Date; - /** 结束时间 */ - endTime?: Date; - /** 商品列表 */ - products?: DiscountProduct[]; + id?: number; // 活动编号 + spuId?: number; // 商品 SPU 编号 + name?: string; // 活动名称 + status?: number; // 状态 + remark?: string; // 备注 + startTime?: Date; // 开始时间 + endTime?: Date; // 结束时间 + products?: DiscountProduct[]; // 商品列表 } /** 扩展 SKU 配置 */ export type SkuExtension = { - /** 限时折扣配置 */ - productConfig: DiscountProduct; + productConfig: DiscountProduct; // 限时折扣配置 } & MallSpuApi.Sku; /** 扩展 SPU 配置 */ export interface SpuExtension extends MallSpuApi.Spu { - /** SKU 列表 */ - skus: SkuExtension[]; + skus: SkuExtension[]; // SKU 列表 } } diff --git a/apps/web-antd/src/api/mall/promotion/diy/page.ts b/apps/web-antd/src/api/mall/promotion/diy/page.ts index daa5e4b06..d332cc09e 100644 --- a/apps/web-antd/src/api/mall/promotion/diy/page.ts +++ b/apps/web-antd/src/api/mall/promotion/diy/page.ts @@ -5,18 +5,12 @@ import { requestClient } from '#/api/request'; export namespace MallDiyPageApi { /** 装修页面 */ export interface DiyPage { - /** 页面编号 */ - id?: number; - /** 模板编号 */ - templateId?: number; - /** 页面名称 */ - name: string; - /** 备注 */ - remark: string; - /** 预览图片地址数组 */ - previewPicUrls: string[]; - /** 页面属性 */ - property: string; + id?: number; // 页面编号 + templateId?: number; // 模板编号 + name: string; // 页面名称 + remark: string; // 备注 + previewPicUrls: string[]; // 预览图片地址数组 + property: string; // 页面属性 } } diff --git a/apps/web-antd/src/api/mall/promotion/diy/template.ts b/apps/web-antd/src/api/mall/promotion/diy/template.ts index f7d82d352..9b7596e85 100644 --- a/apps/web-antd/src/api/mall/promotion/diy/template.ts +++ b/apps/web-antd/src/api/mall/promotion/diy/template.ts @@ -7,26 +7,18 @@ import { requestClient } from '#/api/request'; export namespace MallDiyTemplateApi { /** 装修模板 */ export interface DiyTemplate { - /** 模板编号 */ - id?: number; - /** 模板名称 */ - name: string; - /** 是否使用 */ - used: boolean; - /** 使用时间 */ - usedTime?: Date; - /** 备注 */ - remark: string; - /** 预览图片地址数组 */ - previewPicUrls: string[]; - /** 模板属性 */ - property: string; + id?: number; // 模板编号 + name: string; // 模板名称 + used: boolean; // 是否使用 + usedTime?: Date; // 使用时间 + remark: string; // 备注 + previewPicUrls: string[]; // 预览图片地址数组 + property: string; // 模板属性 } /** 装修模板属性(包含页面列表) */ export interface DiyTemplateProperty extends DiyTemplate { - /** 页面列表 */ - pages: MallDiyPageApi.DiyPage[]; + pages: MallDiyPageApi.DiyPage[]; // 页面列表 } } diff --git a/apps/web-antd/src/api/mall/promotion/kefu/conversation/index.ts b/apps/web-antd/src/api/mall/promotion/kefu/conversation/index.ts index c2cdaf255..6510dc0ec 100644 --- a/apps/web-antd/src/api/mall/promotion/kefu/conversation/index.ts +++ b/apps/web-antd/src/api/mall/promotion/kefu/conversation/index.ts @@ -5,38 +5,24 @@ import { requestClient } from '#/api/request'; export namespace MallKefuConversationApi { /** 客服会话 */ export interface Conversation { - /** 编号 */ - id: number; - /** 会话所属用户 */ - userId: number; - /** 会话所属用户头像 */ - userAvatar: string; - /** 会话所属用户昵称 */ - userNickname: string; - /** 最后聊天时间 */ - lastMessageTime: Date; - /** 最后聊天内容 */ - lastMessageContent: string; - /** 最后发送的消息类型 */ - lastMessageContentType: number; - /** 管理端置顶 */ - adminPinned: boolean; - /** 用户是否可见 */ - userDeleted: boolean; - /** 管理员是否可见 */ - adminDeleted: boolean; - /** 管理员未读消息数 */ - adminUnreadMessageCount: number; - /** 创建时间 */ - createTime?: string; + id: number; // 编号 + userId: number; // 会话所属用户 + userAvatar: string; // 会话所属用户头像 + userNickname: string; // 会话所属用户昵称 + lastMessageTime: Date; // 最后聊天时间 + lastMessageContent: string; // 最后聊天内容 + lastMessageContentType: number; // 最后发送的消息类型 + adminPinned: boolean; // 管理端置顶 + userDeleted: boolean; // 用户是否可见 + adminDeleted: boolean; // 管理员是否可见 + adminUnreadMessageCount: number; // 管理员未读消息数 + createTime?: string; // 创建时间 } /** 会话置顶请求 */ export interface ConversationPinnedUpdate { - /** 会话编号 */ - id: number; - /** 是否置顶 */ - pinned: boolean; + id: number; // 会话编号 + pinned: boolean; // 是否置顶 } } diff --git a/apps/web-antd/src/api/mall/promotion/kefu/message/index.ts b/apps/web-antd/src/api/mall/promotion/kefu/message/index.ts index 4bf08306e..3fb363267 100644 --- a/apps/web-antd/src/api/mall/promotion/kefu/message/index.ts +++ b/apps/web-antd/src/api/mall/promotion/kefu/message/index.ts @@ -5,44 +5,29 @@ import { requestClient } from '#/api/request'; export namespace MallKefuMessageApi { /** 客服消息 */ export interface Message { - /** 编号 */ - id: number; - /** 会话编号 */ - conversationId: number; - /** 发送人编号 */ - senderId: number; - /** 发送人头像 */ - senderAvatar: string; - /** 发送人类型 */ - senderType: number; - /** 接收人编号 */ - receiverId: number; - /** 接收人类型 */ - receiverType: number; - /** 消息类型 */ - contentType: number; - /** 消息内容 */ - content: string; - /** 是否已读 */ - readStatus: boolean; - /** 创建时间 */ - createTime: Date; + id: number; // 编号 + conversationId: number; // 会话编号 + senderId: number; // 发送人编号 + senderAvatar: string; // 发送人头像 + senderType: number; // 发送人类型 + receiverId: number; // 接收人编号 + receiverType: number; // 接收人类型 + contentType: number; // 消息类型 + content: string; // 消息内容 + readStatus: boolean; // 是否已读 + createTime: Date; // 创建时间 } /** 发送消息请求 */ export interface MessageSend { - /** 会话编号 */ - conversationId: number; - /** 消息类型 */ - contentType: number; - /** 消息内容 */ - content: string; + conversationId: number; // 会话编号 + contentType: number; // 消息类型 + content: string; // 消息内容 } /** 消息列表查询参数 */ export interface MessageQuery extends PageParam { - /** 会话编号 */ - conversationId: number; + conversationId: number; // 会话编号 } } diff --git a/apps/web-antd/src/api/mall/promotion/point/index.ts b/apps/web-antd/src/api/mall/promotion/point/index.ts index dcde0f21d..72441875a 100644 --- a/apps/web-antd/src/api/mall/promotion/point/index.ts +++ b/apps/web-antd/src/api/mall/promotion/point/index.ts @@ -7,80 +7,51 @@ import { requestClient } from '#/api/request'; export namespace MallPointActivityApi { /** 积分商城商品 */ export interface PointProduct { - /** 积分商城商品编号 */ - id?: number; - /** 积分商城活动 id */ - activityId?: number; - /** 商品 SPU 编号 */ - spuId?: number; - /** 商品 SKU 编号 */ - skuId: number; - /** 可兑换数量 */ - count: number; - /** 兑换积分 */ - point: number; - /** 兑换金额,单位:分 */ - price: number; - /** 积分商城商品库存 */ - stock: number; - /** 积分商城商品状态 */ - activityStatus?: number; + id?: number; // 积分商城商品编号 + activityId?: number; // 积分商城活动 id + spuId?: number; // 商品 SPU 编号 + skuId: number; // 商品 SKU 编号 + count: number; // 可兑换数量 + point: number; // 兑换积分 + price: number; // 兑换金额,单位:分 + stock: number; // 积分商城商品库存 + activityStatus?: number; // 积分商城商品状态 } /** 积分商城活动 */ export interface PointActivity { - /** 积分商城活动编号 */ - id: number; - /** 积分商城活动商品 */ - spuId: number; - /** 活动状态 */ - status: number; - /** 积分商城活动库存 */ - stock: number; - /** 积分商城活动总库存 */ - totalStock: number; - /** 备注 */ - remark?: string; - /** 排序 */ - sort: number; - /** 创建时间 */ - createTime: string; - /** 积分商城商品 */ - products: PointProduct[]; - /** 商品名称 */ - spuName: string; - /** 商品主图 */ - picUrl: string; - /** 商品市场价,单位:分 */ - marketPrice: number; - /** 兑换积分 */ - point: number; - /** 兑换金额,单位:分 */ - price: number; + id: number; // 积分商城活动编号 + spuId: number; // 积分商城活动商品 + status: number; // 活动状态 + stock: number; // 积分商城活动库存 + totalStock: number; // 积分商城活动总库存 + remark?: string; // 备注 + sort: number; // 排序 + createTime: string; // 创建时间 + products: PointProduct[]; // 积分商城商品 + spuName: string; // 商品名称 + picUrl: string; // 商品主图 + marketPrice: number; // 商品市场价,单位:分 + point: number; // 兑换积分 + price: number; // 兑换金额,单位:分 } /** 扩展 SKU 配置 */ export type SkuExtension = { - /** 积分商城商品配置 */ - productConfig: PointProduct; + productConfig: PointProduct; // 积分商城商品配置 } & MallSpuApi.Sku; /** 扩展 SPU 配置 */ export interface SpuExtension extends MallSpuApi.Spu { - /** SKU 列表 */ - skus: SkuExtension[]; + skus: SkuExtension[]; // SKU 列表 } /** 扩展 SPU 配置(带积分信息) */ export interface SpuExtensionWithPoint extends MallSpuApi.Spu { - /** 积分商城活动库存 */ - pointStock: number; - /** 积分商城活动总库存 */ - pointTotalStock: number; - /** 兑换积分 */ - point: number; - /** 兑换金额,单位:分 */ - pointPrice: number; + pointStock: number; // 积分商城活动库存 + pointTotalStock: number; // 积分商城活动总库存 + point: number; // 兑换积分 + pointPrice: number; // 兑换金额,单位:分 } } diff --git a/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts b/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts index e972daf2e..2faf443b8 100644 --- a/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts @@ -5,46 +5,29 @@ import { requestClient } from '#/api/request'; export namespace MallRewardActivityApi { /** 优惠规则 */ export interface RewardRule { - /** 满足金额 */ - limit?: number; - /** 优惠金额 */ - discountPrice?: number; - /** 是否包邮 */ - freeDelivery?: boolean; - /** 赠送积分 */ - point: number; - /** 赠送优惠券数量 */ + limit?: number; // 满足金额 + discountPrice?: number; // 优惠金额 + freeDelivery?: boolean; // 是否包邮 + point: number; // 赠送积分 giveCouponTemplateCounts?: { [key: number]: number; - }; + }; // 赠送优惠券数量 } /** 满减送活动 */ export interface RewardActivity { - /** 活动编号 */ - id?: number; - /** 活动名称 */ - name?: string; - /** 开始时间 */ - startTime?: Date; - /** 结束时间 */ - endTime?: Date; - /** 开始和结束时间(仅前端使用) */ - startAndEndTime?: Date[]; - /** 备注 */ - remark?: string; - /** 条件类型 */ - conditionType?: number; - /** 商品范围 */ - productScope?: number; - /** 优惠规则列表 */ - rules: RewardRule[]; - /** 商品范围值(仅表单使用):值为品类编号列表、商品编号列表 */ - productScopeValues?: number[]; - /** 商品分类编号列表(仅表单使用) */ - productCategoryIds?: number[]; - /** 商品 SPU 编号列表(仅表单使用) */ - productSpuIds?: number[]; + id?: number; // 活动编号 + name?: string; // 活动名称 + startTime?: Date; // 开始时间 + endTime?: Date; // 结束时间 + startAndEndTime?: Date[]; // 开始和结束时间(仅前端使用) + remark?: string; // 备注 + conditionType?: number; // 条件类型 + productScope?: number; // 商品范围 + rules: RewardRule[]; // 优惠规则列表 + productScopeValues?: number[]; // 商品范围值(仅表单使用):值为品类编号列表、商品编号列表 + productCategoryIds?: number[]; // 商品分类编号列表(仅表单使用) + productSpuIds?: number[]; // 商品 SPU 编号列表(仅表单使用) } } diff --git a/apps/web-antd/src/api/mall/promotion/seckill/seckillActivity.ts b/apps/web-antd/src/api/mall/promotion/seckill/seckillActivity.ts index 5159c90e1..3abb1fad2 100644 --- a/apps/web-antd/src/api/mall/promotion/seckill/seckillActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/seckill/seckillActivity.ts @@ -7,66 +7,42 @@ import { requestClient } from '#/api/request'; export namespace MallSeckillActivityApi { /** 秒杀商品 */ export interface SeckillProduct { - /** 商品 SKU 编号 */ - skuId: number; - /** 商品 SPU 编号 */ - spuId: number; - /** 秒杀价格 */ - seckillPrice: number; - /** 秒杀库存 */ - stock: number; + skuId: number; // 商品 SKU 编号 + spuId: number; // 商品 SPU 编号 + seckillPrice: number; // 秒杀价格 + stock: number; // 秒杀库存 } /** 秒杀活动 */ export interface SeckillActivity { - /** 活动编号 */ - id?: number; - /** 商品 SPU 编号 */ - spuId?: number; - /** 活动名称 */ - name?: string; - /** 活动状态 */ - status?: number; - /** 备注 */ - remark?: string; - /** 开始时间 */ - startTime?: Date; - /** 结束时间 */ - endTime?: Date; - /** 排序 */ - sort?: number; - /** 配置编号 */ - configIds?: string; - /** 订单数量 */ - orderCount?: number; - /** 用户数量 */ - userCount?: number; - /** 总金额 */ - totalPrice?: number; - /** 总限购数量 */ - totalLimitCount?: number; - /** 单次限购数量 */ - singleLimitCount?: number; - /** 秒杀库存 */ - stock?: number; - /** 秒杀总库存 */ - totalStock?: number; - /** 秒杀价格 */ - seckillPrice?: number; - /** 秒杀商品列表 */ - products?: SeckillProduct[]; + id?: number; // 活动编号 + spuId?: number; // 商品 SPU 编号 + name?: string; // 活动名称 + status?: number; // 活动状态 + remark?: string; // 备注 + startTime?: Date; // 开始时间 + endTime?: Date; // 结束时间 + sort?: number; // 排序 + configIds?: string; // 配置编号 + orderCount?: number; // 订单数量 + userCount?: number; // 用户数量 + totalPrice?: number; // 总金额 + totalLimitCount?: number; // 总限购数量 + singleLimitCount?: number; // 单次限购数量 + stock?: number; // 秒杀库存 + totalStock?: number; // 秒杀总库存 + seckillPrice?: number; // 秒杀价格 + products?: SeckillProduct[]; // 秒杀商品列表 } /** 扩展 SKU 配置 */ export type SkuExtension = { - /** 秒杀商品配置 */ - productConfig: SeckillProduct; + productConfig: SeckillProduct; // 秒杀商品配置 } & MallSpuApi.Sku; /** 扩展 SPU 配置 */ export interface SpuExtension extends MallSpuApi.Spu { - /** SKU 列表 */ - skus: SkuExtension[]; + skus: SkuExtension[]; // SKU 列表 } } diff --git a/apps/web-antd/src/api/mall/promotion/seckill/seckillConfig.ts b/apps/web-antd/src/api/mall/promotion/seckill/seckillConfig.ts index 39be3012e..da76dbdfd 100644 --- a/apps/web-antd/src/api/mall/promotion/seckill/seckillConfig.ts +++ b/apps/web-antd/src/api/mall/promotion/seckill/seckillConfig.ts @@ -5,26 +5,18 @@ import { requestClient } from '#/api/request'; export namespace MallSeckillConfigApi { /** 秒杀时段 */ export interface SeckillConfig { - /** 编号 */ - id: number; - /** 秒杀时段名称 */ - name: string; - /** 开始时间点 */ - startTime: string; - /** 结束时间点 */ - endTime: string; - /** 秒杀轮播图 */ - sliderPicUrls: string[]; - /** 活动状态 */ - status: number; + id: number; // 编号 + name: string; // 秒杀时段名称 + startTime: string; // 开始时间点 + endTime: string; // 结束时间点 + sliderPicUrls: string[]; // 秒杀轮播图 + status: number; // 活动状态 } /** 时段配置状态更新 */ export interface StatusUpdate { - /** 编号 */ - id: number; - /** 状态 */ - status: number; + id: number; // 编号 + status: number; // 状态 } } diff --git a/apps/web-antd/src/api/mall/statistics/member.ts b/apps/web-antd/src/api/mall/statistics/member.ts index fb7a6b01a..ea90af372 100644 --- a/apps/web-antd/src/api/mall/statistics/member.ts +++ b/apps/web-antd/src/api/mall/statistics/member.ts @@ -7,67 +7,65 @@ import { requestClient } from '#/api/request'; export namespace MallMemberStatisticsApi { /** 会员分析 Request */ export interface AnalyseReq { - times: Date[]; + times: Date[]; // 时间范围 } /** 会员分析对照数据 Response */ export interface AnalyseComparison { - registerUserCount: number; - visitUserCount: number; - rechargeUserCount: number; + registerUserCount: number; // 注册用户数 + visitUserCount: number; // 访问用户数 + rechargeUserCount: number; // 充值用户数 } /** 会员分析 Response */ export interface Analyse { - visitUserCount: number; - orderUserCount: number; - payUserCount: number; - atv: number; - comparison: MallDataComparisonResp; + visitUserCount: number; // 访问用户数 + orderUserCount: number; // 下单用户数 + payUserCount: number; // 支付用户数 + atv: number; // 平均客单价 + comparison: MallDataComparisonResp; // 对照数据 } /** 会员地区统计 Response */ export interface AreaStatistics { - areaId: number; - areaName: string; - userCount: number; - orderCreateUserCount: number; - orderPayUserCount: number; - orderPayPrice: number; + areaId: number; // 地区ID + areaName: string; // 地区名称 + userCount: number; // 用户数 + orderCreateUserCount: number; // 下单用户数 + orderPayUserCount: number; // 支付用户数 + orderPayPrice: number; // 支付金额 } /** 会员性别统计 Response */ export interface SexStatistics { - sex: number; - userCount: number; + sex: number; // 性别 + userCount: number; // 用户数 } /** 会员统计 Response */ export interface Summary { - userCount: number; - rechargeUserCount: number; - rechargePrice: number; - expensePrice: number; + userCount: number; // 用户数 + rechargeUserCount: number; // 充值用户数 + rechargePrice: number; // 充值金额 + expensePrice: number; // 消费金额 } /** 会员终端统计 Response */ export interface TerminalStatistics { - terminal: number; - userCount: number; + terminal: number; // 终端 + userCount: number; // 用户数 } /** 会员数量统计 Response */ export interface Count { - /** 用户访问量 */ - visitUserCount: string; - /** 注册用户数量 */ - registerUserCount: number; + visitUserCount: string; // 用户访问量 + registerUserCount: number; // 注册用户数量 } /** 会员注册数量 Response */ export interface RegisterCount { - date: string; - count: number; + date: string; // 日期 + count: number; // 数量 } } diff --git a/apps/web-antd/src/api/mall/trade/brokerage/record/index.ts b/apps/web-antd/src/api/mall/trade/brokerage/record/index.ts index 86ce41baf..1b6e8b3a4 100644 --- a/apps/web-antd/src/api/mall/trade/brokerage/record/index.ts +++ b/apps/web-antd/src/api/mall/trade/brokerage/record/index.ts @@ -5,28 +5,17 @@ import { requestClient } from '#/api/request'; export namespace MallBrokerageRecordApi { /** 佣金记录 */ export interface BrokerageRecord { - /** 编号 */ - id: number; - /** 用户编号 */ - userId: number; - /** 用户昵称 */ - userNickname: string; - /** 用户头像 */ - userAvatar: string; - /** 佣金金额,单位:分 */ - price: number; - /** 佣金类型 */ - type: number; - /** 关联订单编号 */ - orderId: number; - /** 关联订单号 */ - orderNo: string; - /** 创建时间 */ - createTime: Date; - /** 状态 */ - status: number; - /** 结算时间 */ - settlementTime: Date; + id: number; // 编号 + userId: number; // 用户编号 + userNickname: string; // 用户昵称 + userAvatar: string; // 用户头像 + price: number; // 佣金金额,单位:分 + type: number; // 佣金类型 + orderId: number; // 关联订单编号 + orderNo: string; // 关联订单号 + createTime: Date; // 创建时间 + status: number; // 状态 + settlementTime: Date; // 结算时间 } } diff --git a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts index 51c24f25a..4ef235af8 100644 --- a/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts +++ b/apps/web-antd/src/api/mall/trade/brokerage/user/index.ts @@ -5,59 +5,45 @@ import { requestClient } from '#/api/request'; export namespace MallBrokerageUserApi { /** 分销用户 */ export interface BrokerageUser { - /** 编号 */ - id: number; - /** 推广员编号 */ - bindUserId: number; - /** 推广员绑定时间 */ - bindUserTime: Date; - /** 是否启用分销 */ - brokerageEnabled: boolean; - /** 分销资格时间 */ - brokerageTime: Date; - /** 可提现金额,单位:分 */ - price: number; - /** 冻结金额,单位:分 */ - frozenPrice: number; - /** 用户昵称 */ - nickname: string; - /** 用户头像 */ - avatar: string; + id: number; // 编号 + bindUserId: number; // 推广员编号 + bindUserTime: Date; // 推广员绑定时间 + brokerageEnabled: boolean; // 是否启用分销 + brokerageTime: Date; // 分销资格时间 + price: number; // 可提现金额,单位:分 + frozenPrice: number; // 冻结金额,单位:分 + nickname: string; // 用户昵称 + avatar: string; // 用户头像 } /** 创建分销用户请求 */ - export interface CreateRequest { - /** 用户编号 */ - userId: number; - /** 推广员编号 */ - bindUserId: number; + export interface BrokerageUserCreateReqVO { + userId: number; // 用户编号 + bindUserId: number; // 推广员编号 } /** 修改推广员请求 */ - export interface UpdateBindUserRequest { - /** 用户编号 */ - id: number; - /** 推广员编号 */ - bindUserId: number; + export interface BrokerageUserUpdateReqVO { + id: number; // 用户编号 + bindUserId: number; // 推广员编号 } /** 清除推广员请求 */ - export interface ClearBindUserRequest { - /** 用户编号 */ - id: number; + export interface BrokerageUserClearBrokerageUserReqVO { + id: number; // 用户编号 } /** 修改推广资格请求 */ - export interface UpdateBrokerageEnabledRequest { - /** 用户编号 */ - id: number; - /** 是否启用分销 */ - enabled: boolean; + export interface BrokerageUserUpdateBrokerageEnabledReqVO { + id: number; // 用户编号 + enabled: boolean; // 是否启用分销 } } /** 创建分销用户 */ -export function createBrokerageUser(data: MallBrokerageUserApi.CreateRequest) { +export function createBrokerageUser( + data: MallBrokerageUserApi.BrokerageUserCreateReqVO, +) { return requestClient.post('/trade/brokerage-user/create', data); } @@ -78,19 +64,21 @@ export function getBrokerageUser(id: number) { /** 修改推广员 */ export function updateBindUser( - data: MallBrokerageUserApi.UpdateBindUserRequest, + data: MallBrokerageUserApi.BrokerageUserUpdateReqVO, ) { return requestClient.put('/trade/brokerage-user/update-bind-user', data); } /** 清除推广员 */ -export function clearBindUser(data: MallBrokerageUserApi.ClearBindUserRequest) { +export function clearBindUser( + data: MallBrokerageUserApi.BrokerageUserClearBrokerageUserReqVO, +) { return requestClient.put('/trade/brokerage-user/clear-bind-user', data); } /** 修改推广资格 */ export function updateBrokerageEnabled( - data: MallBrokerageUserApi.UpdateBrokerageEnabledRequest, + data: MallBrokerageUserApi.BrokerageUserUpdateBrokerageEnabledReqVO, ) { return requestClient.put( '/trade/brokerage-user/update-brokerage-enable', diff --git a/apps/web-antd/src/api/mall/trade/brokerage/withdraw/index.ts b/apps/web-antd/src/api/mall/trade/brokerage/withdraw/index.ts index 08acdb4fc..12af60518 100644 --- a/apps/web-antd/src/api/mall/trade/brokerage/withdraw/index.ts +++ b/apps/web-antd/src/api/mall/trade/brokerage/withdraw/index.ts @@ -5,52 +5,31 @@ import { requestClient } from '#/api/request'; export namespace MallBrokerageWithdrawApi { /** 佣金提现 */ export interface BrokerageWithdraw { - /** 编号 */ - id: number; - /** 用户编号 */ - userId: number; - /** 提现金额,单位:分 */ - price: number; - /** 手续费,单位:分 */ - feePrice: number; - /** 总金额,单位:分 */ - totalPrice: number; - /** 提现类型 */ - type: number; - /** 用户名称 */ - userName: string; - /** 用户账号 */ - userAccount: string; - /** 银行名称 */ - bankName: string; - /** 银行地址 */ - bankAddress: string; - /** 收款码地址 */ - qrCodeUrl: string; - /** 状态 */ - status: number; - /** 审核备注 */ - auditReason: string; - /** 审核时间 */ - auditTime: Date; - /** 备注 */ - remark: string; - /** 支付转账编号 */ - payTransferId?: number; - /** 转账渠道编码 */ - transferChannelCode?: string; - /** 转账时间 */ - transferTime?: Date; - /** 转账错误信息 */ - transferErrorMsg?: string; + id: number; // 编号 + userId: number; // 用户编号 + price: number; // 提现金额,单位:分 + feePrice: number; // 手续费,单位:分 + totalPrice: number; // 总金额,单位:分 + type: number; // 提现类型 + userName: string; // 用户名称 + userAccount: string; // 用户账号 + bankName: string; // 银行名称 + bankAddress: string; // 银行地址 + qrCodeUrl: string; // 收款码地址 + status: number; // 状态 + auditReason: string; // 审核备注 + auditTime: Date; // 审核时间 + remark: string; // 备注 + payTransferId?: number; // 支付转账编号 + transferChannelCode?: string; // 转账渠道编码 + transferTime?: Date; // 转账时间 + transferErrorMsg?: string; // 转账错误信息 } /** 驳回申请请求 */ export interface RejectRequest { - /** 编号 */ - id: number; - /** 驳回原因 */ - auditReason: string; + id: number; // 编号 + auditReason: string; // 驳回原因 } } diff --git a/apps/web-antd/src/api/mall/trade/delivery/expressTemplate/index.ts b/apps/web-antd/src/api/mall/trade/delivery/expressTemplate/index.ts index fa81b169b..be6a38a6d 100644 --- a/apps/web-antd/src/api/mall/trade/delivery/expressTemplate/index.ts +++ b/apps/web-antd/src/api/mall/trade/delivery/expressTemplate/index.ts @@ -38,9 +38,9 @@ export namespace MallDeliveryExpressTemplateApi { /** 排序 */ sort: number; /** 计费区域列表 */ - templateCharge: TemplateCharge[]; + charges: TemplateCharge[]; /** 包邮区域列表 */ - templateFree: TemplateFree[]; + frees: TemplateFree[]; } /** 运费模板精简信息 */ diff --git a/apps/web-antd/src/api/member/level/index.ts b/apps/web-antd/src/api/member/level/index.ts index 850d9b820..a856e505b 100644 --- a/apps/web-antd/src/api/member/level/index.ts +++ b/apps/web-antd/src/api/member/level/index.ts @@ -11,6 +11,7 @@ export namespace MemberLevelApi { icon: string; bgUrl: string; status: number; + createTime?: Date; } } diff --git a/apps/web-antd/src/api/member/user/index.ts b/apps/web-antd/src/api/member/user/index.ts index e8a5a35b7..e02f332ed 100644 --- a/apps/web-antd/src/api/member/user/index.ts +++ b/apps/web-antd/src/api/member/user/index.ts @@ -20,20 +20,20 @@ export namespace MemberUserApi { status: number; areaId?: number; areaName?: string; - levelName: null | string; - point?: null | number; - totalPoint?: null | number; - experience?: null | number; + levelName: string; + point?: number; + totalPoint?: number; + experience?: number; } /** 会员用户等级更新信息 */ - export interface UserLevelUpdate { + export interface UserUpdateLevelReqVO { id: number; levelId: number; } /** 会员用户积分更新信息 */ - export interface UserPointUpdate { + export interface UserPointUpdateReqVO { id: number; point: number; } @@ -60,11 +60,11 @@ export function updateUser(data: MemberUserApi.User) { } /** 修改会员用户等级 */ -export function updateUserLevel(data: MemberUserApi.UserLevelUpdate) { +export function updateUserLevel(data: MemberUserApi.UserUpdateLevelReqVO) { return requestClient.put('/member/user/update-level', data); } /** 修改会员用户积分 */ -export function updateUserPoint(data: MemberUserApi.UserPointUpdate) { +export function updateUserPoint(data: MemberUserApi.UserPointUpdateReqVO) { return requestClient.put('/member/user/update-point', data); } diff --git a/apps/web-antd/src/api/pay/app/index.ts b/apps/web-antd/src/api/pay/app/index.ts index 53f676742..081c7aa77 100644 --- a/apps/web-antd/src/api/pay/app/index.ts +++ b/apps/web-antd/src/api/pay/app/index.ts @@ -16,7 +16,7 @@ export namespace PayAppApi { merchantId: number; merchantName: string; createTime?: Date; - channelCodes: string[]; + channelCodes?: string[]; } /** 更新状态请求 */ @@ -25,20 +25,16 @@ export namespace PayAppApi { status: number; } - export interface AppPageReq extends PageParam { + export interface AppPageReqVO extends PageParam { name?: string; + appKey?: string; status?: number; - remark?: string; - payNotifyUrl?: string; - refundNotifyUrl?: string; - transferNotifyUrl?: string; - merchantName?: string; createTime?: Date[]; } } /** 查询支付应用列表 */ -export function getAppPage(params: PayAppApi.AppPageReq) { +export function getAppPage(params: PayAppApi.AppPageReqVO) { return requestClient.get>('/pay/app/page', { params, }); @@ -60,7 +56,7 @@ export function updateApp(data: PayAppApi.App) { } /** 修改支付应用状态 */ -export function changeAppStatus(data: PayAppApi.UpdateStatusReq) { +export function updateAppStatus(data: PayAppApi.UpdateStatusReq) { return requestClient.put('/pay/app/update-status', data); } diff --git a/apps/web-antd/src/api/pay/demo/order/index.ts b/apps/web-antd/src/api/pay/demo/order/index.ts index 63cb1396d..262351059 100644 --- a/apps/web-antd/src/api/pay/demo/order/index.ts +++ b/apps/web-antd/src/api/pay/demo/order/index.ts @@ -20,7 +20,7 @@ export namespace DemoOrderApi { createTime?: Date; } - export interface OrderPageReq extends PageParam { + export interface OrderPageReqVO extends PageParam { spuId?: number; createTime?: Date[]; } @@ -32,7 +32,7 @@ export function createDemoOrder(data: DemoOrderApi.Order) { } /** 获得示例订单分页 */ -export function getDemoOrderPage(params: DemoOrderApi.OrderPageReq) { +export function getDemoOrderPage(params: DemoOrderApi.OrderPageReqVO) { return requestClient.get>( '/pay/demo-order/page', { diff --git a/apps/web-antd/src/api/pay/notify/index.ts b/apps/web-antd/src/api/pay/notify/index.ts index b0b916ccb..fe18ac03b 100644 --- a/apps/web-antd/src/api/pay/notify/index.ts +++ b/apps/web-antd/src/api/pay/notify/index.ts @@ -1,15 +1,52 @@ -import type { PageParam } from '@vben/request'; +import type { PageParam, PageResult } from '@vben/request'; import { requestClient } from '#/api/request'; +export namespace PayNotifyApi { + /** 支付通知任务 */ + export interface NotifyTask { + id: number; + appId: number; + appName: string; + type: number; + dataId: number; + status: number; + merchantOrderId: string; + merchantRefundId?: string; + merchantTransferId?: string; + lastExecuteTime: Date; + nextNotifyTime: Date; + notifyTimes: number; + maxNotifyTimes: number; + createTime: Date; + updateTime: Date; + logs?: any[]; + } + + /** 支付通知任务分页请求 */ + export interface NotifyTaskPageReqVO extends PageParam { + appId?: number; + type?: number; + dataId?: number; + status?: number; + merchantOrderId?: string; + merchantRefundId?: string; + merchantTransferId?: string; + createTime?: Date[]; + } +} + /** 获得支付通知明细 */ export function getNotifyTaskDetail(id: number) { return requestClient.get(`/pay/notify/get-detail?id=${id}`); } /** 获得支付通知分页 */ -export function getNotifyTaskPage(params: PageParam) { - return requestClient.get('/pay/notify/page', { - params, - }); +export function getNotifyTaskPage(params: PayNotifyApi.NotifyTaskPageReqVO) { + return requestClient.get>( + '/pay/notify/page', + { + params, + }, + ); } diff --git a/apps/web-antd/src/api/pay/order/index.ts b/apps/web-antd/src/api/pay/order/index.ts index aff890dfa..445549192 100644 --- a/apps/web-antd/src/api/pay/order/index.ts +++ b/apps/web-antd/src/api/pay/order/index.ts @@ -40,60 +40,19 @@ export namespace PayOrderApi { } /** 支付订单分页请求 */ - export interface OrderPageReq extends PageParam { - merchantId?: number; + export interface OrderPageReqVO extends PageParam { appId?: number; - channelId?: number; channelCode?: string; merchantOrderId?: string; - subject?: string; - body?: string; - notifyUrl?: string; - notifyStatus?: number; - amount?: number; - channelFeeRate?: number; - channelFeeAmount?: number; - status?: number; - expireTime?: Date[]; - successTime?: Date[]; - notifyTime?: Date[]; - successExtensionId?: number; - refundStatus?: number; - refundTimes?: number; - channelUserId?: string; channelOrderNo?: string; - createTime?: Date[]; - } - - /** 支付订单导出请求 */ - export interface OrderExportReq { - merchantId?: number; - appId?: number; - channelId?: number; - channelCode?: string; - merchantOrderId?: string; - subject?: string; - body?: string; - notifyUrl?: string; - notifyStatus?: number; - amount?: number; - channelFeeRate?: number; - channelFeeAmount?: number; + no?: string; status?: number; - expireTime?: Date[]; - successTime?: Date[]; - notifyTime?: Date[]; - successExtensionId?: number; - refundStatus?: number; - refundTimes?: number; - channelUserId?: string; - channelOrderNo?: string; createTime?: Date[]; } } /** 查询支付订单列表 */ -export function getOrderPage(params: PayOrderApi.OrderPageReq) { +export function getOrderPage(params: PayOrderApi.OrderPageReqVO) { return requestClient.get>('/pay/order/page', { params, }); @@ -120,6 +79,6 @@ export function submitOrder(data: any) { } /** 导出支付订单 */ -export function exportOrder(params: PayOrderApi.OrderExportReq) { +export function exportOrder(params: any) { return requestClient.download('/pay/order/export-excel', { params }); } diff --git a/apps/web-antd/src/api/pay/refund/index.ts b/apps/web-antd/src/api/pay/refund/index.ts index 44c36b7c6..bce2448bc 100644 --- a/apps/web-antd/src/api/pay/refund/index.ts +++ b/apps/web-antd/src/api/pay/refund/index.ts @@ -14,9 +14,12 @@ export namespace PayRefundApi { tradeNo: string; merchantOrderId: string; merchantRefundNo: string; + merchantRefundId: string; notifyUrl: string; notifyStatus: number; status: number; + payPrice: number; + refundPrice: number; type: number; payAmount: number; refundAmount: number; @@ -35,36 +38,7 @@ export namespace PayRefundApi { } /** 退款订单分页请求 */ - export interface RefundPageReq extends PageParam { - merchantId?: number; - appId?: number; - channelId?: number; - channelCode?: string; - orderId?: string; - tradeNo?: string; - merchantOrderId?: string; - merchantRefundNo?: string; - notifyUrl?: string; - notifyStatus?: number; - status?: number; - type?: number; - payAmount?: number; - refundAmount?: number; - reason?: string; - userIp?: string; - channelOrderNo?: string; - channelRefundNo?: string; - channelErrorCode?: string; - channelErrorMsg?: string; - channelExtras?: string; - expireTime?: Date[]; - successTime?: Date[]; - notifyTime?: Date[]; - createTime?: Date[]; - } - - /** 退款订单导出请求 */ - export interface RefundExportReq { + export interface RefundPageReqVO extends PageParam { merchantId?: number; appId?: number; channelId?: number; @@ -94,7 +68,7 @@ export namespace PayRefundApi { } /** 查询退款订单列表 */ -export function getRefundPage(params: PayRefundApi.RefundPageReq) { +export function getRefundPage(params: PayRefundApi.RefundPageReqVO) { return requestClient.get>( '/pay/refund/page', { @@ -108,22 +82,7 @@ export function getRefund(id: number) { return requestClient.get(`/pay/refund/get?id=${id}`); } -/** 创建退款订单 */ -export function createRefund(data: PayRefundApi.Refund) { - return requestClient.post('/pay/refund/create', data); -} - -/** 更新退款订单 */ -export function updateRefund(data: PayRefundApi.Refund) { - return requestClient.put('/pay/refund/update', data); -} - -/** 删除退款订单 */ -export function deleteRefund(id: number) { - return requestClient.delete(`/pay/refund/delete?id=${id}`); -} - /** 导出退款订单 */ -export function exportRefund(params: PayRefundApi.RefundExportReq) { +export function exportRefund(params: any) { return requestClient.download('/pay/refund/export-excel', { params }); } diff --git a/apps/web-antd/src/api/pay/transfer/index.ts b/apps/web-antd/src/api/pay/transfer/index.ts index 4c588cb65..75cd21153 100644 --- a/apps/web-antd/src/api/pay/transfer/index.ts +++ b/apps/web-antd/src/api/pay/transfer/index.ts @@ -6,37 +6,42 @@ export namespace PayTransferApi { /** 转账单信息 */ export interface Transfer { id: number; + no: string; appId: number; + appName: string; channelId: number; channelCode: string; merchantTransferId: string; - type: number; + channelTransferNo: string; price: number; subject: string; userName: string; - alipayLogonId: string; - openid: string; + userAccount: string; + userIp: string; status: number; + successTime: Date; createTime: Date; + updateTime: Date; + notifyUrl: string; + channelNotifyData: string; } /** 转账单分页请求 */ - export interface TransferPageReq extends PageParam { + export interface TransferPageReqVO extends PageParam { + no?: string; appId?: number; - channelId?: number; channelCode?: string; - merchantTransferId?: string; - type?: number; - price?: number; - subject?: string; - userName?: string; + merchantOrderId?: string; status?: number; + userName?: string; + userAccount?: string; + channelTransferNo?: string; createTime?: Date[]; } } /** 查询转账单列表 */ -export function getTransferPage(params: PayTransferApi.TransferPageReq) { +export function getTransferPage(params: PayTransferApi.TransferPageReqVO) { return requestClient.get>( '/pay/transfer/page', { diff --git a/apps/web-antd/src/api/pay/wallet/balance/index.ts b/apps/web-antd/src/api/pay/wallet/balance/index.ts index 71e8e76d6..fc061d6d8 100644 --- a/apps/web-antd/src/api/pay/wallet/balance/index.ts +++ b/apps/web-antd/src/api/pay/wallet/balance/index.ts @@ -20,7 +20,7 @@ export namespace PayWalletApi { } /** 钱包分页请求 */ - export interface WalletPageReq extends PageParam { + export interface WalletPageReqVO extends PageParam { userId?: number; userType?: number; balance?: number; @@ -28,6 +28,12 @@ export namespace PayWalletApi { totalRecharge?: number; freezePrice?: number; } + + /** 钱包修改余额 */ + export interface PayWalletUpdateBalanceReqVO { + userId: number; + balance: number; + } } /** 查询用户钱包详情 */ @@ -38,7 +44,7 @@ export function getWallet(params: PayWalletApi.PayWalletUserReq) { } /** 查询会员钱包列表 */ -export function getWalletPage(params: PayWalletApi.WalletPageReq) { +export function getWalletPage(params: PayWalletApi.WalletPageReqVO) { return requestClient.get>( '/pay/wallet/page', { @@ -48,6 +54,8 @@ export function getWalletPage(params: PayWalletApi.WalletPageReq) { } /** 修改会员钱包余额 */ -export function updateWalletBalance(data: PayWalletApi.Wallet) { +export function updateWalletBalance( + data: PayWalletApi.PayWalletUpdateBalanceReqVO, +) { return requestClient.put('/pay/wallet/update-balance', data); } diff --git a/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts b/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts index 32c3bbfaf..7f8b5621f 100644 --- a/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts +++ b/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts @@ -4,7 +4,7 @@ import { requestClient } from '#/api/request'; export namespace WalletRechargePackageApi { /** 充值套餐信息 */ - export interface Package { + export interface WalletRechargePackage { id?: number; name: string; payPrice: number; @@ -14,33 +14,36 @@ export namespace WalletRechargePackageApi { } /** 查询充值套餐列表 */ -export function getPackagePage(params: PageParam) { - return requestClient.get>( - '/pay/wallet-recharge-package/page', - { - params, - }, - ); +export function getWalletRechargePackagePage(params: PageParam) { + return requestClient.get< + PageResult + >('/pay/wallet-recharge-package/page', { + params, + }); } /** 查询充值套餐详情 */ -export function getPackage(id: number) { - return requestClient.get( +export function getWalletRechargePackage(id: number) { + return requestClient.get( `/pay/wallet-recharge-package/get?id=${id}`, ); } /** 新增充值套餐 */ -export function createPackage(data: WalletRechargePackageApi.Package) { +export function createWalletRechargePackage( + data: WalletRechargePackageApi.WalletRechargePackage, +) { return requestClient.post('/pay/wallet-recharge-package/create', data); } /** 修改充值套餐 */ -export function updatePackage(data: WalletRechargePackageApi.Package) { +export function updateWalletRechargePackage( + data: WalletRechargePackageApi.WalletRechargePackage, +) { return requestClient.put('/pay/wallet-recharge-package/update', data); } /** 删除充值套餐 */ -export function deletePackage(id: number) { +export function deleteWalletRechargePackage(id: number) { return requestClient.delete(`/pay/wallet-recharge-package/delete?id=${id}`); } diff --git a/apps/web-antd/src/api/system/dict/data/index.ts b/apps/web-antd/src/api/system/dict/data/index.ts index 674eb01e4..28f94d504 100644 --- a/apps/web-antd/src/api/system/dict/data/index.ts +++ b/apps/web-antd/src/api/system/dict/data/index.ts @@ -1,4 +1,4 @@ -import type { PageParam } from '@vben/request'; +import type { PageParam, PageResult } from '@vben/request'; import { requestClient } from '#/api/request'; @@ -20,17 +20,24 @@ export namespace SystemDictDataApi { // 查询字典数据(精简)列表 export function getSimpleDictDataList() { - return requestClient.get('/system/dict-data/simple-list'); + return requestClient.get( + '/system/dict-data/simple-list', + ); } // 查询字典数据列表 export function getDictDataPage(params: PageParam) { - return requestClient.get('/system/dict-data/page', { params }); + return requestClient.get>( + '/system/dict-data/page', + { params }, + ); } // 查询字典数据详情 export function getDictData(id: number) { - return requestClient.get(`/system/dict-data/get?id=${id}`); + return requestClient.get( + `/system/dict-data/get?id=${id}`, + ); } // 新增字典数据 diff --git a/apps/web-antd/src/api/system/dict/type/index.ts b/apps/web-antd/src/api/system/dict/type/index.ts index eb2f9c9d4..7fb426337 100644 --- a/apps/web-antd/src/api/system/dict/type/index.ts +++ b/apps/web-antd/src/api/system/dict/type/index.ts @@ -1,3 +1,5 @@ +import type { PageParam, PageResult } from '@vben/request'; + import { requestClient } from '#/api/request'; export namespace SystemDictTypeApi { @@ -14,17 +16,24 @@ export namespace SystemDictTypeApi { // 查询字典(精简)列表 export function getSimpleDictTypeList() { - return requestClient.get('/system/dict-type/list-all-simple'); + return requestClient.get( + '/system/dict-type/list-all-simple', + ); } // 查询字典列表 -export function getDictTypePage(params: any) { - return requestClient.get('/system/dict-type/page', { params }); +export function getDictTypePage(params: PageParam) { + return requestClient.get>( + '/system/dict-type/page', + { params }, + ); } // 查询字典详情 export function getDictType(id: number) { - return requestClient.get(`/system/dict-type/get?id=${id}`); + return requestClient.get( + `/system/dict-type/get?id=${id}`, + ); } // 新增字典 diff --git a/apps/web-antd/src/components/bpmn-process-designer/package/designer/ProcessViewer.vue b/apps/web-antd/src/components/bpmn-process-designer/package/designer/ProcessViewer.vue index 4fdca3d86..eb0dd63cf 100644 --- a/apps/web-antd/src/components/bpmn-process-designer/package/designer/ProcessViewer.vue +++ b/apps/web-antd/src/components/bpmn-process-designer/package/designer/ProcessViewer.vue @@ -3,7 +3,7 @@ import { h, onBeforeUnmount, onMounted, ref, watch } from 'vue'; import { BpmProcessInstanceStatus, DICT_TYPE } from '@vben/constants'; import { UndoOutlined, ZoomInOutlined, ZoomOutOutlined } from '@vben/icons'; -import { dateFormatter, formatPast2 } from '@vben/utils'; +import { formatDate, formatPast2 } from '@vben/utils'; import { Button, ButtonGroup, Modal, Row, Table } from 'ant-design-vue'; import BpmnViewer from 'bpmn-js/lib/Viewer'; @@ -345,14 +345,14 @@ onBeforeUnmount(() => { .el-button { +.element-drawer__button > .ant-button { width: 100%; } -.el-collapse-item__content { +.ant-collapse-item__content { padding-bottom: 0; } -.el-input.is-disabled .el-input__inner { +.ant-input.is-disabled .ant-input__inner { color: #999; } -.el-form-item.el-form-item--mini { +.ant-form-item.ant-form-item--mini { margin-bottom: 0; - & + .el-form-item { + & + .ant-form-item { margin-top: 16px; } } diff --git a/apps/web-antd/src/components/form-create/rules/use-dict-select.ts b/apps/web-antd/src/components/form-create/rules/use-dict-select.ts index c9c438e8b..5f4271f13 100644 --- a/apps/web-antd/src/components/form-create/rules/use-dict-select.ts +++ b/apps/web-antd/src/components/form-create/rules/use-dict-select.ts @@ -39,6 +39,7 @@ export const useDictSelectRule = () => { title: label, info: '', $required: false, + modelField: 'value', }; }, props(_: any, { t }: any) { diff --git a/apps/web-antd/src/components/operate-log/index.ts b/apps/web-antd/src/components/operate-log/index.ts index 4107d490e..cf38b5e70 100644 --- a/apps/web-antd/src/components/operate-log/index.ts +++ b/apps/web-antd/src/components/operate-log/index.ts @@ -1,11 +1,3 @@ -import { defineAsyncComponent } from 'vue'; - -// TODO @xingyu:我直接引入,貌似没问题呀。 -// TODO @xingyu:apps/web-antd/src/views/crm/followup/index.ts 走的异步组件,不过名字是 FollowUp 没 Async。可能要一起讨论怎么保持相对的一致性 -export const AsyncOperateLog = defineAsyncComponent( - () => import('./operate-log.vue'), -); - export { default as OperateLog } from './operate-log.vue'; export type { OperateLogProps } from './typing'; diff --git a/apps/web-antd/src/components/operate-log/operate-log.vue b/apps/web-antd/src/components/operate-log/operate-log.vue index b16052abe..0bde86400 100644 --- a/apps/web-antd/src/components/operate-log/operate-log.vue +++ b/apps/web-antd/src/components/operate-log/operate-log.vue @@ -34,6 +34,7 @@ function getUserTypeColor(userType: number) {