Skip to content

Commit 6582d13

Browse files
author
Taois
committed
feat: 优化换源切换界面和逻辑、修复T4接口调用的extend传递问题
1 parent def75c1 commit 6582d13

File tree

3 files changed

+587
-82
lines changed

3 files changed

+587
-82
lines changed

dashboard/src/api/modules/module.js

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,30 @@ import { get, post } from '../request'
77
import { API_PATHS, MODULE_ACTIONS, PAGINATION } from '../config'
88
import 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
*/
5377
export 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

Comments
 (0)