文件
OmniCard/mpuniapp/App.uvue
wikiboss 6c3d5d323a refactor(arch): 落地平台架构演进第一二阶段整改,消除OOM与越权风险并支持高并发缓冲与AI多租户BYOK
- [P0安全底座] 多租户数据闭环:公开留资与雷达足迹自动逆向追溯绑定名片 tenantId 与归属销售 userId
- [P0性能稳定] 消除内存全量加载:公海池分批带条件扫描回收,雷达国家分布改用 SQL 原生 GROUP BY 聚合查询彻底消除 OOM 隐患
- [P0商业变现] 商业化配额门禁切面:在 Cool-Admin modifyBefore 生命周期织入 assertQuotaAvailable 校验,阻断超额名片创建
- [P0环境解耦] 客户端解耦本地硬编码:request.uts 支持 api_base_url 本地覆盖,生产数据库名修正为 crmmpdata
- [P1高并发削峰] 雷达足迹批量缓冲引擎:引入 CrmRadarBufferService 环形缓冲队列与阈值/定时批量 Bulk Insert 落盘
- [P2中枢租户化] AI 智能中枢多租户 BYOK 与 Token 成本风控:支持企业自带 Key 隔离、Token 消耗账本、用量配额门禁与名片人设个性化联动
- [跨端规范] 对齐 Uni-app x 移动微官网原生首屏与底部原生 tabBar 规范
- [测试驱动] 全工程 116 个测试套件,1,175 个单元与集成测试用例全部 100% 绿色通过,管理后台 Vite 打包无错误
2026-09-21 11:14:10 +08:00

69 行
1.6 KiB
Plaintext

<script setup lang="uts">
import { getAuthToken } from './common/request.uts'
import { parseDeepLink, buildAppPageRoute } from './common/deeplink-router.uts'
// #ifdef APP-ANDROID || APP-HARMONY
let firstBackTime = 0
// #endif
function openDeepLink(scheme : string | null, link : string | null) : boolean {
const raw = scheme != null && scheme != '' ? scheme! : (link != null ? link! : '')
const info = parseDeepLink(raw)
if (!info.isValid) {
return false
}
uni.reLaunch({
url: buildAppPageRoute(info)
})
return true
}
function routeOwnerHome() : void {
if (getAuthToken() != '') {
uni.switchTab({
url: '/pages/owner/hall/index'
})
return
}
uni.reLaunch({
url: '/pages/common/login'
})
}
onLaunch((_res : OnLaunchOptions) => {
// #ifdef APP
routeOwnerHome()
// #endif
})
onAppShow((res : OnShowOptions) => {
openDeepLink(res.appScheme, res.appLink)
})
// #ifdef APP-ANDROID || APP-HARMONY
onLastPageBackPress(() => {
if (firstBackTime == 0) {
uni.showToast({
title: '再按一次退出应用',
position: 'bottom',
})
firstBackTime = Date.now()
setTimeout(() => {
firstBackTime = 0
}, 2000)
} else if (Date.now() - firstBackTime < 2000) {
firstBackTime = Date.now()
uni.exit()
}
})
// #endif
</script>
<style>
page {
background-color: #F7F8FA;
color: #101828;
font-family: Inter, "Noto Sans SC", "Noto Sans Arabic", "Noto Sans JP", "Noto Sans KR", sans-serif;
}
</style>