StarAPI 开发者控制台(portal-ui)
面向接入 API 开放平台的开发者 / 企业客户,与 admin-ui(运营后台)技术栈一致:Vue 3 + Element Plus + Vite + Pinia + UnoCSS + ECharts。
本工程为 P1 阶段产物,方案与接口清单见 docs/portal-ui-design.md。
目录结构
portal-ui/
├── src/
│ ├── api/
│ │ ├── portal/auth.ts # /portal/auth/*(登录/注册/找回/资料/密码/退出)
│ │ ├── portal/openapi/{app,api}/ # /portal/app/*、/portal/api/*
│ │ ├── portal/billing/{wallet,flow}.ts# /portal/billing/*
│ │ ├── portal/calllog/log.ts # /portal/calllog/log/*
│ │ └── system/dict/data/ # 字典只读接口(useDict 使用)
│ ├── layout/ # 精简后的控制台布局(Sidebar + Navbar + TagsView)
│ ├── router/index.ts # 静态路由(不接 sys_menu)
│ ├── store/modules/{user,permission}.ts # 登录态 + 静态菜单
│ ├── utils/{request,auth,ruoyi,portal-format}.ts
│ └── views/
│ ├── portal/ # 对外门户首页(/,免登录):产品介绍、能力、计费、FAQ
│ ├── login.vue / register.vue # 登录(含忘记密码)、邮箱注册
│ ├── dashboard/ # 工作台:钱包 + 我的应用 + 快捷入口
│ ├── api/{index,detail}.vue # API 市场 / 详情
│ ├── app/{index,detail}.vue # 我的应用 / 应用详情(凭证-安全-授权)
│ ├── billing/{wallet,flow}.vue # 钱包与充值 / 资金流水
│ ├── log/index.vue # 调用日志 + 详情抽屉
│ └── account/index.vue # 账号设置(资料 / 改密)
├── .env.development # 开发环境:端口 81,代理 /dev-api → localhost:8080
└── .env.production
门户首页
/ 为对外门户页,免登录访问,不套控制台 Layout:
- 内容与文案集中在
src/views/portal/content.ts(导航、能力、计费、FAQ、多语言调用示例),改文案不需要动模板。 - Hero 右侧调用示例由
src/views/portal/components/CodeShowcase.vue渲染,支持语言切换与一键复制。 - 登录 / 注册页底部提供「返回首页」入口;已登录用户访问门户时,顶部按钮变为「进入控制台」。
- 全局固定深色主题:
index.html根节点直接带dark类,登录页、控制台、门户统一深色,不再按路由切换;侧边栏 StarAPI 点击回到门户首页/。 - 控制台布局路由为
/console(重定向到/dashboard),侧边栏菜单仍取该 Layout 的静态 children,见src/store/modules/permission.ts。 - 门户页不请求后端接口,所有指标与示例均为静态展示,避免未登录状态下出现 401。
本地启动
# 1) 安装依赖(需要网络)
pnpm install
# 2) 启动开发服务器(默认端口 81)
pnpm dev
# 3) 类型检查 / 代码检查
pnpm exec vue-tsc --noEmit
pnpm lint
本仓库当前工作区的
portal-ui/node_modules是指向admin-ui/node_modules的 junction(离线环境临时复用依赖)。 拿到本工程后请先执行一次pnpm install,用真实依赖替换它。
后端依赖
- 后端服务:
starapi-admin(8080),需 MySQL + Redis。 - 建库与初始化:先执行
script/sql/ry_vue.sql(框架表 + 基础数据),再按顺序执行script/sql/starapi_openapi.sql、script/sql/starapi_billing.sql、script/sql/starapi_calllog.sql(业务表 + 后台菜单路由 + 系统字典);已有库的充值订单补列见script/sql/starapi_crypto_payment.sql。 - 邮箱验证码:在
starapi-admin的application-dev.yml中开启并配置 SMTP:
mail:
enabled: true
host: smtp.xxx.com
port: 465
auth: true
from: no-reply@xxx.com
user: no-reply@xxx.com
pass: ******
- 测试账号:
dev_test / admin123(api_billing.sql种子数据)。 - 接口加密:
.env.*中的VITE_APP_ENCRYPT=true与后端api-decrypt.enabled=true对应,RSA 公私钥需前后端一致。 - 客户端标识:
VITE_APP_CLIENT_ID='portal'必须与后端用户端登录 token 内的clientid一致,否则会被全局SaInterceptor判定「客户端ID与Token不匹配」。
P1 范围
已完成:登录 / 邮箱注册 / 找回密码 / 账号资料与密码、我的应用 CRUD 与凭证(AppKey、一次性 AppSecret、IP 白名单、启停)、API 市场浏览与详情、应用授权列表(只读)、钱包余额与流水、调用日志列表与详情。
P2 起再做:接口申请开通与撤消、管理端审核、充值订单、套餐与次数包、调用统计报表、工作台用量聚合。相关位置在页面上以 disabled + tooltip / 提示文案占位,用户端不提供任何 Excel 导出。