Files
shop-mp/src/app.ts
赵忠林 faba099392 feat(pages): 添加文章管理、经销商申请和收货地址功能
- 新增文章管理模块,支持文章的增删改查和多种展示方式
- 添加经销商申请功能,集成用户注册和角色分配流程
- 实现收货地址管理,包括地图选点和地址识别功能
- 配置页面导航栏标题和样式设置
- 添加项目配置文件(.editorconfig,.eslintrc,.gitignore)
2026-02-12 13:49:38 +08:00

102 lines
2.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {useEffect} from 'react'
import Taro, {useDidShow, useDidHide} from '@tarojs/taro'
// 全局样式
import './app.scss'
import {loginByOpenId} from "@/api/layout";
import {TenantId} from "@/config/app";
import {saveStorageByLoginUser} from "@/utils/server";
import {parseInviteParams, saveInviteParams, trackInviteSource, handleInviteRelation} from "@/utils/invite";
import { useConfig } from "@/hooks/useConfig"; // 引入新的自定义Hook
function App(props: { children: any; }) {
const { refetch: handleTheme } = useConfig(); // 使用新的Hook
const reload = () => {
Taro.login({
success: (res) => {
loginByOpenId({
code: res.code,
tenantId: TenantId
}).then(async data => {
if (data) {
saveStorageByLoginUser(data.access_token, data.user)
// 处理邀请关系
if (data.user?.userId) {
try {
const inviteSuccess = await handleInviteRelation(data.user.userId)
if (inviteSuccess) {
console.log('自动登录时邀请关系建立成功')
}
} catch (error) {
console.error('自动登录时处理邀请关系失败:', error)
}
}
}
})
}
})
};
// 可以使用所有的 React Hooks
useEffect(() => {
// 设置主题 (现在由useConfig Hook处理)
handleTheme()
// Taro.getSetting获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
Taro.getSetting({
success: (res) => {
if (res.authSetting['scope.userInfo']) {
reload();
}
}
});
}, []);
// 对应 onShow
useDidShow(() => {
// 处理小程序启动参数中的邀请信息
const options = Taro.getLaunchOptionsSync()
handleLaunchOptions(options)
})
// 处理启动参数
const handleLaunchOptions = (options: any) => {
try {
console.log('=== 小程 序启动参数处理开始 ===')
console.log('完整启动参数:', JSON.stringify(options, null, 2))
// 解析邀请参数
const inviteParams = parseInviteParams(options)
if (inviteParams) {
console.log('✅ 成功检测到邀请参数:', inviteParams)
// 保存邀请参数到本地存储
saveInviteParams(inviteParams)
// 统计邀请来源
trackInviteSource(inviteParams.source || 'unknown', parseInt(inviteParams.inviter || '0'))
// 显示邀请提示
setTimeout(() => {
console.log(`检测到邀请信息 ID:${inviteParams.inviter}`)
}, 1000)
} else {
console.log('❌ 未检测到邀请参数')
}
console.log('=== 小程序启动参数处理结束 ===')
} catch (error) {
console.error('处理启动参数失败:', error)
}
}
// 对应 onHide
useDidHide(() => {
})
return props.children
}
export default App