feat(store): 门店套餐 v3.4.10 全端实现
新增 StorePackage 与变更审核流,覆盖总部直存、合伙/门店提审、C 端展示与套餐异议工单;同步 PRD/开发文档与 REQ 索引。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -14,6 +14,7 @@ export * from './invoice';
|
||||
export * from './user-log';
|
||||
|
||||
export * from './store-log';
|
||||
export * from './store-package';
|
||||
export * from './partner-log';
|
||||
export * from './promo';
|
||||
export * from './hq-permissions';
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/** 门店套餐(v3.4.10) */
|
||||
export interface StorePackageItemDto {
|
||||
name: string;
|
||||
price: string;
|
||||
dishes: string;
|
||||
usableTime?: string | null;
|
||||
otherNotes?: string | null;
|
||||
sortOrder: number;
|
||||
}
|
||||
|
||||
export interface StorePackageViewDto extends StorePackageItemDto {
|
||||
id?: string;
|
||||
}
|
||||
|
||||
export type StorePackageChangeStatus = 'PENDING' | 'APPROVED' | 'REJECTED';
|
||||
|
||||
export type StorePackageSubmitterType = 'PARTNER' | 'SHOP';
|
||||
|
||||
export const STORE_PACKAGE_CHANGE_STATUS_LABELS: Record<StorePackageChangeStatus, string> = {
|
||||
PENDING: '审核中',
|
||||
APPROVED: '已通过',
|
||||
REJECTED: '已驳回',
|
||||
};
|
||||
|
||||
export const STORE_PACKAGE_MAX_COUNT = 10;
|
||||
|
||||
export interface StorePackagesResponse {
|
||||
live: StorePackageViewDto[];
|
||||
pendingRequest?: {
|
||||
id: string;
|
||||
status: StorePackageChangeStatus;
|
||||
packages: StorePackageItemDto[];
|
||||
rejectReason?: string | null;
|
||||
createdAt: string;
|
||||
} | null;
|
||||
}
|
||||
|
||||
export interface StorePackageChangeRequestDto {
|
||||
id: string;
|
||||
storeId: string;
|
||||
storeName?: string;
|
||||
status: StorePackageChangeStatus;
|
||||
packages: StorePackageItemDto[];
|
||||
submitterType: StorePackageSubmitterType;
|
||||
submitterId: string;
|
||||
rejectReason?: string | null;
|
||||
reviewedAt?: string | null;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface StorePackageAuditAction {
|
||||
action: 'APPROVE' | 'REJECT';
|
||||
rejectReason?: string;
|
||||
}
|
||||
|
||||
export interface CreatePackageDisputeRequest {
|
||||
storeId: string;
|
||||
remark?: string;
|
||||
redeemRecordId?: string;
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
/** 售后工单类型(PRD 四类型 + 系统 ALERT) */
|
||||
/** 售后工单类型(PRD 四类型 + 系统 ALERT + 套餐异议) */
|
||||
export type TicketTypeDto =
|
||||
| 'REFUND'
|
||||
| 'RESHIPMENT'
|
||||
| 'ALERT'
|
||||
| 'DAMAGE_RETURN'
|
||||
| 'RETURN_REFUND';
|
||||
| 'RETURN_REFUND'
|
||||
| 'PACKAGE_DISPUTE';
|
||||
|
||||
/** 用户可发起的售后类型 */
|
||||
export const AFTER_SALE_TICKET_TYPES = [
|
||||
@@ -12,6 +13,7 @@ export const AFTER_SALE_TICKET_TYPES = [
|
||||
'RESHIPMENT',
|
||||
'DAMAGE_RETURN',
|
||||
'RETURN_REFUND',
|
||||
'PACKAGE_DISPUTE',
|
||||
] as const;
|
||||
|
||||
export type AfterSaleTicketType = (typeof AFTER_SALE_TICKET_TYPES)[number];
|
||||
@@ -22,6 +24,7 @@ export const TICKET_TYPE_LABELS: Record<TicketTypeDto, string> = {
|
||||
ALERT: '异常',
|
||||
DAMAGE_RETURN: '破损退货',
|
||||
RETURN_REFUND: '退货退款',
|
||||
PACKAGE_DISPUTE: '套餐异议',
|
||||
};
|
||||
|
||||
export interface TicketDto {
|
||||
|
||||
Reference in New Issue
Block a user