Skip to content

Commit 81c320b

Browse files
committed
refactor: simplify SysConfig retrieval logic, enhance ConfigManager form handling, and improve error messaging in request service
1 parent 413a699 commit 81c320b

File tree

6 files changed

+69
-48
lines changed

6 files changed

+69
-48
lines changed

src/main/java/com/xiaozhi/controller/ConfigController.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@
88
import com.xiaozhi.common.web.PageFilter;
99
import com.xiaozhi.dialogue.stt.factory.SttServiceFactory;
1010
import com.xiaozhi.dialogue.tts.factory.TtsServiceFactory;
11-
import com.xiaozhi.entity.SysAgent;
1211
import com.xiaozhi.entity.SysConfig;
1312
import com.xiaozhi.service.SysConfigService;
1413
import com.xiaozhi.utils.CmsUtils;
1514

1615
import io.swagger.v3.oas.annotations.Operation;
17-
import io.swagger.v3.oas.annotations.media.Content;
18-
import io.swagger.v3.oas.annotations.media.Schema;
1916
import io.swagger.v3.oas.annotations.tags.Tag;
2017
import jakarta.annotation.Resource;
2118
import jakarta.servlet.http.HttpServletRequest;

src/main/java/com/xiaozhi/service/impl/SysConfigServiceImpl.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,7 @@ public List<SysConfig> query(SysConfig config, PageFilter pageFilter) {
115115
if(pageFilter != null){
116116
PageHelper.startPage(pageFilter.getStart(), pageFilter.getLimit());
117117
}
118-
// 这里为了适配阿里云的 Token 刷新,返回的结果会有重复
119-
List<SysConfig> configs = configMapper.query(config);
120-
Map<Integer, SysConfig> uniqueConfigs = new LinkedHashMap<>();
121-
for (SysConfig c : configs) {
122-
uniqueConfigs.put(c.getConfigId(), c); // 利用 Map 的键唯一特性去重
123-
}
124-
return new ArrayList<>(uniqueConfigs.values());
118+
return configMapper.query(config);
125119
}
126120

