Files
TakeoutSaaS.TenantUI/apps/web-antd/src/api/store-fees/index.ts

134 lines
3.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 文件职责:费用设置模块 API 与 DTO 定义。
* 1. 维护起送/配送费、包装费、其他费用类型。
* 2. 提供查询、保存与复制费用设置接口。
*/
import { requestClient } from '#/api/request';
/** 包装费模式 */
export type PackagingFeeMode = 'item' | 'order';
/** 按订单包装费模式 */
export type OrderPackagingFeeMode = 'fixed' | 'tiered';
/** 其他费用类型 */
export type AdditionalFeeType = 'cutlery' | 'rush';
/** 阶梯包装费条目 */
export interface PackagingFeeTierDto {
/** 单档费用 */
fee: number;
/** 主键 */
id: string;
/** 起始订单金额(含) */
minAmount: number;
/** 结束订单金额(空值表示无上限) */
maxAmount: null | number;
/** 排序号 */
sort: number;
}
/** 单项其他费用 */
export interface AdditionalFeeItemDto {
/** 费用金额 */
amount: number;
/** 是否启用 */
enabled: boolean;
}
/** 其他费用聚合 */
export interface StoreOtherFeesDto {
cutlery: AdditionalFeeItemDto;
rush: AdditionalFeeItemDto;
}
/** 门店费用设置聚合 */
export interface StoreFeesSettingsDto {
/** 基础配送费 */
baseDeliveryFee: number;
/** 平台服务费率(% */
platformServiceRate: number;
/** 固定包装费 */
fixedPackagingFee: number;
/** 免配送费门槛,空值表示关闭 */
freeDeliveryThreshold: null | number;
/** 起送金额 */
minimumOrderAmount: number;
/** 其他费用 */
otherFees: StoreOtherFeesDto;
/** 按订单包装费模式 */
orderPackagingFeeMode: OrderPackagingFeeMode;
/** 包装费模式 */
packagingFeeMode: PackagingFeeMode;
/** 包装费阶梯 */
packagingFeeTiers: PackagingFeeTierDto[];
/** 是否已配置 */
isConfigured: boolean;
/** 门店 ID */
storeId: string;
}
/** 保存费用设置参数 */
export interface SaveStoreFeesSettingsParams {
/** 基础配送费 */
baseDeliveryFee: number;
/** 平台服务费率(% */
platformServiceRate: number;
/** 固定包装费 */
fixedPackagingFee: number;
/** 免配送费门槛,空值表示关闭 */
freeDeliveryThreshold: null | number;
/** 起送金额 */
minimumOrderAmount: number;
/** 其他费用 */
otherFees: StoreOtherFeesDto;
/** 按订单包装费模式 */
orderPackagingFeeMode: OrderPackagingFeeMode;
/** 包装费模式 */
packagingFeeMode: PackagingFeeMode;
/** 包装费阶梯 */
packagingFeeTiers: PackagingFeeTierDto[];
/** 门店 ID */
storeId: string;
}
/** 保存包装费收取方式参数 */
export interface SaveStoreFeesModeParams {
/** 包装费模式 */
packagingFeeMode: PackagingFeeMode;
/** 门店 ID */
storeId: string;
}
/** 复制费用设置参数 */
export interface CopyStoreFeesSettingsParams {
sourceStoreId: string;
targetStoreIds: string[];
}
/** 获取门店费用设置 */
export async function getStoreFeesSettingsApi(storeId: string) {
return requestClient.get<StoreFeesSettingsDto>('/store/fees', {
params: { storeId },
});
}
/** 保存门店费用设置 */
export async function saveStoreFeesSettingsApi(
data: SaveStoreFeesSettingsParams,
) {
return requestClient.post<StoreFeesSettingsDto>('/store/fees/save', data);
}
/** 保存包装费收取方式 */
export async function saveStoreFeesModeApi(data: SaveStoreFeesModeParams) {
return requestClient.post('/store/fees/mode/save', data);
}
/** 复制费用设置到其他门店 */
export async function copyStoreFeesSettingsApi(
data: CopyStoreFeesSettingsParams,
) {
return requestClient.post('/store/fees/copy', data);
}