From 601de78ac952ff7d396a8b4b42520728fe88b44c Mon Sep 17 00:00:00 2001 From: zoujing Date: Fri, 18 Sep 2026 11:05:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=8C=E7=BA=A7=E9=A1=B5=E7=9A=84?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=94=BE=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/content.js | 48 +++++++++++----------------------------------- src/config/env.js | 10 +++++----- 2 files changed, 16 insertions(+), 42 deletions(-) diff --git a/src/api/content.js b/src/api/content.js index 323fe12..fdcd0d5 100644 --- a/src/api/content.js +++ b/src/api/content.js @@ -1,63 +1,37 @@ /** * 内容数据访问层(唯一数据入口) * --------------------------------------------------------------------------- - * 接口口径分两块: - * 1)内容页链路,4 个端点 —— 数据源见 USE_MOCK_CONTENT(接口未就绪时读 src/mock/v1/*) + * 接口口径分两块,均为真实 /v1 请求: + * 1)内容页链路,4 个端点 * GET /v1/homepage → GET /v1/categories?section_key= → GET /v1/merchants → GET /v1/merchants/:id/detail * 商家归属靠 category_id(分类接口 items[].id),不再有 collection 这一层。 - * 2)公共内容(协议 / 隐私 / 关于 / 客服)—— 走真实接口 + * 2)公共内容(协议 / 隐私 / 关于 / 客服) * GET /v1/content(列表,登录同意版本号取这里) + GET /v1/content/:key(单条详情) */ import { AGREEMENT_DATE, CUSTOMER_SERVICE_PHONE, CUSTOMER_SERVICE_TIME } from "@/constant"; -import { USE_MOCK_CONTENT } from "@/config/env"; import { clone, cnDate, unique } from "@/utils"; import { applyLocalState, toPublicCard } from "@/api/benefit"; -// 首页已切真实接口,mock 保留注释便于回退 -// import homepageMock from "@/mock/v1/homepage.json"; -import categoriesMock from "@/mock/v1/categories.json"; -import merchantsMock from "@/mock/v1/merchants.json"; -import detailsMock from "@/mock/v1/merchant-details.json"; import * as contentApi from "@/request/api/content"; -/** 首页聚合(品牌 / hero / 板块卡 / 精选推荐 / 导览 / 页脚)—— 走真实接口 */ -export const getHomepage = async () => { - // if (USE_MOCK_CONTENT) return clone(homepageMock); - return contentApi.fetchHomepage(); -}; +/** 首页聚合(品牌 / hero / 板块卡 / 精选推荐 / 导览 / 页脚) */ +export const getHomepage = async () => contentApi.fetchHomepage(); -/** - * 板块分类导航。 - * ⚠️ mock 阶段固定返回「龙里票根经济」(scenic)的数据,与传入 section_key 无关; - * 后端接口就绪后把 USE_MOCK_CONTENT 置 false 即按参数真实取数。 - */ -export const getCategories = async (sectionKey) => { - if (!USE_MOCK_CONTENT) return contentApi.fetchCategories(sectionKey); - return clone(categoriesMock); -}; +/** 板块分类导航 */ +export const getCategories = async (sectionKey) => contentApi.fetchCategories(sectionKey); /** 商家列表:section_key 一次取全,前端按 category_id 归组到分类下 */ -export const getMerchants = async (params = {}) => { - if (!USE_MOCK_CONTENT) return contentApi.fetchMerchants(params); - return clone(merchantsMock); -}; +export const getMerchants = async (params = {}) => contentApi.fetchMerchants(params); /** * 商家详情:一次返回商家 + 权益 + 同类推荐。 * 内嵌权益是接口的 PublicBenefitView(status 恒为 published), - * 出参前统一转成卡片模型(四态 + 剩余名额),判定口径与权益中心同一套。 + * 出参前先叠本地领取状态,再统一转成卡片模型(四态 + 剩余名额),判定口径与权益中心同一套。 */ export const getMerchantDetail = async (id) => { - let data; - if (USE_MOCK_CONTENT) { - const hit = (detailsMock.items || []).find((d) => d.id === id); - data = hit ? clone(hit) : null; - } else { - data = await contentApi.fetchMerchantDetail(id); - } + const data = await contentApi.fetchMerchantDetail(id); if (!data) return null; if (data.benefits) { - // mock 阶段先叠本地领取状态,再统一转卡片模型 - const items = USE_MOCK_CONTENT ? applyLocalState(data.benefits.items || []) : data.benefits.items || []; + const items = applyLocalState(data.benefits.items || []); data.benefits.items = items.map(toPublicCard); data.benefits.total = data.benefits.items.length; } diff --git a/src/config/env.js b/src/config/env.js index 8062b18..ad9600d 100644 --- a/src/config/env.js +++ b/src/config/env.js @@ -6,13 +6,13 @@ * 页面禁止硬编码 OSS 域名或拼接路径;本文件只保留兜底占位图与合法域名说明。 * - 接口 baseURL 集中在此,多环境切换只改这一个文件。 * - * 数据源开关只剩内容页链路与权益(同一后端 BASE_URL_V1 的 /v1/*): - * - USE_MOCK_CONTENT:首页 / 分类 / 商家 / 商家详情 / 权益。true 时读 src/mock/v1/*。 - * 公共内容(协议·隐私·关于·客服)与用户域(登录 / 资料 / 头像 / 退出 / 注销) - * 已切真实接口,不再有 mock 分支。 + * 数据源开关只剩权益(同一后端 BASE_URL_V1 的 /v1/*): + * - USE_MOCK_CONTENT:权益(公开权益列表 / 我的权益 / 领取 / 使用)。true 时读 src/mock/v1/*。 + * 首页 / 分类 / 商家列表 / 商家详情、公共内容(协议·隐私·关于·客服) + * 与用户域(登录 / 资料 / 头像 / 退出 / 注销)已切真实接口,不再有 mock 分支。 */ -/** 内容页链路 + 权益:仍读本地数据 */ +/** 权益:仍读本地数据 */ export const USE_MOCK_CONTENT = true; /** 后端接口地址(商家权益平台),全部端点都挂在它的 /v1/* 下 */