From e836fb33c8450e9f6fbd9a046adb23c04f15cc0e Mon Sep 17 00:00:00 2001 From: jacobxu666 Date: Tue, 15 Sep 2026 10:24:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=99=BB=E5=BD=95=E6=94=B9?= =?UTF-8?q?=E7=94=A8=20hhrs=20=E4=B8=93=E5=B1=9E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=EF=BC=8C=E5=B9=B6=E6=94=B6=E7=B4=A7=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=88=A4=E5=AE=9A=E9=98=B2=E5=81=87=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. http.api.js 登录/验证码地址切到 open-api/hhService/login、open-api/hhService/sendLoginVerifyCode(后端保留 /pingXiang 旧地址转发,旧包不受影响;新包需后端先部署) 2. isBizOk 收紧:无业务码时额外排除网关把 404/错误页包成 HTTP 200 的情况(实测未部署的新地址会返回 {data:{status:404,error:'Not Found'}} 且 errcode=0),避免又被判成成功 验证:7 组判定用例全通过(含 404 包 200、旧后端无 accessToken 等边界);HBuilderX 编译成功;浏览器实测新地址未部署时提示“登录失败”且不写入登录态,其余页面正常、无 JS 错误。 --- common/config.js | 2 +- common/http.api.js | 5 +++-- pages/index/login.vue | 9 +++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/common/config.js b/common/config.js index d9757eb..cbe0328 100644 --- a/common/config.js +++ b/common/config.js @@ -4,7 +4,7 @@ const config = { baseUrl: 'https://dscp-uat.hn12301.net', // 对外统一客服电话,与《用户协议》《隐私协议》公示号码保持一致 servicePhone: '0731-88912301', - // xuchao: open-api/pingXiang/login 强制校验固定 password 字段(后端为 H5 开的旁路), + // xuchao: open-api/hhService/login 强制校验固定 password 字段(后端为 H5 开的旁路, // 前端去掉即登录失败,故集中存放并在此说明;待后端改造 H5 免密登录后删除。 loginFixedPassword: '1232321' } diff --git a/common/http.api.js b/common/http.api.js index 112a9fc..ad27f87 100644 --- a/common/http.api.js +++ b/common/http.api.js @@ -1,8 +1,9 @@ // xuchao: 怀化人社 H5 接口清单,与 docs/hhrs-api-doc.md 一一对应 // 基址由 common/http.interceptor.js 统一注入(common/config.js.baseUrl) // 登录 / 云闪付入口 -const LoginUrl = 'open-api/pingXiang/login' -const SendVerifyCodeUrl = 'open-api/pingXiang/sendLoginVerifyCode' +// xuchao: hhrs 专属登录端点(旧地址 open-api/pingXiang/* 由后端兼容层转发,已弃用) +const LoginUrl = 'open-api/hhService/login' +const SendVerifyCodeUrl = 'open-api/hhService/sendLoginVerifyCode' const TokenDecodeUrl = 'open-api/hhService/tokenDecode' // 门店(文旅场馆 typeId=1 / 商户折扣 typeId=2) const StoreListUrl = 'mp-api/hhrsStore/list' diff --git a/pages/index/login.vue b/pages/index/login.vue index 5079987..526c796 100644 --- a/pages/index/login.vue +++ b/pages/index/login.vue @@ -65,14 +65,19 @@ export default { } }, methods: { - // xuchao: open-api/pingXiang/login、sendLoginVerifyCode 返回 OpenapiResponse{code,msg,data}, + // xuchao: open-api/hhService/login、sendLoginVerifyCode 返回 OpenapiResponse{code,msg,data}, // 被网关再包一层后外层 errcode 恒为 0,真正的业务码在 data.code 里。 // 只判 errcode 会把「验证码错误/过期、短信被限流」全部当成成功。 // 宽松兜底:后端若改成不返回 data.code,仍按 errcode 判定,不会把成功误判为失败。 isBizOk(res) { if (!res || res.errcode !== 0) return false const d = res.data - return !d || d.code === undefined || d.code === null || d.code === 200 + if (!d || d.code === undefined || d.code === null) { + // xuchao: 没有业务码时,还要排除“网关把 404/错误页包成 HTTP 200”的情况 + // (实测未部署的新地址会返回 {data:{timestamp,status:404,error:'Not Found'}} 且 errcode=0) + return !d || (d.status === undefined && d.error === undefined) + } + return d.code === 200 }, // xuchao: 失败原因优先取业务 msg,其次取网关 errmsg bizMsg(res) {