hookehuyr

feat(AdOverlay): 替换mock数据为真实接口获取广告配置

添加获取广告配置的API接口,移除原有的mock数据配置
在组件挂载时异步获取广告配置数据
更新相关存储和跳转逻辑使用响应式数据
1 /* 1 /*
2 * @Date: 2023-12-22 10:29:37 2 * @Date: 2023-12-22 10:29:37
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-06-06 09:31:34 4 + * @LastEditTime: 2025-09-16 11:37:51
5 - * @FilePath: /meihuaApp/src/api/index.js 5 + * @FilePath: /lls_program/src/api/index.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
8 import { fn, fetch } from './fn'; 8 import { fn, fetch } from './fn';
9 9
10 const Api = { 10 const Api = {
11 - BIND_PHONE: '/srv/?a=room_order&t=bind_phone', 11 + BOOT_PAGE: '/srv/?a=common&t=boot_page',
12 - SEND_SMS_CODE: '/srv/?a=room_order&t=send_sms_code',
13 - SHOW_SESSION: '/srv/?a=room_order&t=show_session',
14 - SAVE_CUSTOMER_INFO: '/srv/?a=room_order&t=save_customer_info',
15 - SYS_PARAM: '/srv/?a=room_order&t=sys_param',
16 - GET_LIST: '/srv/?a=room_data&t=get_list',
17 - GET_ROOM: '/srv/?a=room_data&t=get_room',
18 - ADD_ORDER: '/srv/?a=room_data&t=add_order',
19 - MY_ORDER: '/srv/?a=room_data&t=my_order',
20 - ORDER_CANCEL: '/srv/?a=room_data&t=order_cancel',
21 - PAY: '/srv/?a=pay',
22 - PAY_CHECK: '/srv/?a=pay_check',
23 - ORDER_SUCCESS: '/srv/?a=room_data&t=order_success',
24 - TMP_SYS_PARAM: '/srv/?a=get_item',
25 } 12 }
26 13
27 /** 14 /**
28 - * @description: 绑定手机号(手机号登录) 15 + * @description: 获取引导页数据
29 - * @param phone 手机号 16 + * @returns {number} response.code - 响应状态码
30 - * @param sms_code 验证码 17 + * @returns {string} response.msg - 响应消息
31 - * @returns 18 + * @returns {Object} response.data - 响应数据
19 + * @returns {string} response.data.adImageUrl - 广告图片URL
20 + * @returns {string} response.data.targetPage - 点击跳转的页面路径
21 + * @returns {string} response.data.storageKey - 存储键名(用于区分不同的广告)
32 */ 22 */
33 -export const bindPhoneAPI = (params) => fn(fetch.post(Api.BIND_PHONE, params)); 23 +export const getBootPageAPI = (params) => fn(fetch.get(Api.BOOT_PAGE, params));
34 -
35 -/**
36 - * @description: 发送验证码
37 - * @param phone 手机号
38 - * @returns
39 - */
40 -export const sendSmsCodeAPI = (params) => fn(fetch.post(Api.SEND_SMS_CODE, params));
41 -
42 -/**
43 - * @description: 获取我的信息
44 - * @returns
45 - */
46 -export const showMyInfoAPI = (params) => fn(fetch.get(Api.SHOW_SESSION, params));
47 -
48 -/**
49 - * @description: 保存我的信息
50 - * @param params
51 - * @returns
52 - */
53 -export const saveCustomerInfoAPI = (params) => fn(fetch.post(Api.SAVE_CUSTOMER_INFO, params));
54 -
55 -/**
56 - * @description: 获取系统参数
57 - * @returns
58 - */
59 -export const sysParamAPI = (params) => fn(fetch.get(Api.SYS_PARAM, params));
60 -
61 -/**
62 - * @description: 获取房间列表
63 - * @param start_date 入住时间
64 - * @param end_date 离店时间
65 - * @param offset 偏移量
66 - * @param limit 条数
67 - * @returns
68 - */
69 -export const getListAPI = (params) => fn(fetch.get(Api.GET_LIST, params));
70 -
71 -/**
72 - * @description: 获取房间详情
73 - * @param start_date 入住时间
74 - * @param end_date 离店时间
75 - * @param room_type floor/room
76 - * @returns
77 - */
78 -export const getRoomAPI = (params) => fn(fetch.get(Api.GET_ROOM, params));
79 -
80 -/**
81 - * @description: 预定房间
82 - * @param id ID
83 - * @param num 预定房间数量
84 - * @param plan_in 入住时间
85 - * @param plan_out 离店时间
86 - * @param contact_name 联系人
87 - * @param contact_phone 联系电话
88 - * @param order_remark 备注
89 - * @param room_type floor/room
90 - * @returns
91 - */
92 -export const addOrderAPI = (params) => fn(fetch.post(Api.ADD_ORDER, params));
93 -
94 -/**
95 - * @description: 支付
96 - * @param order_id 订单ID
97 - * @returns
98 - */
99 -export const payAPI = (params) => fn(fetch.post(Api.PAY, params));
100 -
101 -/**
102 - * @description: 检查是否支付成功
103 - * @param order_id 订单ID
104 - * @returns
105 - */
106 -export const payCheckAPI = (params) => fn(fetch.post(Api.PAY_CHECK, params));
107 -
108 -/**
109 - * @description: 获取我的订单列表
110 - * @param pay_type
111 - * @param page
112 - * @param limit
113 - * @returns
114 - */
115 -export const myOrderAPI = (params) => fn(fetch.get(Api.MY_ORDER, params));
116 -
117 -/**
118 - * @description: 取消订单
119 - * @param id
120 - * @returns
121 - */
122 -export const orderCancelAPI = (params) => fn(fetch.post(Api.ORDER_CANCEL, params));
123 -
124 -/**
125 - * @description: 订单成功
126 - * @param id
127 - * @returns
128 - */
129 -export const orderSuccessAPI = (params) => fn(fetch.post(Api.ORDER_SUCCESS, params));
130 -
131 -/**
132 - * @description:
133 - * @param id
134 - * @returns
135 - */
136 -export const tmpSysParamAPI = (params) => fn(fetch.get(Api.TMP_SYS_PARAM, params));
......
...@@ -30,16 +30,18 @@ ...@@ -30,16 +30,18 @@
30 import { ref, onMounted } from 'vue' 30 import { ref, onMounted } from 'vue'
31 import Taro from '@tarojs/taro' 31 import Taro from '@tarojs/taro'
32 import { Close } from '@nutui/icons-vue-taro' 32 import { Close } from '@nutui/icons-vue-taro'
33 +// 导入接口
34 +import { getBootPageAPI } from '@/api'
33 35
34 -// TODO: Mock数据配置, 等待正式接口 36 +// 广告配置数据
35 -const adConfig = { 37 +const adConfig = ref({
36 // 广告图片URL 38 // 广告图片URL
37 - adImageUrl: 'https://cdn.ipadbiz.cn/lls_prog/images/%E5%8D%97%E4%BA%AC%E8%B7%AF%E5%95%86%E5%9C%88.jpeg', 39 + adImageUrl: '',
38 // 点击跳转的页面路径 40 // 点击跳转的页面路径
39 - targetPage: '/pages/Dashboard/index', 41 + targetPage: '',
40 // 存储键名(用于区分不同的广告) 42 // 存储键名(用于区分不同的广告)
41 - storageKey: 'dashboard_ad_overlay' 43 + storageKey: ''
42 -} 44 +})
43 45
44 // Emits 46 // Emits
45 const emit = defineEmits(['close', 'click']) 47 const emit = defineEmits(['close', 'click'])
...@@ -60,12 +62,37 @@ const getTodayDateString = () => { ...@@ -60,12 +62,37 @@ const getTodayDateString = () => {
60 } 62 }
61 63
62 /** 64 /**
65 + * 获取广告配置数据
66 + */
67 +const fetchAdConfig = async () => {
68 + try {
69 + const response = await getBootPageAPI()
70 + if (response.code && response.data) {
71 + // 使用接口返回的数据更新配置
72 + adConfig.value = {
73 + adImageUrl: response.data.adImageUrl,
74 + targetPage: response.data.targetPage,
75 + storageKey: response.data.storageKey
76 + }
77 +
78 + // 延迟一点显示,避免页面加载时的闪烁
79 + setTimeout(() => {
80 + show()
81 + }, 500)
82 + }
83 + } catch (error) {
84 + console.error('获取广告配置失败:', error)
85 + // 使用默认配置,不影响功能
86 + }
87 +}
88 +
89 +/**
63 * 检查今天是否已经显示过广告 90 * 检查今天是否已经显示过广告
64 * @returns {boolean} 是否已显示 91 * @returns {boolean} 是否已显示
65 */ 92 */
66 const hasShownToday = () => { 93 const hasShownToday = () => {
67 try { 94 try {
68 - const lastShownDate = Taro.getStorageSync(adConfig.storageKey) 95 + const lastShownDate = Taro.getStorageSync(adConfig.value.storageKey)
69 const today = getTodayDateString() 96 const today = getTodayDateString()
70 return lastShownDate === today 97 return lastShownDate === today
71 } catch (error) { 98 } catch (error) {
...@@ -80,7 +107,7 @@ const hasShownToday = () => { ...@@ -80,7 +107,7 @@ const hasShownToday = () => {
80 const markAsShownToday = () => { 107 const markAsShownToday = () => {
81 try { 108 try {
82 const today = getTodayDateString() 109 const today = getTodayDateString()
83 - Taro.setStorageSync(adConfig.storageKey, today) 110 + Taro.setStorageSync(adConfig.value.storageKey, today)
84 } catch (error) { 111 } catch (error) {
85 console.error('保存存储数据失败:', error) 112 console.error('保存存储数据失败:', error)
86 } 113 }
...@@ -114,7 +141,7 @@ const handleAdClick = () => { ...@@ -114,7 +141,7 @@ const handleAdClick = () => {
114 141
115 // 跳转到目标页面 142 // 跳转到目标页面
116 // Taro.navigateTo({ 143 // Taro.navigateTo({
117 - // url: adConfig.targetPage 144 + // url: adConfig.value.targetPage
118 // }).catch(error => { 145 // }).catch(error => {
119 // console.error('页面跳转失败:', error) 146 // console.error('页面跳转失败:', error)
120 // Taro.showToast({ 147 // Taro.showToast({
...@@ -124,7 +151,7 @@ const handleAdClick = () => { ...@@ -124,7 +151,7 @@ const handleAdClick = () => {
124 // }) 151 // })
125 152
126 // 触发点击事件 153 // 触发点击事件
127 - emit('click', adConfig.targetPage) 154 + emit('click', adConfig.value.targetPage)
128 } 155 }
129 156
130 /** 157 /**
...@@ -148,12 +175,10 @@ defineExpose({ ...@@ -148,12 +175,10 @@ defineExpose({
148 hasShownToday 175 hasShownToday
149 }) 176 })
150 177
151 -// 组件挂载时检查是否需要显示 178 +// 组件挂载时获取配置并检查是否需要显示
152 -onMounted(() => { 179 +onMounted(async () => {
153 - // 延迟一点显示,避免页面加载时的闪烁 180 + // 先获取广告配置
154 - setTimeout(() => { 181 + await fetchAdConfig()
155 - show()
156 - }, 500)
157 }) 182 })
158 </script> 183 </script>
159 184
......