diff --git a/package.json b/package.json index 5ad26bd..af91dba 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "build:mp-weixin": "node ./node_modules/@dcloudio/vite-plugin-uni/bin/uni.js build -p mp-weixin --mode production", "dev:h5": "node ./node_modules/@dcloudio/vite-plugin-uni/bin/uni.js", "build:h5": "node ./node_modules/@dcloudio/vite-plugin-uni/bin/uni.js build", - "build:mock": "node ./scripts/build-mock.mjs", "build:icons": "node ./scripts/build-icons.mjs" }, "dependencies": { diff --git a/scripts/build-mock.mjs b/scripts/build-mock.mjs deleted file mode 100644 index 7affa20..0000000 --- a/scripts/build-mock.mjs +++ /dev/null @@ -1,199 +0,0 @@ -/** - * 一次性数据构建脚本:把 DuohuaDiscovery 的 miniprogram_data.json - * 拆成小程序运行期使用的 mock 数据(字段与未来接口同构)。 - * - * 运行:node scripts/build-mock.mjs - */ -import fs from "node:fs"; -import path from "node:path"; - -const ROOT = path.resolve(import.meta.dirname, ".."); -const SRC = "/Users/gleen/OneFeel/YGChatCS/src/pages/DuohuaDiscovery/data/miniprogram_data.json"; -const OUT = path.join(ROOT, "src/mock"); - -const data = JSON.parse(fs.readFileSync(SRC, "utf8")); - -const SECTION_DEFINITIONS = [ - { - key: "tourism", - title: "龙里票根经济", - subtitle: "领取龙里旅游优惠", - coverImage: - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - collections: ["attractions", "attraction_subprojects"], - supportAssetIds: ["tourism-overview-map", "tourism-guide-qr"], - }, - { - key: "lodging", - title: "旅居服务", - subtitle: "酒店 · 民宿别院 · 旅居公寓 · 露营基地", - collections: ["accommodations"], - supportAssetIds: ["lodging-location-schematic", "lodging-guide-qr"], - }, - { - key: "food", - title: "全域美食", - subtitle: "特色菜肴 · 地方小吃 · 甜品饮品", - collections: ["foods"], - supportAssetIds: ["food-guide-qr"], - }, - { - key: "specialties", - title: "龙里特产", - subtitle: "刺梨制品 · 地方食品 · 农产品", - collections: ["specialties"], - supportAssetIds: [], - }, -]; - -const COLLECTIONS = [ - { key: "attractions", label: "景点" }, - { key: "attraction_subprojects", label: "游乐演艺" }, - { key: "accommodations", label: "旅居" }, - { key: "foods", label: "美食" }, - { key: "specialties", label: "特产" }, -]; - -/** 一期 mock:源数据无营业时间字段,统一占位,待运营方按商户补充 */ -const MOCK_BUSINESS_HOURS = "09:00–22:00"; - -const DROP_FIELDS = [ - "issues", - "source", - "source_no", - "images", - "main_image_object_key", - "gallery_object_keys", - "local_relative_path", - "oss_object_key", - "sha256", - "source_file", - "source_page", - "pdf_image_name", - "pdf_x0", - "pdf_top", - "pdf_x1", - "pdf_bottom", - "conversion_note", - "color_mode", -]; - -const trim = (obj) => { - const out = {}; - for (const [k, v] of Object.entries(obj)) { - if (DROP_FIELDS.includes(k)) continue; - if (v === null || v === undefined || v === "") continue; - out[k] = v; - } - return out; -}; - -/** 电话归一:源数据里分隔符混用「—」「–」「-」,统一成半角连字符;另给纯数字供 makePhoneCall */ -const normalizeContact = (item) => { - const raw = item?.contact?.raw || ""; - if (!raw) return null; - const display = raw.replace(/[—–-~~\s]/g, "-").replace(/-+/g, "-").replace(/-$/, ""); - const dial = display.replace(/\D/g, ""); - return { raw, display, dial }; -}; - -/** 地址归一:源数据 address 是对象(含经纬度为 null),页面只用一个字符串;无地址返回空串(页面整行隐藏) */ -const normalizeAddress = (item) => { - const addr = item?.address; - if (!addr) return ""; - if (typeof addr === "string") return addr; - if (addr.raw || addr.normalized) return addr.raw || addr.normalized; - if (addr.township_or_street) { - return [addr.province, addr.prefecture, addr.county, addr.township_or_street].filter(Boolean).join(""); - } - return ""; -}; - -const items = {}; -const counts = {}; - -for (const { key } of COLLECTIONS) { - const list = Array.isArray(data[key]) ? data[key] : []; - let n = 0; - for (const raw of list) { - // 硬约束:过滤 enabled === false - if (raw.enabled === false) continue; - const item = trim(raw); - delete item.enabled; - delete item.address; - item.collection = key; - item.business_hours = item.business_hours || MOCK_BUSINESS_HOURS; - item.contact = normalizeContact(raw); - item.address_text = normalizeAddress(raw); - item.badge = item.subtype || item.category || item.type || ""; - items[raw.id] = item; - n += 1; - } - counts[key] = n; -} - -/** 分组目录:过滤 enabled=false / 空分组,按 type_order -> sort_within_type 排序 */ -const catalog = {}; -for (const { key } of COLLECTIONS) { - const groups = Array.isArray(data?.catalog_by_type?.[key]) ? data.catalog_by_type[key] : []; - catalog[key] = groups - .map((group) => { - const ids = (group.items || []) - .filter((it) => items[it.id]) - .sort((a, b) => (a.sort_within_type ?? 0) - (b.sort_within_type ?? 0)) - .map((it) => it.id); - return { - collection: key, - type_code: group.type_code, - type: group.type, - type_order: group.type_order ?? 0, - item_count: ids.length, - item_ids: ids, - }; - }) - .filter((group) => group.item_count > 0) - .sort((a, b) => a.type_order - b.type_order); -} - -const assets = (data.assets || []).map((a) => ({ - asset_id: a.asset_id, - entity_type: a.entity_type, - entity_id: a.entity_id, - entity_name: a.entity_name, - role: a.role, - sort_order: a.sort_order ?? 0, - oss_url: a.oss_url, - width_px: a.width_px, - height_px: a.height_px, - content_type: a.content_type, -})); - -const sections = SECTION_DEFINITIONS.map((def) => { - const groups = def.collections.flatMap((c) => - catalog[c].map((g) => ({ ...g, groupId: `${c}-${g.type_code}` })) - ); - const ids = groups.flatMap((g) => g.item_ids); - const first = items[ids[0]]; - return { - ...def, - group_count: groups.length, - item_count: ids.length, - group_ids: groups.map((g) => g.groupId), - }; -}); - -const write = (name, payload) => { - const file = path.join(OUT, name); - fs.writeFileSync(file, JSON.stringify(payload, null, 0) + "\n", "utf8"); - const kb = (fs.statSync(file).size / 1024).toFixed(1); - console.log(`${name.padEnd(16)} ${kb} KB`); -}; - -fs.mkdirSync(OUT, { recursive: true }); -write("sections.json", sections); -write("catalog.json", catalog); -write("items.json", items); -write("assets.json", assets); - -console.log("\n集合条数(已过滤 enabled=false):", counts); -console.log("items 总数:", Object.keys(items).length); diff --git a/src/App.vue b/src/App.vue index aafaba6..cc30817 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,14 +1,12 @@ diff --git a/src/api/benefit.js b/src/api/benefit.js index 945e37c..3079a69 100644 --- a/src/api/benefit.js +++ b/src/api/benefit.js @@ -1,19 +1,82 @@ /** * 权益数据访问层(唯一数据入口) * --------------------------------------------------------------------------- - * 核心口径(v0.8 / v0.11): - * - 权益不绑定具体商品、可多次使用;使用只累加 use_count + last_used_at,不失效 - * - 状态机 4 态:available / claimed / expired / sold_out - * - 一期领取与使用记录写本地 storage;二期换成接口(src/request/api/benefit.js) + * 页面与 store 只调用本文件,不直接 import mock。 + * USE_MOCK_CONTENT = true → 读 src/mock/v1/*(已是 /v1 接口响应形态,无需再适配); + * false → 走 src/request/api/benefit.js 的真实 /v1 通道。 + * + * 接口口径: + * - 公开权益 `PublicBenefitView`:status 恒为 published,用户领取态由 + * `already_claimed` / `can_claim` / `claim_unavailable_reason` / `user_benefit_id` 表达。 + * - 已领取实例 `UserBenefitView`:status = available | pending | expired | exhausted | voided, + * `can_use` 直接驱动使用按钮;列表另带 `counts{all, available, invalid}`。 + * - 领取用 benefit_id(模板 id),使用用 user_benefit_id(实例 id)。 + * 出参统一转成卡片模型:四态 status + stock_left + reason, + * 页面与组件只认这一套字段。 */ import { USE_MOCK_CONTENT } from "@/config/env"; import { BENEFIT_STATUS, STORAGE_KEYS } from "@/constant"; import { clone } from "@/utils"; -import benefitsMock from "@/mock/benefits.json"; +import benefitsMock from "@/mock/v1/benefits.json"; +import meBenefitsMock from "@/mock/v1/me-benefits.json"; import * as benefitApi from "@/request/api/benefit"; -/** 本地权益状态:{ [id]: { claimed: true, use_count, last_used_at } } */ -const readLocalState = () => { +/* ---------------- 接口态 → 卡片态 ---------------- */ + +/** 固定有效期是否已过 */ +const isPast = (until) => { + if (!until) return false; + const t = Date.parse(until); + return !Number.isNaN(t) && t < Date.now(); +}; + +/** + * 公开权益四态: + * 已领取 → 有效期未过 = 已领取、已过 = 已失效(接口的 `already_claimed` 不代表仍可用); + * 未领取 → 名额发完 = 已抢光,领取窗口已结束 / 权益失效 = 已失效,其余(含游客、未绑手机号)= 可领取。 + */ +const publicStatus = (b) => { + if (b.already_claimed) return isPast(b.valid_until) ? BENEFIT_STATUS.EXPIRED : BENEFIT_STATUS.CLAIMED; + const reason = b.claim_unavailable_reason || ""; + if (reason === "claim_limit_reached") return BENEFIT_STATUS.SOLD_OUT; + if (reason === "benefit_expired" || reason === "claim_ended") return BENEFIT_STATUS.EXPIRED; + return BENEFIT_STATUS.AVAILABLE; +}; + +/** 公开权益 → 卡片模型(详情页内嵌权益同用,保证两处判定一致) */ +export const toPublicCard = (b) => ({ + ...b, + status: publicStatus(b), + reason: b.claim_unavailable_reason || "", + stock_left: b.total_limit == null ? null : Math.max(0, (b.total_limit || 0) - (b.claim_count || 0)), +}); + +/** 实例态 → 卡片态:可用记「已领取」,未生效 / 过期 / 次数用尽 / 作废统一灰化 */ +const MINE_STATUS = { + available: BENEFIT_STATUS.CLAIMED, + pending: BENEFIT_STATUS.CLAIMED, + expired: BENEFIT_STATUS.EXPIRED, + exhausted: BENEFIT_STATUS.EXPIRED, + voided: BENEFIT_STATUS.EXPIRED, +}; + +const toMineCard = (u) => ({ + ...u, + // 使用接口要的就是 user_benefit_id,实例自身 id 即它 + user_benefit_id: u.id, + status: MINE_STATUS[u.status] || BENEFIT_STATUS.CLAIMED, + reason: u.unavailable_reason || "", + can_use: !!u.can_use, + stock_left: null, +}); + +/* ---------------- mock 阶段:本地领取 / 使用状态 ---------------- */ + +/** + * 没有服务端时,领取与使用要能反映到列表上,故本地叠一层实例状态: + * { [user_benefit_id]: { benefit_id, claimed_at, use_count, last_used_at } } + */ +const readLocal = () => { try { return uni.getStorageSync(STORAGE_KEYS.BENEFIT_STATE) || {}; } catch (e) { @@ -21,122 +84,143 @@ const readLocalState = () => { } }; -const writeLocalState = (state) => { - uni.setStorageSync(STORAGE_KEYS.BENEFIT_STATE, state || {}); -}; +const writeLocal = (state) => uni.setStorageSync(STORAGE_KEYS.BENEFIT_STATE, state || {}); -/** 合并基础数据与本地状态,得到「当前状态」 */ -const mergeState = (benefit, local) => { - const patch = local[benefit.id]; - const next = { ...benefit, ...(patch || {}) }; - if (benefit.status === BENEFIT_STATUS.SOLD_OUT || benefit.status === BENEFIT_STATUS.EXPIRED) { - next.status = benefit.status; - } else if (patch?.claimed) { - next.status = BENEFIT_STATUS.CLAIMED; - } - return next; -}; +const nowIso = () => new Date().toISOString().replace(/\.\d{3}Z$/, "Z"); -const allWithState = () => { - const local = readLocalState(); - return (benefitsMock || []).map((b) => mergeState(b, local)); -}; +const findLocal = (benefitId) => + Object.entries(readLocal()).find(([, st]) => st.benefit_id === benefitId) || null; -/** 合并本地领取状态(内容层的到店权益也走这里,保证「领取后按钮变去使用」一致) */ -export const applyLocalState = (list) => { - const local = readLocalState(); - return (list || []).map((b) => mergeState(b, local)); -}; - -/** 权益中心:可领取 + 已抢光(不含我的权益) */ -export const getBenefitList = async (params = {}) => { - if (!USE_MOCK_CONTENT) return benefitApi.fetchBenefits(params); - let list = allWithState().filter( - (b) => b.status === BENEFIT_STATUS.AVAILABLE || b.status === BENEFIT_STATUS.SOLD_OUT - ); - if (params.type && params.type !== "all") { - list = list.filter((b) => b.type === params.type); - } - return clone(list); -}; - -/** 我的权益:claimed + expired */ -export const getMyBenefitList = async (params = {}) => { - if (!USE_MOCK_CONTENT) return benefitApi.fetchMyBenefits(params); - let list = allWithState().filter( - (b) => b.status === BENEFIT_STATUS.CLAIMED || b.status === BENEFIT_STATUS.EXPIRED - ); - if (params.tab === "usable") list = list.filter((b) => b.status === BENEFIT_STATUS.CLAIMED); - if (params.tab === "invalid") list = list.filter((b) => b.status === BENEFIT_STATUS.EXPIRED); - return clone(list); -}; - -/** 权益中心页头数据行文案 */ -export const getBenefitHeadline = async () => { - const list = allWithState(); - const available = list.filter((b) => b.status === BENEFIT_STATUS.AVAILABLE).length; - const claimed = list.filter((b) => b.status === BENEFIT_STATUS.CLAIMED).length; - return `本周上新 ${available} 项 · 已领取 ${claimed} 项 · 剩余名额充足`; -}; - -/** 我的权益数量统计(全部 / 可使用 / 已失效) */ -export const getMyBenefitCounts = async () => { - const list = (await getMyBenefitList()) || []; +/** 套上本地领取状态后的公开权益(领取后按钮要变「去使用」) */ +const withLocalClaim = (b) => { + const hit = findLocal(b.id); + if (!hit) return b; return { - all: list.length, - usable: list.filter((b) => b.status === BENEFIT_STATUS.CLAIMED).length, - invalid: list.filter((b) => b.status === BENEFIT_STATUS.EXPIRED).length, + ...b, + already_claimed: true, + can_claim: false, + claim_unavailable_reason: "already_claimed", + user_benefit_id: hit[0], }; }; -/** 商家关联的到店权益 */ -export const getRelatedBenefits = async (entityId) => { - if (!USE_MOCK_CONTENT) return benefitApi.fetchRelatedBenefits(entityId); - const list = allWithState().filter( - (b) => b.related_entity_id === entityId && b.status !== BENEFIT_STATUS.EXPIRED - ); - return clone(list); +const mockCatalog = () => (benefitsMock.items || []).map(withLocalClaim); + +/** 由模板 + 本地状态合成一条已领取实例(形态同 UserBenefitView) */ +const buildInstance = (uid, st) => { + const tpl = (benefitsMock.items || []).find((t) => t.id === st.benefit_id) || {}; + const expired = isPast(tpl.valid_until); + return { + id: uid, + user_id: "", + merchant_id: tpl.merchant_id || "", + merchant_name: tpl.merchant_name || "", + benefit_id: st.benefit_id, + title: tpl.title || "", + description: tpl.description || "", + image_url: tpl.image_url || "", + usage_limit: null, + use_count: st.use_count || 0, + last_used_at: st.last_used_at || null, + valid_from: st.claimed_at, + valid_until: tpl.valid_until || null, + claimed_at: st.claimed_at, + voided_at: null, + status: expired ? "expired" : "available", + can_use: !expired, + unavailable_reason: expired ? "expired" : "", + section_key: tpl.section_key || "", + price: tpl.price, + slogan: tpl.slogan, + scope_desc: tpl.scope_desc, + }; }; -/** 领取权益:写本地状态,不改变可用性质 */ -export const claimBenefit = async (id) => { - if (!USE_MOCK_CONTENT) return benefitApi.claimBenefit(id); - const local = readLocalState(); - local[id] = { ...(local[id] || {}), claimed: true }; - writeLocalState(local); - return { id, status: BENEFIT_STATUS.CLAIMED }; +/** 我的权益实例 = 本地新领取的 + 预置的(按领取时间倒序) */ +const mockMineInstances = () => { + const local = readLocal(); + const templates = benefitsMock.items || []; + const seededIds = new Set((meBenefitsMock.items || []).map((s) => s.id)); + const seeded = (meBenefitsMock.items || []).map((s) => ({ ...s, ...(local[s.id] || {}) })); + const created = Object.entries(local) + // 只认目录里真有的模板,避免历史遗留 / 异常 storage 造出脏实例 + .filter(([uid, st]) => !seededIds.has(uid) && templates.some((t) => t.id === st.benefit_id)) + .map(([uid, st]) => buildInstance(uid, st)); + return [...created, ...seeded].sort((a, b) => (a.claimed_at < b.claimed_at ? 1 : -1)); +}; + +const countsOf = (instances) => ({ + all: instances.length, + available: instances.filter((i) => i.status === "available").length, + invalid: instances.filter((i) => i.status === "expired" || i.status === "exhausted" || i.status === "voided") + .length, +}); + +/* ---------------- 对外接口 ---------------- */ + +/** 权益中心:可领取 + 已抢光(已领取的归「我的权益」,不在中心重复出现) */ +export const getBenefitList = async (params = {}) => { + const type = params.type && params.type !== "all" ? params.type : ""; + if (!USE_MOCK_CONTENT) { + const res = await benefitApi.fetchBenefits(type ? { section_key: type } : {}); + return ((res && res.items) || []).map(toPublicCard).filter((b) => !b.already_claimed); + } + let list = mockCatalog().map(toPublicCard).filter((b) => !b.already_claimed); + if (type) list = list.filter((b) => b.section_key === type); + return clone(list); }; /** - * 记录一次使用:只累加次数与时间,**不使权益失效**(无幂等约束) + * 我的权益:items + counts。 + * status 固定取 all 由前端切页签,保证 counts 是「全部」口径(服务端 counts 不受页签影响)。 */ -export const useBenefit = async (id) => { - if (!USE_MOCK_CONTENT) return benefitApi.useBenefit(id); - const local = readLocalState(); - const prev = local[id] || { claimed: true }; - const next = { - ...prev, - claimed: true, - use_count: (prev.use_count || 0) + 1, - last_used_at: formatNow(), - }; - local[id] = next; - writeLocalState(local); - return { id, ...next }; +export const getMyBenefitList = async () => { + if (!USE_MOCK_CONTENT) { + const res = await benefitApi.fetchMyBenefits({ status: "all" }); + const items = ((res && res.items) || []).map(toMineCard); + const c = (res && res.counts) || {}; + return { + items, + total: (res && res.total) || items.length, + counts: { all: c.all || 0, usable: c.available || 0, invalid: c.invalid || 0 }, + }; + } + const instances = mockMineInstances(); + const c = countsOf(instances); + return { items: clone(instances.map(toMineCard)), total: c.all, counts: { all: c.all, usable: c.available, invalid: c.invalid } }; }; -const formatNow = () => { - const d = new Date(); - const p = (n) => String(n).padStart(2, "0"); - return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`; +/** 领取权益:入参是公开模板 id(benefit_id),返回领取后的实例 */ +export const claimBenefit = async (id) => { + if (!USE_MOCK_CONTENT) return toMineCard(await benefitApi.claimBenefit(id)); + const local = readLocal(); + const uid = `user-${id}`; + local[uid] = { benefit_id: id, claimed_at: nowIso(), use_count: 0, last_used_at: null }; + writeLocal(local); + return clone(toMineCard(buildInstance(uid, local[uid]))); }; +/** 记录一次使用:入参是 user_benefit_id;只累加次数与时间,不使权益失效 */ +export const useBenefit = async (userBenefitId) => { + if (!USE_MOCK_CONTENT) return benefitApi.useBenefit(userBenefitId); + const local = readLocal(); + const seed = local[userBenefitId] || mockMineInstances().find((i) => i.id === userBenefitId) || {}; + local[userBenefitId] = { + benefit_id: seed.benefit_id || "", + claimed_at: seed.claimed_at || nowIso(), + use_count: (seed.use_count || 0) + 1, + last_used_at: nowIso(), + }; + writeLocal(local); + return { id: `usage-${Date.now()}`, user_benefit_id: userBenefitId, used_at: nowIso() }; +}; + +/** 合并本地领取状态(详情页内嵌权益同用,保证领取后按钮一致) */ +export const applyLocalState = (list) => (list || []).map(withLocalClaim); + export default { getBenefitList, getMyBenefitList, - getBenefitHeadline, - getMyBenefitCounts, - getRelatedBenefits, claimBenefit, useBenefit, applyLocalState, diff --git a/src/api/content.js b/src/api/content.js index a6ee03b..346d6b4 100644 --- a/src/api/content.js +++ b/src/api/content.js @@ -6,40 +6,24 @@ * false → 走 src/request/api/content.js 的真实 /v1 通道。 * 两条路返回的字段完全一致,切换只动这个开关。 * - * 接口口径:一个页面链路由 4 个端点组成 - * GET /v1/homepage → GET /v1/categories?section_key= → GET /v1/merchants → GET /v1/merchants/:id/detail - * 商家归属靠 category_id(分类接口 items[].id),不再有 collection 这一层。 + * 接口口径分两块: + * 1)内容页链路,4 个端点 + * GET /v1/homepage → GET /v1/categories?section_key= → GET /v1/merchants → GET /v1/merchants/:id/detail + * 商家归属靠 category_id(分类接口 items[].id),不再有 collection 这一层。 + * 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 { BENEFIT_STATUS } from "@/constant"; -import { clone, unique } from "@/utils"; -import { applyLocalState } from "@/api/benefit"; +import { clone, cnDate, unique } from "@/utils"; +import { applyLocalState, toPublicCard } from "@/api/benefit"; 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 contentsMock from "@/mock/v1/contents.json"; import * as contentApi from "@/request/api/content"; -/** - * 接口的权益只给「领取状态三件套」,页面四态与剩余名额由前端派生: - * already_claimed(优先级最高)→ claimed;claim_limit_reached → sold_out; - * benefit_expired → expired;其余 → available。 - */ -const deriveBenefitStatus = (b) => { - if (b.already_claimed) return BENEFIT_STATUS.CLAIMED; - const reason = b.claim_unavailable_reason || ""; - if (reason === "claim_limit_reached") return BENEFIT_STATUS.SOLD_OUT; - if (reason === "benefit_expired") return BENEFIT_STATUS.EXPIRED; - return BENEFIT_STATUS.AVAILABLE; -}; - -/** PublicBenefitView → 权益卡模型(status 四态 + stock_left 派生) */ -const toCardBenefit = (b) => ({ - ...b, - status: deriveBenefitStatus(b), - stock_left: b.total_limit == null ? null : Math.max(0, (b.total_limit || 0) - (b.claim_count || 0)), -}); - /** 首页聚合(品牌 / hero / 板块卡 / 精选推荐 / 导览 / 页脚) */ export const getHomepage = async () => { if (!USE_MOCK_CONTENT) return contentApi.fetchHomepage(); @@ -64,7 +48,8 @@ export const getMerchants = async (params = {}) => { /** * 商家详情:一次返回商家 + 权益 + 同类推荐。 - * 内嵌权益是接口的 PublicBenefitView(status 恒为 published),出参前统一转成卡片模型。 + * 内嵌权益是接口的 PublicBenefitView(status 恒为 published), + * 出参前统一转成卡片模型(四态 + 剩余名额),判定口径与权益中心同一套。 */ export const getMerchantDetail = async (id) => { let data; @@ -76,10 +61,10 @@ export const getMerchantDetail = async (id) => { } if (!data) return null; if (data.benefits) { - const items = (data.benefits.items || []).map(toCardBenefit); - // mock 阶段再叠一层本地领取状态,领取后按钮才能变「去使用」 - data.benefits.items = USE_MOCK_CONTENT ? applyLocalState(items) : items; - data.benefits.total = items.length; + // mock 阶段先叠本地领取状态,再统一转卡片模型 + const items = USE_MOCK_CONTENT ? applyLocalState(data.benefits.items || []) : data.benefits.items || []; + data.benefits.items = items.map(toPublicCard); + data.benefits.total = data.benefits.items.length; } return data; }; @@ -104,6 +89,107 @@ export const getSectionBannerImages = async (sectionKey) => { return unique(urls.filter(Boolean)).slice(0, 3); }; +/* --------------------------------------------------------------------------- + * 公共内容:协议 / 隐私 / 关于 / 客服 + * 接口的 body 是纯文本,前端统一按行拆成段落,`一、二、…` 行作为小标题。 + * 接口缺失(未配置 / 未启用 / 不在有效窗口 → 404)时回落仓库内的定稿正文, + * 保证合规页不空白。 + * ------------------------------------------------------------------------- */ + +const FALLBACK_TITLE = { + terms: "用户协议", + privacy: "隐私政策", +}; + +/** body → [{ type: "h5" | "p", text }](兼容纯文本与简单 HTML) */ +export const toContentBlocks = (body) => { + const text = String(body || "").trim(); + if (!text) return []; + return text + .replace(/<\/(?:h[1-6]|p|div)>/gi, "\n") + .replace(//gi, "\n") + .replace(/<[^>]+>/g, "") + .split(/\n+/) + .map((s) => s.trim()) + .filter(Boolean) + .map((s) => ({ type: /^[一二三四五六七八九十]+、/.test(s) ? "h5" : "p", text: s })); +}; + +/** body → 段落数组(关于我们这类整段文案) */ +const toParagraphs = (body) => toContentBlocks(body).map((b) => b.text); + +/** 定稿兜底:接口取不到就用仓库内文本 */ +const fallbackContent = (key) => clone((contentsMock.items || []).find((c) => c.key === key) || null); + +/** + * 登录同意项:当前生效的 terms / privacy 版本号(整表取一次)。 + * ⚠️ 这里**不用本地定稿兜底**:版本号必须以服务端为准, + * 拿不到就不提交 consents,由服务端按「尚无有效协议记录」放行或报 403。 + */ +export const getConsentVersions = async () => { + let list; + if (USE_MOCK_CONTENT) list = clone(contentsMock); + else { + try { + list = await contentApi.fetchContents(); + } catch (e) { + return []; + } + } + return ["terms", "privacy"] + .map((key) => { + const hit = ((list && list.items) || []).find((c) => c.key === key); + return hit && hit.version ? { key, version: hit.version } : null; + }) + .filter(Boolean); +}; + +/** 单条内容缓存:公共内容不常变,切页重复进入不再重复请求 */ +const contentCache = {}; + +/** 公共内容详情:key ∈ terms | privacy | about | customer_service | brand */ +export const getContent = async (key) => { + if (contentCache[key]) return clone(contentCache[key]); + let info = null; + if (USE_MOCK_CONTENT) { + info = fallbackContent(key); + } else { + try { + info = (await contentApi.fetchContent(key)) || fallbackContent(key); + } catch (e) { + info = fallbackContent(key); + } + } + if (info) contentCache[key] = info; + return clone(info); +}; + +/** 协议页:标题 + 正文段落 + 更新日期 */ +export const getAgreement = async (type = "privacy") => { + const info = await getContent(type); + return { + title: (info && info.title) || FALLBACK_TITLE[type] || "", + blocks: toContentBlocks(info && info.body), + updatedAt: cnDate(info && info.updated_at) || AGREEMENT_DATE, + }; +}; + +/** 关于我们页:介绍段落 + 联系方式(接口缺字段时回落本地常量) */ +export const getAbout = async () => { + const info = await getContent("about"); + return { + intro: toParagraphs(info && info.body), + phone: (info && info.phone) || CUSTOMER_SERVICE_PHONE, + serviceHours: (info && info.service_hours) || CUSTOMER_SERVICE_TIME, + }; +}; + +/** 联系客服:拨号号码(一期直接 makePhoneCall,不展示正文) */ +export const getCustomerService = async () => { + const info = await getContent("customer_service"); + return { phone: (info && info.phone) || CUSTOMER_SERVICE_PHONE }; +}; + export default { getHomepage, getCategories, @@ -111,4 +197,9 @@ export default { getMerchantDetail, getSectionCover, getSectionBannerImages, + getContent, + getConsentVersions, + getAgreement, + getAbout, + getCustomerService, }; diff --git a/src/api/user.js b/src/api/user.js index d0d2508..ddafefa 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -1,44 +1,50 @@ /** - * 用户 / 登录数据访问层 + * 用户 / 登录 / 本人资料 / 注销 数据访问层(唯一数据入口) * --------------------------------------------------------------------------- - * 真实接口,链路照搬 YGChatCS 的 manager/LoginManager.js + hooks/useGoLogin.js。 - * 网关鉴权靠请求头 clientId = "2"(见 src/config/env.js),不再单独造 mock 用户。 + * 页面与 store 只调用本文件,不直接 import mock。 + * USE_MOCK_USER = true → 读 src/mock/v1/*(已是 /v1 接口响应形态,无需再适配); + * false → 走 src/request/api/me.js 的真实 /v1 通道。 + * 两条路返回的字段完全一致,切换只动这个开关。 * - * 链路: - * 1. uni.login 拿 code - * → POST /auth/oauth2/token(Authorization: Basic custom:custom,form-urlencoded) - * body { openIdCode: [code], grant_type: "wechat", clientId, scope: "server" } - * → access_token / refresh_token 落 storage - * 2. GET /hotelBiz/user/checkUserHasBindPhone → { data: boolean } - * 3. 未绑定 → POST /hotelBiz/user/bindUserPhone { wechatPhoneCode, clientId } + * 接口口径: + * POST /v1/auth/wechat → { token, user, expires_at } + * GET /v1/me → UserView + * POST /v1/me/phone { code } → UserView + * PATCH/v1/me/profile { nickname?, avatar_url? } → UserView + * POST /v1/me/avatar multipart(file) → { image_url, ... } + * POST /v1/me/logout {} → { logged_out } + * POST /v1/me/erasure { confirm: true } → { status_token, status, retryable } + * GET /v1/account-erasure (回执鉴权)→ { status, retryable } + * POST /v1/account-erasure/retry (回执鉴权)→ { status, retryable } * - * 边界说明(避免再造假数据): - * - 昵称 / 头像:后端无对应接口,改由用户主动提供(chooseAvatar + 昵称输入),只写本地 - * storage;不做任何「李龙 / 13888880000」式占位数据,未设置时页面自行显示兜底文案。 - * - 账户注销:后端暂无注销接口(参考项目也没有),一期只清本地登录态与权益记录。 - * - 协议正文:仍取本地定稿文本(USE_MOCK_CONTENT),真实接口已备好,就绪后翻开关即可。 + * 出参统一转成页面内部模型(nickName / avatarUrl / phone / phoneBound), + * 页面不感知 UserView 的下划线字段。 */ -import { CLIENT_ID, USE_MOCK_CONTENT, USE_MOCK_USER } from "@/config/env"; -import { - getRefreshToken, - getUserInfo, - removeAccessToken, - setAccessToken, - setRefreshToken, -} from "@/constant/token"; +import { USE_MOCK_USER } from "@/config/env"; +import { STORAGE_KEYS } from "@/constant"; import { clone } from "@/utils"; -import { ensureEnvReady } from "@/request/base/config"; -import * as loginApi from "@/request/api/login"; +import loginMock from "@/mock/v1/login.json"; +import meMock from "@/mock/v1/me.json"; +import erasureMock from "@/mock/v1/erasure.json"; +import erasureStatusMock from "@/mock/v1/erasure-status.json"; +import * as meApi from "@/request/api/me"; -/** 仅 USE_MOCK_USER = true 的离线调试用;默认关闭 */ -const MOCK_USER = { - id: "longli-mock-user", - nickName: "", - avatarUrl: "", - phone: "", - phoneBound: false, +/** 接口 UserView → 页面内部用户模型 */ +const toUserInfo = (v) => { + if (!v) return null; + return { + id: v.id || "", + nickName: v.nickname || "", + avatarUrl: v.avatar_url || "", + // 接口只回脱敏号,页面直接展示(maskPhone 对已脱敏串原样返回) + phone: v.phone_masked || "", + phoneBound: !!v.phone_bound, + }; }; +/** mock 绑定手机号后的用户视图(真实接口由服务端回吐) */ +const MOCK_BOUND_USER = { ...meMock, phone_bound: true, phone_masked: "+86138****8000" }; + /** 调 wx.login 拿 code(真实链路的第一步) */ export const getWxCode = () => new Promise((resolve, reject) => { @@ -53,221 +59,139 @@ export const getWxCode = () => }); }); -/** token 成对落盘(服务端每次都会回新的 refresh_token) */ -const saveToken = (res = {}) => { - setAccessToken(res.access_token); - setRefreshToken(res.refresh_token); +/** + * 微信一键登录 + * @param {Array<{key: string, version: number}>} consents 已同意的 terms / privacy 版本 + * @returns {Promise<{ token: string, userInfo: object|null }>} + */ +export const wxLogin = async (consents = []) => { + if (USE_MOCK_USER) { + const res = clone(loginMock); + return { token: res.token, userInfo: toUserInfo(res.user) }; + } + const code = await getWxCode(); + const body = { code }; + if (consents.length) body.consents = consents; + const res = await meApi.wechatLogin(body); + return { token: res.token, userInfo: toUserInfo(res.user) }; }; -/** code / refresh_token 换 token,失败抛错由调用方 toast */ -const requestToken = async (params) => { - const res = await loginApi.oauthToken(params); - if (!res || !res.access_token) { - throw new Error((res && (res.message || res.msg)) || "登录失败"); +/** 当前用户视图(昵称 / 头像 / 绑定态一次拿全) */ +export const fetchMe = async () => { + if (USE_MOCK_USER) return toUserInfo(clone(meMock)); + return toUserInfo(await meApi.fetchMe()); +}; + +/** + * 绑定手机号(getPhoneNumber 回调的手机号授权 code) + * @returns {Promise} 最新用户模型 + */ +export const bindPhone = async (phoneCode) => { + if (!phoneCode) throw new Error("未获取到手机号授权 code"); + if (USE_MOCK_USER) return toUserInfo(clone(MOCK_BOUND_USER)); + return toUserInfo(await meApi.bindPhone(phoneCode)); +}; + +/** + * 修改资料:内部键 nickName / avatarUrl → 接口键 nickname / avatar_url + * 省略的字段保持服务端原值;昵称传空串表示清空。 + */ +export const updateProfile = async (patch = {}) => { + const body = {}; + if (patch.nickName !== undefined) body.nickname = patch.nickName; + if (patch.avatarUrl !== undefined) body.avatar_url = patch.avatarUrl; + if (USE_MOCK_USER) { + const next = {}; + if (body.nickname !== undefined) next.nickName = body.nickname; + if (body.avatar_url !== undefined) next.avatarUrl = body.avatar_url; + return next; } - saveToken(res); + return toUserInfo(await meApi.updateProfile(body)); +}; + +/** + * 上传头像:返回可公开访问的 image_url。 + * 上传本身不会设置头像,页面拿到 URL 后再 updateProfile({ avatarUrl })。 + */ +export const uploadAvatar = async (filePath) => { + if (!filePath) throw new Error("未选择头像"); + if (USE_MOCK_USER) return { image_url: filePath, object_key: "", mime_type: "", size_bytes: 0 }; + const res = await meApi.uploadAvatar(filePath); + const imageUrl = (res && res.image_url) || ""; + if (!imageUrl) throw new Error("头像上传失败"); + return { ...res, image_url: imageUrl }; +}; + +/** 退出登录:撤销当前 token 对应的一个会话(不影响其它设备) */ +export const logout = async () => { + if (USE_MOCK_USER) return { logged_out: true }; + return meApi.logout(); +}; + +/* ---------------- 账户注销:申请 → 回执状态 → 重试清理 ---------------- */ + +/** 注销回执(status_token):申请成功即保存,只在此刻返回一次 */ +const readReceipt = () => uni.getStorageSync(STORAGE_KEYS.ERASURE_RECEIPT) || ""; + +const saveReceipt = (token) => uni.setStorageSync(STORAGE_KEYS.ERASURE_RECEIPT, token || ""); + +export const clearReceipt = () => uni.removeStorageSync(STORAGE_KEYS.ERASURE_RECEIPT); + +/** + * 发起注销:成功后服务端立即撤销全部普通会话, + * 回执必须在清理本地登录态之前落盘(否则无法再查进度)。 + * @returns {Promise<{ status_token: string, status: string, retryable: boolean }>} + */ +export const submitErasure = async () => { + if (USE_MOCK_USER) { + const res = clone(erasureMock); + saveReceipt(res.status_token); + return res; + } + const res = await meApi.submitErasure(); + saveReceipt(res && res.status_token); return res; }; -/** - * 微信一键登录:uni.login → OAuth token → 落盘 - * @returns {Promise<{ token: string, refreshToken: string, code: string, userInfo: object|null }>} - */ -export const wxLogin = async () => { - if (USE_MOCK_USER) { - return { token: `mock-token-${Date.now()}`, refreshToken: "", code: "", userInfo: clone(MOCK_USER) }; - } - - // 清掉可能过期的旧 token,避免请求头带上失效凭证 - removeAccessToken(); - // 确保 baseURL 已解析(冷启动与登录并发时共用同一个请求) - await ensureEnvReady(); - const code = await getWxCode(); - const res = await requestToken({ - // 实测:服务端要的是纯值 openIdCode=abc; - // 数组/重复键都会被网关拒(OAuth 2.0 Parameter: openIdCode),故这里直接传字符串 - openIdCode: code, - grant_type: "wechat", - clientId: CLIENT_ID, - scope: "server", - }); - - return { - token: res.access_token, - refreshToken: res.refresh_token || "", - code, - userInfo: getUserInfo(), - }; -}; - -/** - * 用 refresh_token 续期(冷启动 / 登录态过期时用) - * @returns {Promise} - */ -export const refreshAuthLogin = async () => { - if (USE_MOCK_USER) return true; - const refresh = getRefreshToken(); - if (!refresh) throw new Error("没有可用的 refresh_token"); - await requestToken({ - grant_type: "refresh_token", - refresh_token: refresh, - clientId: CLIENT_ID, - scope: "server", - }); - return true; -}; - -/** - * 是否已绑定手机号 - * @returns {Promise} - */ -export const checkUserPhone = async () => { - if (USE_MOCK_USER) return false; - // silent:绑定态探测属于后台同步,失败不弹 toast - const res = await loginApi.checkUserPhone({ silent: true }); - return !!(res && res.data); -}; - -/** - * 已绑定手机号(服务端返回脱敏号,取不到不抛错) - * @returns {Promise} - */ -export const getLoginUserPhone = async () => { - if (USE_MOCK_USER) return ""; +/** 查询注销进度;返回 completed(或回执已失效)即丢弃本地回执 */ +export const fetchErasureStatus = async () => { + const receipt = readReceipt(); + if (!receipt) return null; try { - const res = await loginApi.getLoginUserPhone({}, { silent: true }); - const data = res && res.data; - if (!data) return ""; - return typeof data === "string" ? data : data.phone || ""; + const res = USE_MOCK_USER ? clone(erasureStatusMock) : await meApi.fetchErasureStatus(receipt); + if (res && res.status === "completed") clearReceipt(); + return res; } catch (e) { - return ""; + // 回执过期/无效(401)后没有别的查询凭证,直接丢弃 + if (e && e.statusCode === 401) clearReceipt(); + return null; } }; -/** - * 绑定手机号(getPhoneNumber 回调里的 code) - * @param {string} phoneCode e.detail.code - * @returns {Promise} - */ -export const bindUserPhone = async (phoneCode) => { - if (USE_MOCK_USER) return true; - if (!phoneCode) throw new Error("未获取到手机号授权 code"); - const res = await loginApi.bindUserPhone({ wechatPhoneCode: phoneCode, clientId: CLIENT_ID }); - return !!(res && res.data); -}; - -/** 头像 / 昵称:后端无接口,仅落本地(调用方负责写 storage) */ -export const updateProfile = async (patch) => clone(patch); - -/** - * 账户注销:后端暂无该接口,一期只清本地数据(由 store 侧落盘清理) - */ -export const cancelAccount = async () => ({ success: true }); - -/** 协议页标题 */ -export const getAgreementTitle = (type) => (type === "terms" ? "用户协议" : "隐私政策"); - -/** 本地定稿正文(一期用) */ -const AGREEMENT_TEXT = { - privacy: [ - { - type: "p", - text: "我们非常重视你的个人信息保护。本政策说明龙里文旅小程序如何收集、使用、存储与保护你的个人信息。", - }, - { type: "h5", text: "一、我们收集的信息" }, - { - type: "p", - text: "1. 微信授权信息:在你主动点击登录时,我们获取你的微信身份标识,仅用于建立与识别你的账号。", - }, - { type: "p", text: "2. 手机号:在你主动点击「微信一键绑定」时获取,仅用于领取权益、权益使用与账号找回。" }, - { type: "p", text: "3. 权益记录:你领取与使用权益的时间、权益编号,用于使用校验与纠纷处理。" }, - { type: "h5", text: "二、我们如何使用信息" }, - { type: "p", text: "仅在实现上述功能所必需的范围内使用,不会用于广告推送或向第三方出售。" }, - { type: "h5", text: "三、信息的存储与保护" }, - { type: "p", text: "数据存储于中国境内服务器,传输过程采用 HTTPS 加密。我们采取访问控制与最小权限原则保护你的数据。" }, - { type: "h5", text: "四、你的权利" }, - { type: "p", text: "你可以随时在「我的」页面修改头像与昵称;可以通过「账户注销」删除个人信息与权益记录。" }, - { type: "h5", text: "五、联系我们" }, - { type: "p", text: "如对本政策有疑问,请致电 0854-5630880。" }, - ], - terms: [ - { - type: "p", - text: "欢迎使用龙里文旅小程序。本协议是你与龙里文旅之间就使用本小程序服务所订立的约定,请仔细阅读并同意后使用。", - }, - { type: "h5", text: "一、服务内容" }, - { - type: "p", - text: "本小程序面向贵州省黔南布依族苗族自治州龙里县,提供景区、旅居、美食、特产的内容导览,以及票根权益的领取与使用服务。", - }, - { type: "h5", text: "二、账号与登录" }, - { - type: "p", - text: "你可通过微信一键登录使用本小程序,浏览内容无需登录;领取与使用权益需登录并绑定手机号。未注册的手机号将自动创建账号。", - }, - { type: "h5", text: "三、权益说明" }, - { - type: "p", - text: "权益不绑定具体商品,可多次使用。使用行为仅记录使用次数与时间,不会使权益失效。权益的适用范围与最终解释权归权益提供方所有。", - }, - { type: "h5", text: "四、免责声明" }, - { - type: "p", - text: "站内营业时间、价格、联系方式等信息可能发生变动,请以商户现场公示为准。", - }, - { type: "h5", text: "五、账号注销" }, - { - type: "p", - text: "你可以随时在「我的 → 账户注销」中删除个人信息与权益记录,注销完成后账号将无法恢复。", - }, - { type: "h5", text: "六、联系我们" }, - { type: "p", text: "如对本协议有疑问,请致电 0854-5630880。" }, - ], -}; - -/** - * 把接口返回的协议正文归一化成页面需要的 [{ type, text }] 结构。 - * 兼容三种形态:纯文本 / 富文本 HTML 字符串 / 已带 type 的数组。 - */ -const normalizeAgreement = (res) => { - const data = res && (res.data !== undefined ? res.data : res); - if (Array.isArray(data)) { - return data.map((node) => - typeof node === "string" - ? { type: "p", text: node } - : { type: node.type || "p", text: node.text || node.content || "" } - ); +/** 重试清理:同步尝试一次(最多 10 个头像对象),据此给出即时反馈 */ +export const retryErasure = async () => { + const receipt = readReceipt(); + if (!receipt) return null; + try { + const res = USE_MOCK_USER ? clone(erasureStatusMock) : await meApi.retryErasure(receipt); + if (res && res.status === "completed") clearReceipt(); + return res; + } catch (e) { + if (e && e.statusCode === 401) clearReceipt(); + return null; } - const text = typeof data === "string" ? data : (data && (data.content || data.text)) || ""; - if (!text) return []; - // 逐段拆:HTML 里的标题标签转 h5,其余转 p - return text - .split(/<\/?(?:h[1-6]|p|div|br)[^>]*>/i) - .map((s) => s.replace(/<[^>]+>/g, "").trim()) - .filter(Boolean) - .map((s) => ({ type: /^[一二三四五六七八九十]+、/.test(s) ? "h5" : "p", text: s })); -}; - -/** 协议正文 */ -export const getAgreementContent = async (type = "privacy") => { - if (!USE_MOCK_CONTENT) { - const res = - type === "terms" ? await loginApi.getServiceAgreement() : await loginApi.getPrivacyAgreement(); - const list = normalizeAgreement(res); - if (list.length) return list; - } - return clone(AGREEMENT_TEXT[type] || AGREEMENT_TEXT.privacy); }; export default { getWxCode, wxLogin, - refreshAuthLogin, - checkUserPhone, - getLoginUserPhone, - bindUserPhone, + fetchMe, + bindPhone, updateProfile, - cancelAccount, - getAgreementContent, - getAgreementTitle, + uploadAvatar, + logout, + submitErasure, + fetchErasureStatus, + retryErasure, + clearReceipt, }; diff --git a/src/components/BenefitDialog/index.vue b/src/components/BenefitDialog/index.vue index afe0e3b..4ce5f41 100644 --- a/src/components/BenefitDialog/index.vue +++ b/src/components/BenefitDialog/index.vue @@ -15,7 +15,9 @@ const props = defineProps({ const emit = defineEmits(["close", "confirm"]); const b = computed(() => props.benefit || {}); -const typeLabel = computed(() => BENEFIT_TYPE_LABEL[b.value.type] || "权益"); +/** 类型键与权益卡同源:接口给 section_key,本地数据给 type */ +const typeKey = computed(() => b.value.section_key || b.value.type || ""); +const typeLabel = computed(() => BENEFIT_TYPE_LABEL[typeKey.value] || "权益"); const priceLine = computed(() => { const deal = priceText(b.value.price?.deal); @@ -25,14 +27,15 @@ const priceLine = computed(() => { }); const validLine = computed(() => { - const { valid_from: from, valid_to: to, valid_days: days } = b.value; - if (from && to) return dateRangeText(from, to); + const { valid_from: from, valid_until: until, valid_days: days } = b.value; + if (from && until) return dateRangeText(from, until); if (days) return `领取后 ${days} 天内有效`; - return to ? dateRangeText("", to) : ""; + return until ? dateRangeText("", until) : ""; }); const ruleText = computed( () => + b.value.description || b.value.rule_text || "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。" ); diff --git a/src/config/env.js b/src/config/env.js index a7c0ee2..2193fff 100644 --- a/src/config/env.js +++ b/src/config/env.js @@ -6,45 +6,21 @@ * 页面禁止硬编码 OSS 域名或拼接路径;本文件只保留兜底占位图与合法域名说明。 * - 接口 baseURL 集中在此,多环境切换只改这一个文件。 * - * 数据源分两个方向独立开关: - * - USE_MOCK_CONTENT:内容 / 权益。后端接口尚未提供,一期读 src/mock/*;api 层统一分流,页面无感。 - * - USE_MOCK_USER :登录 / 用户。走真实网关,不再单独造 mock。 + * 数据源分两个方向独立开关,都指同一个后端(BASE_URL_V1 的 /v1/*): + * - USE_MOCK_CONTENT:内容 / 权益 / 公共内容(协议·隐私·关于·客服)。读 src/mock/v1/*。 + * - USE_MOCK_USER :登录 / 本人资料 / 头像 / 退出 / 注销。读 src/mock/v1/*。 + * 两条路返回的字段与接口完全一致,接口就绪后逐个置 false 即切真实请求,页面无感。 */ -/** 内容 / 权益:仍读本地数据 */ +/** 内容 / 权益 / 公共内容:仍读本地数据 */ export const USE_MOCK_CONTENT = true; -/** 登录 / 用户:走真实接口 */ -export const USE_MOCK_USER = false; +/** 登录 / 本人资料 / 注销:仍读本地数据 */ +export const USE_MOCK_USER = true; -/** - * 网关客户端标识。 - * 龙里文旅与 YGChatCS 的「朵朵」是同一个后端客户端(appId 同为 wx23f86d809ae80259), - * 请求头带 clientId: "2" 即可通过网关鉴权。 - */ -export const CLIENT_ID = "2"; - -/** 版本号:发版前递增;服务地址接口用它换当前环境的 httpUrl */ -export const VERSION = "1.0.0"; - -/** 生产网关(服务地址查询接口固定挂在这里) */ -export const BASE_URL_PRO = "https://biz.nianxx.cn"; - -/** 内容接口(/v1/*)地址:商家权益平台,与旧网关是两套后端,不走 versionManager 换址 */ +/** 后端接口地址(商家权益平台),全部端点都挂在它的 /v1/* 下 */ export const BASE_URL_V1 = "https://longli.nianxx.cn"; -/** 测试网关(拉不到服务地址时的兜底) */ -export const BASE_URL_DEV = "https://onefeel.brother7.cn/ingress"; - -/** 服务地址查询路径 */ -export const SERVICE_URL_PATH = "/hotelBiz/versionManager/getInfo"; - -/** - * 联调兜底开关:填了就用它当 baseURL,跳过服务地址接口。 - * 例:export const FORCE_BASE_URL = "https://onefeel.brother7.cn/ingress"; - */ -export const FORCE_BASE_URL = ""; - /** 请求超时(ms) */ export const REQUEST_TIMEOUT = 10000; @@ -54,23 +30,3 @@ export const REQUEST_TIMEOUT = 10000; * 提审前需在小程序后台把该域名加入 downloadFile 合法域名。 */ export const IMAGE_HOST = "one-feel-bucket.oss-cn-guangzhou.aliyuncs.com"; - -/** 本地占位图(仅 binderror 兜底;缺图可由数据层给出默认值) */ -export const PLACEHOLDER_IMAGE = "/static/placeholder.png"; - -const ENV = { - useMockContent: USE_MOCK_CONTENT, - useMockUser: USE_MOCK_USER, - baseUrl: FORCE_BASE_URL || BASE_URL_DEV, - timeout: REQUEST_TIMEOUT, - clientId: CLIENT_ID, - version: VERSION, -}; - -export const getEnvConfig = () => ENV; - -export const setBaseUrl = (url) => { - if (url) ENV.baseUrl = url; -}; - -export default ENV; diff --git a/src/constant/index.js b/src/constant/index.js index 519c54d..eb0d508 100644 --- a/src/constant/index.js +++ b/src/constant/index.js @@ -5,9 +5,10 @@ /** 本地存储键(统一前缀,避免与同宿主其它小程序冲突) */ export const STORAGE_KEYS = { ACCESS_TOKEN: "LONGLI_ACCESS_TOKEN", - REFRESH_TOKEN: "LONGLI_REFRESH_TOKEN", USER_INFO: "LONGLI_USER_INFO", BENEFIT_STATE: "LONGLI_BENEFIT_STATE", + /** 注销状态回执(status_token):申请成功后立即保存,独立于登录态,不随退出登录清除 */ + ERASURE_RECEIPT: "LONGLI_ERASURE_RECEIPT", }; /** 全局事件名 */ @@ -83,7 +84,6 @@ export const SECTION_TITLE = { export const CUSTOMER_SERVICE_PHONE = "0854-5630880"; export const CUSTOMER_SERVICE_TIME = "09:00 - 18:00"; export const OPERATOR_NAME = "智念科技"; -export const APP_VERSION = "v1.0.0"; export const APP_VERSION_FULL = "v1.0.0(Build 100)"; export const REGION_TEXT = "贵州省黔南布依族苗族自治州龙里县"; diff --git a/src/constant/token.js b/src/constant/token.js index 2c4536d..cf17be3 100644 --- a/src/constant/token.js +++ b/src/constant/token.js @@ -1,6 +1,5 @@ /** - * 登录态读写(access_token / refresh_token / 用户信息) - * 与 YGChatCS 的 constant/token.js 同构,只是键名换成 LONGLI_ 前缀。 + * 登录态读写(access_token / 用户信息) */ import { STORAGE_KEYS } from "@/constant"; @@ -14,16 +13,6 @@ export const removeAccessToken = () => { uni.removeStorageSync(STORAGE_KEYS.ACCESS_TOKEN); }; -export const getRefreshToken = () => uni.getStorageSync(STORAGE_KEYS.REFRESH_TOKEN) || ""; - -export const setRefreshToken = (token) => { - uni.setStorageSync(STORAGE_KEYS.REFRESH_TOKEN, token || ""); -}; - -export const removeRefreshToken = () => { - uni.removeStorageSync(STORAGE_KEYS.REFRESH_TOKEN); -}; - export const getUserInfo = () => uni.getStorageSync(STORAGE_KEYS.USER_INFO) || null; export const setUserInfo = (info) => { @@ -36,6 +25,5 @@ export const removeUserInfo = () => { export const clearLoginState = () => { removeAccessToken(); - removeRefreshToken(); removeUserInfo(); }; diff --git a/src/mock/assets.json b/src/mock/assets.json deleted file mode 100644 index c2dce08..0000000 --- a/src/mock/assets.json +++ /dev/null @@ -1,2294 +0,0 @@ -[ - { - "asset_id": "asset-0001", - "content_type": "image/jpeg", - "entity_id": "attraction-001", - "entity_name": "龙里水乡旅游生态城", - "entity_type": "attraction", - "height_px": 490, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1759 - }, - { - "asset_id": "asset-0002", - "content_type": "image/jpeg", - "entity_id": "attraction-001", - "entity_name": "龙里水乡旅游生态城", - "entity_type": "attraction", - "height_px": 624, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 1039 - }, - { - "asset_id": "asset-0003", - "content_type": "image/jpeg", - "entity_id": "attraction-001", - "entity_name": "龙里水乡旅游生态城", - "entity_type": "attraction", - "height_px": 612, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 873 - }, - { - "asset_id": "asset-0004", - "content_type": "image/jpeg", - "entity_id": "attraction-subproject-002", - "entity_name": "龙乡水里·贵秀", - "entity_type": "attraction_subproject", - "height_px": 787, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-002/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1268 - }, - { - "asset_id": "asset-0005", - "content_type": "image/jpeg", - "entity_id": "attraction-subproject-002", - "entity_name": "龙乡水里·贵秀", - "entity_type": "attraction_subproject", - "height_px": 576, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-002/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 835 - }, - { - "asset_id": "asset-0006", - "content_type": "image/jpeg", - "entity_id": "attraction-015", - "entity_name": "莲花四季花海", - "entity_type": "attraction", - "height_px": 745, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1080 - }, - { - "asset_id": "asset-0007", - "content_type": "image/jpeg", - "entity_id": "attraction-015", - "entity_name": "莲花四季花海", - "entity_type": "attraction", - "height_px": 541, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 573 - }, - { - "asset_id": "asset-0008", - "content_type": "image/jpeg", - "entity_id": "attraction-015", - "entity_name": "莲花四季花海", - "entity_type": "attraction", - "height_px": 384, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 570 - }, - { - "asset_id": "asset-0009", - "content_type": "image/jpeg", - "entity_id": "attraction-016", - "entity_name": "姊妹湖花海", - "entity_type": "attraction", - "height_px": 339, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-016/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 605 - }, - { - "asset_id": "asset-0010", - "content_type": "image/jpeg", - "entity_id": "attraction-016", - "entity_name": "姊妹湖花海", - "entity_type": "attraction", - "height_px": 314, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-016/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 605 - }, - { - "asset_id": "asset-0011", - "content_type": "image/png", - "entity_id": "tourism-guide-qr", - "entity_name": "旅游招商手册二维码(旅游指南)", - "entity_type": "support", - "height_px": 400, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/support/qr_codes/tourism-guide-qr.png", - "role": "qr_code", - "sort_order": 1, - "width_px": 400 - }, - { - "asset_id": "asset-0012", - "content_type": "image/jpeg", - "entity_id": "attraction-subproject-001", - "entity_name": "飞越丛林", - "entity_type": "attraction_subproject", - "height_px": 472, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 701 - }, - { - "asset_id": "asset-0013", - "content_type": "image/jpeg", - "entity_id": "attraction-subproject-001", - "entity_name": "飞越丛林", - "entity_type": "attraction_subproject", - "height_px": 469, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 700 - }, - { - "asset_id": "asset-0014", - "content_type": "image/jpeg", - "entity_id": "attraction-subproject-001", - "entity_name": "飞越丛林", - "entity_type": "attraction_subproject", - "height_px": 553, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 368 - }, - { - "asset_id": "asset-0015", - "content_type": "image/jpeg", - "entity_id": "attraction-014", - "entity_name": "龙湖花海", - "entity_type": "attraction", - "height_px": 451, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-014/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 969 - }, - { - "asset_id": "asset-0016", - "content_type": "image/jpeg", - "entity_id": "attraction-014", - "entity_name": "龙湖花海", - "entity_type": "attraction", - "height_px": 451, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-014/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 918 - }, - { - "asset_id": "asset-0017", - "content_type": "image/png", - "entity_id": "tourism-overview-map", - "entity_name": "龙里县全域旅游示意图", - "entity_type": "support", - "height_px": 3262, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/maps/tourism-overview-map.png", - "role": "map", - "sort_order": 1, - "width_px": 2037 - }, - { - "asset_id": "asset-0018", - "content_type": "image/jpeg", - "entity_id": "attraction-006", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "attraction", - "height_px": 460, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1291 - }, - { - "asset_id": "asset-0019", - "content_type": "image/jpeg", - "entity_id": "attraction-006", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "attraction", - "height_px": 853, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 1516 - }, - { - "asset_id": "asset-0020", - "content_type": "image/jpeg", - "entity_id": "attraction-006", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "attraction", - "height_px": 298, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 695 - }, - { - "asset_id": "asset-0021", - "content_type": "image/jpeg", - "entity_id": "attraction-006", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "attraction", - "height_px": 361, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 601 - }, - { - "asset_id": "asset-0022", - "content_type": "image/jpeg", - "entity_id": "attraction-003", - "entity_name": "双龙镇·巫山峡谷", - "entity_type": "attraction", - "height_px": 467, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 800 - }, - { - "asset_id": "asset-0023", - "content_type": "image/jpeg", - "entity_id": "attraction-003", - "entity_name": "双龙镇·巫山峡谷", - "entity_type": "attraction", - "height_px": 467, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 763 - }, - { - "asset_id": "asset-0024", - "content_type": "image/jpeg", - "entity_id": "attraction-003", - "entity_name": "双龙镇·巫山峡谷", - "entity_type": "attraction", - "height_px": 229, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 385 - }, - { - "asset_id": "asset-0025", - "content_type": "image/jpeg", - "entity_id": "attraction-003", - "entity_name": "双龙镇·巫山峡谷", - "entity_type": "attraction", - "height_px": 228, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 385 - }, - { - "asset_id": "asset-0026", - "content_type": "image/jpeg", - "entity_id": "attraction-004", - "entity_name": "龙架山国家森林公园", - "entity_type": "attraction", - "height_px": 571, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 856 - }, - { - "asset_id": "asset-0027", - "content_type": "image/jpeg", - "entity_id": "attraction-004", - "entity_name": "龙架山国家森林公园", - "entity_type": "attraction", - "height_px": 309, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 693 - }, - { - "asset_id": "asset-0028", - "content_type": "image/jpeg", - "entity_id": "attraction-004", - "entity_name": "龙架山国家森林公园", - "entity_type": "attraction", - "height_px": 308, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 536 - }, - { - "asset_id": "asset-0029", - "content_type": "image/jpeg", - "entity_id": "attraction-004", - "entity_name": "龙架山国家森林公园", - "entity_type": "attraction", - "height_px": 308, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 536 - }, - { - "asset_id": "asset-0030", - "content_type": "image/jpeg", - "entity_id": "attraction-007", - "entity_name": "龙里大草原", - "entity_type": "attraction", - "height_px": 976, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 2170 - }, - { - "asset_id": "asset-0031", - "content_type": "image/jpeg", - "entity_id": "attraction-007", - "entity_name": "龙里大草原", - "entity_type": "attraction", - "height_px": 369, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 624 - }, - { - "asset_id": "asset-0032", - "content_type": "image/jpeg", - "entity_id": "attraction-007", - "entity_name": "龙里大草原", - "entity_type": "attraction", - "height_px": 456, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 696 - }, - { - "asset_id": "asset-0033", - "content_type": "image/jpeg", - "entity_id": "attraction-002", - "entity_name": "龙里油画大草原景区", - "entity_type": "attraction", - "height_px": 596, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1158 - }, - { - "asset_id": "asset-0034", - "content_type": "image/jpeg", - "entity_id": "attraction-002", - "entity_name": "龙里油画大草原景区", - "entity_type": "attraction", - "height_px": 322, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 852 - }, - { - "asset_id": "asset-0035", - "content_type": "image/jpeg", - "entity_id": "attraction-002", - "entity_name": "龙里油画大草原景区", - "entity_type": "attraction", - "height_px": 265, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 423 - }, - { - "asset_id": "asset-0036", - "content_type": "image/jpeg", - "entity_id": "attraction-002", - "entity_name": "龙里油画大草原景区", - "entity_type": "attraction", - "height_px": 265, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 422 - }, - { - "asset_id": "asset-0037", - "content_type": "image/jpeg", - "entity_id": "attraction-009", - "entity_name": "贾托山风景区", - "entity_type": "attraction", - "height_px": 1017, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1918 - }, - { - "asset_id": "asset-0038", - "content_type": "image/jpeg", - "entity_id": "attraction-009", - "entity_name": "贾托山风景区", - "entity_type": "attraction", - "height_px": 448, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 836 - }, - { - "asset_id": "asset-0039", - "content_type": "image/jpeg", - "entity_id": "attraction-009", - "entity_name": "贾托山风景区", - "entity_type": "attraction", - "height_px": 450, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 839 - }, - { - "asset_id": "asset-0040", - "content_type": "image/jpeg", - "entity_id": "attraction-010", - "entity_name": "孔雀寨景区", - "entity_type": "attraction", - "height_px": 342, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 423 - }, - { - "asset_id": "asset-0041", - "content_type": "image/jpeg", - "entity_id": "attraction-010", - "entity_name": "孔雀寨景区", - "entity_type": "attraction", - "height_px": 342, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 423 - }, - { - "asset_id": "asset-0042", - "content_type": "image/jpeg", - "entity_id": "attraction-010", - "entity_name": "孔雀寨景区", - "entity_type": "attraction", - "height_px": 342, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 424 - }, - { - "asset_id": "asset-0043", - "content_type": "image/jpeg", - "entity_id": "attraction-011", - "entity_name": "莲花湿地公园", - "entity_type": "attraction", - "height_px": 555, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 979 - }, - { - "asset_id": "asset-0044", - "content_type": "image/jpeg", - "entity_id": "attraction-011", - "entity_name": "莲花湿地公园", - "entity_type": "attraction", - "height_px": 522, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 942 - }, - { - "asset_id": "asset-0045", - "content_type": "image/jpeg", - "entity_id": "attraction-011", - "entity_name": "莲花湿地公园", - "entity_type": "attraction", - "height_px": 522, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 941 - }, - { - "asset_id": "asset-0046", - "content_type": "image/jpeg", - "entity_id": "attraction-012", - "entity_name": "龙门镇", - "entity_type": "attraction", - "height_px": 517, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 898 - }, - { - "asset_id": "asset-0047", - "content_type": "image/jpeg", - "entity_id": "attraction-012", - "entity_name": "龙门镇", - "entity_type": "attraction", - "height_px": 383, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 508 - }, - { - "asset_id": "asset-0048", - "content_type": "image/jpeg", - "entity_id": "attraction-012", - "entity_name": "龙门镇", - "entity_type": "attraction", - "height_px": 516, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 376 - }, - { - "asset_id": "asset-0049", - "content_type": "image/jpeg", - "entity_id": "attraction-012", - "entity_name": "龙门镇", - "entity_type": "attraction", - "height_px": 251, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 484 - }, - { - "asset_id": "asset-0050", - "content_type": "image/jpeg", - "entity_id": "attraction-008", - "entity_name": "十里刺梨沟景区", - "entity_type": "attraction", - "height_px": 419, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 638 - }, - { - "asset_id": "asset-0051", - "content_type": "image/jpeg", - "entity_id": "attraction-008", - "entity_name": "十里刺梨沟景区", - "entity_type": "attraction", - "height_px": 418, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 637 - }, - { - "asset_id": "asset-0052", - "content_type": "image/jpeg", - "entity_id": "attraction-008", - "entity_name": "十里刺梨沟景区", - "entity_type": "attraction", - "height_px": 417, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 638 - }, - { - "asset_id": "asset-0053", - "content_type": "image/jpeg", - "entity_id": "attraction-008", - "entity_name": "十里刺梨沟景区", - "entity_type": "attraction", - "height_px": 433, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 927 - }, - { - "asset_id": "asset-0054", - "content_type": "image/jpeg", - "entity_id": "attraction-013", - "entity_name": "赶场村", - "entity_type": "attraction", - "height_px": 705, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 938 - }, - { - "asset_id": "asset-0055", - "content_type": "image/jpeg", - "entity_id": "attraction-013", - "entity_name": "赶场村", - "entity_type": "attraction", - "height_px": 625, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 938 - }, - { - "asset_id": "asset-0056", - "content_type": "image/jpeg", - "entity_id": "attraction-013", - "entity_name": "赶场村", - "entity_type": "attraction", - "height_px": 624, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 837 - }, - { - "asset_id": "asset-0057", - "content_type": "image/jpeg", - "entity_id": "attraction-013", - "entity_name": "赶场村", - "entity_type": "attraction", - "height_px": 553, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 830 - }, - { - "asset_id": "asset-0058", - "content_type": "image/jpeg", - "entity_id": "attraction-005", - "entity_name": "龙里河大桥", - "entity_type": "attraction", - "height_px": 507, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-005/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 932 - }, - { - "asset_id": "asset-0059", - "content_type": "image/jpeg", - "entity_id": "attraction-005", - "entity_name": "龙里河大桥", - "entity_type": "attraction", - "height_px": 553, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-005/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 841 - }, - { - "asset_id": "asset-0060", - "content_type": "image/png", - "entity_id": "food-guide-qr", - "entity_name": "旅游招商手册二维码(美食指南)", - "entity_type": "support", - "height_px": 245, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/support/qr_codes/food-guide-qr.png", - "role": "qr_code", - "sort_order": 1, - "width_px": 245 - }, - { - "asset_id": "asset-0061", - "content_type": "image/jpeg", - "entity_id": "food-001", - "entity_name": "野生菌肉饼鸡", - "entity_type": "food", - "height_px": 730, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 972 - }, - { - "asset_id": "asset-0062", - "content_type": "image/jpeg", - "entity_id": "food-001", - "entity_name": "野生菌肉饼鸡", - "entity_type": "food", - "height_px": 334, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 500 - }, - { - "asset_id": "asset-0063", - "content_type": "image/jpeg", - "entity_id": "food-001", - "entity_name": "野生菌肉饼鸡", - "entity_type": "food", - "height_px": 312, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 466 - }, - { - "asset_id": "asset-0064", - "content_type": "image/jpeg", - "entity_id": "food-002", - "entity_name": "龙里辣子鸡", - "entity_type": "food", - "height_px": 543, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 472 - }, - { - "asset_id": "asset-0065", - "content_type": "image/jpeg", - "entity_id": "food-002", - "entity_name": "龙里辣子鸡", - "entity_type": "food", - "height_px": 275, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 495 - }, - { - "asset_id": "asset-0066", - "content_type": "image/jpeg", - "entity_id": "food-002", - "entity_name": "龙里辣子鸡", - "entity_type": "food", - "height_px": 258, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 494 - }, - { - "asset_id": "asset-0067", - "content_type": "image/jpeg", - "entity_id": "specialty-004", - "entity_name": "刺梨养生茶", - "entity_type": "specialty", - "height_px": 332, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-004/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 508 - }, - { - "asset_id": "asset-0068", - "content_type": "image/png", - "entity_id": "specialty-006", - "entity_name": "刺梨葛根面", - "entity_type": "specialty", - "height_px": 285, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-006/01.png", - "role": "main", - "sort_order": 1, - "width_px": 421 - }, - { - "asset_id": "asset-0069", - "content_type": "image/jpeg", - "entity_id": "specialty-005", - "entity_name": "刺梨膳食纤维片", - "entity_type": "specialty", - "height_px": 332, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-005/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 471 - }, - { - "asset_id": "asset-0070", - "content_type": "image/jpeg", - "entity_id": "specialty-008", - "entity_name": "龙哩邓氏辣子鸡", - "entity_type": "specialty", - "height_px": 313, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-008/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 619 - }, - { - "asset_id": "asset-0071", - "content_type": "image/jpeg", - "entity_id": "specialty-009", - "entity_name": "龙缘盛豆干", - "entity_type": "specialty", - "height_px": 302, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-009/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 404 - }, - { - "asset_id": "asset-0072", - "content_type": "image/jpeg", - "entity_id": "specialty-010", - "entity_name": "鱼稻香羊场大米", - "entity_type": "specialty", - "height_px": 258, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-010/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 316 - }, - { - "asset_id": "asset-0073", - "content_type": "image/jpeg", - "entity_id": "specialty-011", - "entity_name": "康吉金丝皇菊", - "entity_type": "specialty", - "height_px": 258, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-011/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 342 - }, - { - "asset_id": "asset-0074", - "content_type": "image/png", - "entity_id": "specialty-001", - "entity_name": "刺梨干", - "entity_type": "specialty", - "height_px": 326, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-001/01.png", - "role": "main", - "sort_order": 1, - "width_px": 326 - }, - { - "asset_id": "asset-0075", - "content_type": "image/jpeg", - "entity_id": "specialty-002", - "entity_name": "刺梨汁", - "entity_type": "specialty", - "height_px": 279, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-002/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 255 - }, - { - "asset_id": "asset-0076", - "content_type": "image/jpeg", - "entity_id": "specialty-003", - "entity_name": "刺梨原汁", - "entity_type": "specialty", - "height_px": 358, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-003/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 387 - }, - { - "asset_id": "asset-0077", - "content_type": "image/jpeg", - "entity_id": "specialty-007", - "entity_name": "千优谷刺梨果脯", - "entity_type": "specialty", - "height_px": 262, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-007/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 186 - }, - { - "asset_id": "asset-0078", - "content_type": "image/jpeg", - "entity_id": "food-005", - "entity_name": "醒狮豆腐圆子", - "entity_type": "food", - "height_px": 498, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-005/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 750 - }, - { - "asset_id": "asset-0079", - "content_type": "image/jpeg", - "entity_id": "food-005", - "entity_name": "醒狮豆腐圆子", - "entity_type": "food", - "height_px": 499, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-005/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 535 - }, - { - "asset_id": "asset-0080", - "content_type": "image/jpeg", - "entity_id": "food-007", - "entity_name": "湾滩河稻花鱼", - "entity_type": "food", - "height_px": 276, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 366 - }, - { - "asset_id": "asset-0081", - "content_type": "image/jpeg", - "entity_id": "food-007", - "entity_name": "湾滩河稻花鱼", - "entity_type": "food", - "height_px": 265, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 358 - }, - { - "asset_id": "asset-0082", - "content_type": "image/jpeg", - "entity_id": "food-007", - "entity_name": "湾滩河稻花鱼", - "entity_type": "food", - "height_px": 265, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 354 - }, - { - "asset_id": "asset-0083", - "content_type": "image/jpeg", - "entity_id": "food-007", - "entity_name": "湾滩河稻花鱼", - "entity_type": "food", - "height_px": 240, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 358 - }, - { - "asset_id": "asset-0084", - "content_type": "image/jpeg", - "entity_id": "food-009", - "entity_name": "烤全羊", - "entity_type": "food", - "height_px": 850, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-009/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1080 - }, - { - "asset_id": "asset-0085", - "content_type": "image/jpeg", - "entity_id": "food-010", - "entity_name": "干锅马肉", - "entity_type": "food", - "height_px": 561, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-010/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 671 - }, - { - "asset_id": "asset-0086", - "content_type": "image/jpeg", - "entity_id": "food-010", - "entity_name": "干锅马肉", - "entity_type": "food", - "height_px": 272, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-010/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 377 - }, - { - "asset_id": "asset-0087", - "content_type": "image/jpeg", - "entity_id": "food-012", - "entity_name": "酸汤鱼", - "entity_type": "food", - "height_px": 436, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-012/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 433 - }, - { - "asset_id": "asset-0088", - "content_type": "image/jpeg", - "entity_id": "food-013", - "entity_name": "豆米火锅", - "entity_type": "food", - "height_px": 463, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-013/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 622 - }, - { - "asset_id": "asset-0089", - "content_type": "image/jpeg", - "entity_id": "food-017", - "entity_name": "炖鸡粉", - "entity_type": "food", - "height_px": 304, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-017/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 450 - }, - { - "asset_id": "asset-0090", - "content_type": "image/jpeg", - "entity_id": "food-016", - "entity_name": "辣鸡粉", - "entity_type": "food", - "height_px": 288, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-016/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 390 - }, - { - "asset_id": "asset-0091", - "content_type": "image/jpeg", - "entity_id": "food-022", - "entity_name": "洋芋粑粑", - "entity_type": "food", - "height_px": 417, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-022/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 629 - }, - { - "asset_id": "asset-0092", - "content_type": "image/jpeg", - "entity_id": "food-023", - "entity_name": "糯米糖", - "entity_type": "food", - "height_px": 426, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-023/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 659 - }, - { - "asset_id": "asset-0093", - "content_type": "image/jpeg", - "entity_id": "food-024", - "entity_name": "红糖糍粑", - "entity_type": "food", - "height_px": 296, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-024/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 449 - }, - { - "asset_id": "asset-0094", - "content_type": "image/jpeg", - "entity_id": "food-004", - "entity_name": "柴火鸡", - "entity_type": "food", - "height_px": 414, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-004/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 537 - }, - { - "asset_id": "asset-0095", - "content_type": "image/jpeg", - "entity_id": "food-004", - "entity_name": "柴火鸡", - "entity_type": "food", - "height_px": 594, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-004/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 480 - }, - { - "asset_id": "asset-0096", - "content_type": "image/jpeg", - "entity_id": "food-006", - "entity_name": "酸汤毛肚火锅", - "entity_type": "food", - "height_px": 380, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-006/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 634 - }, - { - "asset_id": "asset-0097", - "content_type": "image/jpeg", - "entity_id": "food-006", - "entity_name": "酸汤毛肚火锅", - "entity_type": "food", - "height_px": 378, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-006/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 620 - }, - { - "asset_id": "asset-0098", - "content_type": "image/jpeg", - "entity_id": "food-008", - "entity_name": "农家腊肉", - "entity_type": "food", - "height_px": 700, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-008/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 526 - }, - { - "asset_id": "asset-0099", - "content_type": "image/jpeg", - "entity_id": "food-008", - "entity_name": "农家腊肉", - "entity_type": "food", - "height_px": 526, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-008/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 331 - }, - { - "asset_id": "asset-0100", - "content_type": "image/jpeg", - "entity_id": "food-011", - "entity_name": "羊脚火锅", - "entity_type": "food", - "height_px": 450, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-011/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 646 - }, - { - "asset_id": "asset-0101", - "content_type": "image/jpeg", - "entity_id": "food-011", - "entity_name": "羊脚火锅", - "entity_type": "food", - "height_px": 353, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-011/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 507 - }, - { - "asset_id": "asset-0102", - "content_type": "image/jpeg", - "entity_id": "food-014", - "entity_name": "黄豆鸡", - "entity_type": "food", - "height_px": 810, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-014/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 1080 - }, - { - "asset_id": "asset-0103", - "content_type": "image/jpeg", - "entity_id": "food-003", - "entity_name": "特色烤香猪", - "entity_type": "food", - "height_px": 679, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-003/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 806 - }, - { - "asset_id": "asset-0104", - "content_type": "image/jpeg", - "entity_id": "food-021", - "entity_name": "手工丝娃娃", - "entity_type": "food", - "height_px": 304, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-021/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 455 - }, - { - "asset_id": "asset-0105", - "content_type": "image/jpeg", - "entity_id": "food-018", - "entity_name": "手搓冰粉", - "entity_type": "food", - "height_px": 303, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-018/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 423 - }, - { - "asset_id": "asset-0106", - "content_type": "image/jpeg", - "entity_id": "food-019", - "entity_name": "杨梅汤饮品", - "entity_type": "food", - "height_px": 378, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-019/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 462 - }, - { - "asset_id": "asset-0107", - "content_type": "image/jpeg", - "entity_id": "food-020", - "entity_name": "麻辣洋芋片", - "entity_type": "food", - "height_px": 283, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-020/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 426 - }, - { - "asset_id": "asset-0108", - "content_type": "image/jpeg", - "entity_id": "food-015", - "entity_name": "肉丝粉", - "entity_type": "food", - "height_px": 588, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-015/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 461 - }, - { - "asset_id": "asset-0109", - "content_type": "image/jpeg", - "entity_id": "accommodation-001", - "entity_name": "云河酒店", - "entity_type": "accommodation", - "height_px": 533, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 800 - }, - { - "asset_id": "asset-0110", - "content_type": "image/jpeg", - "entity_id": "accommodation-001", - "entity_name": "云河酒店", - "entity_type": "accommodation", - "height_px": 272, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 414 - }, - { - "asset_id": "asset-0111", - "content_type": "image/jpeg", - "entity_id": "accommodation-001", - "entity_name": "云河酒店", - "entity_type": "accommodation", - "height_px": 272, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 413 - }, - { - "asset_id": "asset-0112", - "content_type": "image/jpeg", - "entity_id": "accommodation-001", - "entity_name": "云河酒店", - "entity_type": "accommodation", - "height_px": 272, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 229 - }, - { - "asset_id": "asset-0113", - "content_type": "image/jpeg", - "entity_id": "accommodation-002", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "accommodation", - "height_px": 350, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 527 - }, - { - "asset_id": "asset-0114", - "content_type": "image/jpeg", - "entity_id": "accommodation-002", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "accommodation", - "height_px": 349, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 247 - }, - { - "asset_id": "asset-0115", - "content_type": "image/jpeg", - "entity_id": "accommodation-002", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "accommodation", - "height_px": 184, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 279 - }, - { - "asset_id": "asset-0116", - "content_type": "image/jpeg", - "entity_id": "accommodation-002", - "entity_name": "云从朵花温泉度假中心", - "entity_type": "accommodation", - "height_px": 158, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 279 - }, - { - "asset_id": "asset-0117", - "content_type": "image/png", - "entity_id": "lodging-guide-qr", - "entity_name": "旅游招商手册二维码(旅居指南)", - "entity_type": "support", - "height_px": 245, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/support/qr_codes/lodging-guide-qr.png", - "role": "qr_code", - "sort_order": 1, - "width_px": 245 - }, - { - "asset_id": "asset-0118", - "content_type": "image/jpeg", - "entity_id": "accommodation-019", - "entity_name": "陌上轻雅酒店", - "entity_type": "accommodation", - "height_px": 157, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-019/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 235 - }, - { - "asset_id": "asset-0119", - "content_type": "image/jpeg", - "entity_id": "accommodation-019", - "entity_name": "陌上轻雅酒店", - "entity_type": "accommodation", - "height_px": 157, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-019/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 235 - }, - { - "asset_id": "asset-0120", - "content_type": "image/jpeg", - "entity_id": "accommodation-018", - "entity_name": "丫丫酒店", - "entity_type": "accommodation", - "height_px": 254, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-018/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 366 - }, - { - "asset_id": "asset-0121", - "content_type": "image/jpeg", - "entity_id": "accommodation-003", - "entity_name": "龙里南卓·瞰龙别院", - "entity_type": "accommodation", - "height_px": 209, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 331 - }, - { - "asset_id": "asset-0122", - "content_type": "image/jpeg", - "entity_id": "accommodation-003", - "entity_name": "龙里南卓·瞰龙别院", - "entity_type": "accommodation", - "height_px": 182, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 339 - }, - { - "asset_id": "asset-0123", - "content_type": "image/jpeg", - "entity_id": "accommodation-003", - "entity_name": "龙里南卓·瞰龙别院", - "entity_type": "accommodation", - "height_px": 182, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 255 - }, - { - "asset_id": "asset-0124", - "content_type": "image/jpeg", - "entity_id": "accommodation-003", - "entity_name": "龙里南卓·瞰龙别院", - "entity_type": "accommodation", - "height_px": 182, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 255 - }, - { - "asset_id": "asset-0125", - "content_type": "image/jpeg", - "entity_id": "accommodation-020", - "entity_name": "深高速·悠享公寓", - "entity_type": "accommodation", - "height_px": 247, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 335 - }, - { - "asset_id": "asset-0126", - "content_type": "image/jpeg", - "entity_id": "accommodation-020", - "entity_name": "深高速·悠享公寓", - "entity_type": "accommodation", - "height_px": 247, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 335 - }, - { - "asset_id": "asset-0127", - "content_type": "image/jpeg", - "entity_id": "accommodation-020", - "entity_name": "深高速·悠享公寓", - "entity_type": "accommodation", - "height_px": 246, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 334 - }, - { - "asset_id": "asset-0128", - "content_type": "image/jpeg", - "entity_id": "accommodation-021", - "entity_name": "太阳谷自得公寓", - "entity_type": "accommodation", - "height_px": 157, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-021/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 264 - }, - { - "asset_id": "asset-0129", - "content_type": "image/jpeg", - "entity_id": "accommodation-021", - "entity_name": "太阳谷自得公寓", - "entity_type": "accommodation", - "height_px": 157, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-021/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 263 - }, - { - "asset_id": "asset-0130", - "content_type": "image/jpeg", - "entity_id": "accommodation-017", - "entity_name": "多彩全球大酒店", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 262 - }, - { - "asset_id": "asset-0131", - "content_type": "image/jpeg", - "entity_id": "accommodation-017", - "entity_name": "多彩全球大酒店", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 262 - }, - { - "asset_id": "asset-0132", - "content_type": "image/jpeg", - "entity_id": "accommodation-017", - "entity_name": "多彩全球大酒店", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 262 - }, - { - "asset_id": "asset-0133", - "content_type": "image/jpeg", - "entity_id": "accommodation-017", - "entity_name": "多彩全球大酒店", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 233 - }, - { - "asset_id": "asset-0134", - "content_type": "image/jpeg", - "entity_id": "accommodation-011", - "entity_name": "24°坞别院", - "entity_type": "accommodation", - "height_px": 224, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 336 - }, - { - "asset_id": "asset-0135", - "content_type": "image/jpeg", - "entity_id": "accommodation-011", - "entity_name": "24°坞别院", - "entity_type": "accommodation", - "height_px": 227, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 318 - }, - { - "asset_id": "asset-0136", - "content_type": "image/jpeg", - "entity_id": "accommodation-011", - "entity_name": "24°坞别院", - "entity_type": "accommodation", - "height_px": 224, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 320 - }, - { - "asset_id": "asset-0137", - "content_type": "image/jpeg", - "entity_id": "accommodation-004", - "entity_name": "卢浮宫酒店", - "entity_type": "accommodation", - "height_px": 168, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 253 - }, - { - "asset_id": "asset-0138", - "content_type": "image/jpeg", - "entity_id": "accommodation-004", - "entity_name": "卢浮宫酒店", - "entity_type": "accommodation", - "height_px": 167, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 254 - }, - { - "asset_id": "asset-0139", - "content_type": "image/jpeg", - "entity_id": "accommodation-004", - "entity_name": "卢浮宫酒店", - "entity_type": "accommodation", - "height_px": 167, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 253 - }, - { - "asset_id": "asset-0140", - "content_type": "image/jpeg", - "entity_id": "accommodation-004", - "entity_name": "卢浮宫酒店", - "entity_type": "accommodation", - "height_px": 167, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 250 - }, - { - "asset_id": "asset-0141", - "content_type": "image/jpeg", - "entity_id": "accommodation-005", - "entity_name": "龙里伯爵钻石酒店", - "entity_type": "accommodation", - "height_px": 300, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 483 - }, - { - "asset_id": "asset-0142", - "content_type": "image/jpeg", - "entity_id": "accommodation-005", - "entity_name": "龙里伯爵钻石酒店", - "entity_type": "accommodation", - "height_px": 163, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 253 - }, - { - "asset_id": "asset-0143", - "content_type": "image/jpeg", - "entity_id": "accommodation-005", - "entity_name": "龙里伯爵钻石酒店", - "entity_type": "accommodation", - "height_px": 153, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 264 - }, - { - "asset_id": "asset-0144", - "content_type": "image/jpeg", - "entity_id": "accommodation-005", - "entity_name": "龙里伯爵钻石酒店", - "entity_type": "accommodation", - "height_px": 142, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 264 - }, - { - "asset_id": "asset-0145", - "content_type": "image/jpeg", - "entity_id": "accommodation-005", - "entity_name": "龙里伯爵钻石酒店", - "entity_type": "accommodation", - "height_px": 129, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 253 - }, - { - "asset_id": "asset-0146", - "content_type": "image/jpeg", - "entity_id": "accommodation-006", - "entity_name": "夜郎·云溪酒店", - "entity_type": "accommodation", - "height_px": 632, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 308 - }, - { - "asset_id": "asset-0147", - "content_type": "image/jpeg", - "entity_id": "accommodation-006", - "entity_name": "夜郎·云溪酒店", - "entity_type": "accommodation", - "height_px": 259, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 532 - }, - { - "asset_id": "asset-0148", - "content_type": "image/jpeg", - "entity_id": "accommodation-006", - "entity_name": "夜郎·云溪酒店", - "entity_type": "accommodation", - "height_px": 186, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 248 - }, - { - "asset_id": "asset-0149", - "content_type": "image/jpeg", - "entity_id": "accommodation-006", - "entity_name": "夜郎·云溪酒店", - "entity_type": "accommodation", - "height_px": 186, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 248 - }, - { - "asset_id": "asset-0150", - "content_type": "image/jpeg", - "entity_id": "accommodation-006", - "entity_name": "夜郎·云溪酒店", - "entity_type": "accommodation", - "height_px": 186, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 248 - }, - { - "asset_id": "asset-0151", - "content_type": "image/jpeg", - "entity_id": "accommodation-007", - "entity_name": "珑庭芳大酒店", - "entity_type": "accommodation", - "height_px": 220, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 341 - }, - { - "asset_id": "asset-0152", - "content_type": "image/jpeg", - "entity_id": "accommodation-007", - "entity_name": "珑庭芳大酒店", - "entity_type": "accommodation", - "height_px": 223, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 336 - }, - { - "asset_id": "asset-0153", - "content_type": "image/jpeg", - "entity_id": "accommodation-007", - "entity_name": "珑庭芳大酒店", - "entity_type": "accommodation", - "height_px": 221, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 335 - }, - { - "asset_id": "asset-0154", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 159, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 291 - }, - { - "asset_id": "asset-0155", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 181, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 231 - }, - { - "asset_id": "asset-0156", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 165, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 237 - }, - { - "asset_id": "asset-0157", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 159, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 227 - }, - { - "asset_id": "asset-0158", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 139, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 237 - }, - { - "asset_id": "asset-0159", - "content_type": "image/jpeg", - "entity_id": "accommodation-008", - "entity_name": "维也纳国际酒店", - "entity_type": "accommodation", - "height_px": 139, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/06.jpg", - "role": "gallery", - "sort_order": 6, - "width_px": 237 - }, - { - "asset_id": "asset-0160", - "content_type": "image/jpeg", - "entity_id": "accommodation-009", - "entity_name": "问水温泉小镇闲悦阁酒店", - "entity_type": "accommodation", - "height_px": 171, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 274 - }, - { - "asset_id": "asset-0161", - "content_type": "image/jpeg", - "entity_id": "accommodation-009", - "entity_name": "问水温泉小镇闲悦阁酒店", - "entity_type": "accommodation", - "height_px": 172, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 258 - }, - { - "asset_id": "asset-0162", - "content_type": "image/jpeg", - "entity_id": "accommodation-009", - "entity_name": "问水温泉小镇闲悦阁酒店", - "entity_type": "accommodation", - "height_px": 172, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 258 - }, - { - "asset_id": "asset-0163", - "content_type": "image/jpeg", - "entity_id": "accommodation-009", - "entity_name": "问水温泉小镇闲悦阁酒店", - "entity_type": "accommodation", - "height_px": 172, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 243 - }, - { - "asset_id": "asset-0164", - "content_type": "image/jpeg", - "entity_id": "accommodation-012", - "entity_name": "纪龙酒店", - "entity_type": "accommodation", - "height_px": 183, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 275 - }, - { - "asset_id": "asset-0165", - "content_type": "image/jpeg", - "entity_id": "accommodation-012", - "entity_name": "纪龙酒店", - "entity_type": "accommodation", - "height_px": 183, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 275 - }, - { - "asset_id": "asset-0166", - "content_type": "image/jpeg", - "entity_id": "accommodation-012", - "entity_name": "纪龙酒店", - "entity_type": "accommodation", - "height_px": 184, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 245 - }, - { - "asset_id": "asset-0167", - "content_type": "image/jpeg", - "entity_id": "accommodation-012", - "entity_name": "纪龙酒店", - "entity_type": "accommodation", - "height_px": 184, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 207 - }, - { - "asset_id": "asset-0168", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 226, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 341 - }, - { - "asset_id": "asset-0169", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 226, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 339 - }, - { - "asset_id": "asset-0170", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 112, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 167 - }, - { - "asset_id": "asset-0171", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 112, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 167 - }, - { - "asset_id": "asset-0172", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 111, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 167 - }, - { - "asset_id": "asset-0173", - "content_type": "image/jpeg", - "entity_id": "accommodation-013", - "entity_name": "西苑锦润酒店", - "entity_type": "accommodation", - "height_px": 111, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/06.jpg", - "role": "gallery", - "sort_order": 6, - "width_px": 167 - }, - { - "asset_id": "asset-0174", - "content_type": "image/jpeg", - "entity_id": "accommodation-015", - "entity_name": "安纳塔拉度假酒店", - "entity_type": "accommodation", - "height_px": 287, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 383 - }, - { - "asset_id": "asset-0175", - "content_type": "image/jpeg", - "entity_id": "accommodation-015", - "entity_name": "安纳塔拉度假酒店", - "entity_type": "accommodation", - "height_px": 287, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 215 - }, - { - "asset_id": "asset-0176", - "content_type": "image/jpeg", - "entity_id": "accommodation-015", - "entity_name": "安纳塔拉度假酒店", - "entity_type": "accommodation", - "height_px": 257, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 208 - }, - { - "asset_id": "asset-0177", - "content_type": "image/jpeg", - "entity_id": "accommodation-015", - "entity_name": "安纳塔拉度假酒店", - "entity_type": "accommodation", - "height_px": 257, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 208 - }, - { - "asset_id": "asset-0178", - "content_type": "image/jpeg", - "entity_id": "accommodation-015", - "entity_name": "安纳塔拉度假酒店", - "entity_type": "accommodation", - "height_px": 126, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 212 - }, - { - "asset_id": "asset-0179", - "content_type": "image/png", - "entity_id": "accommodation-014", - "entity_name": "广莱涵舍", - "entity_type": "accommodation", - "height_px": 176, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/01.png", - "role": "main", - "sort_order": 1, - "width_px": 486 - }, - { - "asset_id": "asset-0180", - "content_type": "image/jpeg", - "entity_id": "accommodation-014", - "entity_name": "广莱涵舍", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 262 - }, - { - "asset_id": "asset-0181", - "content_type": "image/jpeg", - "entity_id": "accommodation-014", - "entity_name": "广莱涵舍", - "entity_type": "accommodation", - "height_px": 175, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 262 - }, - { - "asset_id": "asset-0182", - "content_type": "image/jpeg", - "entity_id": "accommodation-010", - "entity_name": "顽乐尧轻奢露营基地", - "entity_type": "accommodation", - "height_px": 188, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 282 - }, - { - "asset_id": "asset-0183", - "content_type": "image/jpeg", - "entity_id": "accommodation-010", - "entity_name": "顽乐尧轻奢露营基地", - "entity_type": "accommodation", - "height_px": 189, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 251 - }, - { - "asset_id": "asset-0184", - "content_type": "image/jpeg", - "entity_id": "accommodation-010", - "entity_name": "顽乐尧轻奢露营基地", - "entity_type": "accommodation", - "height_px": 188, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 158 - }, - { - "asset_id": "asset-0185", - "content_type": "image/jpeg", - "entity_id": "accommodation-010", - "entity_name": "顽乐尧轻奢露营基地", - "entity_type": "accommodation", - "height_px": 187, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 151 - }, - { - "asset_id": "asset-0186", - "content_type": "image/jpeg", - "entity_id": "accommodation-010", - "entity_name": "顽乐尧轻奢露营基地", - "entity_type": "accommodation", - "height_px": 187, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/05.jpg", - "role": "gallery", - "sort_order": 5, - "width_px": 151 - }, - { - "asset_id": "asset-0187", - "content_type": "image/jpeg", - "entity_id": "accommodation-016", - "entity_name": "隐与·清风与落民宿", - "entity_type": "accommodation", - "height_px": 204, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/01.jpg", - "role": "main", - "sort_order": 1, - "width_px": 363 - }, - { - "asset_id": "asset-0188", - "content_type": "image/jpeg", - "entity_id": "accommodation-016", - "entity_name": "隐与·清风与落民宿", - "entity_type": "accommodation", - "height_px": 148, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/02.jpg", - "role": "gallery", - "sort_order": 2, - "width_px": 363 - }, - { - "asset_id": "asset-0189", - "content_type": "image/jpeg", - "entity_id": "accommodation-016", - "entity_name": "隐与·清风与落民宿", - "entity_type": "accommodation", - "height_px": 98, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/03.jpg", - "role": "gallery", - "sort_order": 3, - "width_px": 185 - }, - { - "asset_id": "asset-0190", - "content_type": "image/jpeg", - "entity_id": "accommodation-016", - "entity_name": "隐与·清风与落民宿", - "entity_type": "accommodation", - "height_px": 98, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/04.jpg", - "role": "gallery", - "sort_order": 4, - "width_px": 173 - }, - { - "asset_id": "asset-0191", - "content_type": "image/jpeg", - "entity_id": "lodging-location-schematic", - "entity_name": "龙里县酒店坐标示意图", - "entity_type": "support", - "height_px": 1294, - "oss_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/maps/lodging-location-schematic.jpg", - "role": "map", - "sort_order": 1, - "width_px": 953 - } -] \ No newline at end of file diff --git a/src/mock/benefits.json b/src/mock/benefits.json deleted file mode 100644 index 099f7f4..0000000 --- a/src/mock/benefits.json +++ /dev/null @@ -1,380 +0,0 @@ -[ - { - "id": "benefit-001", - "title": "龙里水乡单人票权益", - "type": "scenic", - "merchant_id": "attraction-001", - "merchant_name": "龙里水乡旅游生态城", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - "slogan": ["畅游龙里", "拥抱自然"], - "price": { "original": 128, "deal": 88, "spec": "单人票" }, - "scope_desc": "联盟景区 / 游玩商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 200, - "stock_left": 87, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "attraction-001" - }, - { - "id": "benefit-002", - "title": "龙里住宿周末双床房权益", - "type": "stay", - "merchant_id": "accommodation-002", - "merchant_name": "云从朵花温泉度假中心", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/01.jpg", - "slogan": ["住在龙里", "枕山入梦"], - "price": { "original": 468, "deal": 368, "spec": "双床房" }, - "scope_desc": "联盟住宿商户|周末可用", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 120, - "stock_left": 46, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "accommodation-002" - }, - { - "id": "benefit-003", - "title": "龙里餐饮 2-3 人餐权益", - "type": "food", - "merchant_id": "food-002", - "merchant_name": "龙里辣子鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 125, "deal": 99, "spec": "2-3 人餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 300, - "stock_left": 152, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-002" - }, - { - "id": "benefit-004", - "title": "龙里刺梨礼盒特产权益", - "type": "specialty", - "merchant_id": "specialty-001", - "merchant_name": "龙里刺梨干", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-001/01.png", - "slogan": ["带走龙里", "山野好物"], - "price": { "original": 158, "deal": 108, "spec": "刺梨礼盒" }, - "scope_desc": "联盟特产商户|产地直发", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 80, - "stock_left": 0, - "status": "sold_out", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "specialty-001" - }, - { - "id": "benefit-005", - "title": "龙里水乡双人票权益", - "type": "scenic", - "merchant_id": "attraction-001", - "merchant_name": "龙里水乡旅游生态城", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/02.jpg", - "slogan": ["畅游龙里", "拥抱自然"], - "price": { "original": 198, "deal": 148, "spec": "双人票" }, - "scope_desc": "联盟景区 / 游玩商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 150, - "stock_left": 63, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "attraction-001" - }, - { - "id": "benefit-006", - "title": "龙里餐饮 3-5 人餐权益", - "type": "food", - "merchant_id": "food-001", - "merchant_name": "野生菌肉饼鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 250, "deal": 199, "spec": "3-5 人餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 300, - "stock_left": 128, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-001" - }, - { - "id": "benefit-007", - "title": "龙里餐饮 5-7 人套餐权益", - "type": "food", - "merchant_id": "food-002", - "merchant_name": "龙里辣子鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 375, "deal": 299, "spec": "5-7 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 200, - "stock_left": 91, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-002" - }, - { - "id": "benefit-008", - "title": "龙里餐饮 5-9 人套餐权益", - "type": "food", - "merchant_id": "food-001", - "merchant_name": "野生菌肉饼鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 500, "deal": 399, "spec": "5-9 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 160, - "stock_left": 74, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-001" - }, - { - "id": "benefit-009", - "title": "龙里餐饮 7-10 人套餐权益", - "type": "food", - "merchant_id": "food-002", - "merchant_name": "龙里辣子鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 625, "deal": 499, "spec": "7-10 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 120, - "stock_left": 58, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-002" - }, - { - "id": "benefit-010", - "title": "龙里餐饮 9-12 人套餐权益", - "type": "food", - "merchant_id": "food-001", - "merchant_name": "野生菌肉饼鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 750, "deal": 599, "spec": "9-12 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 100, - "stock_left": 41, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-001" - }, - { - "id": "benefit-011", - "title": "龙里餐饮 10-14 人套餐权益", - "type": "food", - "merchant_id": "food-002", - "merchant_name": "龙里辣子鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 1000, "deal": 799, "spec": "10-14 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 60, - "stock_left": 23, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-002" - }, - { - "id": "benefit-012", - "title": "龙里餐饮 10-16 人套餐权益", - "type": "food", - "merchant_id": "food-001", - "merchant_name": "野生菌肉饼鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 1250, "deal": 999, "spec": "10-16 人套餐" }, - "scope_desc": "联盟餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 40, - "stock_left": 12, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-001" - }, - { - "id": "benefit-013", - "title": "龙里刺梨原浆特产权益", - "type": "specialty", - "merchant_id": "specialty-002", - "merchant_name": "龙里刺梨汁", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-002/01.jpg", - "slogan": ["带走龙里", "山野好物"], - "price": { "original": 99, "deal": 69, "spec": "刺梨原浆 2 瓶" }, - "scope_desc": "联盟特产商户|产地直发", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 200, - "stock_left": 118, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "specialty-002" - }, - { - "id": "benefit-101", - "title": "龙里水乡单人票权益", - "type": "scenic", - "merchant_id": "attraction-001", - "merchant_name": "龙里水乡旅游生态城", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - "slogan": ["畅游龙里", "拥抱自然"], - "price": { "original": 128, "deal": 88, "spec": "单人票" }, - "scope_desc": "龙里水乡旅游生态城", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 200, - "stock_left": 87, - "status": "claimed", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 2, - "last_used_at": "2026-09-14 10:22", - "related_entity_id": "attraction-001" - }, - { - "id": "benefit-102", - "title": "龙里住宿双床房权益", - "type": "stay", - "merchant_id": "accommodation-001", - "merchant_name": "云河酒店", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/01.jpg", - "slogan": ["住在龙里", "枕山入梦"], - "price": { "original": 468, "deal": 368, "spec": "双床房" }, - "scope_desc": "云河酒店等联盟住宿商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 120, - "stock_left": 32, - "status": "claimed", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 1, - "last_used_at": "2026-09-13 20:05", - "related_entity_id": "accommodation-001" - }, - { - "id": "benefit-103", - "title": "龙里餐饮 3-5 人餐权益", - "type": "food", - "merchant_id": "food-002", - "merchant_name": "龙里辣子鸡", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", - "slogan": ["寻味龙里", "品味烟火"], - "price": { "original": 250, "deal": 199, "spec": "3-5 人餐" }, - "scope_desc": "龙里辣子鸡等餐饮商户", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 300, - "stock_left": 96, - "status": "claimed", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "food-002" - }, - { - "id": "benefit-104", - "title": "龙里住宿大床房权益", - "type": "stay", - "merchant_id": "accommodation-005", - "merchant_name": "龙里伯爵钻石酒店", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/01.jpg", - "slogan": ["住在龙里", "枕山入梦"], - "price": { "original": 628, "deal": 468, "spec": "大床房" }, - "scope_desc": "龙里伯爵钻石酒店", - "valid_from": "2026-08-01", - "valid_to": "2026-08-31", - "valid_days": 7, - "stock_total": 60, - "stock_left": 0, - "status": "expired", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 1, - "last_used_at": "2026-08-12 18:40", - "related_entity_id": "accommodation-005" - }, - { - "id": "benefit-201", - "title": "云河酒店到店住宿权益", - "type": "stay", - "merchant_id": "accommodation-001", - "merchant_name": "云河酒店", - "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/03.jpg", - "slogan": ["住在龙里", "枕山入梦"], - "price": { "original": 468, "deal": 368, "spec": "双床房" }, - "scope_desc": "云河酒店专享", - "valid_from": "2026-09-12", - "valid_to": "2026-12-31", - "valid_days": 7, - "stock_total": 60, - "stock_left": 28, - "status": "available", - "rule_text": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", - "use_count": 0, - "last_used_at": null, - "related_entity_id": "accommodation-001" - } -] diff --git a/src/mock/catalog.json b/src/mock/catalog.json deleted file mode 100644 index 8d26b18..0000000 --- a/src/mock/catalog.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "accommodations": [ - { - "collection": "accommodations", - "item_count": 14, - "item_ids": [ - "accommodation-001", - "accommodation-002", - "accommodation-004", - "accommodation-005", - "accommodation-006", - "accommodation-007", - "accommodation-008", - "accommodation-009", - "accommodation-012", - "accommodation-013", - "accommodation-015", - "accommodation-017", - "accommodation-018", - "accommodation-019" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - { - "collection": "accommodations", - "item_count": 4, - "item_ids": [ - "accommodation-003", - "accommodation-011", - "accommodation-014", - "accommodation-016" - ], - "type": "民宿别院", - "type_code": "accommodation-homestay", - "type_order": 2 - }, - { - "collection": "accommodations", - "item_count": 2, - "item_ids": [ - "accommodation-020", - "accommodation-021" - ], - "type": "旅居公寓", - "type_code": "accommodation-apartment", - "type_order": 3 - }, - { - "collection": "accommodations", - "item_count": 1, - "item_ids": [ - "accommodation-010" - ], - "type": "露营基地", - "type_code": "accommodation-camping", - "type_order": 4 - } - ], - "attraction_subprojects": [ - { - "collection": "attraction_subprojects", - "item_count": 1, - "item_ids": [ - "attraction-subproject-001" - ], - "type": "游乐体验", - "type_code": "subproject-recreation", - "type_order": 1 - }, - { - "collection": "attraction_subprojects", - "item_count": 1, - "item_ids": [ - "attraction-subproject-002" - ], - "type": "演艺体验", - "type_code": "subproject-performance", - "type_order": 2 - } - ], - "attractions": [ - { - "collection": "attractions", - "item_count": 3, - "item_ids": [ - "attraction-001", - "attraction-003", - "attraction-006" - ], - "type": "综合景区", - "type_code": "attraction-comprehensive", - "type_order": 1 - }, - { - "collection": "attractions", - "item_count": 8, - "item_ids": [ - "attraction-002", - "attraction-004", - "attraction-007", - "attraction-009", - "attraction-011", - "attraction-014", - "attraction-015", - "attraction-016" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - { - "collection": "attractions", - "item_count": 3, - "item_ids": [ - "attraction-008", - "attraction-010", - "attraction-013" - ], - "type": "乡村文旅", - "type_code": "attraction-rural-culture", - "type_order": 3 - }, - { - "collection": "attractions", - "item_count": 1, - "item_ids": [ - "attraction-012" - ], - "type": "主题小镇", - "type_code": "attraction-themed-town", - "type_order": 4 - }, - { - "collection": "attractions", - "item_count": 1, - "item_ids": [ - "attraction-005" - ], - "type": "地标观光", - "type_code": "attraction-landmark", - "type_order": 5 - } - ], - "foods": [ - { - "collection": "foods", - "item_count": 7, - "item_ids": [ - "food-001", - "food-002", - "food-004", - "food-007", - "food-008", - "food-010", - "food-014" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - { - "collection": "foods", - "item_count": 4, - "item_ids": [ - "food-006", - "food-011", - "food-012", - "food-013" - ], - "type": "火锅汤锅", - "type_code": "food-hotpot", - "type_order": 2 - }, - { - "collection": "foods", - "item_count": 3, - "item_ids": [ - "food-015", - "food-016", - "food-017" - ], - "type": "粉面主食", - "type_code": "food-noodles-staple", - "type_order": 3 - }, - { - "collection": "foods", - "item_count": 2, - "item_ids": [ - "food-003", - "food-009" - ], - "type": "烧烤", - "type_code": "food-barbecue", - "type_order": 4 - }, - { - "collection": "foods", - "item_count": 6, - "item_ids": [ - "food-005", - "food-020", - "food-021", - "food-022", - "food-023", - "food-024" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - { - "collection": "foods", - "item_count": 2, - "item_ids": [ - "food-018", - "food-019" - ], - "type": "甜品饮品", - "type_code": "food-dessert-drink", - "type_order": 6 - } - ], - "specialties": [ - { - "collection": "specialties", - "item_count": 7, - "item_ids": [ - "specialty-001", - "specialty-002", - "specialty-003", - "specialty-004", - "specialty-005", - "specialty-006", - "specialty-007" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - { - "collection": "specialties", - "item_count": 2, - "item_ids": [ - "specialty-008", - "specialty-009" - ], - "type": "地方食品", - "type_code": "specialty-local-food", - "type_order": 2 - }, - { - "collection": "specialties", - "item_count": 2, - "item_ids": [ - "specialty-010", - "specialty-011" - ], - "type": "农产品", - "type_code": "specialty-agricultural", - "type_order": 3 - } - ] -} \ No newline at end of file diff --git a/src/mock/items.json b/src/mock/items.json deleted file mode 100644 index 07cf366..0000000 --- a/src/mock/items.json +++ /dev/null @@ -1,3486 +0,0 @@ -{ - "accommodation-001": { - "address_text": "贵州省黔南州龙里县云栖谷·双龙镇巫山峡谷旅游景区内9号院", - "badge": "度假酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08545716666", - "display": "0854-5716666", - "raw": "0854-5716666" - }, - "data_status": "已归类", - "description": "云河酒店位于黔南州龙里县双龙镇巫山峡谷旅游景区内,藏身海拔800米之上、云雾里的悬崖之巅。置身于云河酒店,又仿若身处云端之上的天空之城,能从另一个高度去看看脚下的土地与山河,并回归自然,感受质朴却有品质的生活。进入酒店青石瓦墙,飞檐翘角,仿佛误入了江南水乡的一隅。室内除了现代感十足的艺术品外,空间里不乏充满岁月感的旧物。", - "entity_type": "accommodation", - "facilities": [ - "景观空间", - "艺术陈设" - ], - "facts": [ - { - "label": "海拔", - "note": "以上", - "unit": "米", - "value": 800 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/04.jpg" - ], - "id": "accommodation-001", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/01.jpg", - "name": "云河酒店", - "room_types": [ - ], - "sort_order": 1, - "sort_within_type": 1, - "subtype": "度假酒店", - "tags": [ - "悬崖酒店", - "景区内", - "山景", - "江南风格" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-002": { - "address_text": "贵州省黔南州龙里县龙山镇贵龙纵线比孟村鸡场堡组云从朵花温泉酒店", - "badge": "温泉度假酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188515333", - "display": "0851-88515333", - "raw": "0851-88515333" - }, - "data_status": "已归类", - "description": "地处黔南州龙里县西南部,北接龙溪大道,南临朵花峡谷,依山傍水而建,是隐于闹市之中的一方清净地。云从朵花以朵花峡谷景观及富含微量元素的天然地下矿热水为依托,紧邻世界第一的高山峡谷景观斜拉桥——龙里河大桥,致力于打造黔中首个集特色体验、休闲娱乐、疗养保健、教育学习为核心的综合型山地温泉康养胜地。走进云从朵花,便是徜徉于绿意盎然中,见证人与自然的相得益彰。", - "entity_type": "accommodation", - "facilities": [ - "温泉", - "康养设施", - "休闲娱乐", - "教育学习" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/04.jpg" - ], - "id": "accommodation-002", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/01.jpg", - "name": "云从朵花温泉度假中心", - "room_types": [ - ], - "sort_order": 2, - "sort_within_type": 2, - "subtype": "温泉度假酒店", - "tags": [ - "温泉", - "康养", - "山地度假", - "私汤" - ], - "transport_note": "北接龙溪大道,南临朵花峡谷,紧邻龙里河大桥", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-003": { - "address_text": "贵州省黔南州龙里县龙山镇余下村余下组商业街1号楼2层", - "badge": "度假别院", - "business_hours": "09:00–22:00", - "category": "民宿别院", - "collection": "accommodations", - "contact": { - "dial": "085185848666", - "display": "0851-85848666", - "raw": "0851-85848666" - }, - "data_status": "已归类", - "description": "南卓·瞰龙别院隶属南方卓越集团旗下,是一家集餐饮、住宿、会议服务等为一体的综合性酒店。酒店设有网球、篮球、排球等体育项目,是旅居休闲放松和亲子交流陪伴的理想场所。在这里,春天可以观赏九龙潭两岸的桃花林;夏天桃子、杨梅成熟了,可以置身果林畅享最自然、最新鲜的果实;待到秋冬季来临,两岸银杏随风飘落,满地的金黄灿烂,美得让人陶醉。", - "entity_type": "accommodation", - "facilities": [ - "餐厅", - "会议服务", - "网球", - "篮球", - "排球", - "果园体验" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/04.jpg" - ], - "id": "accommodation-003", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-003/01.jpg", - "name": "龙里南卓·瞰龙别院", - "room_types": [ - ], - "sort_order": 15, - "sort_within_type": 3, - "subtype": "度假别院", - "tags": [ - "餐饮", - "住宿", - "会议", - "体育", - "亲子" - ], - "type": "民宿别院", - "type_code": "accommodation-homestay", - "type_order": 2 - }, - "accommodation-004": { - "address_text": "贵州省双龙航空港经济区贵龙大道与中铁大道交汇处贵阳卢浮宫金熙酒店", - "badge": "文化商务酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188601777", - "display": "0851-88601777", - "raw": "0851-88601777" - }, - "data_status": "已归类", - "description": "卢浮宫酒店是一家集欧洲文化、商务、会议展览、休闲度假的酒店,酒店致力于将欧洲酒店的专业标准与中国底蕴深远的文化相结合,为宾客提供舒适、好客、物超所值的体验。酒店坐落于双龙航空港经济区,拥有轻奢舒适客房、全日制餐厅、法餐厅、宴会厅、商务中心、奢侈品展示、艺术长廊等,是商务及休闲度假人士放松身心的理想港湾。", - "entity_type": "accommodation", - "facilities": [ - "全日制餐厅", - "法餐厅", - "宴会厅", - "商务中心", - "奢侈品展示", - "艺术长廊" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/04.jpg" - ], - "id": "accommodation-004", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-004/01.jpg", - "name": "卢浮宫酒店", - "room_types": [ - ], - "sort_order": 3, - "sort_within_type": 4, - "subtype": "文化商务酒店", - "tags": [ - "欧洲文化", - "商务", - "会议展览", - "休闲度假" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-005": { - "address_text": "贵州省黔南州龙里县环城路伯爵钻石广场", - "badge": "四星级酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08544977777", - "display": "0854-4977777", - "raw": "0854-4977777" - }, - "data_status": "已归类", - "description": "龙里伯爵钻石酒店是一家集住宿、餐饮、会议、休闲等为一体的豪华型四星级高档酒店。酒店分地下一层和地上七层,地处誉称为贵阳市后花园的龙里县中心地带伯爵钻石广场三号楼,周边与购物超市、银行、汽车站仅几步之遥,距高速路口仅几分钟、至贵阳龙洞保机场约25分钟、至贵阳市约35分钟的车程,交通十分便捷。", - "entity_type": "accommodation", - "facilities": [ - "餐饮", - "会议", - "休闲", - "购物配套" - ], - "facts": [ - { - "label": "星级", - "note": "", - "unit": "星", - "value": 4 - }, - { - "label": "地下楼层", - "note": "", - "unit": "层", - "value": 1 - }, - { - "label": "地上楼层", - "note": "", - "unit": "层", - "value": 7 - }, - { - "label": "至机场车程", - "note": "约", - "unit": "分钟", - "value": 25 - }, - { - "label": "至贵阳市车程", - "note": "约", - "unit": "分钟", - "value": 35 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/05.jpg" - ], - "id": "accommodation-005", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/01.jpg", - "name": "龙里伯爵钻石酒店", - "room_types": [ - ], - "sort_order": 4, - "sort_within_type": 5, - "subtype": "四星级酒店", - "tags": [ - "住宿", - "餐饮", - "会议", - "休闲", - "县城中心" - ], - "transport_note": "距高速路口数分钟;至贵阳龙洞堡机场约25分钟;至贵阳市约35分钟", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-006": { - "address_text": "贵州省黔南州龙里县云栖谷·双龙镇58号楼", - "badge": "主题酒店", - "business_hours": "09:00–22:00", - "capacity_people": 34, - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08545164999", - "display": "0854-5164999", - "raw": "0854-5164999" - }, - "data_status": "已归类", - "description": "酒店以日韩风为主题,打造的17间不同文化风格客房,其中:8个精品标间、9个精品景观房,可同时接待34人。酒店三楼有一百平的休闲平台,适合朋友、家人、情侣聚会。休闲厅提供了一张大茶台,适合于谈工作、交流、各类聚会等服务,还可以提供私人定制服务,满足客人的需求。", - "entity_type": "accommodation", - "facilities": [ - "100平方米休闲平台", - "大茶台", - "私人定制服务" - ], - "facts": [ - { - "label": "精品标间", - "note": "", - "unit": "间", - "value": 8 - }, - { - "label": "精品景观房", - "note": "", - "unit": "间", - "value": 9 - }, - { - "label": "休闲平台面积", - "note": "", - "unit": "平方米", - "value": 100 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/05.jpg" - ], - "id": "accommodation-006", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-006/01.jpg", - "name": "夜郎·云溪酒店", - "room_count": 17, - "room_types": [ - "精品标间", - "精品景观房" - ], - "sort_order": 5, - "sort_within_type": 6, - "subtype": "主题酒店", - "tags": [ - "日韩风", - "定制服务", - "聚会", - "景观房" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-007": { - "address_text": "贵州省黔南州龙里县冠山街道金龙东路68号龙城明珠负1-18", - "badge": "高档酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08548938888", - "display": "0854-8938888", - "raw": "0854-8938888" - }, - "data_status": "已归类", - "description": "珑庭芳大酒店坐落于龙里县冠山街道金龙东路,酒店紧靠县政府、国税局、第三小学,地理位置优越,距政府机关、餐厅、购物中心和众多景点步行仅数分钟路程之遥。酒店按照高档酒店修建,以客人和员工合作伙伴为愿景、以服务之遵从服务之荣光为服务宗旨、典雅与精品设计的完美结合,满足不同客人的个性化服务与定制的精选,酒店的宗旨是:“心之所向、心归所属”。", - "entity_type": "accommodation", - "facilities": [ - "餐饮周边", - "购物周边", - "定制服务" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/03.jpg" - ], - "id": "accommodation-007", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-007/01.jpg", - "name": "珑庭芳大酒店", - "room_types": [ - ], - "sort_order": 6, - "sort_within_type": 7, - "subtype": "高档酒店", - "tags": [ - "县城中心", - "商务", - "购物便利" - ], - "transport_note": "紧靠县政府、国税局、第三小学,步行可达餐厅、购物中心和多个景点", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-008": { - "address_text": "贵州省双龙航空港经济区中铁大道太阳谷1组团1区一期酒店1层1号", - "badge": "商务酒店", - "business_hours": "09:00–22:00", - "capacity_people": 300, - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188686999", - "display": "0851-88686999", - "raw": "0851-88686999" - }, - "data_status": "已归类", - "description": "维也纳国际酒店坐落于双龙航空港经济区中铁生态城太阳谷中铁大道。距龙洞堡机场6.6公里、距公交车站只需要三分钟,交通十分便利。酒店拥有豪华单/标间、高级单/标间、家庭/行政套房、棋牌室等客房182间,集客房、多功能会议室、餐饮、健身房等于一体,大会议室可同时容纳300人,实为商务洽谈、旅游观光、休闲娱乐的上佳之选。", - "entity_type": "accommodation", - "facilities": [ - "多功能会议室", - "餐饮", - "健身房" - ], - "facts": [ - { - "label": "距龙洞堡机场", - "note": "", - "unit": "公里", - "value": 6.6 - }, - { - "label": "距公交车站", - "note": "", - "unit": "分钟", - "value": 3 - }, - { - "label": "大会议室容量", - "note": "", - "unit": "人", - "value": 300 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/05.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/06.jpg" - ], - "id": "accommodation-008", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-008/01.jpg", - "name": "维也纳国际酒店", - "room_count": 182, - "room_types": [ - "豪华单间", - "豪华标间", - "高级单间", - "高级标间", - "家庭套房", - "行政套房", - "棋牌室" - ], - "sort_order": 7, - "sort_within_type": 8, - "subtype": "商务酒店", - "tags": [ - "机场交通", - "会议", - "餐饮", - "健身" - ], - "transport_note": "距龙洞堡机场6.6公里;距公交车站约3分钟", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-009": { - "address_text": "贵州省黔南州龙里县云栖谷双龙镇中铁生态城中心三路问水温泉小镇", - "badge": "温泉小镇酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188684777", - "display": "0851-88684777", - "raw": "0851-88684777" - }, - "data_status": "已归类", - "description": "问水温泉小镇闲悦阁酒店位于中铁国际生态城白晶谷,酒店拥有日式大床房、日式双床房等,房间设施设备一应俱全,整体设计素雅、轻松,让人感觉舒适自然,让每个到此进行温泉之旅的游客都留下美好安逸的体验。闲暇之余,邀上三五好友,陪同知心爱人,携家人来此,远离城市喧闹,在松衫下独享优雅之境!", - "entity_type": "accommodation", - "facilities": [ - "温泉小镇配套" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/04.jpg" - ], - "id": "accommodation-009", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-009/01.jpg", - "name": "问水温泉小镇闲悦阁酒店", - "room_types": [ - "日式大床房", - "日式双床房" - ], - "sort_order": 8, - "sort_within_type": 9, - "subtype": "温泉小镇酒店", - "tags": [ - "日式风格", - "温泉", - "大床房", - "双床房" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-010": { - "address_text": "贵州省黔南州龙里县醒狮镇大岩村", - "badge": "露营基地", - "business_hours": "09:00–22:00", - "capacity_people": 4, - "category": "露营基地", - "collection": "accommodations", - "contact": { - "dial": "13078578788", - "display": "130-7857-8788", - "raw": "130-7857-8788" - }, - "data_status": "已归类", - "description": "顽乐尧轻奢露营基地位于醒狮镇大岩村小岩组,距离贵阳市区30分钟车程,基地内呈现接待、露营、体验三区分离,同时,在临水的一栋4层楼建筑中布局了咖啡馆、康乐室、音乐吧等业态,设立的宠物乐园、棋牌、台球、游泳池等多重设施能够满足不同年龄段游客需求,营地目前提供2人到4人的入住帐篷,价格从880元到1680元不等,冬季,顽乐尧推出围炉煮茶套餐,陶罐、铁壶、炉火等,与世界杯等体育赛事热点搭配起来,一壶热茶,度过寒冬。", - "entity_type": "accommodation", - "facilities": [ - "咖啡馆", - "康乐室", - "音乐吧", - "宠物乐园", - "棋牌", - "台球", - "游泳池", - "围炉煮茶" - ], - "facts": [ - { - "label": "距贵阳市区车程", - "note": "", - "unit": "分钟", - "value": 30 - }, - { - "label": "临水建筑", - "note": "", - "unit": "层", - "value": 4 - }, - { - "label": "帐篷入住人数", - "note": "", - "unit": "人", - "value": "2-4" - }, - { - "label": "价格区间", - "note": "源PDF标示,需上线前确认", - "unit": "元", - "value": "880-1680" - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/05.jpg" - ], - "id": "accommodation-010", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-010/01.jpg", - "name": "顽乐尧轻奢露营基地", - "room_types": [ - "2人帐篷", - "3人帐篷", - "4人帐篷" - ], - "sort_order": 21, - "sort_within_type": 10, - "subtype": "露营基地", - "tags": [ - "轻奢露营", - "亲子", - "宠物", - "泳池", - "咖啡馆" - ], - "transport_note": "距贵阳市区约30分钟车程", - "type": "露营基地", - "type_code": "accommodation-camping", - "type_order": 4 - }, - "accommodation-011": { - "address_text": "贵州省黔南州龙里县半卡苑与甲秀街交叉口西北方向", - "badge": "轻奢别院", - "business_hours": "09:00–22:00", - "category": "民宿别院", - "collection": "accommodations", - "contact": { - "dial": "085185848666", - "display": "0851-85848666", - "raw": "0851-85848666" - }, - "data_status": "已归类", - "description": "24°坞别院座落于有“中国院子”之称的双龙镇,位于龙里与贵阳的交通要道。酒店建筑装修风格借鉴古代屯堡建筑和院子相集合,兼具极致优雅舒适的服务及建筑风尚为一体,为顾客提供富有禅意、人文韵味的轻奢文化旅居体验。整体建筑由两个院落三层组成,26间不同文化风格客房分布在两个院落,其中:8个精品标间、15个精品单间、2个景观房、1个复式套房。设有多功能会议厅、会客厅、庭院、大堂吧。", - "entity_type": "accommodation", - "facilities": [ - "多功能会议厅", - "会客厅", - "庭院", - "大堂吧" - ], - "facts": [ - { - "label": "院落", - "note": "", - "unit": "个", - "value": 2 - }, - { - "label": "楼层", - "note": "", - "unit": "层", - "value": 3 - }, - { - "label": "精品标间", - "note": "", - "unit": "间", - "value": 8 - }, - { - "label": "精品单间", - "note": "", - "unit": "间", - "value": 15 - }, - { - "label": "景观房", - "note": "", - "unit": "间", - "value": 2 - }, - { - "label": "复式套房", - "note": "", - "unit": "间", - "value": 1 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/03.jpg" - ], - "id": "accommodation-011", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-011/01.jpg", - "name": "24°坞别院", - "room_count": 26, - "room_types": [ - "精品标间", - "精品单间", - "景观房", - "复式套房" - ], - "sort_order": 16, - "sort_within_type": 11, - "subtype": "轻奢别院", - "tags": [ - "中式院落", - "屯堡风格", - "会议", - "禅意" - ], - "transport_note": "位于龙里与贵阳的交通要道", - "type": "民宿别院", - "type_code": "accommodation-homestay", - "type_order": 2 - }, - "accommodation-012": { - "address_text": "贵州省黔南州龙里县冠山街道兴龙路24号", - "badge": "商务酒店", - "business_hours": "09:00–22:00", - "capacity_people": 200, - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08545677666", - "display": "0854-5677666", - "raw": "0854-5677666" - }, - "data_status": "已归类", - "description": "纪龙酒店坐落于正大街与兴龙路交叉处,是一家集餐饮、住宿、会议于一体的商务型高端酒店。酒店毗邻各大商业街、银行、医院、超市,交通十分便利。酒店客房分为普通间、精致标间、豪华单间、豪华标间、商务三人间、商务套房等多种房型。餐厅设有包房、宴会厅,可同时容纳两百多人用餐,会议室可接待中小型会议,多媒体投影仪一应俱全。酒店的停车场有免费停车位,为您的爱车找到一个避风的港湾。", - "entity_type": "accommodation", - "facilities": [ - "包房", - "宴会厅", - "会议室", - "多媒体投影", - "免费停车" - ], - "facts": [ - { - "label": "餐厅容量", - "note": "", - "unit": "余人", - "value": 200 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/04.jpg" - ], - "id": "accommodation-012", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-012/01.jpg", - "name": "纪龙酒店", - "room_types": [ - "普通间", - "精致标间", - "豪华单间", - "豪华标间", - "商务三人间", - "商务套房" - ], - "sort_order": 9, - "sort_within_type": 12, - "subtype": "商务酒店", - "tags": [ - "餐饮", - "住宿", - "会议", - "免费停车" - ], - "transport_note": "毗邻商业街、银行、医院和超市", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-013": { - "address_text": "贵州省黔南州龙里县冠山街道金龙路龙城国际对面", - "badge": "休闲商务酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08548816666", - "display": "0854-8816666", - "raw": "0854-8816666" - }, - "data_status": "已归类", - "description": "西苑锦润酒店地处龙里繁华的龙城国际购物中心对面。酒店以东南亚休闲风情为主题,客房采用堪比豪华型酒店雅高系列优质床品,全套高端进口系列洗浴用品,100M高速光纤,全WiFi覆盖。从酒店到机场19公里、距贵广高铁站800米、酒店周边商业景点众多,酒店大门口有多条公交线路,出行方便,周边休闲、娱乐生活项目丰富。", - "entity_type": "accommodation", - "facilities": [ - "高端床品", - "进口洗浴用品", - "100M高速光纤", - "全WiFi覆盖" - ], - "facts": [ - { - "label": "距机场", - "note": "", - "unit": "公里", - "value": 19 - }, - { - "label": "距贵广高铁站", - "note": "", - "unit": "米", - "value": 800 - }, - { - "label": "光纤带宽", - "note": "", - "unit": "M", - "value": 100 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/05.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/06.jpg" - ], - "id": "accommodation-013", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-013/01.jpg", - "name": "西苑锦润酒店", - "room_types": [ - ], - "sort_order": 10, - "sort_within_type": 13, - "subtype": "休闲商务酒店", - "tags": [ - "东南亚风格", - "高铁站", - "商业中心", - "高速WiFi" - ], - "transport_note": "距机场19公里;距贵广高铁站800米;门口有多条公交线路", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-014": { - "address_text": "贵州省黔南州龙里县云栖谷双龙镇二期53号院", - "badge": "精品民宿", - "business_hours": "09:00–22:00", - "capacity_people": 28, - "category": "民宿别院", - "collection": "accommodations", - "contact": { - "dial": "08542626856", - "display": "0854-2626856", - "raw": "0854-2626856" - }, - "data_status": "已归类", - "description": "广莱涵舍坐落于贵州省黔南州龙里县双龙镇景区。目前一共有16间房,包场可接待28人,每间房都有独立卫浴,提供WIFI、洗漱及生活用品。每层楼都有约20平方的公共活动区域。另设有共享厨房,满足你对饮食的自我订制。在这里可以让你摆脱都市压力的束缚,让疲惫的心灵得到宝贵的歇息机会,更重要的是可以找寻到久违的归属感,遇见最美的自己!", - "entity_type": "accommodation", - "facilities": [ - "独立卫浴", - "WiFi", - "洗漱用品", - "生活用品", - "公共活动区", - "共享厨房" - ], - "facts": [ - { - "label": "公共活动区域", - "note": "约", - "unit": "平方米/层", - "value": 20 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/03.jpg" - ], - "id": "accommodation-014", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-014/01.png", - "name": "广莱涵舍", - "room_count": 16, - "room_types": [ - ], - "sort_order": 17, - "sort_within_type": 14, - "subtype": "精品民宿", - "tags": [ - "包场", - "共享厨房", - "独立卫浴", - "双龙镇" - ], - "type": "民宿别院", - "type_code": "accommodation-homestay", - "type_order": 2 - }, - "accommodation-015": { - "address_text": "贵州省黔南州龙里县云栖谷双龙镇双龙航空港经济区中心三路中铁生态城", - "badge": "度假酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085182388888", - "display": "0851-82388888", - "raw": "0851-82388888" - }, - "data_status": "已归类", - "description": "安纳塔拉度假酒店位于双龙航空港经济区中铁国际生态城。酒店拥有雅致舒适的现代化客房,房内设施一应俱全,让您尽享便捷舒适。这里有餐厅和酒吧,为您提供别样的美味,定能让您的味蕾得到极大的满足;还有多功能厅和多媒体演示系统,适合举办各种活动。您还可以去酒店的室内/室外游泳池、健身室享受运动的畅快,累了之后还可以到按摩室、桑拿浴室、足浴、SPA放松身心。", - "entity_type": "accommodation", - "facilities": [ - "餐厅", - "酒吧", - "多功能厅", - "多媒体演示系统", - "室内泳池", - "室外泳池", - "健身室", - "按摩室", - "桑拿浴室", - "足浴", - "SPA" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/04.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/05.jpg" - ], - "id": "accommodation-015", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-015/01.jpg", - "name": "安纳塔拉度假酒店", - "room_types": [ - ], - "sort_order": 11, - "sort_within_type": 15, - "subtype": "度假酒店", - "tags": [ - "餐厅", - "酒吧", - "会议", - "泳池", - "SPA" - ], - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-016": { - "address_text": "贵州省黔南州龙里县醒狮镇大岩村山坡小寨组", - "badge": "金山级民宿", - "business_hours": "09:00–22:00", - "category": "民宿别院", - "collection": "accommodations", - "contact": { - "dial": "13985788408", - "display": "13985788408", - "raw": "13985788408" - }, - "data_status": "已归类", - "description": "藏于大岩村山林深处,是贵州省金山级民宿,依坡而建、伴樟而居,将布依村落肌理与中式禅意美学相融。原木搭建的院落错落有致,客房自带全景露台,晚风穿林而过,尽揽山间清景。院中设茶台、咖啡馆、多功能厅、展览室,闲时可煮茶读书;配套布依风味餐厅,甄选本地山珍,还原山野本味。闲暇可跟着村民体验大岩根雕、山间采摘,或沿森林步道漫步,沉浸式感受山居之趣,既有乡野的淳朴烟火,又有治愈人心的静谧,是藏在贵州山野里的诗意栖居地。", - "entity_type": "accommodation", - "facilities": [ - "全景露台", - "茶台", - "咖啡馆", - "多功能厅", - "展览室", - "布依风味餐厅", - "根雕体验", - "山间采摘", - "森林步道" - ], - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/04.jpg" - ], - "id": "accommodation-016", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-016/01.jpg", - "name": "隐与·清风与落民宿", - "room_types": [ - ], - "sort_order": 18, - "sort_within_type": 16, - "subtype": "金山级民宿", - "tags": [ - "山林", - "布依村落", - "中式禅意", - "全景露台", - "根雕体验" - ], - "type": "民宿别院", - "type_code": "accommodation-homestay", - "type_order": 2 - }, - "accommodation-017": { - "address_text": "龙里县谷脚镇万豪大道万豪商贸城总部1-2#", - "badge": "商务度假酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188887999", - "display": "0851-88887999", - "raw": "0851-88887999" - }, - "data_status": "已归类", - "description": "多彩全球大酒店坐落于贵州省双龙镇万豪大道万豪商贸总部1.2#,临近贵阳中铁生态城,周边实验学校、双龙镇景区、龙里西高速路口。交通十分便利,距离龙洞堡机场9.9公里,龙里北高铁北站11公里,贵阳高铁北站26公里,距离龙里油画大草原景区19公里,十里刺梨沟景区16公里。是一家集住宿、餐饮、会议为一体的商务型度假酒店。", - "entity_type": "accommodation", - "facilities": [ - "餐饮", - "会议" - ], - "facts": [ - { - "label": "距龙洞堡机场", - "note": "", - "unit": "公里", - "value": 9.9 - }, - { - "label": "距龙里北站", - "note": "", - "unit": "公里", - "value": 11 - }, - { - "label": "距贵阳北站", - "note": "", - "unit": "公里", - "value": 26 - }, - { - "label": "距龙里油画大草原", - "note": "", - "unit": "公里", - "value": 19 - }, - { - "label": "距十里刺梨沟", - "note": "", - "unit": "公里", - "value": 16 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/04.jpg" - ], - "id": "accommodation-017", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-017/01.jpg", - "name": "多彩全球大酒店", - "room_types": [ - ], - "sort_order": 12, - "sort_within_type": 17, - "subtype": "商务度假酒店", - "tags": [ - "住宿", - "餐饮", - "会议", - "机场交通" - ], - "transport_note": "距龙洞堡机场9.9公里;距龙里北站11公里;距贵阳北站26公里;距龙里油画大草原19公里;距十里刺梨沟16公里", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-018": { - "address_text": "贵州省黔南州龙里县铁龙路", - "badge": "商务酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "08545679888", - "display": "0854-5679888", - "raw": "0854-5679888" - }, - "data_status": "已归类", - "description": "酒店位于龙里县铁龙路,地处龙里县商业中心圈,地理位置优越,毗邻贵新高速、夏蓉高速等,紧邻龙里北站3公里,距离龙洞堡机场24公里。酒店设计风格简约而富有品质,酒店房间108间,本店房型选择多样化,配有商务房、电竞房、雅致房等等,拥有餐厅、自助洗衣房,为您打造舒适便捷的入住体验。", - "entity_type": "accommodation", - "facilities": [ - "餐厅", - "自助洗衣房" - ], - "facts": [ - { - "label": "距龙里北站", - "note": "", - "unit": "公里", - "value": 3 - }, - { - "label": "距龙洞堡机场", - "note": "", - "unit": "公里", - "value": 24 - } - ], - "gallery_urls": [ - ], - "id": "accommodation-018", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-018/01.jpg", - "name": "丫丫酒店", - "room_count": 108, - "room_types": [ - "商务房", - "电竞房", - "雅致房" - ], - "sort_order": 13, - "sort_within_type": 18, - "subtype": "商务酒店", - "tags": [ - "县城商业中心", - "商务房", - "电竞房", - "自助洗衣" - ], - "transport_note": "距龙里北站3公里;距龙洞堡机场24公里;毗邻贵新高速和源PDF所写“夏蓉高速”", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-019": { - "address_text": "贵州省黔南州龙里县双龙镇中铁大道酒博园8栋", - "badge": "主题酒店", - "business_hours": "09:00–22:00", - "category": "酒店", - "collection": "accommodations", - "contact": { - "dial": "085188727788", - "display": "0851-88727788", - "raw": "0851-88727788" - }, - "data_status": "已归类", - "description": "酒店位于贵州省黔南布依族苗族自治州龙里县谷脚镇,距离双龙镇巫山峡谷旅游景区步行约两分钟。距离龙洞堡机场约6公里,乘车18分钟(酒店提供接送机服务)。以“钱缪家训”为文化核心,是以宋代八雅文化中的“琴棋书画诗酒茶花”中的“花雅”文化为主题,在酒店设计中融入“多彩贵州”理念,以“轻中式宋极简江南风”为特色,打造一方充满东方之美的“堂、廊、馆、房、飨、浣、境”宋“潮”空间。", - "entity_type": "accommodation", - "facilities": [ - "接送机服务", - "宋式主题空间" - ], - "facts": [ - { - "label": "步行至景区", - "note": "约", - "unit": "分钟", - "value": 2 - }, - { - "label": "距龙洞堡机场", - "note": "约", - "unit": "公里", - "value": 6 - }, - { - "label": "机场车程", - "note": "", - "unit": "分钟", - "value": 18 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-019/02.jpg" - ], - "id": "accommodation-019", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-019/01.jpg", - "name": "陌上轻雅酒店", - "room_types": [ - ], - "sort_order": 14, - "sort_within_type": 19, - "subtype": "主题酒店", - "tags": [ - "宋式美学", - "接送机", - "景区步行", - "双龙镇" - ], - "transport_note": "步行至双龙镇巫山峡谷景区约2分钟;距龙洞堡机场约6公里、车程18分钟", - "type": "酒店", - "type_code": "accommodation-hotel", - "type_order": 1 - }, - "accommodation-020": { - "address_text": "贵州省双龙航空经济区万豪大道旁悠山美墅组团G6组团27栋", - "badge": "酒店式公寓", - "business_hours": "09:00–22:00", - "category": "旅居公寓", - "collection": "accommodations", - "contact": { - "dial": "08545669118", - "display": "0854-5669118", - "raw": "0854-5669118" - }, - "data_status": "已归类", - "description": "悠享公寓座落于贵阳瑞士风情别墅区——深高速·悠山美墅内,是一所以“悠享旅居好生活”为服务理念的高端酒店式旅居短租公寓,由一栋洋房和一栋独栋别墅组成。洋房公寓共有40套,房型为3室2厅1厨2卫1洗衣房,均为高档精装修。公寓内配有电视机、冰箱、洗衣机、微波炉、热水器、地暖、麻将机等设备。别墅公寓是一栋四层独栋瑞士风情别墅,内设8间大床房,配套有电梯、会议室、宴会厅等,适合家庭聚会或小型商务活动。", - "entity_type": "accommodation", - "facilities": [ - "电视机", - "冰箱", - "洗衣机", - "微波炉", - "热水器", - "地暖", - "麻将机", - "电梯", - "会议室", - "宴会厅" - ], - "facts": [ - { - "label": "洋房公寓", - "note": "", - "unit": "套", - "value": 40 - }, - { - "label": "独栋别墅", - "note": "", - "unit": "层", - "value": 4 - }, - { - "label": "别墅大床房", - "note": "", - "unit": "间", - "value": 8 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/03.jpg" - ], - "id": "accommodation-020", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-020/01.jpg", - "name": "深高速·悠享公寓", - "room_types": [ - "3室2厅1厨2卫1洗衣房", - "独栋别墅大床房" - ], - "sort_order": 19, - "sort_within_type": 20, - "subtype": "酒店式公寓", - "tags": [ - "短租", - "家庭聚会", - "商务活动", - "独栋别墅" - ], - "type": "旅居公寓", - "type_code": "accommodation-apartment", - "type_order": 3, - "unit_count": 40 - }, - "accommodation-021": { - "address_text": "贵州省双龙航空经济区万豪大道旁悠山美墅组团G6组团27栋", - "badge": "康养旅居公寓", - "business_hours": "09:00–22:00", - "category": "旅居公寓", - "collection": "accommodations", - "contact": { - "dial": "08545669118", - "display": "0854-5669118", - "raw": "0854-5669118" - }, - "data_status": "已归类", - "description": "太阳谷自得公寓康养旅居基地坐落于双龙航空港经济区中铁生态城太阳谷中铁大道。距龙洞堡机场6.8公里,距公交车站仅需要4分钟。基地拥有一室一厅、两室一厅两种户型共40间,房间含厨房可自行烹饪。基地设有餐厅、棋牌室、健身区、书画区、音影活动区、健康站,周边旅居生活配套齐全,环境优雅清新,是到贵州旅居的不二之选,给退休后的自己,一份向往的生活。", - "entity_type": "accommodation", - "facilities": [ - "厨房", - "餐厅", - "棋牌室", - "健身区", - "书画区", - "音影活动区", - "健康站" - ], - "facts": [ - { - "label": "距龙洞堡机场", - "note": "", - "unit": "公里", - "value": 6.8 - }, - { - "label": "距公交车站", - "note": "", - "unit": "分钟", - "value": 4 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-021/02.jpg" - ], - "id": "accommodation-021", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-021/01.jpg", - "name": "太阳谷自得公寓", - "room_count": 40, - "room_types": [ - "一室一厅", - "两室一厅" - ], - "sort_order": 20, - "sort_within_type": 21, - "subtype": "康养旅居公寓", - "tags": [ - "康养", - "可做饭", - "长住", - "健身", - "书画" - ], - "transport_note": "距龙洞堡机场6.8公里;距公交车站约4分钟", - "type": "旅居公寓", - "type_code": "accommodation-apartment", - "type_order": 3 - }, - "attraction-001": { - "address_text": "厦蓉高速龙里收费站左侧", - "badge": "综合旅游区", - "business_hours": "09:00–22:00", - "category": "综合景区", - "collection": "attractions", - "contact": { - "dial": "08545630880", - "display": "0854-5630880", - "raw": "0854—5630880" - }, - "data_status": "已归类", - "description": "龙里水乡旅游生态城位于厦蓉高速龙里收费站左侧,她以水域为载体、以建筑为特色,是以文化、体育、康养、研学、美食等多种业态融合打造的旅游综合休闲体验项目。", - "entity_type": "attraction", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/03.jpg" - ], - "grade": "AAA", - "highlights": [ - "水域景观", - "综合休闲体验", - "文化体育康养多业态" - ], - "id": "attraction-001", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - "name": "龙里水乡旅游生态城", - "name_en": "Longli Water Town Tourism Eco-City", - "sort_order": 1, - "sort_within_type": 1, - "subtype": "综合旅游区", - "tags": [ - "水域", - "文化", - "体育", - "康养", - "研学", - "美食", - "亲子" - ], - "type": "综合景区", - "type_code": "attraction-comprehensive", - "type_order": 1 - }, - "attraction-002": { - "address_text": "龙里县城南10公里", - "badge": "草原湿地", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "08545633699", - "display": "0854-5633699", - "raw": "0854-5633699" - }, - "data_status": "已归类", - "description": "龙里油画大草原景区位于龙里县城南10公里,以湿地花海游览体验为主的山下片区,以登山体验步道为主体的山中片区,以草原游览体验观赏为主的山顶片区,是集休闲娱乐、运动养生、家庭度假、亲子体验观光旅游为一体的山地度假综合体。", - "entity_type": "attraction", - "facts": [ - { - "label": "距龙里县城", - "note": "", - "unit": "公里", - "value": 10 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/04.jpg" - ], - "grade": "AAAA", - "highlights": [ - "山下湿地花海", - "山中登山步道", - "山顶草原观景" - ], - "id": "attraction-002", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-002/01.jpg", - "name": "龙里油画大草原景区", - "name_en": "Longli Oil Painting Prairie", - "sort_order": 4, - "sort_within_type": 2, - "subtype": "草原湿地", - "tags": [ - "湿地花海", - "登山步道", - "草原", - "运动养生", - "家庭度假", - "亲子" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-003": { - "address_text": "龙里县双龙镇·巫山峡谷旅游景区", - "badge": "峡谷度假区", - "business_hours": "09:00–22:00", - "category": "综合景区", - "collection": "attractions", - "contact": { - "dial": "085185588618", - "display": "0851-85588618", - "raw": "0851–85588618" - }, - "data_status": "已归类", - "description": "双龙镇·巫山峡谷旅游景区是以峡谷风光为主,包含双龙镇旅游休闲度假区及巫山峡谷旅游体验区,是集购物、康体、养生、娱乐、餐饮、客栈等多元业态体验为一体的综合式休闲度假中心。", - "entity_type": "attraction", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/04.jpg" - ], - "grade": "AAAA", - "highlights": [ - "巫山峡谷风光", - "双龙镇休闲度假", - "多业态综合体验" - ], - "id": "attraction-003", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-003/01.jpg", - "name": "双龙镇·巫山峡谷", - "name_en": "Shuanglong Town · Wushan Valley", - "sort_order": 2, - "sort_within_type": 3, - "subtype": "峡谷度假区", - "tags": [ - "峡谷", - "文旅小镇", - "购物", - "康体", - "养生", - "娱乐", - "餐饮", - "客栈" - ], - "type": "综合景区", - "type_code": "attraction-comprehensive", - "type_order": 1 - }, - "attraction-004": { - "address_text": "距龙里县城1.5公里", - "badge": "森林公园", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "15085980170", - "display": "150-8598-0170", - "raw": "150-8598-0170" - }, - "data_status": "已归类", - "description": "龙架山国家森林公园是国家3A级旅游景区,距离龙里县城1.5公里,总规划面积6100.9公顷。公园依山傍水、环境优美,整个园区森林壮阔、林海苍翠、四季如画,春看花、夏感风、秋看叶、冬观雪,素有“省会贵阳市的后花园”的美誉。", - "entity_type": "attraction", - "facts": [ - { - "label": "距龙里县城", - "note": "", - "unit": "公里", - "value": 1.5 - }, - { - "label": "总规划面积", - "note": "", - "unit": "公顷", - "value": 6100.9 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/04.jpg" - ], - "grade": "AAA", - "highlights": [ - "四季森林景观", - "依山傍水", - "贵阳市后花园" - ], - "id": "attraction-004", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-004/01.jpg", - "name": "龙架山国家森林公园", - "name_en": "Longjia Mountain National Forest Park", - "sort_order": 5, - "sort_within_type": 4, - "subtype": "森林公园", - "tags": [ - "森林", - "登山", - "四季景观", - "生态" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-005": { - "address_text": "龙里河大桥", - "badge": "桥梁观光", - "business_hours": "09:00–22:00", - "category": "地标观光", - "collection": "attractions", - "contact": { - "dial": "08547010666", - "display": "0854-7010666", - "raw": "0854-7010666" - }, - "data_status": "已归类", - "description": "全长1260米,为主跨528米的双塔双索面叠合梁斜拉桥,桥塔高265米、245米,桥面距谷底280米,是世界首座高山峡谷景观斜拉桥。桥面宽28米,双向四车道,设玻璃步道与人行道。大桥配备观光电梯、360°景观平台、528米玻璃步道,打造立体观光体验;还设有蹦极、攀岩、七彩滑道、火车咖啡馆、亲子迷宫等业态,集观景、休闲、极限运动于一体,可尽览朵花大峡谷与龙里大草原美景。", - "entity_type": "attraction", - "facts": [ - { - "label": "桥梁全长", - "note": "", - "unit": "米", - "value": 1260 - }, - { - "label": "主跨", - "note": "", - "unit": "米", - "value": 528 - }, - { - "label": "桥塔高度", - "note": "", - "unit": "米", - "value": [ - 265, - 245 - ] - }, - { - "label": "桥面距谷底", - "note": "", - "unit": "米", - "value": 280 - }, - { - "label": "桥面宽", - "note": "", - "unit": "米", - "value": 28 - }, - { - "label": "车道", - "note": "", - "unit": "车道", - "value": 4 - }, - { - "label": "玻璃步道长度", - "note": "", - "unit": "米", - "value": 528 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-005/02.jpg" - ], - "highlights": [ - "高山峡谷斜拉桥", - "360°景观平台", - "528米玻璃步道", - "极限运动项目" - ], - "id": "attraction-005", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-005/01.jpg", - "name": "龙里河大桥", - "name_en": "Longli River Bridge", - "sort_order": 16, - "sort_within_type": 5, - "subtype": "桥梁观光", - "tags": [ - "高山峡谷", - "玻璃步道", - "观光平台", - "蹦极", - "攀岩", - "极限运动", - "亲子" - ], - "type": "地标观光", - "type_code": "attraction-landmark", - "type_order": 5 - }, - "attraction-006": { - "address_text": "贵州省黔南州龙里县龙山镇贵龙纵线比孟村鸡场堡组云从朵花温泉酒店", - "badge": "温泉度假", - "business_hours": "09:00–22:00", - "category": "综合景区", - "collection": "attractions", - "contact": { - "dial": "085188515333", - "display": "0851-88515333", - "raw": "0851-88515333" - }, - "data_status": "已归类", - "description": "云从朵花是龙里首个综合性温泉度假酒店,获评国家3A级景区、贵州金汤级温泉度假地。酒店占地200亩,配有99间主楼客房、25栋野奢客房及48个特色汤池,集康养、休闲、商务于一体。温泉为天然矿热泉,出水温度71℃,富含氟、偏硅酸、锶等20余种微量元素,三项核心指标均超国家医疗标准,被誉为“蓝宝石”氟泉与“美人泉”偏硅酸泉,康养理疗效果极佳。酒店配套完善,野奢客房带私汤,依山揽景,是高端温泉度假优选。", - "entity_type": "attraction", - "facts": [ - { - "label": "占地面积", - "note": "", - "unit": "亩", - "value": 200 - }, - { - "label": "主楼客房", - "note": "", - "unit": "间", - "value": 99 - }, - { - "label": "野奢客房", - "note": "", - "unit": "栋", - "value": 25 - }, - { - "label": "特色汤池", - "note": "", - "unit": "个", - "value": 48 - }, - { - "label": "温泉出水温度", - "note": "", - "unit": "℃", - "value": 71 - }, - { - "label": "微量元素", - "note": "", - "unit": "余种", - "value": 20 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/04.jpg" - ], - "grade": "AAA", - "highlights": [ - "天然矿热泉", - "野奢客房私汤", - "48个特色汤池", - "山地温泉康养" - ], - "id": "attraction-006", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-006/01.jpg", - "name": "云从朵花温泉度假中心", - "name_en": "Yuncong Duohua Hot Spring Resort Center", - "sort_order": 3, - "sort_within_type": 6, - "subtype": "温泉度假", - "tags": [ - "温泉", - "康养", - "度假酒店", - "私汤", - "商务" - ], - "type": "综合景区", - "type_code": "attraction-comprehensive", - "type_order": 1 - }, - "attraction-007": { - "address_text": "贵州省黔南布依族苗族自治州龙里县龙山镇龙里大草原", - "badge": "高山草原", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "08548822759", - "display": "0854-8822759", - "raw": "0854-8822759" - }, - "data_status": "已归类", - "description": "龙里大草原属独特的高山台地草原,位于龙里县龙山镇。该景区气温常年在20℃左右,被誉为天然空调、绿色氧吧,是贵州东线和南线旅游的第一站。", - "entity_type": "attraction", - "facts": [ - { - "label": "常年气温", - "note": "约", - "unit": "℃", - "value": 20 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/03.jpg" - ], - "grade": "AAA", - "highlights": [ - "高山台地草原", - "常年约20℃", - "天然空调与绿色氧吧" - ], - "id": "attraction-007", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-007/01.jpg", - "name": "龙里大草原", - "name_en": "Longli Prairie", - "sort_order": 6, - "sort_within_type": 7, - "subtype": "高山草原", - "tags": [ - "高山台地", - "草原", - "避暑", - "露营", - "生态" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-008": { - "address_text": "贵州省黔南布依族苗族自治州龙里县谷脚镇茶香村", - "badge": "农业观光", - "business_hours": "09:00–22:00", - "category": "乡村文旅", - "collection": "attractions", - "contact": { - "dial": "08545662108", - "display": "0854-5662108", - "raw": "0854—5662108" - }, - "data_status": "已归类", - "description": "十里刺梨沟景区位于谷脚镇茶香村,以十里连片“维C之王”刺梨种植而得名,获“中国山地自行车最美赛道”称号。", - "entity_type": "attraction", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/04.jpg" - ], - "grade": "AAA", - "highlights": [ - "连片刺梨种植", - "山地自行车赛道", - "乡村观光" - ], - "id": "attraction-008", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-008/01.jpg", - "name": "十里刺梨沟景区", - "name_en": "Shili Ciligou Scenic Area", - "sort_order": 12, - "sort_within_type": 8, - "subtype": "农业观光", - "tags": [ - "刺梨", - "山地自行车", - "乡村", - "花果观光" - ], - "type": "乡村文旅", - "type_code": "attraction-rural-culture", - "type_order": 3 - }, - "attraction-009": { - "address_text": "龙里县贾托山风景区", - "badge": "山岳观景", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "13639080804", - "display": "136-3908-0804", - "raw": "136-3908-0804" - }, - "data_status": "已归类", - "description": "贾托山景区海拔1775米,是龙里境内最高的山峰,在山顶上能看见龙里、贵定、都匀、贵阳等县市的风景,以梯田景观、康养度假为主,是一个非常值得一去的户外旅游观景台。", - "entity_type": "attraction", - "facts": [ - { - "label": "海拔", - "note": "", - "unit": "米", - "value": 1775 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/03.jpg" - ], - "grade": "AAA", - "highlights": [ - "龙里境内最高峰", - "梯田景观", - "多县市远眺", - "户外观景台" - ], - "id": "attraction-009", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-009/01.jpg", - "name": "贾托山风景区", - "name_en": "Jiatuo Mountain Scenic Area", - "sort_order": 7, - "sort_within_type": 9, - "subtype": "山岳观景", - "tags": [ - "高山", - "梯田", - "观景台", - "康养", - "户外" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-010": { - "address_text": "贵州省黔南布依族苗族自治州龙里县湾滩河镇孔雀寨", - "badge": "民族村寨", - "business_hours": "09:00–22:00", - "category": "乡村文旅", - "collection": "attractions", - "contact": { - "dial": "08545712001", - "display": "0854-5712001", - "raw": "0854—5712001" - }, - "data_status": "已归类", - "description": "孔雀寨景区位于湾滩河镇中部区域,距龙里县城49公里,全寨依山傍水,风景优美,地势开阔,清澈的湾滩河从寨前蜿蜒而过,是一个历史悠久、文化底蕴深厚、民风淳朴、民族风情浓郁的布依族村寨。", - "entity_type": "attraction", - "facts": [ - { - "label": "距龙里县城", - "note": "", - "unit": "公里", - "value": 49 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/03.jpg" - ], - "grade": "AAA", - "highlights": [ - "布依族传统村寨", - "湾滩河沿岸", - "民族文化体验" - ], - "id": "attraction-010", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-010/01.jpg", - "name": "孔雀寨景区", - "name_en": "Peacock Village Scenic Area", - "sort_order": 13, - "sort_within_type": 10, - "subtype": "民族村寨", - "tags": [ - "布依族", - "村寨", - "湾滩河", - "民族风情", - "人文" - ], - "type": "乡村文旅", - "type_code": "attraction-rural-culture", - "type_order": 3 - }, - "attraction-011": { - "address_text": "厦蓉高速龙里收费站右侧", - "badge": "湿地公园", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "08545633329", - "display": "0854-5633329", - "raw": "0854-5633329" - }, - "data_status": "已归类", - "description": "龙里莲花湿地公园位于厦蓉高速龙里收费站右侧,她“湖光山色、江山如画”,公园依托朵花河沿河自然山水、田园风光,巧妙布局喷泉、石雕、步道,漫步园内,小桥流水、泉湖照影、鸟语花香,令人赏心悦目。", - "entity_type": "attraction", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/03.jpg" - ], - "highlights": [ - "朵花河自然山水", - "田园湿地", - "喷泉石雕步道" - ], - "id": "attraction-011", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-011/01.jpg", - "name": "莲花湿地公园", - "name_en": "Lotus Wetland Park", - "sort_order": 8, - "sort_within_type": 11, - "subtype": "湿地公园", - "tags": [ - "湿地", - "朵花河", - "田园", - "喷泉", - "步道" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-012": { - "address_text": "贵州省黔南布依族苗族自治州龙里县龙门镇", - "badge": "主题小镇", - "business_hours": "09:00–22:00", - "category": "主题小镇", - "collection": "attractions", - "contact": { - "dial": "18985764435", - "display": "189-8576-4435", - "raw": "189-8576-4435" - }, - "data_status": "已归类", - "description": "龙门镇是贵州第一个以“武侠文化”为主题定位的小镇,独特的文化定位,不仅有利于丰富贵州的旅游文化主题,提供更独特的旅游体验,也有助于促进民间武术、养生文化的切磋与发扬,更能为贵州增添一张“侠文化”旅游名片。", - "entity_type": "attraction", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/04.jpg" - ], - "highlights": [ - "武侠文化主题", - "民间武术", - "养生文化" - ], - "id": "attraction-012", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-012/01.jpg", - "name": "龙门镇", - "name_en": "Longmen Town", - "sort_order": 15, - "sort_within_type": 12, - "subtype": "主题小镇", - "tags": [ - "武侠文化", - "小镇", - "民间武术", - "养生文化" - ], - "type": "主题小镇", - "type_code": "attraction-themed-town", - "type_order": 4 - }, - "attraction-013": { - "address_text": "贵州省黔南布依族苗族自治州龙里县赶场村", - "badge": "民俗美食村", - "business_hours": "09:00–22:00", - "category": "乡村文旅", - "collection": "attractions", - "contact": { - "dial": "13984383678", - "display": "139-8438-3678", - "raw": "139-8438-3678" - }, - "data_status": "已归类", - "description": "赶场村定位为“贵州民俗文化好吃村”,其秉承“传承工匠精神,做好乡村美食”的宗旨,集合了贵州特色名小吃、特色美食、现场制作的优质土特产、少数民族文化演艺、非遗文化体验,以及400余间精品民宿客栈等,让游客在赶场村能“一村吃遍贵州,一村带走贵州”,体验“美食的世界,歌舞的海洋”。", - "entity_type": "attraction", - "facts": [ - { - "label": "精品民宿客栈", - "note": "", - "unit": "余间", - "value": 400 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/04.jpg" - ], - "highlights": [ - "贵州民俗文化好吃村", - "非遗文化体验", - "少数民族演艺", - "精品民宿集群" - ], - "id": "attraction-013", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-013/01.jpg", - "name": "赶场村", - "name_en": "Market Village", - "sort_order": 14, - "sort_within_type": 13, - "subtype": "民俗美食村", - "tags": [ - "贵州小吃", - "土特产", - "少数民族演艺", - "非遗", - "民宿" - ], - "type": "乡村文旅", - "type_code": "attraction-rural-culture", - "type_order": 3 - }, - "attraction-014": { - "address_text": "贵州省黔南布依族苗族自治州龙里县醒狮镇大岩村小岩组", - "badge": "花海观光", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "13985788408", - "display": "139-8578-8408", - "raw": "139-8578-8408" - }, - "data_status": "已归类", - "description": "龙湖花海生态观光园位于素有“根雕艺术之乡”美誉的龙里县醒狮镇大岩村小岩组,毗邻贵阳渔洞峡水库,与贵阳市永乐乡、东风镇、偏坡乡相接壤。距镇政府所在地4公里,距离省城贵阳市约20公里,平均海拔1150米。", - "entity_type": "attraction", - "facts": [ - { - "label": "距镇政府", - "note": "", - "unit": "公里", - "value": 4 - }, - { - "label": "距贵阳市", - "note": "约", - "unit": "公里", - "value": 20 - }, - { - "label": "平均海拔", - "note": "", - "unit": "米", - "value": 1150 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-014/02.jpg" - ], - "highlights": [ - "花海生态观光", - "毗邻渔洞峡水库", - "根雕艺术之乡" - ], - "id": "attraction-014", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-014/01.jpg", - "name": "龙湖花海", - "name_en": "Dragon Lake Flower Sea", - "sort_order": 9, - "sort_within_type": 14, - "subtype": "花海观光", - "tags": [ - "花海", - "生态观光", - "根雕艺术", - "水库", - "乡村" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-015": { - "address_text": "龙里县城西南约3公里的莲花村", - "badge": "花海休闲", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "15934724198", - "display": "159-3472-4198", - "raw": "159-3472-4198" - }, - "data_status": "已归类", - "description": "莲花社区四季花海坐落于龙里县城西南约3公里的莲花村,景区以四季花卉观赏为核心,常年种植马鞭花、格桑花、三角梅等花卉,形成连绵的花海景观。园内配套设施丰富,设有29项无动力儿童游乐设施、露营基地及河滩烧烤区。游客可参与溯溪、垂钓等自然体验活动,节庆期间还能欣赏山歌对唱、加入篝火晚会等民俗项目。餐饮方面提供烤全羊、柴火鸡、龙里肉饼鸡等地方特色美食。", - "entity_type": "attraction", - "facts": [ - { - "label": "距龙里县城", - "note": "约,县城西南", - "unit": "公里", - "value": 3 - }, - { - "label": "无动力儿童游乐设施", - "note": "", - "unit": "项", - "value": 29 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/03.jpg" - ], - "highlights": [ - "四季花卉观赏", - "29项无动力儿童设施", - "露营与河滩烧烤", - "节庆民俗活动" - ], - "id": "attraction-015", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-015/01.jpg", - "name": "莲花四季花海", - "name_en": "Lotus Four Seasons Sea of Flowers", - "sort_order": 10, - "sort_within_type": 15, - "subtype": "花海休闲", - "tags": [ - "花海", - "亲子", - "露营", - "烧烤", - "溯溪", - "垂钓", - "民俗" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-016": { - "address_text": "贵州省黔南布依族苗族自治州龙里县龙里草原景区西侧200米", - "badge": "花海露营", - "business_hours": "09:00–22:00", - "category": "自然景观", - "collection": "attractions", - "contact": { - "dial": "13984899898", - "display": "139-8489-9898", - "raw": "139-8489-9898" - }, - "data_status": "已归类", - "description": "龙里姊妹湖花海位于贵州省黔南布依族苗族自治州龙里县龙里草原景区西侧200米,姊妹湖拥有浪漫的紫色花海和观赏日落的绝妙视角,吸引了许多户外爱好者过来游览和露营扎寨,在花的海洋里肆意奔跑、在自己临时搭建的小天地里晒太阳、玩桌游、搞烧烤,与朋友享受惬意时光,尽情享受姊妹湖花海带来的假日美好。", - "entity_type": "attraction", - "facts": [ - { - "label": "距龙里草原景区", - "note": "景区西侧", - "unit": "米", - "value": 200 - } - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-016/02.jpg" - ], - "highlights": [ - "紫色花海", - "日落观赏", - "露营烧烤" - ], - "id": "attraction-016", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-016/01.jpg", - "name": "姊妹湖花海", - "name_en": "Sister Lake Flower Sea", - "sort_order": 11, - "sort_within_type": 16, - "subtype": "花海露营", - "tags": [ - "紫色花海", - "日落", - "露营", - "烧烤", - "户外" - ], - "type": "自然景观", - "type_code": "attraction-natural", - "type_order": 2 - }, - "attraction-subproject-001": { - "address_text": "厦蓉高速龙里收费站左侧龙里水乡旅游生态城内", - "badge": "森林探险", - "business_hours": "09:00–22:00", - "category": "游乐体验", - "collection": "attraction_subprojects", - "contact": { - "dial": "13885061295", - "display": "138-8506-1295", - "raw": "138-8506-1295" - }, - "data_status": "已归类", - "description": "建成的“飞越丛林”森林体育探险项目,是目前西南地区最大、设施最齐全的森林探险公园,“绿、蓝、橙、红、黑”五条树上线路囊括穿梭林间无限乐趣,适宜亲子、家庭、情侣、朋友全年龄人群畅玩体验,别具一格的“儿童蛛网”同孩子一起分享绝对安全的树上快乐时光。", - "entity_type": "attraction_subproject", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/03.jpg" - ], - "highlights": [ - "五条树上线路", - "儿童蛛网", - "全年龄森林探险" - ], - "id": "attraction-subproject-001", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-001/01.jpg", - "name": "飞越丛林", - "name_en": "Leaping over the Jungle", - "parent_id": "attraction-001", - "parent_name": "龙里水乡旅游生态城", - "sort_order": 1, - "sort_within_type": 1, - "subtype": "森林探险", - "tags": [ - "森林探险", - "树上线路", - "亲子", - "户外运动" - ], - "type": "游乐体验", - "type_code": "subproject-recreation", - "type_order": 1 - }, - "attraction-subproject-002": { - "address_text": "厦蓉高速龙里收费站左侧龙里水乡旅游生态城内", - "badge": "实景演艺", - "business_hours": "09:00–22:00", - "category": "演艺体验", - "collection": "attraction_subprojects", - "contact": { - "dial": "18685579499", - "display": "186-8557-9499", - "raw": "186-8557-9499" - }, - "data_status": "已归类", - "description": "《龙乡水里·贵秀》是龙里水乡旅游生态城打造的一场大型原创室内实景演艺秀。从生命起源、历史变迁、民风民俗、歌舞文化传承等极具贵州代表性的文化符号,以出其不意的艺术呈现方式注入:“序《文明曙光》、《山水传奇》、《奢香夫人》、《铁血忠魂》、《云顶霓裳》、《盛世贵州》”六幕场景,为你揭开夜郎故土的神秘面纱,领略贵黔大地波澜壮阔而又瑰丽多姿的山水与人文传奇。", - "entity_type": "attraction_subproject", - "facts": [ - ], - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-002/02.jpg" - ], - "highlights": [ - "大型原创室内实景演艺", - "六幕贵州文化场景", - "民族歌舞" - ], - "id": "attraction-subproject-002", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attraction_subprojects/attraction-subproject-002/01.jpg", - "name": "龙乡水里·贵秀", - "name_en": "Long Xiang Shuili Gui Show", - "parent_id": "attraction-001", - "parent_name": "龙里水乡旅游生态城", - "sort_order": 2, - "sort_within_type": 2, - "subtype": "实景演艺", - "tags": [ - "室内实景演艺", - "贵州文化", - "民俗", - "歌舞" - ], - "type": "演艺体验", - "type_code": "subproject-performance", - "type_order": 2 - }, - "food-001": { - "address_text": "", - "badge": "鸡类主菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "慢火炖煮" - ], - "data_status": "已归类", - "description": "作为“舌尖上的非物质文化遗产”的肉饼鸡需用鲜香的鸡汤为底,选用五六月大的土鸡,慢火炖煮。除了炖鸡和肉饼带来属于肉类的鲜美,肉饼鸡的鲜还出于另一类食材——野生菌,根据不同的季节,所选用的野生菌也不同。这样的美味代表着龙里人民就地取材的美食智慧。", - "entity_type": "food", - "flavor": "鲜美", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/03.jpg" - ], - "id": "food-001", - "ingredients": [ - "土鸡", - "肉饼", - "野生菌" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", - "name": "野生菌肉饼鸡", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 1, - "sort_within_type": 1, - "source_claim": "舌尖上的非物质文化遗产(源PDF原文表述)", - "subtype": "鸡类主菜", - "tags": [ - "鸡类主菜", - "土鸡", - "肉饼", - "野生菌" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-002": { - "address_text": "", - "badge": "鸡类主菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "调味烹制" - ], - "data_status": "已归类", - "description": "龙里辣子鸡选用农家天然优质放养三黄鸡,配以辣椒、姜、葱等佐料调配而成,属纯天然食品,色、香、味俱全,肉质嫩脆、香辣可口,吃一次就会爱上!", - "entity_type": "food", - "flavor": "香辣、嫩脆", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/03.jpg" - ], - "id": "food-002", - "ingredients": [ - "放养三黄鸡", - "辣椒", - "姜", - "葱" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", - "name": "龙里辣子鸡", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 2, - "sort_within_type": 2, - "subtype": "鸡类主菜", - "tags": [ - "鸡类主菜", - "放养三黄鸡", - "辣椒", - "姜", - "葱" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-003": { - "address_text": "", - "badge": "烧烤", - "business_hours": "09:00–22:00", - "category": "烧烤", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "味料汤浸泡", - "炭火烤制", - "刷蜂蜜" - ], - "data_status": "已归类", - "description": "烤香猪选用上好鲜嫩的小香猪为原料,在特制的味料汤中稍做浸泡,然后放炭火上烤,边烤边上蜂蜜,烤熟后颜色金黄鲜红,即可食用。", - "entity_type": "food", - "flavor": "金黄鲜香", - "gallery_urls": [ - ], - "id": "food-003", - "ingredients": [ - "小香猪", - "蜂蜜" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-003/01.jpg", - "name": "特色烤香猪", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 15, - "sort_within_type": 3, - "subtype": "烧烤", - "tags": [ - "烧烤", - "小香猪", - "蜂蜜" - ], - "type": "烧烤", - "type_code": "food-barbecue", - "type_order": 4 - }, - "food-004": { - "address_text": "", - "badge": "鸡类主菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "柴火或碳火猛火爆炒", - "炭火微炖" - ], - "data_status": "已归类", - "description": "柴火鸡制作过程使用柴火或碳火,经过猛火爆炒后,再用炭火微炖而成。用的食材原生态、接地气,开锅色泽红亮、油润,味辣鲜香,鸡肉糯而不柴,肥而不腻,柔香滋润,素菜入味。", - "entity_type": "food", - "flavor": "味辣鲜香、糯而不柴", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-004/02.jpg" - ], - "id": "food-004", - "ingredients": [ - "鸡肉", - "配菜" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-004/01.jpg", - "name": "柴火鸡", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 3, - "sort_within_type": 4, - "subtype": "鸡类主菜", - "tags": [ - "鸡类主菜", - "鸡肉", - "配菜" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-005": { - "address_text": "", - "badge": "地方小吃", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "豆腐制圆", - "回锅油炸" - ], - "data_status": "已归类", - "description": "“托于手中晃动而不松散,置于汤中久煮而不沉碎。”这是贵州食客对醒狮豆腐圆子至高的美誉。豆腐圆子是根据醒狮镇当地特种的优质黄豆打磨的豆腐制作而成,回锅油炸后味道外酥里嫩,加上地方特色辣椒拌折耳根更让人回味悠长。", - "entity_type": "food", - "flavor": "外酥里嫩", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-005/02.jpg" - ], - "id": "food-005", - "ingredients": [ - "醒狮镇黄豆", - "豆腐", - "辣椒", - "折耳根" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-005/01.jpg", - "name": "醒狮豆腐圆子", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 17, - "sort_within_type": 5, - "subtype": "地方小吃", - "tags": [ - "地方小吃", - "醒狮镇黄豆", - "豆腐", - "辣椒", - "折耳根" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "food-006": { - "address_text": "", - "badge": "火锅", - "business_hours": "09:00–22:00", - "category": "火锅汤锅", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "酸汤涮烫" - ], - "data_status": "已归类", - "description": "拥有墨黑色光泽且纹路清晰的毛肚,在秘制红酸汤里烫好后口感脆嫩,配上酸汤鲜艳的色泽和浓郁的香气,让人垂涎欲滴!", - "entity_type": "food", - "flavor": "酸香、脆嫩", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-006/02.jpg" - ], - "id": "food-006", - "ingredients": [ - "毛肚", - "红酸汤" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-006/01.jpg", - "name": "酸汤毛肚火锅", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 8, - "sort_within_type": 6, - "subtype": "火锅", - "tags": [ - "火锅", - "毛肚", - "红酸汤" - ], - "type": "火锅汤锅", - "type_code": "food-hotpot", - "type_order": 2 - }, - "food-007": { - "address_text": "", - "badge": "鱼类主菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "布依秘制酸汤烹饪" - ], - "data_status": "已归类", - "description": "优渥自然环境中缓慢生长、吃稻花长大的稻花鱼,营养含量高,肉质鲜嫩,特别是蛋白质含量是普通鱼的3-5倍,稻田里鲜活捕捉的稻花鱼,经布依人秘制的酸汤烹饪出来,汤鲜味美,令人垂涎。", - "entity_type": "food", - "flavor": "汤鲜、肉嫩", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/02.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/03.jpg", - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/04.jpg" - ], - "id": "food-007", - "ingredients": [ - "稻花鱼", - "酸汤" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-007/01.jpg", - "name": "湾滩河稻花鱼", - "nutrition_facts": [ - { - "label": "蛋白质含量", - "note": "源PDF表述,未独立核验", - "unit": "", - "value": "普通鱼的3-5倍" - } - ], - "origin_location": "龙里县", - "sort_order": 4, - "sort_within_type": 7, - "subtype": "鱼类主菜", - "tags": [ - "鱼类主菜", - "稻花鱼", - "酸汤" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-008": { - "address_text": "", - "badge": "腌腊菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "水煮", - "烹炒" - ], - "data_status": "已归类", - "description": "腊肉经过水煮,肥肉油亮,瘦肉酥香,令人垂涎欲滴。用这样的人间美味,搭配本土的折耳根,只需简单烹炒,便可出锅,诱人的肉质与浓郁的香味,会令所有的味蕾躁动起来。", - "entity_type": "food", - "flavor": "肥亮、酥香", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-008/02.jpg" - ], - "id": "food-008", - "ingredients": [ - "腊肉", - "折耳根" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-008/01.jpg", - "name": "农家腊肉", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 5, - "sort_within_type": 8, - "subtype": "腌腊菜", - "tags": [ - "腌腊菜", - "腊肉", - "折耳根" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-009": { - "address_text": "", - "badge": "烧烤", - "business_hours": "09:00–22:00", - "category": "烧烤", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "烤制" - ], - "data_status": "已归类", - "description": "烤全羊外表金黄油亮,外皮焦黄发脆,肉质绵软鲜嫩,羊肉味清香扑鼻、香浓嫩滑、齿颊留香。", - "entity_type": "food", - "flavor": "外脆里嫩、香浓", - "gallery_urls": [ - ], - "id": "food-009", - "ingredients": [ - "羊肉" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-009/01.jpg", - "name": "烤全羊", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 16, - "sort_within_type": 9, - "subtype": "烧烤", - "tags": [ - "烧烤", - "羊肉" - ], - "type": "烧烤", - "type_code": "food-barbecue", - "type_order": 4 - }, - "food-010": { - "address_text": "", - "badge": "干锅", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "干锅烹制" - ], - "data_status": "已归类", - "description": "马肉营养堪称丰富,每100克中,约含蛋白质19.6克,脂肪0.8克,含铁量比猪肉高5-6倍,比牛羊肉高3-4倍。长期食用马肉,还可防治动脉硬化和高血压等,有益于人体健康。", - "entity_type": "food", - "flavor": "香辣", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-010/02.jpg" - ], - "id": "food-010", - "ingredients": [ - "马肉" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-010/01.jpg", - "name": "干锅马肉", - "nutrition_facts": [ - { - "label": "蛋白质", - "note": "约,源PDF表述", - "unit": "克/100克", - "value": 19.6 - }, - { - "label": "脂肪", - "note": "源PDF表述", - "unit": "克/100克", - "value": 0.8 - }, - { - "label": "含铁量", - "note": "源PDF表述,未独立核验", - "unit": "", - "value": "猪肉的5-6倍;牛羊肉的3-4倍" - } - ], - "origin_location": "龙里县", - "sort_order": 6, - "sort_within_type": 10, - "subtype": "干锅", - "tags": [ - "干锅", - "马肉" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-011": { - "address_text": "", - "badge": "火锅", - "business_hours": "09:00–22:00", - "category": "火锅汤锅", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "火锅" - ], - "data_status": "已归类", - "description": "一碗羊脚火锅,别样的香辣滋味,让你流连忘返。", - "entity_type": "food", - "flavor": "香辣", - "gallery_urls": [ - "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-011/02.jpg" - ], - "id": "food-011", - "ingredients": [ - "羊脚" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-011/01.jpg", - "name": "羊脚火锅", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 9, - "sort_within_type": 11, - "subtype": "火锅", - "tags": [ - "火锅", - "羊脚" - ], - "type": "火锅汤锅", - "type_code": "food-hotpot", - "type_order": 2 - }, - "food-012": { - "address_text": "", - "badge": "鱼类火锅", - "business_hours": "09:00–22:00", - "category": "火锅汤锅", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "酸汤烹制" - ], - "data_status": "已归类", - "description": "酸爽过瘾,汤汁浓郁,贵州人情有独钟的味道——酸汤鱼,保准你吃过之后,也变成“三天不吃酸,走路打蹿蹿”。", - "entity_type": "food", - "flavor": "酸爽、汤汁浓郁", - "gallery_urls": [ - ], - "id": "food-012", - "ingredients": [ - "鱼", - "酸汤" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-012/01.jpg", - "name": "酸汤鱼", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 10, - "sort_within_type": 12, - "subtype": "鱼类火锅", - "tags": [ - "鱼类火锅", - "鱼", - "酸汤" - ], - "type": "火锅汤锅", - "type_code": "food-hotpot", - "type_order": 2 - }, - "food-013": { - "address_text": "", - "badge": "火锅", - "business_hours": "09:00–22:00", - "category": "火锅汤锅", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "熬制汤底", - "火锅" - ], - "data_status": "已归类", - "description": "豆米火锅是一种健康的火锅。豆米含有蛋白质及多种人体必须的氨基酸和膳食纤维,加入浓浓的骨头汤融合豆米熬制的汤底,清香四溢,浓稠美味,可谓真正的养生火锅。", - "entity_type": "food", - "flavor": "清香、浓稠", - "gallery_urls": [ - ], - "id": "food-013", - "ingredients": [ - "豆米", - "骨头汤" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-013/01.jpg", - "name": "豆米火锅", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 11, - "sort_within_type": 13, - "subtype": "火锅", - "tags": [ - "火锅", - "豆米", - "骨头汤" - ], - "type": "火锅汤锅", - "type_code": "food-hotpot", - "type_order": 2 - }, - "food-014": { - "address_text": "", - "badge": "鸡类主菜", - "business_hours": "09:00–22:00", - "category": "特色菜肴", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "小火慢浸", - "炸脆" - ], - "data_status": "已归类", - "description": "酥松的黄豆浸着满满的鸡汁,清香嫩爽的鸡肉散着淡淡的豆香,就着小火慢慢浸出来的鸡油细细地将黄豆与鸡骨头炸脆,黄豆吸入鸡汁,变得干脆清香,而鸡肉由于浸入炒豆香味而更加鲜嫩味美。", - "entity_type": "food", - "flavor": "豆香、鲜嫩", - "gallery_urls": [ - ], - "id": "food-014", - "ingredients": [ - "鸡肉", - "黄豆" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-014/01.jpg", - "name": "黄豆鸡", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 7, - "sort_within_type": 14, - "subtype": "鸡类主菜", - "tags": [ - "鸡类主菜", - "鸡肉", - "黄豆" - ], - "type": "特色菜肴", - "type_code": "food-featured-dish", - "type_order": 1 - }, - "food-015": { - "address_text": "", - "badge": "粉面", - "business_hours": "09:00–22:00", - "category": "粉面主食", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "烩制" - ], - "data_status": "已归类", - "description": "新鲜猪肉加上现发黄豆芽、龙里糟辣椒及葱花等辅料烩制而成的鲜香特色肉丝粉深受龙里人喜爱,时隔两天总要吃上一碗肉丝粉来满足自身的味蕾需求。", - "entity_type": "food", - "flavor": "鲜香", - "gallery_urls": [ - ], - "id": "food-015", - "ingredients": [ - "猪肉", - "黄豆芽", - "龙里糟辣椒", - "葱花", - "米粉" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-015/01.jpg", - "name": "肉丝粉", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 12, - "sort_within_type": 15, - "subtype": "粉面", - "tags": [ - "粉面", - "猪肉", - "黄豆芽", - "龙里糟辣椒", - "葱花" - ], - "type": "粉面主食", - "type_code": "food-noodles-staple", - "type_order": 3 - }, - "food-016": { - "address_text": "", - "badge": "粉面", - "business_hours": "09:00–22:00", - "category": "粉面主食", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "拌制" - ], - "data_status": "已归类", - "description": "辣鸡粉中的辣椒混着鸡肉,鸡肉拌着米粉,米粉粘着辣椒,环环相扣、精彩绝伦且回味无穷,鸡肉不干不柴,很入味,滋味更加浓郁纯粹。", - "entity_type": "food", - "flavor": "香辣、浓郁", - "gallery_urls": [ - ], - "id": "food-016", - "ingredients": [ - "鸡肉", - "辣椒", - "米粉" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-016/01.jpg", - "name": "辣鸡粉", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 13, - "sort_within_type": 16, - "subtype": "粉面", - "tags": [ - "粉面", - "鸡肉", - "辣椒", - "米粉" - ], - "type": "粉面主食", - "type_code": "food-noodles-staple", - "type_order": 3 - }, - "food-017": { - "address_text": "", - "badge": "粉面", - "business_hours": "09:00–22:00", - "category": "粉面主食", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "炖煮" - ], - "data_status": "已归类", - "description": "鲜香浓郁的鸡汤搭配上软糯Q弹的米粉,加入香菇、小葱提味,口感丰富,浓香扑鼻,让人垂涎欲滴,一碗下肚还想再来一碗!", - "entity_type": "food", - "flavor": "鲜香、浓郁", - "gallery_urls": [ - ], - "id": "food-017", - "ingredients": [ - "鸡汤", - "米粉", - "香菇", - "小葱" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-017/01.jpg", - "name": "炖鸡粉", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 14, - "sort_within_type": 17, - "subtype": "粉面", - "tags": [ - "粉面", - "鸡汤", - "米粉", - "香菇", - "小葱" - ], - "type": "粉面主食", - "type_code": "food-noodles-staple", - "type_order": 3 - }, - "food-018": { - "address_text": "", - "badge": "甜品", - "business_hours": "09:00–22:00", - "category": "甜品饮品", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "手搓", - "冰镇" - ], - "data_status": "已归类", - "description": "晶莹剔透的冰粉,甘甜的红糖浆,花香浓郁的腌制玫瑰,香糯的芋圆,各种水果丁,葡萄干、芝麻、花生碎,还可以加入米酒、小汤圆,最后加冰块、矿泉水,一碗下肚通体舒爽。", - "entity_type": "food", - "flavor": "甘甜、清凉", - "gallery_urls": [ - ], - "id": "food-018", - "ingredients": [ - "冰粉", - "红糖浆", - "腌制玫瑰", - "芋圆", - "水果丁", - "葡萄干", - "芝麻", - "花生碎", - "米酒", - "小汤圆" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-018/01.jpg", - "name": "手搓冰粉", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 23, - "sort_within_type": 18, - "subtype": "甜品", - "tags": [ - "甜品", - "冰粉", - "红糖浆", - "腌制玫瑰", - "芋圆" - ], - "type": "甜品饮品", - "type_code": "food-dessert-drink", - "type_order": 6 - }, - "food-019": { - "address_text": "", - "badge": "饮品", - "business_hours": "09:00–22:00", - "category": "甜品饮品", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "熬制或冲调" - ], - "data_status": "已归类", - "description": "杨梅汤饮品不仅口感清凉爽口,酸甜浓郁,还具有很好的消暑解渴效果,深受人们的喜爱。", - "entity_type": "food", - "flavor": "酸甜、清凉", - "gallery_urls": [ - ], - "id": "food-019", - "ingredients": [ - "杨梅" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-019/01.jpg", - "name": "杨梅汤饮品", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 24, - "sort_within_type": 19, - "subtype": "饮品", - "tags": [ - "饮品", - "杨梅" - ], - "type": "甜品饮品", - "type_code": "food-dessert-drink", - "type_order": 6 - }, - "food-020": { - "address_text": "", - "badge": "休闲零食", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - "传统工艺", - "烘焙" - ], - "data_status": "已归类", - "description": "麻辣洋芋片为了土豆片的脆爽口感,搭配传统的制作工艺和经典配方,保留了新鲜的美味,经过适合的温度,烘焙出飘香万里的土豆片,金黄诱人的表面,色香味俱全。", - "entity_type": "food", - "flavor": "麻辣、脆爽", - "gallery_urls": [ - ], - "id": "food-020", - "ingredients": [ - "土豆", - "麻辣调味" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-020/01.jpg", - "name": "麻辣洋芋片", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 18, - "sort_within_type": 20, - "subtype": "休闲零食", - "tags": [ - "休闲零食", - "土豆", - "麻辣调味" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "food-021": { - "address_text": "", - "badge": "地方小吃", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - ], - "data_status": "已归类", - "entity_type": "food", - "gallery_urls": [ - ], - "id": "food-021", - "ingredients": [ - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-021/01.jpg", - "name": "手工丝娃娃", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 19, - "sort_within_type": 21, - "subtype": "地方小吃", - "tags": [ - "地方小吃" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "food-022": { - "address_text": "", - "badge": "地方小吃", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - ], - "data_status": "已归类", - "entity_type": "food", - "gallery_urls": [ - ], - "id": "food-022", - "ingredients": [ - "洋芋" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-022/01.jpg", - "name": "洋芋粑粑", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 20, - "sort_within_type": 22, - "subtype": "地方小吃", - "tags": [ - "地方小吃", - "洋芋" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "food-023": { - "address_text": "", - "badge": "糖点", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - ], - "data_status": "已归类", - "entity_type": "food", - "gallery_urls": [ - ], - "id": "food-023", - "ingredients": [ - "糯米" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-023/01.jpg", - "name": "糯米糖", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 21, - "sort_within_type": 23, - "subtype": "糖点", - "tags": [ - "糖点", - "糯米" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "food-024": { - "address_text": "", - "badge": "糕点", - "business_hours": "09:00–22:00", - "category": "地方小吃", - "collection": "foods", - "contact": null, - "cooking_methods": [ - ], - "data_status": "已归类", - "entity_type": "food", - "gallery_urls": [ - ], - "id": "food-024", - "ingredients": [ - "红糖", - "糍粑" - ], - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-024/01.jpg", - "name": "红糖糍粑", - "nutrition_facts": [ - ], - "origin_location": "龙里县", - "sort_order": 22, - "sort_within_type": 24, - "subtype": "糕点", - "tags": [ - "糕点", - "红糖", - "糍粑" - ], - "type": "地方小吃", - "type_code": "food-local-snack", - "type_order": 5 - }, - "specialty-001": { - "address_text": "", - "badge": "果干", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-001", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-001/01.png", - "name": "刺梨干", - "product_type": "果干", - "sort_order": 1, - "sort_within_type": 1, - "subtype": "果干", - "tags": [ - "刺梨制品", - "果干" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-002": { - "address_text": "", - "badge": "饮品", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-002", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-002/01.jpg", - "name": "刺梨汁", - "product_type": "饮品", - "sort_order": 2, - "sort_within_type": 2, - "subtype": "饮品", - "tags": [ - "刺梨制品", - "饮品" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-003": { - "address_text": "", - "badge": "饮品", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-003", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-003/01.jpg", - "name": "刺梨原汁", - "product_type": "饮品", - "sort_order": 3, - "sort_within_type": 3, - "subtype": "饮品", - "tags": [ - "刺梨制品", - "饮品" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-004": { - "address_text": "", - "badge": "茶饮", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-004", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-004/01.jpg", - "name": "刺梨养生茶", - "product_type": "茶饮", - "sort_order": 4, - "sort_within_type": 4, - "subtype": "茶饮", - "tags": [ - "刺梨制品", - "茶饮" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-005": { - "address_text": "", - "badge": "膳食纤维产品", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-005", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-005/01.jpg", - "name": "刺梨膳食纤维片", - "product_type": "膳食纤维产品", - "sort_order": 5, - "sort_within_type": 5, - "subtype": "膳食纤维产品", - "tags": [ - "刺梨制品", - "膳食纤维产品" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-006": { - "address_text": "", - "badge": "面食产品", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-006", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-006/01.png", - "name": "刺梨葛根面", - "product_type": "面食产品", - "sort_order": 6, - "sort_within_type": 6, - "subtype": "面食产品", - "tags": [ - "刺梨制品", - "面食产品" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-007": { - "address_text": "", - "badge": "果脯", - "brand": "千优谷", - "business_hours": "09:00–22:00", - "category": "刺梨制品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-007", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-007/01.jpg", - "name": "千优谷刺梨果脯", - "product_type": "果脯", - "sort_order": 7, - "sort_within_type": 7, - "subtype": "果脯", - "tags": [ - "刺梨制品", - "果脯" - ], - "type": "刺梨制品", - "type_code": "specialty-rosa-roxburghii", - "type_order": 1 - }, - "specialty-008": { - "address_text": "", - "badge": "辣子鸡产品", - "brand": "龙哩邓氏", - "business_hours": "09:00–22:00", - "category": "地方食品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-008", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-008/01.jpg", - "name": "龙哩邓氏辣子鸡", - "product_type": "辣子鸡产品", - "sort_order": 8, - "sort_within_type": 8, - "subtype": "辣子鸡产品", - "tags": [ - "地方食品", - "辣子鸡产品" - ], - "type": "地方食品", - "type_code": "specialty-local-food", - "type_order": 2 - }, - "specialty-009": { - "address_text": "", - "badge": "豆制品", - "brand": "龙缘盛", - "business_hours": "09:00–22:00", - "category": "地方食品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-009", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-009/01.jpg", - "name": "龙缘盛豆干", - "product_type": "豆制品", - "sort_order": 9, - "sort_within_type": 9, - "subtype": "豆制品", - "tags": [ - "地方食品", - "豆制品" - ], - "type": "地方食品", - "type_code": "specialty-local-food", - "type_order": 2 - }, - "specialty-010": { - "address_text": "", - "badge": "大米", - "brand": "鱼稻香", - "business_hours": "09:00–22:00", - "category": "农产品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-010", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-010/01.jpg", - "name": "鱼稻香羊场大米", - "product_type": "大米", - "sort_order": 10, - "sort_within_type": 10, - "subtype": "大米", - "tags": [ - "农产品", - "大米" - ], - "type": "农产品", - "type_code": "specialty-agricultural", - "type_order": 3 - }, - "specialty-011": { - "address_text": "", - "badge": "菊花茶", - "brand": "康吉", - "business_hours": "09:00–22:00", - "category": "农产品", - "collection": "specialties", - "contact": null, - "data_status": "已归类", - "entity_type": "specialty", - "gallery_urls": [ - ], - "id": "specialty-011", - "main_image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-011/01.jpg", - "name": "康吉金丝皇菊", - "product_type": "菊花茶", - "sort_order": 11, - "sort_within_type": 11, - "subtype": "菊花茶", - "tags": [ - "农产品", - "菊花茶" - ], - "type": "农产品", - "type_code": "specialty-agricultural", - "type_order": 3 - } -} \ No newline at end of file diff --git a/src/mock/sections.json b/src/mock/sections.json deleted file mode 100644 index d83d012..0000000 --- a/src/mock/sections.json +++ /dev/null @@ -1,85 +0,0 @@ -[ - { - "collections": [ - "attractions", - "attraction_subprojects" - ], - "coverImage": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", - "group_count": 7, - "group_ids": [ - "attractions-attraction-comprehensive", - "attractions-attraction-natural", - "attractions-attraction-rural-culture", - "attractions-attraction-themed-town", - "attractions-attraction-landmark", - "attraction_subprojects-subproject-recreation", - "attraction_subprojects-subproject-performance" - ], - "item_count": 18, - "key": "tourism", - "subtitle": "领取龙里旅游优惠", - "supportAssetIds": [ - "tourism-overview-map", - "tourism-guide-qr" - ], - "title": "龙里票根经济" - }, - { - "collections": [ - "accommodations" - ], - "group_count": 4, - "group_ids": [ - "accommodations-accommodation-hotel", - "accommodations-accommodation-homestay", - "accommodations-accommodation-apartment", - "accommodations-accommodation-camping" - ], - "item_count": 21, - "key": "lodging", - "subtitle": "酒店 · 民宿别院 · 旅居公寓 · 露营基地", - "supportAssetIds": [ - "lodging-location-schematic", - "lodging-guide-qr" - ], - "title": "旅居服务" - }, - { - "collections": [ - "foods" - ], - "group_count": 6, - "group_ids": [ - "foods-food-featured-dish", - "foods-food-hotpot", - "foods-food-noodles-staple", - "foods-food-barbecue", - "foods-food-local-snack", - "foods-food-dessert-drink" - ], - "item_count": 24, - "key": "food", - "subtitle": "特色菜肴 · 地方小吃 · 甜品饮品", - "supportAssetIds": [ - "food-guide-qr" - ], - "title": "全域美食" - }, - { - "collections": [ - "specialties" - ], - "group_count": 3, - "group_ids": [ - "specialties-specialty-rosa-roxburghii", - "specialties-specialty-local-food", - "specialties-specialty-agricultural" - ], - "item_count": 11, - "key": "specialties", - "subtitle": "刺梨制品 · 地方食品 · 农产品", - "supportAssetIds": [ - ], - "title": "龙里特产" - } -] \ No newline at end of file diff --git a/src/mock/v1/benefits.json b/src/mock/v1/benefits.json new file mode 100644 index 0000000..714ad70 --- /dev/null +++ b/src/mock/v1/benefits.json @@ -0,0 +1,653 @@ +{ + "items": [ + { + "id": "benefit-001", + "merchant_id": "attraction-001", + "title": "龙里水乡单人票权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", + "status": "published", + "total_limit": 200, + "claim_count": 113, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "scenic", + "merchant_name": "龙里水乡旅游生态城", + "price": { + "original": 128, + "deal": 88, + "spec": "单人票" + }, + "slogan": [ + "畅游龙里", + "拥抱自然" + ], + "scope_desc": "联盟景区 / 游玩商户" + }, + { + "id": "benefit-002", + "merchant_id": "accommodation-002", + "title": "龙里住宿周末双床房权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-002/01.jpg", + "status": "published", + "total_limit": 120, + "claim_count": 74, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "stay", + "merchant_name": "云从朵花温泉度假中心", + "price": { + "original": 468, + "deal": 368, + "spec": "双床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "联盟住宿商户|周末可用" + }, + { + "id": "benefit-003", + "merchant_id": "food-002", + "title": "龙里餐饮 2-3 人餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", + "status": "published", + "total_limit": 300, + "claim_count": 148, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "龙里辣子鸡", + "price": { + "original": 125, + "deal": 99, + "spec": "2-3 人餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-004", + "merchant_id": "specialty-001", + "title": "龙里刺梨礼盒特产权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-001/01.png", + "status": "published", + "total_limit": 80, + "claim_count": 80, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": false, + "claim_unavailable_reason": "claim_limit_reached", + "user_benefit_id": null, + "section_key": "specialty", + "merchant_name": "龙里刺梨干", + "price": { + "original": 158, + "deal": 108, + "spec": "刺梨礼盒" + }, + "slogan": [ + "带走龙里", + "山野好物" + ], + "scope_desc": "联盟特产商户|产地直发" + }, + { + "id": "benefit-005", + "merchant_id": "attraction-001", + "title": "龙里水乡双人票权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/02.jpg", + "status": "published", + "total_limit": 150, + "claim_count": 87, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "scenic", + "merchant_name": "龙里水乡旅游生态城", + "price": { + "original": 198, + "deal": 148, + "spec": "双人票" + }, + "slogan": [ + "畅游龙里", + "拥抱自然" + ], + "scope_desc": "联盟景区 / 游玩商户" + }, + { + "id": "benefit-006", + "merchant_id": "food-001", + "title": "龙里餐饮 3-5 人餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", + "status": "published", + "total_limit": 300, + "claim_count": 172, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "野生菌肉饼鸡", + "price": { + "original": 250, + "deal": 199, + "spec": "3-5 人餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-007", + "merchant_id": "food-002", + "title": "龙里餐饮 5-7 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", + "status": "published", + "total_limit": 200, + "claim_count": 109, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "龙里辣子鸡", + "price": { + "original": 375, + "deal": 299, + "spec": "5-7 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-008", + "merchant_id": "food-001", + "title": "龙里餐饮 5-9 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", + "status": "published", + "total_limit": 160, + "claim_count": 86, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "野生菌肉饼鸡", + "price": { + "original": 500, + "deal": 399, + "spec": "5-9 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-009", + "merchant_id": "food-002", + "title": "龙里餐饮 7-10 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/01.jpg", + "status": "published", + "total_limit": 120, + "claim_count": 62, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "龙里辣子鸡", + "price": { + "original": 625, + "deal": 499, + "spec": "7-10 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-010", + "merchant_id": "food-001", + "title": "龙里餐饮 9-12 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", + "status": "published", + "total_limit": 100, + "claim_count": 59, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "野生菌肉饼鸡", + "price": { + "original": 750, + "deal": 599, + "spec": "9-12 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-011", + "merchant_id": "food-002", + "title": "龙里餐饮 10-14 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-002/02.jpg", + "status": "published", + "total_limit": 60, + "claim_count": 37, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "龙里辣子鸡", + "price": { + "original": 1000, + "deal": 799, + "spec": "10-14 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-012", + "merchant_id": "food-001", + "title": "龙里餐饮 10-16 人套餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/02.jpg", + "status": "published", + "total_limit": 40, + "claim_count": 28, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "food", + "merchant_name": "野生菌肉饼鸡", + "price": { + "original": 1250, + "deal": 999, + "spec": "10-16 人套餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "联盟餐饮商户" + }, + { + "id": "benefit-013", + "merchant_id": "specialty-002", + "title": "龙里刺梨原浆特产权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/specialties/specialty-002/01.jpg", + "status": "published", + "total_limit": 200, + "claim_count": 82, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "specialty", + "merchant_name": "龙里刺梨汁", + "price": { + "original": 99, + "deal": 69, + "spec": "刺梨原浆 2 瓶" + }, + "slogan": [ + "带走龙里", + "山野好物" + ], + "scope_desc": "联盟特产商户|产地直发" + }, + { + "id": "benefit-101", + "merchant_id": "attraction-001", + "title": "龙里水乡单人票权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", + "status": "published", + "total_limit": 200, + "claim_count": 113, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": true, + "can_claim": false, + "claim_unavailable_reason": "already_claimed", + "user_benefit_id": "user-benefit-101", + "section_key": "scenic", + "merchant_name": "龙里水乡旅游生态城", + "price": { + "original": 128, + "deal": 88, + "spec": "单人票" + }, + "slogan": [ + "畅游龙里", + "拥抱自然" + ], + "scope_desc": "龙里水乡旅游生态城" + }, + { + "id": "benefit-102", + "merchant_id": "accommodation-001", + "title": "龙里住宿双床房权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/01.jpg", + "status": "published", + "total_limit": 120, + "claim_count": 88, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": true, + "can_claim": false, + "claim_unavailable_reason": "already_claimed", + "user_benefit_id": "user-benefit-102", + "section_key": "stay", + "merchant_name": "云河酒店", + "price": { + "original": 468, + "deal": 368, + "spec": "双床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "云河酒店等联盟住宿商户" + }, + { + "id": "benefit-103", + "merchant_id": "food-002", + "title": "龙里餐饮 3-5 人餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", + "status": "published", + "total_limit": 300, + "claim_count": 204, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": true, + "can_claim": false, + "claim_unavailable_reason": "already_claimed", + "user_benefit_id": "user-benefit-103", + "section_key": "food", + "merchant_name": "龙里辣子鸡", + "price": { + "original": 250, + "deal": 199, + "spec": "3-5 人餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "龙里辣子鸡等餐饮商户" + }, + { + "id": "benefit-104", + "merchant_id": "accommodation-005", + "title": "龙里住宿大床房权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/01.jpg", + "status": "published", + "total_limit": 60, + "claim_count": 60, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-08-01T00:00:00Z", + "valid_until": "2026-08-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": true, + "can_claim": false, + "claim_unavailable_reason": "already_claimed", + "user_benefit_id": "user-benefit-104", + "section_key": "stay", + "merchant_name": "龙里伯爵钻石酒店", + "price": { + "original": 628, + "deal": 468, + "spec": "大床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "龙里伯爵钻石酒店" + }, + { + "id": "benefit-201", + "merchant_id": "accommodation-001", + "title": "云河酒店到店住宿权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/03.jpg", + "status": "published", + "total_limit": 60, + "claim_count": 32, + "claim_start": null, + "claim_end": null, + "validity_mode": "days", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "valid_days": 7, + "usage_limit": null, + "version": 1, + "created_at": "2026-09-17T02:00:00Z", + "updated_at": "2026-09-17T02:00:00Z", + "already_claimed": false, + "can_claim": true, + "claim_unavailable_reason": "", + "user_benefit_id": null, + "section_key": "stay", + "merchant_name": "云河酒店", + "price": { + "original": 468, + "deal": 368, + "spec": "双床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "云河酒店专享" + } + ], + "total": 18 +} diff --git a/src/mock/v1/contents.json b/src/mock/v1/contents.json new file mode 100644 index 0000000..713b333 --- /dev/null +++ b/src/mock/v1/contents.json @@ -0,0 +1,61 @@ +{ + "items": [ + { + "key": "terms", + "title": "用户协议", + "body": "欢迎使用龙里文旅小程序。本协议是你与龙里文旅之间就使用本小程序服务所订立的约定,请仔细阅读并同意后使用。\n一、服务内容\n本小程序面向贵州省黔南布依族苗族自治州龙里县,提供景区、旅居、美食、特产的内容导览,以及票根权益的领取与使用服务。\n二、账号与登录\n你可通过微信一键登录使用本小程序,浏览内容无需登录;领取与使用权益需登录并绑定手机号。未注册的手机号将自动创建账号。\n三、权益说明\n权益不绑定具体商品,可多次使用。使用行为仅记录使用次数与时间,不会使权益失效。权益的适用范围与最终解释权归权益提供方所有。\n四、免责声明\n站内营业时间、价格、联系方式等信息可能发生变动,请以商户现场公示为准。\n五、账号注销\n你可以随时在「我的 → 账户注销」中删除个人信息与权益记录,注销完成后账号将无法恢复。\n六、联系我们\n如对本协议有疑问,请致电 0854-5630880。", + "phone": "0854-5630880", + "service_hours": "09:00 - 18:00", + "brand_name": "龙里文旅", + "version": 3, + "enabled": true, + "sort_order": 1, + "valid_from": null, + "valid_until": null, + "updated_at": "2026-09-11T00:00:00Z" + }, + { + "key": "privacy", + "title": "隐私政策", + "body": "我们非常重视你的个人信息保护。本政策说明龙里文旅小程序如何收集、使用、存储与保护你的个人信息。\n一、我们收集的信息\n1. 微信授权信息:在你主动点击登录时,我们获取你的微信身份标识,仅用于建立与识别你的账号。\n2. 手机号:在你主动点击「微信一键绑定」时获取,仅用于领取权益、权益使用与账号找回。\n3. 权益记录:你领取与使用权益的时间、权益编号,用于使用校验与纠纷处理。\n二、我们如何使用信息\n仅在实现上述功能所必需的范围内使用,不会用于广告推送或向第三方出售。\n三、信息的存储与保护\n数据存储于中国境内服务器,传输过程采用 HTTPS 加密。我们采取访问控制与最小权限原则保护你的数据。\n四、你的权利\n你可以随时在「我的」页面修改头像与昵称;可以通过「账户注销」删除个人信息与权益记录。\n五、联系我们\n如对本政策有疑问,请致电 0854-5630880。", + "phone": "0854-5630880", + "service_hours": "09:00 - 18:00", + "brand_name": "龙里文旅", + "version": 2, + "enabled": true, + "sort_order": 2, + "valid_from": null, + "valid_until": null, + "updated_at": "2026-09-11T00:00:00Z" + }, + { + "key": "about", + "title": "关于我们", + "body": "龙里文旅是面向贵州省黔南布依族苗族自治州龙里县的全域旅游导览小程序,聚合景区、旅居、美食、特产四大板块,并提供票根权益的领取与使用服务。", + "phone": "0854-5630880", + "service_hours": "09:00 - 18:00", + "brand_name": "龙里文旅", + "version": 1, + "enabled": true, + "sort_order": 3, + "valid_from": null, + "valid_until": null, + "updated_at": "2026-09-11T00:00:00Z" + }, + { + "key": "customer_service", + "title": "联系客服", + "body": "工作日可拨打以下电话,节假日照常。", + "phone": "0854-5630880", + "service_hours": "09:00 - 18:00", + "brand_name": "龙里文旅", + "version": 1, + "enabled": true, + "sort_order": 4, + "valid_from": null, + "valid_until": null, + "updated_at": "2026-09-11T00:00:00Z" + } + ], + "total": 4 +} diff --git a/src/mock/v1/erasure-status.json b/src/mock/v1/erasure-status.json new file mode 100644 index 0000000..efc5e06 --- /dev/null +++ b/src/mock/v1/erasure-status.json @@ -0,0 +1,4 @@ +{ + "status": "completed", + "retryable": false +} diff --git a/src/mock/v1/erasure.json b/src/mock/v1/erasure.json new file mode 100644 index 0000000..4c6e6cf --- /dev/null +++ b/src/mock/v1/erasure.json @@ -0,0 +1,5 @@ +{ + "status_token": "mock-erasure-receipt", + "status": "processing", + "retryable": true +} diff --git a/src/mock/v1/login.json b/src/mock/v1/login.json new file mode 100644 index 0000000..51887d0 --- /dev/null +++ b/src/mock/v1/login.json @@ -0,0 +1,11 @@ +{ + "token": "mock-user-session-token", + "user": { + "id": "mock-user-0001", + "nickname": "", + "avatar_url": "", + "phone_bound": false, + "created_at": "2026-09-17T10:00:00Z" + }, + "expires_at": "2026-09-24T10:00:00Z" +} diff --git a/src/mock/v1/me-benefits.json b/src/mock/v1/me-benefits.json new file mode 100644 index 0000000..f2d4360 --- /dev/null +++ b/src/mock/v1/me-benefits.json @@ -0,0 +1,134 @@ +{ + "items": [ + { + "id": "user-benefit-103", + "user_id": "mock-user-0001", + "merchant_id": "food-002", + "merchant_name": "龙里辣子鸡", + "benefit_id": "benefit-103", + "title": "龙里餐饮 3-5 人餐权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/foods/food-001/01.jpg", + "usage_limit": null, + "use_count": 0, + "last_used_at": null, + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "claimed_at": "2026-09-12T02:15:00Z", + "voided_at": null, + "status": "available", + "can_use": true, + "unavailable_reason": "", + "section_key": "food", + "price": { + "original": 250, + "deal": 199, + "spec": "3-5 人餐" + }, + "slogan": [ + "寻味龙里", + "品味烟火" + ], + "scope_desc": "龙里辣子鸡等餐饮商户" + }, + { + "id": "user-benefit-102", + "user_id": "mock-user-0001", + "merchant_id": "accommodation-001", + "merchant_name": "云河酒店", + "benefit_id": "benefit-102", + "title": "龙里住宿双床房权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-001/01.jpg", + "usage_limit": null, + "use_count": 1, + "last_used_at": "2026-09-14T08:05:00Z", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "claimed_at": "2026-09-12T02:12:00Z", + "voided_at": null, + "status": "available", + "can_use": true, + "unavailable_reason": "", + "section_key": "stay", + "price": { + "original": 468, + "deal": 368, + "spec": "双床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "云河酒店等联盟住宿商户" + }, + { + "id": "user-benefit-101", + "user_id": "mock-user-0001", + "merchant_id": "attraction-001", + "merchant_name": "龙里水乡旅游生态城", + "benefit_id": "benefit-101", + "title": "龙里水乡单人票权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/attractions/attraction-001/01.jpg", + "usage_limit": null, + "use_count": 2, + "last_used_at": "2026-09-15T03:20:00Z", + "valid_from": "2026-09-12T00:00:00Z", + "valid_until": "2026-12-31T00:00:00Z", + "claimed_at": "2026-09-12T02:10:00Z", + "voided_at": null, + "status": "available", + "can_use": true, + "unavailable_reason": "", + "section_key": "scenic", + "price": { + "original": 128, + "deal": 88, + "spec": "单人票" + }, + "slogan": [ + "畅游龙里", + "拥抱自然" + ], + "scope_desc": "龙里水乡旅游生态城" + }, + { + "id": "user-benefit-104", + "user_id": "mock-user-0001", + "merchant_id": "accommodation-005", + "merchant_name": "龙里伯爵钻石酒店", + "benefit_id": "benefit-104", + "title": "龙里住宿大床房权益", + "description": "该权益不绑定具体商品,可多次使用。本次操作仅记录一次使用,不会使权益失效。", + "image_url": "https://one-feel-bucket.oss-cn-guangzhou.aliyuncs.com/longli/miniprogram/accommodations/accommodation-005/01.jpg", + "usage_limit": null, + "use_count": 1, + "last_used_at": "2026-08-20T06:40:00Z", + "valid_from": "2026-08-02T00:00:00Z", + "valid_until": "2026-08-31T00:00:00Z", + "claimed_at": "2026-08-02T01:00:00Z", + "voided_at": null, + "status": "expired", + "can_use": false, + "unavailable_reason": "expired", + "section_key": "stay", + "price": { + "original": 628, + "deal": 468, + "spec": "大床房" + }, + "slogan": [ + "住在龙里", + "枕山入梦" + ], + "scope_desc": "龙里伯爵钻石酒店" + } + ], + "total": 4, + "counts": { + "all": 4, + "available": 3, + "invalid": 1 + } +} diff --git a/src/mock/v1/me.json b/src/mock/v1/me.json new file mode 100644 index 0000000..2d0218c --- /dev/null +++ b/src/mock/v1/me.json @@ -0,0 +1,7 @@ +{ + "id": "mock-user-0001", + "nickname": "", + "avatar_url": "", + "phone_bound": false, + "created_at": "2026-09-17T10:00:00Z" +} diff --git a/src/pages-sub/about/index.vue b/src/pages-sub/about/index.vue index f06df1a..8626ed5 100644 --- a/src/pages-sub/about/index.vue +++ b/src/pages-sub/about/index.vue @@ -3,15 +3,29 @@ * 关于我们(需求 §8.2) * 小程序介绍 / 版本号 / 运营主体「智念科技」/ 联系方式 / 免责声明 */ -import { onShareAppMessage } from "@dcloudio/uni-app"; +import { ref } from "vue"; +import { onLoad, onShareAppMessage } from "@dcloudio/uni-app"; import { APP_VERSION_FULL, CUSTOMER_SERVICE_PHONE, CUSTOMER_SERVICE_TIME, OPERATOR_NAME, } from "@/constant"; +import contentApi from "@/api/content"; import { makeCall } from "@/utils/nav"; +/** 介绍正文与联系方式取公共内容接口(about),缺字段时回落本地常量 */ +const intro = ref([]); +const phone = ref(CUSTOMER_SERVICE_PHONE); +const serviceHours = ref(CUSTOMER_SERVICE_TIME); + +onLoad(async () => { + const res = await contentApi.getAbout(); + intro.value = res.intro; + phone.value = res.phone; + serviceHours.value = res.serviceHours; +}); + onShareAppMessage(() => ({ title: "龙里文旅 · 一图玩转龙里", path: "/pages/home/index", @@ -41,18 +55,23 @@ onShareAppMessage(() => ({ {{ APP_VERSION_FULL }} - - 龙里文旅是面向贵州省黔南布依族苗族自治州龙里县的全域旅游导览小程序,聚合景区、旅居、美食、特产四大板块,并提供票根权益的领取与使用服务。 + + {{ text }} 联系我们 - + 客服电话 - {{ CUSTOMER_SERVICE_PHONE }} + {{ phone }} 服务时间 - {{ CUSTOMER_SERVICE_TIME }} + {{ serviceHours }} 运营主体 diff --git a/src/pages-sub/account/cancel.vue b/src/pages-sub/account/cancel.vue index 3117442..705878c 100644 --- a/src/pages-sub/account/cancel.vue +++ b/src/pages-sub/account/cancel.vue @@ -25,9 +25,16 @@ const onCancelTap = () => { const doCancel = async () => { confirmVisible.value = false; - await userStore.cancelAccount(); + let status = ""; + try { + const res = await userStore.cancelAccount(); + status = res?.status || ""; + } catch (e) { + uni.showToast({ title: "注销失败,请稍后重试", icon: "none" }); + return; + } benefitStore.reset(); - uni.showToast({ title: "账号已注销", icon: "none" }); + uni.showToast({ title: status === "completed" ? "账号已注销" : "注销申请已提交", icon: "none" }); setTimeout(() => uni.reLaunch({ url: "/pages/home/index" }), 800); }; diff --git a/src/pages-sub/agreement/index.vue b/src/pages-sub/agreement/index.vue index 1a4240b..f320cb3 100644 --- a/src/pages-sub/agreement/index.vue +++ b/src/pages-sub/agreement/index.vue @@ -3,19 +3,21 @@ * 协议页:?type=privacy | terms * 合规必备页,「我的」与登录页均可直达。 */ -import { computed, ref } from "vue"; +import { ref } from "vue"; import { onLoad, onShareAppMessage } from "@dcloudio/uni-app"; -import userApi from "@/api/user"; -import { AGREEMENT_DATE } from "@/constant"; +import contentApi from "@/api/content"; const type = ref("privacy"); const blocks = ref([]); - -const title = computed(() => userApi.getAgreementTitle(type.value)); +const title = ref(""); +const updatedAt = ref(""); onLoad(async (options) => { type.value = options?.type === "terms" ? "terms" : "privacy"; - blocks.value = (await userApi.getAgreementContent(type.value)) || []; + const res = await contentApi.getAgreement(type.value); + title.value = res.title; + blocks.value = res.blocks || []; + updatedAt.value = res.updatedAt; }); onShareAppMessage(() => ({ @@ -36,7 +38,7 @@ onShareAppMessage(() => ({ - 更新日期:{{ AGREEMENT_DATE }} + 更新日期:{{ updatedAt }} {{ title }}