feat: 二级页的请求放开

This commit is contained in:
zoujing committed 2026-09-18 11:05:28 +08:00
1 parent e364a4b74f
commit 601de78ac9
2 files changed
+16 -42

No files matched your search

+11 -37
View File
@@ -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;
}
+5 -5
View File
@@ -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/* 下 */