{{include "header.html"}} {{include "nav.html"}} {{/* 我的订单(orders.html)—— **前台**页面,游客可用。 ⚠️ 本模板**平铺在 views/ 根下**(同 cart.html / checkout.html): front_service.go 的 normalizeViewName 用 `^[A-Za-z0-9_-]+\.html$` 拦子目录。 # 这页解决什么问题 游客下单后没有账号,「我的订单」原本只存在于会员中心(/member/order, Vue 后台路由)。游客点进去 → 路由守卫判未登录 → 404/跳登录页, 于是「我下的单找不到了」。这页给游客一条凭据查询的路。 # 为什么是双因子 联系方式(手机号/邮箱)不是秘密 —— 印在快递单上、写在通讯录里、 泄露在数据倒卖里。只凭它返回订单详情,等于把「收货人姓名 + 详细地址 + 消费金额」建成公开查询接口。叠加用户自己看得见的订单号(24 位数字、 不连续不可枚举)才有足够强度。 # 页面行为 - 已登录 → 立即跳**后台管理端的会员中心**(`/admin/#/member/order`), 前台这页只服务「查单笔」,不是会员的订单列表替代品; - 游客/未登录 → 停留本页,用「手机号或邮箱 + 订单号」查单笔。 # 🚨 为什么已登录要跳后台而不是留在本页 会员中心在**管理端 SPA** 里(frontend 的 `src/views/member/order`), 有状态筛选、确认收货、申请退款等完整操作;而前台这页只能查单笔。 让人工登录的会员在这里查单是功能倒退。 # 关于 `/admin/#/member/order` 这个地址 管理端是 hash 路由(history模式为 hash),且挂在 `admin_path` 下 —— 路径前缀来自 `configs/config.yaml` 的 `admin_path`,**不是硬编码的 /admin**。 这里与 `nav.html` 的「进入后台 /admin#/auth/login」保持同一套写法: 主题里直接写死默认值,改了 admin_path 时跟着改(那一处也有同样注记)。 🚨 注意**不能**写成 `/member/order`:那是 SPA 内部路由, 浏览器直接访问会落到前台的内容路由分派(`front_usecase.Resolve`), 然后因为找不到同名栏目而 404 —— 这正是「游客查订单 404」的同源问题。 数据全部来自 `/api/public/shop/orders/query`(GET,凭据在 query 里)。 客户端**不算钱**:金额、状态文案、按钮可用性全部由服务端给。 */}}

My orders

Enter the email or phone you used at checkout, plus your order number.

Loading…

{{include "footer.html"}} {{/* 🚨 js.html 必须在最后一个 footer include 之后、 之前 include: jQuery 与「加入购物车」的全局脚本都在里面,缺了它加购按钮就是死的。 ⚠️ 页面闭合标签由本文件自己输出(每个可路由页面自有完整 html 壳), js.html 不再代输出 —— 那是 legacy 写法,会让壳的归属分不清。 */}} {{include "js.html"}}