@@ -7,6 +7,30 @@ import { get, post } from '../request'
77import { API_PATHS , MODULE_ACTIONS , PAGINATION } from '../config'
88import axios from 'axios'
99
10+ /**
11+ * 处理extend参数,确保对象类型转换为JSON字符串
12+ * @param {string|object } extend - 扩展参数
13+ * @returns {string|undefined } 处理后的extend参数
14+ */
15+ const processExtendParam = ( extend ) => {
16+ if ( ! extend ) {
17+ return undefined
18+ }
19+
20+ // 如果extend是对象类型,转换为JSON字符串
21+ if ( typeof extend === 'object' && extend !== null ) {
22+ try {
23+ return JSON . stringify ( extend )
24+ } catch ( error ) {
25+ console . warn ( 'extend参数JSON序列化失败:' , error )
26+ return undefined
27+ }
28+ }
29+
30+ // 如果已经是字符串,直接返回
31+ return extend
32+ }
33+
1034/**
1135 * 构建模块接口URL
1236 * @param {string } module - 模块名称
@@ -46,16 +70,17 @@ const directApiCall = async (apiUrl, params = {}) => {
4670 * @param {string } module - 模块名称
4771 * @param {object } options - 选项参数
4872 * @param {number } options.filter - 过滤条件(1表示启用,默认启用)
49- * @param {string } options.extend - 接口数据扩展参数
73+ * @param {string|object } options.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
5074 * @param {string } options.apiUrl - 站点API地址(可选,如果提供则直接使用)
5175 * @returns {Promise } 首页数据
5276 */
5377export const getHomeData = async ( module , options = { } ) => {
5478 const { filter = 1 , extend, apiUrl } = options
5579 const params = { filter }
5680
57- if ( extend ) {
58- params . extend = extend
81+ const processedExtend = processExtendParam ( extend )
82+ if ( processedExtend ) {
83+ params . extend = processedExtend
5984 }
6085
6186 // 如果提供了apiUrl,直接使用站点的API地址
@@ -75,7 +100,7 @@ export const getHomeData = async (module, options = {}) => {
75100 * @param {string } params.t - 分类ID
76101 * @param {number } params.pg - 页码(从1开始)
77102 * @param {string } params.ext - base64编码的筛选条件JSON字符串
78- * @param {string } params.extend - 接口数据扩展参数
103+ * @param {string|object } params.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
79104 * @param {string } params.apiUrl - 可选的直接API地址
80105 * @returns {Promise } 分类数据
81106 */
@@ -98,8 +123,9 @@ export const getCategoryData = async (module, params) => {
98123 requestParams . ext = ext
99124 }
100125
101- if ( extend ) {
102- requestParams . extend = extend
126+ const processedExtend = processExtendParam ( extend )
127+ if ( processedExtend ) {
128+ requestParams . extend = processedExtend
103129 }
104130
105131 // 如果提供了apiUrl,直接使用站点的API地址
@@ -116,7 +142,7 @@ export const getCategoryData = async (module, params) => {
116142 * @param {string } module - 模块名称
117143 * @param {object } params - 详情参数
118144 * @param {string } params.ids - 视频ID
119- * @param {string } params.extend - 接口数据扩展参数
145+ * @param {string|object } params.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
120146 * @param {string } params.apiUrl - 可选的直接API地址
121147 * @returns {Promise } 视频详情数据
122148 */
@@ -128,8 +154,9 @@ export const getVideoDetail = async (module, params) => {
128154 ids
129155 }
130156
131- if ( extend ) {
132- requestParams . extend = extend
157+ const processedExtend = processExtendParam ( extend )
158+ if ( processedExtend ) {
159+ requestParams . extend = processedExtend
133160 }
134161
135162 // 如果提供了apiUrl,直接使用站点的API地址
@@ -146,7 +173,7 @@ export const getVideoDetail = async (module, params) => {
146173 * @param {string } module - 模块名称
147174 * @param {object } params - 播放参数
148175 * @param {string } params.play - 播放地址或ID
149- * @param {string } params.extend - 接口数据扩展参数
176+ * @param {string|object } params.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
150177 * @param {string } params.apiUrl - 可选的直接API地址
151178 * @returns {Promise } 播放数据
152179 */
@@ -158,8 +185,9 @@ export const getPlayData = async (module, params) => {
158185 play
159186 }
160187
161- if ( extend ) {
162- requestParams . extend = extend
188+ const processedExtend = processExtendParam ( extend )
189+ if ( processedExtend ) {
190+ requestParams . extend = processedExtend
163191 }
164192
165193 // 如果提供了apiUrl,直接使用站点的API地址
@@ -177,7 +205,7 @@ export const getPlayData = async (module, params) => {
177205 * @param {object } params - 搜索参数
178206 * @param {string } params.wd - 搜索关键词
179207 * @param {number } params.pg - 页码(从1开始)
180- * @param {string } params.extend - 接口数据扩展参数
208+ * @param {string|object } params.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
181209 * @param {string } params.apiUrl - 可选的直接API地址
182210 * @returns {Promise } 搜索结果
183211 */
@@ -194,8 +222,9 @@ export const searchVideos = async (module, params) => {
194222 pg
195223 }
196224
197- if ( extend ) {
198- requestParams . extend = extend
225+ const processedExtend = processExtendParam ( extend )
226+ if ( processedExtend ) {
227+ requestParams . extend = processedExtend
199228 }
200229
201230 // 如果提供了apiUrl,直接使用站点的API地址
@@ -212,7 +241,7 @@ export const searchVideos = async (module, params) => {
212241 * @param {string } module - 模块名称
213242 * @param {object } data - 动作数据
214243 * @param {string } data.action - 动作类型
215- * @param {string } data.extend - 接口数据扩展参数
244+ * @param {string|object } data.extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
216245 * @param {string } data.apiUrl - 可选的直接API地址
217246 * @returns {Promise } 动作执行结果
218247 */
@@ -225,8 +254,9 @@ export const executeAction = async (module, data) => {
225254 ...otherData
226255 }
227256
228- if ( extend ) {
229- requestData . extend = extend
257+ const processedExtend = processExtendParam ( extend )
258+ if ( processedExtend ) {
259+ requestData . extend = processedExtend
230260 }
231261
232262 console . log ( 'executeAction调用参数:' , {
@@ -238,7 +268,6 @@ export const executeAction = async (module, data) => {
238268
239269 // 如果提供了apiUrl,直接使用站点的API地址
240270 if ( apiUrl ) {
241- const axios = ( await import ( 'axios' ) ) . default
242271 console . log ( '直接调用API:' , apiUrl , requestData )
243272
244273 // 如果是测试用的JSON文件,使用GET请求
@@ -275,7 +304,7 @@ export const executeAction = async (module, data) => {
275304/**
276305 * 刷新模块数据
277306 * @param {string } module - 模块名称
278- * @param {string } extend - 接口数据扩展参数
307+ * @param {string|object } extend - 接口数据扩展参数(对象类型会自动转换为JSON字符串)
279308 * @param {string } apiUrl - 可选的直接API地址
280309 * @returns {Promise } 刷新结果
281310 */
@@ -284,8 +313,9 @@ export const refreshModule = async (module, extend, apiUrl) => {
284313 refresh : '1'
285314 }
286315
287- if ( extend ) {
288- params . extend = extend
316+ const processedExtend = processExtendParam ( extend )
317+ if ( processedExtend ) {
318+ params . extend = processedExtend
289319 }
290320
291321 // 如果提供了apiUrl,直接使用站点的API地址
0 commit comments