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查询首页分类信息
|
// 通过sortType查询首页分类信息
|
||||||
var homeCategoryInfo HomeCategory
|
var homeCategoryInfo HomeCategory
|
||||||
err = NewHomeCategoryQuerySet(DB).IDEq(uint32(sortType)).One(&homeCategoryInfo)
|
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
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
if err == RecordNotFound {
|
|
||||||
return nil, 0, errors.New("分类ID有误")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
var gameIdList []uint32
|
||||||
qs := NewGameCardQuerySet(DB).IDNe(914).StatusEq(1)
|
qs := NewGameCardQuerySet(DB).IDNe(914).StatusEq(1)
|
||||||
// 判断是否是全部,或者热门分类
|
// 判断是否是全部,或者热门分类
|
||||||
if homeCategoryInfo.AllFlag == 1 { // 全部分类、热门分类
|
if homeCategoryInfo.AllFlag == 1 { // 全部分类、热门分类
|
||||||
|
@ -1961,7 +1962,8 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
}
|
}
|
||||||
} else { // 新品、经典等类型
|
} else { // 新品、经典等类型
|
||||||
var homeCategoryGameList []HomeCategoryGame
|
var homeCategoryGameList []HomeCategoryGame
|
||||||
err = NewHomeCategoryGameQuerySet(DB).HomeCategoryIDEq(homeCategoryInfo.ID).All(&homeCategoryGameList)
|
err = NewHomeCategoryGameQuerySet(DB).HomeCategoryIDEq(homeCategoryInfo.ID).OrderAscBySortOrder().
|
||||||
|
All(&homeCategoryGameList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
@ -1970,11 +1972,9 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
return cards, 0, nil
|
return cards, 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var gameIdList []uint32
|
|
||||||
for _, item := range homeCategoryGameList {
|
for _, item := range homeCategoryGameList {
|
||||||
gameIdList = append(gameIdList, item.GameID)
|
gameIdList = append(gameIdList, item.GameID)
|
||||||
}
|
}
|
||||||
|
|
||||||
qs = qs.IDIn(gameIdList...)
|
qs = qs.IDIn(gameIdList...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1985,7 +1985,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
return cards, 0, err
|
return cards, 0, err
|
||||||
}
|
}
|
||||||
if len(gameIdByType) != 0 {
|
if len(gameIdByType) != 0 {
|
||||||
//qs = qs.GameTypeIdIn(gameIdByType...)
|
|
||||||
qs = qs.IDIn(gameIdByType...)
|
qs = qs.IDIn(gameIdByType...)
|
||||||
} else {
|
} else {
|
||||||
return cards, 0, err
|
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)), ","), "[]"))
|
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 {
|
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
|
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)
|
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
|
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2052,8 +2032,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
}
|
}
|
||||||
|
|
||||||
cardStocks = []GameCardGoodsStock{}
|
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)
|
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
|
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2069,7 +2047,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
}
|
}
|
||||||
|
|
||||||
cardStocks = []GameCardGoodsStock{}
|
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)
|
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
|
err = DB.Raw(cardStockSql3).Scan(&cardStocks).Error
|
||||||
if err != nil {
|
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 {
|
} else {
|
||||||
var cardStocks []GameCardGoodsStock
|
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)
|
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
|
err = DB.Raw(cardStockSql1).Scan(&cardStocks).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2107,7 +2078,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
}
|
}
|
||||||
|
|
||||||
cardStocks = []GameCardGoodsStock{}
|
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)
|
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
|
err = DB.Raw(cardStockSql2).Scan(&cardStocks).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2121,9 +2091,6 @@ func NewGetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, stor
|
||||||
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
|
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 {
|
if count%pageSize == 0 {
|
||||||
totalPage = uint32(count / pageSize)
|
totalPage = uint32(count / pageSize)
|
||||||
}
|
}
|
||||||
//err = qs.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&cards)
|
|
||||||
if sortType != 1 {
|
if homeCategoryInfo.AllFlag != 1 {
|
||||||
err = qs.Offset(page * pageSize).Limit(pageSize).All(&cards)
|
//err = qs.Offset(page * pageSize).Limit(pageSize).All(&cards)
|
||||||
|
err = qs.All(&cards)
|
||||||
if err != nil && err != RecordNotFound {
|
if err != nil && err != RecordNotFound {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
return cards, 0, 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)
|
GameCardListSetStockState(cards, storeId, effectiveStoreList)
|
||||||
} else {
|
} else {
|
||||||
err = qs.OrderDescByID().All(&cards)
|
err = qs.OrderDescByID().All(&cards)
|
||||||
//err = qs.OrderAscByID().All(&cards)
|
|
||||||
if err != nil && err != RecordNotFound {
|
if err != nil && err != RecordNotFound {
|
||||||
logger.Error("list err:", err)
|
logger.Error("list err:", err)
|
||||||
return cards, 0, err
|
return cards, 0, err
|
||||||
}
|
}
|
||||||
//fmt.Println("page:", page, totalPage)
|
|
||||||
list := make([]GameCard, 0, len(cards))
|
list := make([]GameCard, 0, len(cards))
|
||||||
cardMap := make(map[uint32]GameCard, 0)
|
cardMap := make(map[uint32]GameCard, 0)
|
||||||
for i, _ := range cards {
|
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 {
|
for i, _ := range cards {
|
||||||
//stock, ok := cardStockMap[uint64(cards[i].ID)]
|
|
||||||
//if ok {
|
|
||||||
// cards[i].StockCount = stock
|
|
||||||
//}
|
|
||||||
if user != nil && user.IsMember() {
|
if user != nil && user.IsMember() {
|
||||||
cards[i].RealPrice = 0
|
cards[i].RealPrice = 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user