编辑 | blame | 历史 | 原始文档

追溯网址定位授权入口

旧追溯页的“追溯网址”文字仍显示标签印刷所用的 mes.trace-base-url,点击后进入 mes.trace-location-url 配置的完整公网地址,并附带 code 参数;未配置时从当前页生成同目录的绝对网址。授权页以原追溯页的品牌页面为背景。用户主动点击“开启定位并继续”,只有浏览器返回当前位置、且服务端成功保存记录后才在新网址中显示产品追溯内容。定位视图沿用原有背景和版式,把已有真实数据按“生产信息、仓储信息、物流信息”组织;没有来源数据的字段不臆造。直接打开不带追溯码的新网址也可以授权后进入手动查询。拒绝授权、定位失败或保存失败会停留在授权页并给出重试提示。刷新新网址需重新获取位置。

后台“消费者扫码统计”新增“定位授权访问”区块,沿用 mes:trace-consumer-scan:query 权限,可按时间和追溯码查询,显示访问次数、坐标、精度、时间,并可打开地图;热门位置将经纬度分别保留两位小数后聚合(最多 20 处)。记录与原有按 IP 推断省市的扫码事件分开存储,避免影响原统计口径。

上线步骤

  1. 执行 sql/mysql/mes_trace_location_visit.sql。
  2. 部署后端和管理端,确保新静态文件 trace-location.html 与 trace.html 在相同公开路径下;/prod/ 代理应把 /public/mes/trace/location-visit 转发到后端。
  3. 给公众访问入口配置有效域名和 HTTPS 证书,并把 mes.trace-base-url 改成对应的 HTTPS 追溯页地址。旧地址 http://1.95.78.124:9008/prod/trace.html 若仍为 HTTP,普通浏览器无法调用 Geolocation API,授权页会明确提示必须使用 HTTPS。已经印制的旧二维码仍会打开 HTTP,需在服务器上将 HTTP 请求跳转到新 HTTPS 域名,并保留 code 参数。

浏览器定位必须获得用户授权;服务端接收的坐标来自客户端,不能用它作为防伪或到场证明。现有公开 /public/mes/trace/query 接口仍可直接查询,定位限制只作用于新增的“追溯网址”点击路径。若业务要求所有产品追溯查询都强制定位,需要另行改造二维码入口和公开查询接口的鉴权流程。

本地启动使用 application-local.yaml 时,mes.trace-location-required=false,授权页读取公开配置后直接显示定位视图,便于通过 HTTP 调试。默认值为 true,生产 profile 不配置此项时仍要求定位;配置接口失败时前端也不会自动跳过。