ZBLOG

func (g *GamesApi) GetGamesInfo(c *gin.Context) { pageNumStr := c.Query("pageNum") pageSizeStr := c.Query("pageSize") isRecommend := c.Query("isRecommend") infoTypeStr := c.Query("infoType") menuIdStr := c

可以优化的地方:

  1. 可以将查询条件构造封装成一个函数,使代码更加清晰易读。

  2. 对于不同 menuId 的处理逻辑,建议使用 switch-case 来代替 if 语句。

  3. 对于错误处理,建议使用 defer 和 recover 函数来进行统一处理。

以下是优化后的代码:

func (g *GamesApi) GetGamesInfo(c *gin.Context) {

pageNumStr := c.Query("pageNum")
pageSizeStr := c.Query("pageSize")
isRecommend := c.Query("isRecommend")
infoTypeStr := c.Query("infoType")
menuIdStr := c.Query("menuId")

var games []system.SysGames

var err interface{}
var pageNum, pageSize, infoType, menuId int
if pageNum, err = strconv.Atoi(pageNumStr); err != nil {
	pageNum = 1
}
if pageSize, err = strconv.Atoi(pageSizeStr); err != nil {
	pageSize = 10
}
if infoType, err = strconv.Atoi(infoTypeStr); err != nil {
	infoType = 0
}
if menuId, err = strconv.Atoi(menuIdStr); err != nil {
	menuId = 0
}

dbQuery := buildQuery(infoType, isRecommend, menuId)

offset := (pageNum - 1) * pageSize

defer func() {
	if r := recover(); r != nil {
		global.GBQ_LOG.Error("查询数据库失败!")
		response.FailWithMessage("数据库查询错误", c)
		return
	}
}()

err = dbQuery.Offset(offset).Limit(pageSize).Find(&games).Error

response.OkWithData(games, c)

}

func buildQuery(infoType int, isRecommend string, menuId int) *gorm.DB {

dbQuery := global.GBQ_DB.Where("info_type = ?", infoType)

if isRecommend != "" {
	dbQuery = dbQuery.Where("is_recommend = ?", isRecommend)
}

switch menuId {
case 0:
	dbQuery = dbQuery.Order("create_time DESC")
case 1:
	dbQuery = dbQuery.Order("download_count_total DESC")
case 2:
	dbQuery = dbQuery.Order("download_count_week DESC")
case 3:
	dbQuery = dbQuery.Where("is_recommend = ?", "1").Order("create_time DESC")
default:
	dbQuery = dbQuery.Order("create_time DESC")
}

return dbQuery

}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5298

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?