134 lines
3.5 KiB
TypeScript
134 lines
3.5 KiB
TypeScript
/**
|
||
* 文件职责:费用设置模块 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);
|
||
}
|