From 023a6ee29a5e5908841dd5fac4ce93cf6adc7614 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Mon, 28 Apr 2025 16:27:34 +0800 Subject: [PATCH 01/24] feat: pay api --- apps/web-antd/src/api/pay/app/index.ts | 63 +++++++++ apps/web-antd/src/api/pay/channel/index.ts | 54 ++++++++ apps/web-antd/src/api/pay/demo/index.ts | 38 ++++++ .../src/api/pay/demo/transfer/index.ts | 29 ++++ apps/web-antd/src/api/pay/notify/index.ts | 15 ++ apps/web-antd/src/api/pay/order/index.ts | 118 ++++++++++++++++ apps/web-antd/src/api/pay/refund/index.ts | 128 ++++++++++++++++++ apps/web-antd/src/api/pay/transfer/index.ts | 58 ++++++++ .../src/api/pay/wallet/balance/index.ts | 53 ++++++++ .../api/pay/wallet/rechargePackage/index.ts | 46 +++++++ .../src/api/pay/wallet/transaction/index.ts | 24 ++++ 11 files changed, 626 insertions(+) create mode 100644 apps/web-antd/src/api/pay/app/index.ts create mode 100644 apps/web-antd/src/api/pay/channel/index.ts create mode 100644 apps/web-antd/src/api/pay/demo/index.ts create mode 100644 apps/web-antd/src/api/pay/demo/transfer/index.ts create mode 100644 apps/web-antd/src/api/pay/notify/index.ts create mode 100644 apps/web-antd/src/api/pay/order/index.ts create mode 100644 apps/web-antd/src/api/pay/refund/index.ts create mode 100644 apps/web-antd/src/api/pay/transfer/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/balance/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts create mode 100644 apps/web-antd/src/api/pay/wallet/transaction/index.ts diff --git a/apps/web-antd/src/api/pay/app/index.ts b/apps/web-antd/src/api/pay/app/index.ts new file mode 100644 index 000000000..1eae34420 --- /dev/null +++ b/apps/web-antd/src/api/pay/app/index.ts @@ -0,0 +1,63 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayAppApi { + /** 支付应用信息 */ + export interface App { + id?: number; + appKey: string; + name: string; + status: number; + remark: string; + payNotifyUrl: string; + refundNotifyUrl: string; + transferNotifyUrl: string; + merchantId: number; + merchantName: string; + createTime?: Date; + } + + /** 更新状态请求 */ + export interface UpdateStatusReq { + id: number; + status: number; + } +} + +/** 查询支付应用列表 */ +export function getAppPage(params: PageParam) { + return requestClient.get>('/pay/app/page', { + params, + }); +} + +/** 查询支付应用详情 */ +export function getApp(id: number) { + return requestClient.get(`/pay/app/get?id=${id}`); +} + +/** 新增支付应用 */ +export function createApp(data: PayAppApi.App) { + return requestClient.post('/pay/app/create', data); +} + +/** 修改支付应用 */ +export function updateApp(data: PayAppApi.App) { + return requestClient.put('/pay/app/update', data); +} + +/** 修改支付应用状态 */ +export function changeAppStatus(data: PayAppApi.UpdateStatusReq) { + return requestClient.put('/pay/app/update-status', data); +} + +/** 删除支付应用 */ +export function deleteApp(id: number) { + return requestClient.delete(`/pay/app/delete?id=${id}`); +} + +/** 获取支付应用列表 */ +export function getAppList() { + return requestClient.get('/pay/app/list'); +} diff --git a/apps/web-antd/src/api/pay/channel/index.ts b/apps/web-antd/src/api/pay/channel/index.ts new file mode 100644 index 000000000..99a16c05c --- /dev/null +++ b/apps/web-antd/src/api/pay/channel/index.ts @@ -0,0 +1,54 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayChannelApi { + /** 支付渠道信息 */ + export interface Channel { + id: number; + code: string; + config: string; + status: number; + remark: string; + feeRate: number; + appId: number; + createTime: Date; + } +} + +/** 查询支付渠道列表 */ +export function getChannelPage(params: PageParam) { + return requestClient.get>( + '/pay/channel/page', + { + params, + }, + ); +} + +/** 查询支付渠道详情 */ +export function getChannel(appId: string, code: string) { + return requestClient.get('/pay/channel/get', { + params: { appId, code }, + }); +} + +/** 新增支付渠道 */ +export function createChannel(data: PayChannelApi.Channel) { + return requestClient.post('/pay/channel/create', data); +} + +/** 修改支付渠道 */ +export function updateChannel(data: PayChannelApi.Channel) { + return requestClient.put('/pay/channel/update', data); +} + +/** 删除支付渠道 */ +export function deleteChannel(id: number) { + return requestClient.delete(`/pay/channel/delete?id=${id}`); +} + +/** 导出支付渠道 */ +export function exportChannel(params: PageParam) { + return requestClient.download('/pay/channel/export-excel', { params }); +} diff --git a/apps/web-antd/src/api/pay/demo/index.ts b/apps/web-antd/src/api/pay/demo/index.ts new file mode 100644 index 000000000..a0f3c6886 --- /dev/null +++ b/apps/web-antd/src/api/pay/demo/index.ts @@ -0,0 +1,38 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayDemoApi { + /** 示例订单信息 */ + export interface DemoOrder { + spuId: number; + createTime: Date; + } +} + +/** 创建示例订单 */ +export function createDemoOrder(data: PayDemoApi.DemoOrder) { + return requestClient.post('/pay/demo-order/create', data); +} + +/** 获得示例订单 */ +export function getDemoOrder(id: number) { + return requestClient.get( + `/pay/demo-order/get?id=${id}`, + ); +} + +/** 获得示例订单分页 */ +export function getDemoOrderPage(params: PageParam) { + return requestClient.get>( + '/pay/demo-order/page', + { + params, + }, + ); +} + +/** 退款示例订单 */ +export function refundDemoOrder(id: number) { + return requestClient.put(`/pay/demo-order/refund?id=${id}`); +} diff --git a/apps/web-antd/src/api/pay/demo/transfer/index.ts b/apps/web-antd/src/api/pay/demo/transfer/index.ts new file mode 100644 index 000000000..e06dbec8b --- /dev/null +++ b/apps/web-antd/src/api/pay/demo/transfer/index.ts @@ -0,0 +1,29 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayDemoTransferApi { + /** 示例转账单信息 */ + export interface DemoTransfer { + price: number; + type: number; + userName: string; + alipayLogonId: string; + openid: string; + } +} + +/** 创建示例转账单 */ +export function createDemoTransfer(data: PayDemoTransferApi.DemoTransfer) { + return requestClient.post('/pay/demo-transfer/create', data); +} + +/** 获得示例转账单分页 */ +export function getDemoTransferPage(params: PageParam) { + return requestClient.get>( + '/pay/demo-transfer/page', + { + params, + }, + ); +} diff --git a/apps/web-antd/src/api/pay/notify/index.ts b/apps/web-antd/src/api/pay/notify/index.ts new file mode 100644 index 000000000..b0b916ccb --- /dev/null +++ b/apps/web-antd/src/api/pay/notify/index.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +/** 获得支付通知明细 */ +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, + }); +} diff --git a/apps/web-antd/src/api/pay/order/index.ts b/apps/web-antd/src/api/pay/order/index.ts new file mode 100644 index 000000000..984a5d1f6 --- /dev/null +++ b/apps/web-antd/src/api/pay/order/index.ts @@ -0,0 +1,118 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayOrderApi { + /** 支付订单信息 */ + export interface Order { + id: number; + merchantId: number; + appId: number; + channelId: number; + channelCode: string; + merchantOrderId: string; + subject: string; + body: string; + notifyUrl: string; + notifyStatus: number; + amount: number; + channelFeeRate: number; + channelFeeAmount: number; + status: number; + userIp: string; + expireTime: Date; + successTime: Date; + notifyTime: Date; + successExtensionId: number; + refundStatus: number; + refundTimes: number; + refundAmount: number; + channelUserId: string; + channelOrderNo: string; + createTime: Date; + } + + /** 支付订单分页请求 */ + export interface OrderPageReqVO extends PageParam { + merchantId?: number; + 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 OrderExportReqVO { + merchantId?: number; + 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 function getOrderPage(params: PayOrderApi.OrderPageReqVO) { + return requestClient.get>('/pay/order/page', { + params, + }); +} + +/** 查询支付订单详情 */ +export function getOrder(id: number, sync?: boolean) { + return requestClient.get('/pay/order/get', { + params: { + id, + sync, + }, + }); +} + +/** 获得支付订单的明细 */ +export function getOrderDetail(id: number) { + return requestClient.get(`/pay/order/get-detail?id=${id}`); +} + +/** 提交支付订单 */ +export function submitOrder(data: any) { + return requestClient.post('/pay/order/submit', data); +} + +/** 导出支付订单 */ +export function exportOrder(params: PayOrderApi.OrderExportReqVO) { + 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 new file mode 100644 index 000000000..93ae9fc98 --- /dev/null +++ b/apps/web-antd/src/api/pay/refund/index.ts @@ -0,0 +1,128 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayRefundApi { + /** 退款订单信息 */ + export interface Refund { + id: number; + 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 RefundPageReqVO 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 RefundExportReqVO { + 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 function getRefundPage(params: PayRefundApi.RefundPageReqVO) { + return requestClient.get>( + '/pay/refund/page', + { + params, + }, + ); +} + +/** 查询退款订单详情 */ +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.RefundExportReqVO) { + 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 new file mode 100644 index 000000000..fd8bc9d3a --- /dev/null +++ b/apps/web-antd/src/api/pay/transfer/index.ts @@ -0,0 +1,58 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayTransferApi { + /** 转账单信息 */ + export interface Transfer { + id: number; + appId: number; + channelId: number; + channelCode: string; + merchantTransferId: string; + type: number; + price: number; + subject: string; + userName: string; + alipayLogonId: string; + openid: string; + status: number; + createTime: Date; + } + + /** 转账单分页请求 */ + export interface TransferPageReqVO extends PageParam { + appId?: number; + channelId?: number; + channelCode?: string; + merchantTransferId?: string; + type?: number; + price?: number; + subject?: string; + userName?: string; + status?: number; + createTime?: Date[]; + } +} + +/** 查询转账单列表 */ +export function getTransferPage(params: PayTransferApi.TransferPageReqVO) { + return requestClient.get>( + '/pay/transfer/page', + { + params, + }, + ); +} + +/** 查询转账单详情 */ +export function getTransfer(id: number) { + return requestClient.get( + `/pay/transfer/get?id=${id}`, + ); +} + +/** 创建转账单 */ +export function createTransfer(data: PayTransferApi.Transfer) { + return requestClient.post('/pay/transfer/create', data); +} diff --git a/apps/web-antd/src/api/pay/wallet/balance/index.ts b/apps/web-antd/src/api/pay/wallet/balance/index.ts new file mode 100644 index 000000000..25a442809 --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/balance/index.ts @@ -0,0 +1,53 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace PayWalletApi { + /** 用户钱包查询参数 */ + export interface PayWalletUserReqVO { + userId: number; + } + + /** 钱包信息 */ + export interface WalletVO { + id: number; + userId: number; + userType: number; + balance: number; + totalExpense: number; + totalRecharge: number; + freezePrice: number; + } + + /** 钱包分页请求 */ + export interface WalletPageReqVO extends PageParam { + userId?: number; + userType?: number; + balance?: number; + totalExpense?: number; + totalRecharge?: number; + freezePrice?: number; + } +} + +/** 查询用户钱包详情 */ +export function getWallet(params: PayWalletApi.PayWalletUserReqVO) { + return requestClient.get('/pay/wallet/get', { + params, + }); +} + +/** 查询会员钱包列表 */ +export function getWalletPage(params: PayWalletApi.WalletPageReqVO) { + return requestClient.get>( + '/pay/wallet/page', + { + params, + }, + ); +} + +/** 修改会员钱包余额 */ +export function updateWalletBalance(data: PayWalletApi.WalletVO) { + 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 new file mode 100644 index 000000000..32c3bbfaf --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/rechargePackage/index.ts @@ -0,0 +1,46 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WalletRechargePackageApi { + /** 充值套餐信息 */ + export interface Package { + id?: number; + name: string; + payPrice: number; + bonusPrice: number; + status: number; + } +} + +/** 查询充值套餐列表 */ +export function getPackagePage(params: PageParam) { + return requestClient.get>( + '/pay/wallet-recharge-package/page', + { + params, + }, + ); +} + +/** 查询充值套餐详情 */ +export function getPackage(id: number) { + return requestClient.get( + `/pay/wallet-recharge-package/get?id=${id}`, + ); +} + +/** 新增充值套餐 */ +export function createPackage(data: WalletRechargePackageApi.Package) { + return requestClient.post('/pay/wallet-recharge-package/create', data); +} + +/** 修改充值套餐 */ +export function updatePackage(data: WalletRechargePackageApi.Package) { + return requestClient.put('/pay/wallet-recharge-package/update', data); +} + +/** 删除充值套餐 */ +export function deletePackage(id: number) { + return requestClient.delete(`/pay/wallet-recharge-package/delete?id=${id}`); +} diff --git a/apps/web-antd/src/api/pay/wallet/transaction/index.ts b/apps/web-antd/src/api/pay/wallet/transaction/index.ts new file mode 100644 index 000000000..bc7ffef13 --- /dev/null +++ b/apps/web-antd/src/api/pay/wallet/transaction/index.ts @@ -0,0 +1,24 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace WalletTransactionApi { + /** 钱包交易流水信息 */ + export interface Transaction { + id: number; + walletId: number; + title: string; + price: number; + balance: number; + } +} + +/** 查询钱包交易流水列表 */ +export function getTransactionPage(params: PageParam) { + return requestClient.get>( + '/pay/wallet-transaction/page', + { + params, + }, + ); +} From 4545422ee0b7254cdf5e86b215435e29cbe1f323 Mon Sep 17 00:00:00 2001 From: Netfan Date: Mon, 28 Apr 2025 17:02:54 +0800 Subject: [PATCH 02/24] fix: lock state will not change overflow style in drawer and modal (#6067) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Modal和Drawer的锁定状态不再修改overflow样式 --- .../ui-kit/popup-ui/src/drawer/drawer.vue | 32 ++++++++----------- .../@core/ui-kit/popup-ui/src/modal/modal.vue | 31 ++++++++---------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue index 7a28dddd8..250699799 100644 --- a/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue +++ b/packages/@core/ui-kit/popup-ui/src/drawer/drawer.vue @@ -82,17 +82,17 @@ const { zIndex, } = usePriorityValues(props, state); -watch( - () => showLoading.value, - (v) => { - if (v && wrapperRef.value) { - wrapperRef.value.scrollTo({ - // behavior: 'smooth', - top: 0, - }); - } - }, -); +// watch( +// () => showLoading.value, +// (v) => { +// if (v && wrapperRef.value) { +// wrapperRef.value.scrollTo({ +// // behavior: 'smooth', +// top: 0, +// }); +// } +// }, +// ); function interactOutside(e: Event) { if (!closeOnClickModal.value || submitting.value) { @@ -266,19 +266,13 @@ const getForceMount = computed(() => { ref="wrapperRef" :class=" cn('relative flex-1 overflow-y-auto p-3', contentClass, { - 'overflow-hidden': showLoading, + 'pointer-events-none': showLoading || submitting, }) " > - - - + - - +