127121
/**

vue3/src/components/ConfigManager.vue

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,19 @@ const {
3636
} = useConfigManager(props.configType)
3737
3838
// 表单
39-
interface FormData extends Record<string, any> {
40-
provider?: string
41-
configName?: string
42-
configDesc?: string
43-
modelType?: ModelType
44-
isDefault?: boolean | number
45-
}
46-
4739
const formRef = ref<FormInstance>()
48-
const formData = ref<FormData>({
40+
const formData = ref<Partial<Config>>({
4941
provider: undefined,
5042
configName: undefined,
5143
configDesc: undefined,
5244
modelType: 'chat',
53-
isDefault: false,
45+
isDefault: '0',
46+
apiKey: undefined,
47+
apiUrl: undefined,
48+
appId: undefined,
49+
apiSecret: undefined,
50+
ak: undefined,
51+
sk: undefined,
5452
})
5553
5654
// 表格列配置
@@ -174,7 +172,7 @@ function handleEdit(record: Config) {
174172
// 设置表单值
175173
formData.value = {
176174
...record,
177-
isDefault: props.configType !== 'tts' ? record.isDefault === '1' : false
175+
isDefault: props.configType != 'tts' ? record.isDefault : '0'
178176
}
179177
180178
// LLM 更新模型选项
@@ -194,17 +192,14 @@ async function handleSubmit() {
194192
195193
// 准备提交数据
196194
const submitData: Partial<Config> = {
195+
...formData.value,
197196
configId: editingConfigId.value,
198197
configType: props.configType,
199-
provider: formData.value.provider,
200-
configName: formData.value.configName,
201-
configDesc: formData.value.configDesc,
202-
modelType: formData.value.modelType
203198
}
204199
205200
// 处理 isDefault
206201
if (props.configType !== 'tts') {
207-
submitData.isDefault = formData.value.isDefault ? '1' : '0'
202+
submitData.isDefault = formData.value.isDefault == '1' ? '1' : '0'
208203
}
209204
210205
// LLM 特殊验证
@@ -266,7 +261,13 @@ function resetForm() {
266261
configName: undefined,
267262
configDesc: undefined,
268263
modelType: 'chat',
269-
isDefault: false,
264+
isDefault: '0',
265+
apiKey: undefined,
266+
apiUrl: undefined,
267+
appId: undefined,
268+
apiSecret: undefined,
269+
ak: undefined,
270+
sk: undefined,
270271
}
271272
}
272273

vue3/src/composables/useConfigManager.ts

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function useConfigManager(configType: ConfigType) {
1616
data: configItems,
1717
pagination,
1818
handleTableChange,
19-
loadData: loadTableData,
19+
loadData,
2020
resetPagination
2121
} = useTable<Config>()
2222

@@ -153,24 +153,13 @@ export function useConfigManager(configType: ConfigType) {
153153
* 获取配置列表
154154
*/
155155
async function getData() {
156-
await loadTableData(async ({ start, limit }) => {
157-
const res = await queryConfigs({
158-
start,
159-
limit,
156+
await loadData((params) => {
157+
return queryConfigs({
158+
start: params.start,
159+
limit: params.limit,
160160
configType,
161161
...queryForm.value,
162162
})
163-
// 转换数据格式以匹配 useTable 的期望
164-
return {
165-
code: res.code,
166-
data: res.data ? {
167-
list: res.data.list,
168-
total: res.data.total,
169-
pageNum: Math.ceil(res.data.total / limit),
170-
pageSize: limit
171-
} : undefined,
172-
message: res.message
173-
}
174163
})
175164
}
176165

@@ -187,10 +176,10 @@ export function useConfigManager(configType: ConfigType) {
187176
})
188177

189178
if (res.code === 200) {
190-
message.success(t('config.deleteSuccess'))
179+
message.success(t('common.delete'))
191180
getData()
192181
} else {
193-
message.error(res.message || t('config.deleteFailed'))
182+
message.error(res.message)
194183
}
195184
} catch (error) {
196185
console.error('删除配置失败:', error)

vue3/src/services/request.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ request.interceptors.response.use(
101101

102102
// 处理业务错误码
103103
if (data.code === 403 || data.code === 401) {
104+
// 清空用户信息和token
105+
const userStore = useUserStore()
106+
userStore.clearUserInfo()
107+
userStore.clearToken()
108+
104109
message.error({
105110
content: '登录过期,请重新登录!',
106111
key: 'auth-error',
@@ -126,6 +131,12 @@ request.interceptors.response.use(
126131
if (error.response) {
127132
const { status } = error.response
128133
if (status === 401 || status === 403) {
134+
// 清空用户信息和token
135+
const userStore = useUserStore()
136+
userStore.clearUserInfo()
137+
userStore.clearToken()
138+
139+
// 使用相同的key避免重复显示
129140
message.error({
130141
content: '登录过期,请重新登录!',
131142
key: 'auth-error',
@@ -135,7 +146,7 @@ request.interceptors.response.use(
135146
})
136147
} else {
137148
message.error({
138-
content: error.response.data?.message || '请求失败',
149+
content: error.response.data?.message || `请求失败 (${status})`,
139150
key: 'request-error',
140151
})
141152
}
@@ -144,6 +155,12 @@ request.interceptors.response.use(
144155
content: '网络错误,请检查网络连接',
145156
key: 'network-error',
146157
})
158+
} else {
159+
// 其他错误(如请求配置错误等)
160+
message.error({
161+
content: error.message || '请求失败',
162+
key: 'unknown-error',
163+
})
147164
}
148165
return Promise.reject(error)
149166
},

vue3/src/types/config.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export type ModelType = 'chat' | 'vision' | 'intent' | 'embedding'
88
* 配置信息接口
99
*/
1010
export interface Config {
11-
configId: number
11+
configId?: number
1212
configType: ConfigType
1313
provider: string
1414
configName: string
@@ -17,7 +17,14 @@ export interface Config {
1717
isDefault?: string // 1-默认 0-非默认
1818
state?: string
1919
createTime?: string
20-
// 动态参数
20+
// API相关字段
21+
appId?: string
22+
apiKey?: string
23+
apiSecret?: string
24+
ak?: string
25+
sk?: string
26+
apiUrl?: string
27+
// 支持动态字段
2128
[key: string]: any
2229
}
2330

@@ -39,6 +46,22 @@ export interface ConfigQueryParams {
3946
export interface ConfigListResponse {
4047
list: Config[]
4148
total: number
49+
pageNum: number
50+
pageSize: number
51+
size: number
52+
startRow: number
53+
endRow: number
54+
pages: number
55+
prePage: number
56+
nextPage: number
57+
isFirstPage: boolean
58+
isLastPage: boolean
59+
hasPreviousPage: boolean
60+
hasNextPage: boolean
61+
navigatePages: number
62+
navigatepageNums: number[]
63+
navigateFirstPage: number
64+
navigateLastPage: number
4265
}
4366

4467
/**

0 commit comments

Comments
 (0)