Forráskód Böngészése

♻️ refactor(payment-success): 移除未使用的用户订阅状态管理逻辑

- 删除与用户认证和订阅状态相关的查询、检查及数据库更新逻辑
- 简化订阅处理函数,移除订阅状态记录到数据库的步骤
- 清理未使用的导入和变量,优化代码结构

💄 style(search-result): 优化搜索框样式和交互体验

- 将搜索输入组件从原生input替换为Taro Input组件以提升兼容性
- 增加清除图标的触摸区域和视觉反馈,改善移动端操作体验
- 调整清除图标尺寸和布局,使其更易于点击

✨ feat(search-result): 实现搜索输入实时响应功能

- 新增输入变化处理函数,支持输入时实时触发搜索
- 优化搜索提交逻辑,整合按钮点击和回车键确认操作
- 清空搜索关键词时自动重置搜索状态,提升用户体验
yourname 2 napja
szülő
commit
6dbde57694

+ 3 - 100
mini/src/pages/payment-success/index.tsx

@@ -22,80 +22,13 @@ interface PaymentSuccessParams {
 const PaymentSuccessPage = () => {
   // 使用useRouter钩子获取路由参数
   const router = useRouter()
-  const { user } = useAuth()
   const params = router.params
   const orderId = params?.orderId ? parseInt(params.orderId) : 0
   const amount = params?.amount ? parseFloat(params.amount) : 0
   const paymentMethod = params?.paymentMethod || 'wechat' // 默认微信支付
 
-
- // 获取当前用户详细信息(包含订阅状态)
- const { data: currentUser } = useQuery({
-  queryKey: ['current-user', user?.id],
-  queryFn: async () => {
-    if (!user?.id) {
-      throw new Error('用户未登录')
-    }
-    const response = await userClient[':id']['$get']({
-      param: { id: user.id }
-    })
-    if (response.status !== 200) {
-      throw new Error('获取用户信息失败')
-    }
-    return response.json()
-  },
-  enabled: !!user?.id,
-})
-
-
-  const handleSubscribe = async () => {
-    try {
-      const subscribed = await requestSubscribeMessage()
-      console.log('订阅结果:', subscribed)
-    } catch (error) {
-      console.error('订阅失败:', error)
-      Taro.showToast({
-        title: '订阅失败,请重试',
-        icon: 'none',
-        duration: 2000
-      })
-    }
-  }
-
-   // 检查用户是否已经订阅过发货通知
-   const checkHasSubscribed = (): boolean => {
-    try {
-      if (currentUser?.hasSubscribedDeliveryNotice !== undefined) {
-        return currentUser.hasSubscribedDeliveryNotice === true
-      }
-    } catch (error) {
-      console.error('检查订阅状态失败:', error)
-      return false
-    }
-  }
-
-  // 记录用户订阅状态
-  const recordSubscription = (subscribed: boolean) => {
-    try {
-      // 异步更新到数据库
-      if (user?.id && !checkHasSubscribed()) {
-        updateUserSubscriptionMutation.mutate(subscribed, {
-          onSuccess: () => {
-            console.log('用户订阅状态已更新到数据库:', subscribed)
-          },
-          onError: (error) => {
-            console.error('更新用户订阅状态到数据库失败:', error)
-            // 即使数据库更新失败,本地存储仍然有效
-          }
-        })
-      }
-    } catch (error) {
-      console.error('记录订阅状态失败:', error)
-    }
-  }
-
   // 引导用户订阅发货通知
-  const requestSubscribeMessage = async (): Promise<boolean> => {
+  const handleSubscribe = async (): Promise<boolean> => {
     try {
       // // 检查用户是否已经订阅过
       // if (checkHasSubscribed()) {
@@ -132,8 +65,7 @@ const PaymentSuccessPage = () => {
               icon: 'success',
               duration: 2000
             })
-            // 记录用户已订阅
-            recordSubscription(true)
+            
             return true
           } else if (result[templateId] === 'reject') {
             console.log('用户拒绝了订阅消息')
@@ -142,8 +74,7 @@ const PaymentSuccessPage = () => {
               icon: 'none',
               duration: 1500
             })
-            // 记录用户拒绝订阅
-            recordSubscription(false)
+            
             return false
           } else {
             console.log('用户未做出选择或发生错误')
@@ -167,34 +98,6 @@ const PaymentSuccessPage = () => {
     }
   }
 
-  // 更新用户订阅状态
-  const updateUserSubscriptionMutation = useMutation({
-    mutationFn: async (subscribed: boolean) => {
-      if (!user?.id) {
-        throw new Error('用户未登录')
-      }
-
-      const updateData = {
-        hasSubscribedDeliveryNotice: subscribed
-      }
-
-      const response = await userClient[':id']['$put']({
-        param: { id: user.id },
-        json: updateData
-      })
-
-      if (response.status !== 200) {
-        throw new Error('更新用户订阅状态失败')
-      }
-      return response.json()
-    },
-    onError: (error) => {
-      console.error('更新用户订阅状态失败:', error)
-      // 即使更新失败,也不影响主要流程,只在控制台记录错误
-    }
-  })
-
-
 
   // 检查参数有效性
   const hasValidParams = orderId > 0 && amount > 0

+ 10 - 2
mini/src/pages/search-result/index.css

@@ -47,10 +47,18 @@
 }
 
 .clear-icon {
-  width: 32rpx;
-  height: 32rpx;
+  width: 48rpx;
+  height: 48rpx;
   margin-left: 16rpx;
   color: #cccccc;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+  flex-shrink: 0;
+  /* 增加触摸区域 */
+  padding: 8rpx;
+  margin: -8rpx;
 }
 
 /* 结果容器 */

+ 24 - 13
mini/src/pages/search-result/index.tsx

@@ -1,5 +1,5 @@
 import React, { useState, useEffect } from 'react'
-import { View, Text, ScrollView } from '@tarojs/components'
+import { View, Text, ScrollView, Input } from '@tarojs/components'
 import { useInfiniteQuery } from '@tanstack/react-query'
 import Taro, { useRouter } from '@tarojs/taro'
 import { Navbar } from '@/components/ui/navbar'
@@ -75,15 +75,30 @@ const SearchResultPage: React.FC = () => {
     })
   }
 
