Files

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 导出。