fix(api): 替换所有接口请求的域名为 guilixu-api.websoft.top

- 将获取 STS Token 的接口地址由 paopao-api 改为 guilixu-api
- 更新图片上传接口地址为新的 guilixu-api 域名
- 修改用户推广页面中邀请码链接和二维码接口的域名
- 更改注册页微信登录接口请求的域名为 guilixu-api
This commit is contained in:
2026-06-17 16:50:30 +08:00
parent 6167481899
commit 8975197522
10 changed files with 241 additions and 53 deletions

View File

@@ -7,6 +7,8 @@ import { pageShopGoods } from '@/api/shop/shopGoods'
import type { ShopGoods } from '@/api/shop/shopGoods/model'
import EmptyState from '@/components/common/EmptyState'
import Loading from '@/components/common/Loading'
import { isGuest } from '@/utils/auth'
import { requireLogin } from '@/utils/login-guard'
definePageConfig({
navigationBarTitleText: '购物车',
@@ -15,6 +17,7 @@ definePageConfig({
const CartPage: React.FC = () => {
const { items, selectedCount, selectedPrice, updateQuantity, toggleSelect, selectAll, removeItem, refresh, loading, removeSelected, addItem } = useCartContext()
const { isLoggedIn } = useUserContext()
const [recommendGoods, setRecommendGoods] = useState<ShopGoods[]>([])
const [recommendPage, setRecommendPage] = useState(1)
const [refreshingRecommend, setRefreshingRecommend] = useState(false)
@@ -58,6 +61,7 @@ const CartPage: React.FC = () => {
}
const handleCheckout = () => {
if (!requireLogin({ action: 'checkout', redirect: '/pages/shop/cart' })) return
if (selectedCount === 0) {
Taro.showToast({ title: '请选择商品', icon: 'none' })
return
@@ -65,17 +69,57 @@ const CartPage: React.FC = () => {
Taro.navigateTo({ url: '/pages/shop/checkout' })
}
// 未登录状态
// 未登录状态:展示"购物车是空的"+ 推荐位商品(游客可正常浏览),
// 不再直接弹登录页,避免被审核判"拒绝服务"。
if (!isLoggedIn) {
return (
<View className="min-h-screen bg-gray-50 flex flex-col">
<View className="flex-1 flex items-center justify-center">
<EmptyState
text="请先登录"
actionText="去登录"
onAction={() => Taro.navigateTo({ url: '/pages/passport/login' })}
/>
</View>
<View className='min-h-screen bg-gray-50 flex flex-col'>
<ScrollView scrollY className='flex-1'>
<View className='flex items-center justify-center py-16'>
<EmptyState
text='购物车是空的'
actionText='去登录后查看购物车'
onAction={() => requireLogin({ action: 'viewOrder', redirect: '/pages/shop/cart', silent: true })}
/>
</View>
{recommendGoods.length > 0 && (
<View className='p-3'>
<View className='flex items-center justify-between mb-2'>
<Text className='text-sm font-medium text-gray-700'></Text>
<Text className='text-xs text-gray-400' onClick={handleRefreshRecommend}>
{refreshingRecommend ? '加载中...' : '换一批'}
</Text>
</View>
<ScrollView scrollX className='whitespace-nowrap' style={{ width: '100%', height: '180px' }}>
<View className='flex gap-2' style={{ display: 'inline-flex' }}>
{recommendGoods.map(goods => (
<View
key={goods.goodsId}
className='bg-white rounded-lg p-2 inline-block'
style={{ width: '110px', flexShrink: 0 }}
onClick={() => Taro.navigateTo({ url: `/pages/shop/product-detail?id=${goods.goodsId}` })}
>
<Image
className='w-full rounded-md bg-gray-100'
src={goods.image || ''}
mode='aspectFill'
style={{ height: '90px' }}
/>
<Text className='text-xs text-gray-700 mt-1 block' style={{ width: '100px' }} ellipsizeMode='tail' numberOfLines={1}>
{goods.name || goods.goodsName || '商品名称'}
</Text>
<View className='flex items-center justify-between mt-1'>
<Text className='text-xs text-gray-400'>
</Text>
</View>
</View>
))}
</View>
</ScrollView>
</View>
)}
</ScrollView>
</View>
)
}

View File

@@ -14,6 +14,8 @@ import SkuSelector from '@/components/business/SkuSelector'
import { useCartContext } from '@/contexts/CartContext'
import { useUserContext } from '@/contexts/UserContext'
import { useScrollHeight } from '@/hooks/useScrollHeight'
import { isGuest } from '@/utils/auth'
import { requireLogin } from '@/utils/login-guard'
definePageConfig({
navigationBarTitleText: '商品详情',
@@ -71,13 +73,7 @@ const ProductDetailPage: React.FC = () => {
}
const toggleFavorite = async () => {
if (!isLoggedIn) {
Taro.showToast({ title: '请先登录', icon: 'none' })
setTimeout(() => {
Taro.navigateTo({ url: '/pages/passport/login' })
}, 1500)
return
}
if (!requireLogin({ action: 'favorite', redirect: `/pages/shop/product-detail?id=${id}` })) return
try {
if (isFavorite) {
await removeShopGoodsFavorite({ goodsId: id })
@@ -121,25 +117,13 @@ const ProductDetailPage: React.FC = () => {
}
const handleAddCart = () => {
if (!isLoggedIn) {
Taro.showToast({ title: '请先登录', icon: 'none' })
setTimeout(() => {
Taro.navigateTo({ url: '/pages/passport/login' })
}, 1500)
return
}
if (!requireLogin({ action: 'addToCart', redirect: `/pages/shop/product-detail?id=${id}` })) return
setSkuMode('cart')
setSkuVisible(true)
}
const handleBuyNow = () => {
if (!isLoggedIn) {
Taro.showToast({ title: '请先登录', icon: 'none' })
setTimeout(() => {
Taro.navigateTo({ url: '/pages/passport/login' })
}, 1500)
return
}
if (!requireLogin({ action: 'buyNow', redirect: `/pages/shop/product-detail?id=${id}` })) return
setSkuMode('buy')
setSkuVisible(true)
}
@@ -238,14 +222,14 @@ const ProductDetailPage: React.FC = () => {
{/* 价格区域 */}
<View className='bg-white p-4'>
<View className='flex items-baseline gap-2'>
<Price price={product.price || '0'} size='large' color='#ee0a24' />
<Price price={product.price || '0'} size='large' color='#ee0a24' loginMask />
<Tag></Tag>
{product.salePrice && product.salePrice !== product.price && (
{!isGuest() && product.salePrice && product.salePrice !== product.price && (
<Text className='text-xs text-gray-400 ml-2'>¥{product.salePrice}</Text>
)}
</View>
{/* 会员价 */}
{product.memberStorePrice && product.memberStorePrice !== product.price && (
{!isGuest() && product.memberStorePrice && product.memberStorePrice !== product.price && (
<View className='mt-2 inline-block bg-orange-50 rounded px-2 py-1'>
<Text className='text-xs text-orange-500'>: ¥{product.memberStorePrice}</Text>
</View>