feat: 完成门店配置拆分并新增配送与自提设置页面
This commit is contained in:
82
apps/web-antd/src/api/store-delivery/index.ts
Normal file
82
apps/web-antd/src/api/store-delivery/index.ts
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* 文件职责:配送设置模块 API 与 DTO 定义。
|
||||
* 1. 维护配送模式、梯度、区域、通用设置类型。
|
||||
* 2. 提供查询/保存/复制配送设置接口。
|
||||
*/
|
||||
import { requestClient } from '#/api/request';
|
||||
|
||||
/** 配送模式 */
|
||||
export type DeliveryMode = 'polygon' | 'radius';
|
||||
|
||||
/** 半径梯度配置 */
|
||||
export interface RadiusTierDto {
|
||||
color: string;
|
||||
deliveryFee: number;
|
||||
etaMinutes: number;
|
||||
id: string;
|
||||
maxDistance: number;
|
||||
minDistance: number;
|
||||
minOrderAmount: number;
|
||||
}
|
||||
|
||||
/** 多边形区域配置 */
|
||||
export interface PolygonZoneDto {
|
||||
color: string;
|
||||
deliveryFee: number;
|
||||
etaMinutes: number;
|
||||
id: string;
|
||||
minOrderAmount: number;
|
||||
name: string;
|
||||
priority: number;
|
||||
}
|
||||
|
||||
/** 通用配送配置 */
|
||||
export interface DeliveryGeneralSettingsDto {
|
||||
/** 配送时间加成(分钟) */
|
||||
etaAdjustmentMinutes: number;
|
||||
/** 免配送费门槛(元),空值表示不启用 */
|
||||
freeDeliveryThreshold: null | number;
|
||||
/** 每小时配送上限(单) */
|
||||
hourlyCapacityLimit: number;
|
||||
/** 最大配送距离(公里) */
|
||||
maxDeliveryDistance: number;
|
||||
}
|
||||
|
||||
/** 门店配送设置聚合 */
|
||||
export interface StoreDeliverySettingsDto {
|
||||
generalSettings: DeliveryGeneralSettingsDto;
|
||||
mode: DeliveryMode;
|
||||
polygonZones: PolygonZoneDto[];
|
||||
radiusTiers: RadiusTierDto[];
|
||||
storeId: string;
|
||||
}
|
||||
|
||||
/** 保存配送设置参数 */
|
||||
export type SaveStoreDeliverySettingsParams = StoreDeliverySettingsDto;
|
||||
|
||||
/** 复制配送设置参数 */
|
||||
export interface CopyStoreDeliverySettingsParams {
|
||||
sourceStoreId: string;
|
||||
targetStoreIds: string[];
|
||||
}
|
||||
|
||||
/** 获取门店配送设置 */
|
||||
export async function getStoreDeliverySettingsApi(storeId: string) {
|
||||
return requestClient.get<StoreDeliverySettingsDto>('/store/delivery', {
|
||||
params: { storeId },
|
||||
});
|
||||
}
|
||||
|
||||
/** 保存门店配送设置 */
|
||||
export async function saveStoreDeliverySettingsApi(
|
||||
data: SaveStoreDeliverySettingsParams,
|
||||
) {
|
||||
return requestClient.post('/store/delivery/save', data);
|
||||
}
|
||||
|
||||
/** 复制配送设置到其他门店 */
|
||||
export async function copyStoreDeliverySettingsApi(
|
||||
data: CopyStoreDeliverySettingsParams,
|
||||
) {
|
||||
return requestClient.post('/store/delivery/copy', data);
|
||||
}
|
||||
138
apps/web-antd/src/api/store-pickup/index.ts
Normal file
138
apps/web-antd/src/api/store-pickup/index.ts
Normal file
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* 文件职责:自提设置模块 API 与 DTO 定义。
|
||||
* 1. 维护基本设置、大时段、精细规则与预览类型。
|
||||
* 2. 提供查询、保存与复制自提设置接口。
|
||||
*/
|
||||
import { requestClient } from '#/api/request';
|
||||
|
||||
/** 自提模式 */
|
||||
export type PickupMode = 'big' | 'fine';
|
||||
|
||||
/** 可选星期(0=周一,6=周日) */
|
||||
export type PickupWeekDay = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
||||
|
||||
/** 自提基本设置 */
|
||||
export interface PickupBasicSettingsDto {
|
||||
/** 是否允许当天自提 */
|
||||
allowSameDayPickup: boolean;
|
||||
/** 可预约天数 */
|
||||
bookingDays: number;
|
||||
/** 单笔最大数量,null 代表不限制 */
|
||||
maxItemsPerOrder: null | number;
|
||||
}
|
||||
|
||||
/** 大时段模式单条配置 */
|
||||
export interface PickupSlotDto {
|
||||
capacity: number;
|
||||
cutoffMinutes: number;
|
||||
dayOfWeeks: PickupWeekDay[];
|
||||
enabled: boolean;
|
||||
endTime: string;
|
||||
id: string;
|
||||
name: string;
|
||||
/** 当前已预约数量(用于展示进度) */
|
||||
reservedCount: number;
|
||||
startTime: string;
|
||||
}
|
||||
|
||||
/** 精细时段规则 */
|
||||
export interface PickupFineRuleDto {
|
||||
/** 适用星期 */
|
||||
dayOfWeeks: PickupWeekDay[];
|
||||
/** 每日结束时间 HH:mm */
|
||||
dayEndTime: string;
|
||||
/** 每日开始时间 HH:mm */
|
||||
dayStartTime: string;
|
||||
/** 时间间隔(分钟) */
|
||||
intervalMinutes: number;
|
||||
/** 最少提前预约小时数 */
|
||||
minAdvanceHours: number;
|
||||
/** 每个窗口容量 */
|
||||
slotCapacity: number;
|
||||
}
|
||||
|
||||
/** 预览时段状态 */
|
||||
export type PickupPreviewStatus = 'almost' | 'available' | 'expired' | 'full';
|
||||
|
||||
/** 预览时段 */
|
||||
export interface PickupPreviewSlotDto {
|
||||
remainingCount: number;
|
||||
status: PickupPreviewStatus;
|
||||
time: string;
|
||||
}
|
||||
|
||||
/** 预览日 */
|
||||
export interface PickupPreviewDayDto {
|
||||
date: string;
|
||||
label: string;
|
||||
slots: PickupPreviewSlotDto[];
|
||||
subLabel: string;
|
||||
}
|
||||
|
||||
/** 门店自提设置聚合 */
|
||||
export interface StorePickupSettingsDto {
|
||||
basicSettings: PickupBasicSettingsDto;
|
||||
bigSlots: PickupSlotDto[];
|
||||
fineRule: PickupFineRuleDto;
|
||||
mode: PickupMode;
|
||||
previewDays: PickupPreviewDayDto[];
|
||||
storeId: string;
|
||||
}
|
||||
|
||||
/** 保存基本设置参数 */
|
||||
export interface SavePickupBasicSettingsParams {
|
||||
basicSettings: PickupBasicSettingsDto;
|
||||
mode?: PickupMode;
|
||||
storeId: string;
|
||||
}
|
||||
|
||||
/** 保存大时段参数 */
|
||||
export interface SavePickupSlotsParams {
|
||||
mode?: PickupMode;
|
||||
slots: PickupSlotDto[];
|
||||
storeId: string;
|
||||
}
|
||||
|
||||
/** 保存精细规则参数 */
|
||||
export interface SavePickupFineRuleParams {
|
||||
fineRule: PickupFineRuleDto;
|
||||
mode?: PickupMode;
|
||||
storeId: string;
|
||||
}
|
||||
|
||||
/** 复制自提设置参数 */
|
||||
export interface CopyStorePickupSettingsParams {
|
||||
sourceStoreId: string;
|
||||
targetStoreIds: string[];
|
||||
}
|
||||
|
||||
/** 获取门店自提设置 */
|
||||
export async function getStorePickupSettingsApi(storeId: string) {
|
||||
return requestClient.get<StorePickupSettingsDto>('/store/pickup', {
|
||||
params: { storeId },
|
||||
});
|
||||
}
|
||||
|
||||
/** 保存基本设置 */
|
||||
export async function savePickupBasicSettingsApi(
|
||||
data: SavePickupBasicSettingsParams,
|
||||
) {
|
||||
return requestClient.post('/store/pickup/basic/save', data);
|
||||
}
|
||||
|
||||
/** 保存大时段配置 */
|
||||
export async function savePickupSlotsApi(data: SavePickupSlotsParams) {
|
||||
return requestClient.post('/store/pickup/slots/save', data);
|
||||
}
|
||||
|
||||
/** 保存精细规则 */
|
||||
export async function savePickupFineRuleApi(data: SavePickupFineRuleParams) {
|
||||
return requestClient.post('/store/pickup/fine-rule/save', data);
|
||||
}
|
||||
|
||||
/** 复制到其他门店 */
|
||||
export async function copyStorePickupSettingsApi(
|
||||
data: CopyStorePickupSettingsParams,
|
||||
) {
|
||||
return requestClient.post('/store/pickup/copy', data);
|
||||
}
|
||||
Reference in New Issue
Block a user