商品白名单

This commit is contained in:
2026-08-03 12:53:39 +08:00
parent 23587418c1
commit 9f67221457
4 changed files with 55 additions and 23 deletions
+12 -10
View File
@@ -110,16 +110,6 @@ export default function HomePage() {
});
}, []);
useDidShow(() => {
syncTabBarSelected(0);
void capturePromoSceneAndTouchScan();
void loadMiniHome();
void resolveUserCity().then((resolved) => {
setDisplayCity(resolved.displayCity);
setCityCode(getCityCodeForCatalog(resolved));
});
});
const loadProducts = useCallback(() => {
setLoading(true);
return request<Product[]>(`/catalog/products?cityCode=${encodeURIComponent(cityCode)}`)
@@ -130,6 +120,18 @@ export default function HomePage() {
.finally(() => setLoading(false));
}, [cityCode]);
useDidShow(() => {
syncTabBarSelected(0);
void capturePromoSceneAndTouchScan();
void loadMiniHome();
// 白名单商品按登录手机号过滤;登录后 switchTab 回首页不会卸载页面,须重新拉列表
void loadProducts();
void resolveUserCity().then((resolved) => {
setDisplayCity(resolved.displayCity);
setCityCode(getCityCodeForCatalog(resolved));
});
});
useEffect(() => {
void loadProducts();
}, [loadProducts]);
@@ -1,6 +1,12 @@
import { useEffect, useMemo, useState } from 'react';
import { useCallback, useEffect, useMemo, useState } from 'react';
import { View, Text, Image } from '@tarojs/components';
import Taro, { usePageScroll, useRouter, useShareAppMessage, useShareTimeline } from '@tarojs/taro';
import Taro, {
useDidShow,
usePageScroll,
useRouter,
useShareAppMessage,
useShareTimeline,
} from '@tarojs/taro';
import type { ProductDetailContentDto } from '@dukang/shared-types';
import PageShell from '../../components/PageShell';
import PageNavBar from '../../components/PageNavBar';
@@ -51,13 +57,32 @@ export default function ProductDetailPage() {
setHeaderSolid(scrollTop > 100);
});
useEffect(() => {
const loadProduct = useCallback(() => {
if (!productId) return;
request<Product>(`/catalog/products/${productId}`)
.then((p) => setProduct(normalizeFulfillmentFlags(p)))
.catch((e) => toast(e instanceof Error ? e.message : '加载失败'));
request<Product | null>(`/catalog/products/${productId}`)
.then((p) => {
if (!p) {
setProduct(null);
toast('商品不存在或暂未开放');
return;
}
setProduct(normalizeFulfillmentFlags(p));
})
.catch((e) => {
setProduct(null);
toast(e instanceof Error ? e.message : '加载失败');
});
}, [productId]);
useEffect(() => {
loadProduct();
}, [loadProduct]);
// 登录后返回详情须带 token 重拉,否则白名单商品会一直空白
useDidShow(() => {
loadProduct();
});
const sharePayload = useMemo(
() => ({
title: product?.name || DEFAULT_SHARE_TITLE,