Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fd03e44

Browse files
author
piexlMax(奇淼
committed
refactor(字典详情): 优化字典详情查询逻辑,移除预加载改为按需加载
1 parent c546e6d commit fd03e44

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

‎server/service/system/sys_dictionary_detail.go‎

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func (dictionaryDetailService *DictionaryDetailService) updateChildrenLevelAndPa
166166
//@return: sysDictionaryDetail system.SysDictionaryDetail, err error
167167

168168
func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetail(id uint) (sysDictionaryDetail system.SysDictionaryDetail, err error) {
169-
err = global.GVA_DB.Preload("Children").Where("id = ?", id).First(&sysDictionaryDetail).Error
169+
err = global.GVA_DB.Where("id = ?", id).First(&sysDictionaryDetail).Error
170170
return
171171
}
172172

@@ -205,14 +205,14 @@ func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetailIn
205205
if err != nil {
206206
return
207207
}
208-
err = db.Preload("Children").Limit(limit).Offset(offset).Order("sort").Find(&sysDictionaryDetails).Error
208+
err = db.Limit(limit).Offset(offset).Order("sort").Find(&sysDictionaryDetails).Error
209209
return sysDictionaryDetails, total, err
210210
}
211211

212212
// 按照字典id获取字典全部内容的方法
213213
func (dictionaryDetailService *DictionaryDetailService) GetDictionaryList(dictionaryID uint) (list []system.SysDictionaryDetail, err error) {
214214
var sysDictionaryDetails []system.SysDictionaryDetail
215-
err = global.GVA_DB.Preload("Children").Find(&sysDictionaryDetails, "sys_dictionary_id = ?", dictionaryID).Error
215+
err = global.GVA_DB.Find(&sysDictionaryDetails, "sys_dictionary_id = ?", dictionaryID).Error
216216
return sysDictionaryDetails, err
217217
}
218218

@@ -265,19 +265,29 @@ func (dictionaryDetailService *DictionaryDetailService) GetDictionaryDetailsByPa
265265
db = db.Where("parent_id IS NULL")
266266
}
267267

268+
err = db.Order("sort").Find(&list).Error
269+
if err != nil {
270+
return list, err
271+
}
272+
273+
// 如果需要包含子级数据,使用递归方式加载所有层级的子项
268274
if req.IncludeChildren {
269-
db = db.Preload("Children")
275+
for i := range list {
276+
err = dictionaryDetailService.loadChildren(&list[i])
277+
if err != nil {
278+
return list, err
279+
}
280+
}
270281
}
271282

272-
err = db.Order("sort").Find(&list).Error
273283
return list, err
274284
}
275285

276286
// 按照字典type获取字典全部内容的方法
277287
func (dictionaryDetailService *DictionaryDetailService) GetDictionaryListByType(t string) (list []system.SysDictionaryDetail, err error) {
278288
var sysDictionaryDetails []system.SysDictionaryDetail
279289
db := global.GVA_DB.Model(&system.SysDictionaryDetail{}).Joins("JOIN sys_dictionaries ON sys_dictionaries.id = sys_dictionary_details.sys_dictionary_id")
280-
err = db.Debug().Preload("Children").Find(&sysDictionaryDetails, "type = ?", t).Error
290+
err = db.Find(&sysDictionaryDetails, "type = ?", t).Error
281291
return sysDictionaryDetails, err
282292
}
283293

@@ -308,15 +318,15 @@ func (dictionaryDetailService *DictionaryDetailService) GetDictionaryTreeListByT
308318
// 按照字典id+字典内容value获取单条字典内容
309319
func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByValue(dictionaryID uint, value string) (detail system.SysDictionaryDetail, err error) {
310320
var sysDictionaryDetail system.SysDictionaryDetail
311-
err = global.GVA_DB.Preload("Children").First(&sysDictionaryDetail, "sys_dictionary_id = ? and value = ?", dictionaryID, value).Error
321+
err = global.GVA_DB.First(&sysDictionaryDetail, "sys_dictionary_id = ? and value = ?", dictionaryID, value).Error
312322
return sysDictionaryDetail, err
313323
}
314324

315325
// 按照字典type+字典内容value获取单条字典内容
316326
func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByTypeValue(t string, value string) (detail system.SysDictionaryDetail, err error) {
317327
var sysDictionaryDetails system.SysDictionaryDetail
318328
db := global.GVA_DB.Model(&system.SysDictionaryDetail{}).Joins("JOIN sys_dictionaries ON sys_dictionaries.id = sys_dictionary_details.sys_dictionary_id")
319-
err = db.Preload("Children").First(&sysDictionaryDetails, "sys_dictionaries.type = ? and sys_dictionary_details.value = ?", t, value).Error
329+
err = db.First(&sysDictionaryDetails, "sys_dictionaries.type = ? and sys_dictionary_details.value = ?", t, value).Error
320330
return sysDictionaryDetails, err
321331
}
322332

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /