请使用golang beego实现下面的功能:按照status排序排序规则是1status为ModelStatus_Succes的数据排列在最前2:status为ModelStatus_InProgress的数据排列在第二3status为ModelStatus_Wait时的数据排列在第三4status为其他状态时排序在最后。代码如下:var modelDao = daoNewVHumanVoice
下面是使用golang beego实现按照status排序的代码:
var modelDao = dao.NewVHumanVoiceModelDao()
models, err := modelDao.GetAllV2(user.Id)
if err != nil {
logs.Error("%s, err = %v", commonInfo, err)
this.OnError(errno.EC_InnerError, errno.EM_InnerError)
return
}
var modelItems = make([]VoiceModel, 0, len(models))
for i := 0; i < len(models); i++ {
if models[i].IsDeleted == true {
continue
}
modelItem := VoiceModel{
Id: models[i].Id,
Status: models[i].Status,
Percent: models[i].Percent,
CreateTime: models[i].CreateTime,
UpdateTime: models[i].UpdateTime,
}
if modelItem.Status == common.ModelStatus_Wait {
modelItem.Weight = 3 // 待处理
} else if modelItem.Status == common.ModelStatus_Succes {
modelItem.Weight = 1 // 已生成
} else if modelItem.Status == common.ModelStatus_InProgress {
modelItem.Weight = 2 // 生成中
} else {
modelItem.Weight = 4 // 失败
}
modelItems = append(modelItems, modelItem)
}
sort.Slice(modelItems, func(i, j int) bool {
return modelItems[i].Weight < modelItems[j].Weight
})
result["models"] = modelItems
首先,我们创建了一个modelItems的切片来存储排序后的数据。然后,根据不同的Status值,为每个模型项设置对应的Weight值。最后,我们使用sort.Slice函数来按照Weight值对modelItems进行排序。最终,将排序后的modelItems存入result中
原文地址: http://www.cveoy.top/t/topic/h72T 著作权归作者所有。请勿转载和采集!