feat(catalog): add product fulfillment flags and auto SKU
Enable online/cross-city/on-site purchase switches with trade gates, HQ and proxy UI, and server-generated DK SKUs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -86,6 +86,22 @@ export class TradeService {
|
||||
}
|
||||
}
|
||||
|
||||
if (!onSitePickup) {
|
||||
const allowOnline = product.allowOnlinePurchase !== false;
|
||||
const allowCross = product.allowCrossCityDelivery !== false;
|
||||
if (deliveryType === 'LOCAL' && !allowOnline) {
|
||||
throw new BadRequestException('该商品不支持线上购买');
|
||||
}
|
||||
if (deliveryType === 'CROSS_CITY') {
|
||||
if (!allowOnline) {
|
||||
throw new BadRequestException('该商品不支持线上购买');
|
||||
}
|
||||
if (!allowCross) {
|
||||
throw new BadRequestException('该商品不支持跨城配送');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const check = validateMinPurchase(
|
||||
deliveryType,
|
||||
body.quantity,
|
||||
@@ -1121,6 +1137,9 @@ export class TradeService {
|
||||
benefitAmount: p.benefitAmount != null ? Number(p.benefitAmount) : null,
|
||||
coverUrl: (p as { mainImageUrl?: string | null }).mainImageUrl ?? null,
|
||||
allowOnSitePickup: !!(p as { allowOnSitePickup?: boolean }).allowOnSitePickup,
|
||||
allowOnlinePurchase: (p as { allowOnlinePurchase?: boolean }).allowOnlinePurchase !== false,
|
||||
allowCrossCityDelivery:
|
||||
(p as { allowCrossCityDelivery?: boolean }).allowCrossCityDelivery !== false,
|
||||
})),
|
||||
promoCodes,
|
||||
stores: stores.map((s) => ({
|
||||
@@ -1166,6 +1185,19 @@ export class TradeService {
|
||||
if (receiverCity && receiverCity !== city.name && receiverCity !== '郑州市') {
|
||||
deliveryType = 'CROSS_CITY';
|
||||
}
|
||||
const allowOnline = product.allowOnlinePurchase !== false;
|
||||
const allowCross = product.allowCrossCityDelivery !== false;
|
||||
if (deliveryType === 'LOCAL' && !allowOnline) {
|
||||
throw new BadRequestException('该商品不支持线上购买');
|
||||
}
|
||||
if (deliveryType === 'CROSS_CITY') {
|
||||
if (!allowOnline) {
|
||||
throw new BadRequestException('该商品不支持线上购买');
|
||||
}
|
||||
if (!allowCross) {
|
||||
throw new BadRequestException('该商品不支持跨城配送');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const check = validateMinPurchase(
|
||||
@@ -1486,6 +1518,9 @@ export class TradeService {
|
||||
benefitAmount: p.benefitAmount != null ? Number(p.benefitAmount) : null,
|
||||
coverUrl: (p as { mainImageUrl?: string | null }).mainImageUrl ?? null,
|
||||
allowOnSitePickup: !!(p as { allowOnSitePickup?: boolean }).allowOnSitePickup,
|
||||
allowOnlinePurchase: (p as { allowOnlinePurchase?: boolean }).allowOnlinePurchase !== false,
|
||||
allowCrossCityDelivery:
|
||||
(p as { allowCrossCityDelivery?: boolean }).allowCrossCityDelivery !== false,
|
||||
})),
|
||||
promoCodes,
|
||||
stores: [],
|
||||
|
||||
Reference in New Issue
Block a user