1.优化首页分类游戏查询,按sort_order升序排列;
This commit is contained in:
parent
ffed1465d3
commit
5086ade42b
|
@ -1944,13 +1944,14 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
// 通过sortType查询首页分类信息
|
||||
var homeCategoryInfo HomeCategory
|
||||
err = NewHomeCategoryQuerySet(DB).IDEq(uint32(sortType)).One(&homeCategoryInfo)
|
||||
if err != nil && err != RecordNotFound {
|
||||
if err != nil {
|
||||
if err == RecordNotFound {
|
||||
return nil, 0, errors.New("分类ID有误")
|
||||
}
|
||||
return nil, 0, err
|
||||
}
|
||||
if err == RecordNotFound {
|
||||
return nil, 0, errors.New("分类ID有误")
|
||||
}
|
||||
|
||||
var gameIdList []uint32
|
||||
qs := NewGameCardQuerySet(DB).IDNe(914).StatusEq(1)
|
||||
// 判断是否是全部,或者热门分类
|
||||
if homeCategoryInfo.AllFlag == 1 { // 全部分类、热门分类
|
||||
|
@ -1961,7 +1962,8 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
} else { // 新品、经典等类型
|
||||
var homeCategoryGameList []HomeCategoryGame
|
||||
err = NewHomeCategoryGameQuerySet(DB).HomeCategoryIDEq(homeCategoryInfo.ID).All(&homeCategoryGameList)
|
||||
err = NewHomeCategoryGameQuerySet(DB).HomeCategoryIDEq(homeCategoryInfo.ID).OrderAscBySortOrder().
|
||||
All(&homeCategoryGameList)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
@ -1970,11 +1972,9 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
return cards, 0, nil
|
||||
}
|
||||
|
||||
var gameIdList []uint32
|
||||
for _, item := range homeCategoryGameList {
|
||||
gameIdList = append(gameIdList, item.GameID)
|
||||
}
|
||||
|
||||
qs = qs.IDIn(gameIdList...)
|
||||
}
|
||||
|
||||
|
@ -1985,7 +1985,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
return cards, 0, err
|
||||
}
|
||||
if len(gameIdByType) != 0 {
|
||||
//qs = qs.GameTypeIdIn(gameIdByType...)
|
||||
qs = qs.IDIn(gameIdByType...)
|
||||
} else {
|
||||
return cards, 0, err
|
||||
|
@ -2015,28 +2014,9 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
effectiveStoreListStr := fmt.Sprintf("(%s)", strings.Trim(strings.Join(strings.Fields(fmt.Sprint(effectiveStoreList)), ","), "[]"))
|
||||
|
||||
if sortType == 1 {
|
||||
if homeCategoryInfo.AllFlag == 1 && homeCategoryInfo.OrderFlag != 1 {
|
||||
if storeId != 0 {
|
||||
//gameIds := make([]uint32, 0)
|
||||
////gameIdMap := make(map[uint32]int)
|
||||
//var cardStocks []GameCardGoodsStock
|
||||
//err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks)
|
||||
//if err != nil {
|
||||
// logger.Error("GetGameIdByType err:", err)
|
||||
// return cards, 0, err
|
||||
//}
|
||||
//for i, _ := range cardStocks {
|
||||
// gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
|
||||
//}
|
||||
//if len(gameIds) <= 0 {
|
||||
// return cards, 0, nil
|
||||
//}
|
||||
//qs = qs.IDIn(gameIds...)
|
||||
|
||||
var cardStocks []GameCardGoodsStock
|
||||
//err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
//DB.Table("game_card_goods_stock").Joins("")
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
|
@ -2052,8 +2032,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
|
||||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.store_id!=%d AND a.store_id IN %s AND a.rent_stock>0 ORDER BY b.id ASC;", storeId, effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
|
@ -2069,7 +2047,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
|
||||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks)
|
||||
cardStockSql3 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql3).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
|
@ -2084,14 +2061,8 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
}
|
||||
|
||||
// 有可能添加了游戏但没添加库存,添加这段代码后不会展示
|
||||
//if len(gameIds) > 0 {
|
||||
// qs = qs.IDIn(gameIds...)
|
||||
//}
|
||||
} else {
|
||||
var cardStocks []GameCardGoodsStock
|
||||
//err := NewGameCardGoodsStockQuerySet(DB).RentStockGt(0).
|
||||
// OrderDescByRentStock().All(&cardStocks)
|
||||
cardStockSql1 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock>0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
|
@ -2107,7 +2078,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
|
||||
cardStocks = []GameCardGoodsStock{}
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).RentStockEq(0).All(&cardStocks)
|
||||
cardStockSql2 := fmt.Sprintf("SELECT a.* FROM game_card_goods_stock a LEFT JOIN game_card b ON a.game_card_id=b.id WHERE a.rent_stock=0 AND a.store_id IN %s ORDER BY b.id ASC;", effectiveStoreListStr)
|
||||
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||
if err != nil {
|
||||
|
@ -2121,9 +2091,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
||||
}
|
||||
}
|
||||
//if len(gameIds) > 0 {
|
||||
// qs = qs.IDIn(gameIds...)
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2135,23 +2102,51 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
if count%pageSize == 0 {
|
||||
totalPage = uint32(count / pageSize)
|
||||
}
|
||||
//err = qs.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&cards)
|
||||
if sortType != 1 {
|
||||
err = qs.Offset(page * pageSize).Limit(pageSize).All(&cards)
|
||||
|
||||
if homeCategoryInfo.AllFlag != 1 {
|
||||
//err = qs.Offset(page * pageSize).Limit(pageSize).All(&cards)
|
||||
err = qs.All(&cards)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
return cards, 0, err
|
||||
}
|
||||
|
||||
// 根据 gameIdList 的顺序排序 gameCards
|
||||
gameCardMap := make(map[uint32]GameCard)
|
||||
for _, card := range cards {
|
||||
gameCardMap[card.ID] = card
|
||||
}
|
||||
|
||||
// 按照 gameIdList 的顺序重新排列 gameCards
|
||||
sortedGameCards := make([]GameCard, len(gameIdList))
|
||||
for i, gameId := range gameIdList {
|
||||
sortedGameCards[i] = gameCardMap[gameId]
|
||||
}
|
||||
|
||||
// 计算分页的起始和结束索引
|
||||
startIndex := page * pageSize
|
||||
if startIndex > len(sortedGameCards) {
|
||||
startIndex = 0
|
||||
page = 0
|
||||
}
|
||||
|
||||
endIndex := startIndex + pageSize
|
||||
if endIndex > len(sortedGameCards) {
|
||||
endIndex = len(sortedGameCards)
|
||||
}
|
||||
|
||||
// 分页后的数据
|
||||
pagedGameCards := sortedGameCards[startIndex:endIndex]
|
||||
cards = pagedGameCards
|
||||
|
||||
GameCardListSetStockState(cards, storeId, effectiveStoreList)
|
||||
} else {
|
||||
err = qs.OrderDescByID().All(&cards)
|
||||
//err = qs.OrderAscByID().All(&cards)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("list err:", err)
|
||||
return cards, 0, err
|
||||
}
|
||||
//fmt.Println("page:", page, totalPage)
|
||||
|
||||
list := make([]GameCard, 0, len(cards))
|
||||
cardMap := make(map[uint32]GameCard, 0)
|
||||
for i, _ := range cards {
|
||||
|
@ -2185,27 +2180,7 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
|||
}
|
||||
}
|
||||
|
||||
//cardIds := make([]uint64, 0)
|
||||
//for i, _ := range cards {
|
||||
// cardIds = append(cardIds, uint64(cards[i].ID))
|
||||
//}
|
||||
|
||||
//var cardStocks []GameCardGoodsStock
|
||||
//err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).All(&cardStocks)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// return cards, totalPage, nil
|
||||
//}
|
||||
//cardStockMap := make(map[uint64]uint32, 0)
|
||||
//for i, _ := range cardStocks {
|
||||
// cardStockMap[cardStocks[i].GameCardId] += cardStocks[i].RentStock
|
||||
//}
|
||||
|
||||
for i, _ := range cards {
|
||||
//stock, ok := cardStockMap[uint64(cards[i].ID)]
|
||||
//if ok {
|
||||
// cards[i].StockCount = stock
|
||||
//}
|
||||
if user != nil && user.IsMember() {
|
||||
cards[i].RealPrice = 0
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user