Wujies 无界平台
基础

在应用市场里找应用

本文是 1.x 的归档文档(冻结于 1.x)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 1.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 1.x 上运行的项目,本文仍是可靠依据。

应用市场是宿主前端里的一个页面:路由 /appmarket/market,源码 plus-ui/src/views/appstore/market/index.vue。它只负责浏览与安装; 装完之后的版本、启停、卸载在 安装、升级、卸载与启停。

前提

浏览市场需要权限 app:market:list;卡片上的「安装」按钮需要 app:install:add。 没有权限时页面照常打开,只是按钮不出现。接口清单见 HTTP 接口索引。

从哪进

入口位置
侧边栏应用市场(菜单 appmarket)
工作台「我的应用」卡片右上角的「前往应用市场」;本租户一个应用都没有时,空态里还有一个「去应用市场看看」

页面上有什么

工具栏从左到右:

控件行为
关键词搜索框回车触发。走后端,搜索在目录里做,中文正常
「已安装」复选框前端过滤,只留本租户装过的
排序「最近更新」(默认)与「最新创建」,前端排序
网格 / 列表切换本地记住(localStorage 的 app-store-list-view)
刷新重新拉一次市场列表与本租户的安装列表

左侧筛选:

  • 类型:全部 / 内置模块(module)/ 插件(plugin)/ 部署型(deploy)—— 前端过滤;
  • 分类:选项来自 GET /app/category/list(权限 app:category:list),走后端过滤。

卡片上能看到:封面(没有封面时用图标 + 渐变兜底)、「官方」角标(清单里 officialFlag 为 1 时)、 类型角标、应用名、最新版本号、相对时间(「x 天前更新」)、一行简介、 作者(没填时显示「未知作者」),以及右下角那个按钮 —— 已安装时只显示状态且不可点,未安装时是「安装」。

卡片中间还会多出一行:本租户装过、且装着的版本低于市场最新版时,出现 「有新版本(x.y.z),查看详情 或 立即更新」。升级不必先去「我的应用」,在市场卡片上就能做。

详情与版本

点封面或应用名打开详情抽屉(市场页与已安装页共用同一个组件),分三块:

  1. 头部:图标、名称、「官方」标签、安装状态标签(只有已安装页会传这个)、「N 次安装」、 应用编码、「最新 vX」、简介;
  2. 左侧元信息:作者(填了主页时是可点链接)、版本、平台版本(engineRange,「需要平台 …」)、 协议(license)、类型、标签,以及「更多」里的收录时间 / 最后发布 / 当前已装;
  3. 右侧两个标签页:
    • 「简介」:应用自己的说明;
    • 「版本 N」:左边是版本列表(新版本在前,标出「最新」与「已装」,带发布时间), 右边是选中版本的平台版本约束、制品大小、发布日期与更新日志。
更新日志按纯文本渲染

它是上架端填的多行文本、没有经过 HTML 消毒,所以只做文本插值。 写 <b> 这样的标签只会看到标签本身,不会被当富文本执行。

详情拉不到不会挡住你

详情接口或版本列表接口失败(权限不足、应用已下架)时,抽屉仍会用列表页已经拿到的字段展示 (名称、图标、编码、类型、当前已装版本),不会开出一片空白。

官方版与用户版,对你意味着什么

同一套代码有两种形态,由部署侧的 app-market.edition 决定 —— 不是按用户、也不是按角色:

官方版(official,默认)用户版(client)
目录数据在哪就在本机库里(catalog.mode=local)读官方远端目录(必须 catalog.mode=remote)
上架端(/appconsole)有:应用、版本、分类、安装包上传没有
逛市场 / 安装 / 升级 / 启停 / 卸载 / 任务中心 / 菜单保护都有都有

对普通用户,两种形态只差一件事:用户版里没有「上架」这回事。

  • 上架端相关的接口(/app/console、/app/version、/app/package,以及 /app/category 的写操作) 在用户版一律返回 403 + 明确文案,不是 404,更不是静默失效。静默失效是最坏的一种: 用户版的"上架"写的是本地库,而安装读的是远端目录 —— 放开的话「上架成功」对安装毫无影响;
  • 侧边栏里那棵上架端菜单会被整棵隐藏(连后代),手打 /appconsole 会被前端路由守卫送回首页;
  • 分类的读接口在用户版是放行的 —— 市场页要用它做筛选。
看不到菜单行不等于它们不存在

用户版的 sys_menu 里仍然有那几行上架菜单(平台初始化 SQL 建的,存量部署改不动)。 所以隐藏是「服务端过滤 + 前端兜住」两边一起做的,别拿菜单表判断这套部署是什么形态。

所以「我能不能上架一个应用」的答案是:看这套部署是什么形态,不看你的角色。要上架得在官方版里做。

相关阅读

目录