-  // 处理搜索提交
+  // 处理输入变化
+  const handleInputChange = (e: any) => {
+    const value = e.detail.value
+    setSearchValue(value)
+
+    // 实时搜索,无防抖
+    if (!value.trim()) {
+      // 空搜索,清空keyword
+      setKeyword('')
+      return
+    }
+
+    // 更新搜索关键词并重新搜索
+    setKeyword(value)
+    refetch()
+  }
+
+  // 处理搜索提交(用于按钮和回车)
   const handleSubmit = (value: string) => {
     if (!value.trim()) return
 
-    // 更新搜索关键词并重新搜索
+    // 执行搜索
     setKeyword(value)
     setSearchValue(value)
-
-    // 重置分页数据
     refetch()
   }
 
@@ -131,23 +146,19 @@ const SearchResultPage: React.FC = () => {
         <View className="search-bar-container">
           <View className="search-input-wrapper">
             <View className="i-heroicons-magnifying-glass-20-solid search-icon" />
-            <input
+            <Input
               className="search-input"
               placeholder="搜索商品..."
               value={searchValue}
-              onChange={(e) => setSearchValue(e.target.value)}
-              onKeyPress={(e) => {
-                if (e.key === 'Enter') {
-                  handleSubmit(searchValue)
-                }
-              }}
+              onInput={handleInputChange}
+              onConfirm={() => handleSubmit(searchValue)}
             />
             {searchValue && (
               <View
                 className="i-heroicons-x-mark-20-solid clear-icon"
                 onClick={() => {
                   setSearchValue('')
-                  setKeyword('')
+                  setKeyword('') // 清空keyword,重置搜索状态
                 }}
               />
             )}