|
|
@@ -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
|