This commit is contained in:
li 2022-06-14 18:26:53 +08:00
parent ff5bcb1c8c
commit 688a2173dc
3 changed files with 270 additions and 108 deletions

View File

@ -4151,6 +4151,12 @@ func (qs GameCardQuerySet) OrderAscByStockCount() GameCardQuerySet {
return qs.w(qs.db.Order("stock_count ASC")) return qs.w(qs.db.Order("stock_count ASC"))
} }
// OrderAscByStockState is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) OrderAscByStockState() GameCardQuerySet {
return qs.w(qs.db.Order("stock_state ASC"))
}
// OrderAscByTotalCount is an autogenerated method // OrderAscByTotalCount is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs GameCardQuerySet) OrderAscByTotalCount() GameCardQuerySet { func (qs GameCardQuerySet) OrderAscByTotalCount() GameCardQuerySet {
@ -4351,6 +4357,12 @@ func (qs GameCardQuerySet) OrderDescByStockCount() GameCardQuerySet {
return qs.w(qs.db.Order("stock_count DESC")) return qs.w(qs.db.Order("stock_count DESC"))
} }
// OrderDescByStockState is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) OrderDescByStockState() GameCardQuerySet {
return qs.w(qs.db.Order("stock_state DESC"))
}
// OrderDescByTotalCount is an autogenerated method // OrderDescByTotalCount is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs GameCardQuerySet) OrderDescByTotalCount() GameCardQuerySet { func (qs GameCardQuerySet) OrderDescByTotalCount() GameCardQuerySet {
@ -4705,6 +4717,62 @@ func (qs GameCardQuerySet) StockCountNotIn(stockCount ...uint32) GameCardQuerySe
return qs.w(qs.db.Where("stock_count NOT IN (?)", stockCount)) return qs.w(qs.db.Where("stock_count NOT IN (?)", stockCount))
} }
// StockStateEq is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateEq(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state = ?", stockState))
}
// StockStateGt is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateGt(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state > ?", stockState))
}
// StockStateGte is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateGte(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state >= ?", stockState))
}
// StockStateIn is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateIn(stockState ...uint32) GameCardQuerySet {
if len(stockState) == 0 {
qs.db.AddError(errors.New("must at least pass one stockState in StockStateIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("stock_state IN (?)", stockState))
}
// StockStateLt is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateLt(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state < ?", stockState))
}
// StockStateLte is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateLte(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state <= ?", stockState))
}
// StockStateNe is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateNe(stockState uint32) GameCardQuerySet {
return qs.w(qs.db.Where("stock_state != ?", stockState))
}
// StockStateNotIn is an autogenerated method
// nolint: dupl
func (qs GameCardQuerySet) StockStateNotIn(stockState ...uint32) GameCardQuerySet {
if len(stockState) == 0 {
qs.db.AddError(errors.New("must at least pass one stockState in StockStateNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("stock_state NOT IN (?)", stockState))
}
// TotalCountEq is an autogenerated method // TotalCountEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs GameCardQuerySet) TotalCountEq(totalCount uint32) GameCardQuerySet { func (qs GameCardQuerySet) TotalCountEq(totalCount uint32) GameCardQuerySet {
@ -5000,6 +5068,13 @@ func (u GameCardUpdater) SetStockCount(stockCount uint32) GameCardUpdater {
return u return u
} }
// SetStockState is an autogenerated method
// nolint: dupl
func (u GameCardUpdater) SetStockState(stockState uint32) GameCardUpdater {
u.fields[string(GameCardDBSchema.StockState)] = stockState
return u
}
// SetTotalCount is an autogenerated method // SetTotalCount is an autogenerated method
// nolint: dupl // nolint: dupl
func (u GameCardUpdater) SetTotalCount(totalCount uint32) GameCardUpdater { func (u GameCardUpdater) SetTotalCount(totalCount uint32) GameCardUpdater {
@ -5060,6 +5135,7 @@ var GameCardDBSchema = struct {
NewProducts GameCardDBSchemaField NewProducts GameCardDBSchemaField
Status GameCardDBSchemaField Status GameCardDBSchemaField
StockCount GameCardDBSchemaField StockCount GameCardDBSchemaField
StockState GameCardDBSchemaField
TotalCount GameCardDBSchemaField TotalCount GameCardDBSchemaField
GameTypeId GameCardDBSchemaField GameTypeId GameCardDBSchemaField
GoodsGalleryUrl GameCardDBSchemaField GoodsGalleryUrl GameCardDBSchemaField
@ -5086,6 +5162,7 @@ var GameCardDBSchema = struct {
NewProducts: GameCardDBSchemaField("new_products"), NewProducts: GameCardDBSchemaField("new_products"),
Status: GameCardDBSchemaField("status"), Status: GameCardDBSchemaField("status"),
StockCount: GameCardDBSchemaField("stock_count"), StockCount: GameCardDBSchemaField("stock_count"),
StockState: GameCardDBSchemaField("stock_state"),
TotalCount: GameCardDBSchemaField("total_count"), TotalCount: GameCardDBSchemaField("total_count"),
GameTypeId: GameCardDBSchemaField("game_type_id"), GameTypeId: GameCardDBSchemaField("game_type_id"),
GoodsGalleryUrl: GameCardDBSchemaField("goods_gallery_url"), GoodsGalleryUrl: GameCardDBSchemaField("goods_gallery_url"),
@ -5116,6 +5193,7 @@ func (o *GameCard) Update(db *gorm.DB, fields ...GameCardDBSchemaField) error {
"new_products": o.NewProducts, "new_products": o.NewProducts,
"status": o.Status, "status": o.Status,
"stock_count": o.StockCount, "stock_count": o.StockCount,
"stock_state": o.StockState,
"total_count": o.TotalCount, "total_count": o.TotalCount,
"game_type_id": o.GameTypeId, "game_type_id": o.GameTypeId,
"goods_gallery_url": o.GoodsGalleryUrl, "goods_gallery_url": o.GoodsGalleryUrl,

View File

@ -21,6 +21,7 @@ type GameCard struct {
NewProducts uint8 `json:"new_products"` // 新品: 1-新品 2-非新品 NewProducts uint8 `json:"new_products"` // 新品: 1-新品 2-非新品
Status uint8 `json:"status"` // 状态: 1-上架 2-下架 Status uint8 `json:"status"` // 状态: 1-上架 2-下架
StockCount uint32 `json:"stock_count"` // 库存 StockCount uint32 `json:"stock_count"` // 库存
StockState uint32 `json:"stock_state"` // 1-库存 2-门店库存 3-无库存
TotalCount uint32 `json:"total_count"` // 总量 TotalCount uint32 `json:"total_count"` // 总量
GameTypeId uint32 `json:"game_type_id"` // 游戏类型 GameTypeId uint32 `json:"game_type_id"` // 游戏类型
GoodsGalleryUrl string `json:"goods_gallery_url" gorm:"type:text;comment:'轮播图'"` // 轮播图 GoodsGalleryUrl string `json:"goods_gallery_url" gorm:"type:text;comment:'轮播图'"` // 轮播图
@ -81,6 +82,8 @@ func (m *User) IsMember() bool {
return false return false
} }
//var GameCardListUpdateTime = time.Time{}
func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId, uid uint32) ([]GameCard, uint32, error) { func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId, uid uint32) ([]GameCard, uint32, error) {
var ( var (
cards []GameCard = make([]GameCard, 0) cards []GameCard = make([]GameCard, 0)
@ -103,7 +106,8 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
switch sortType { switch sortType {
case 1: case 1:
// 排序类型 1-默认 // 排序类型 1-默认
//qs = qs.OrderDescByCreatedAt() qs = qs.OrderDescByCreatedAt()
//qs = qs.OrderAscByStockState()
case 2: case 2:
// 排序类型 2-新品 // 排序类型 2-新品
qs = qs.NewProductsEq(1) qs = qs.NewProductsEq(1)
@ -132,65 +136,141 @@ func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64, storeId
return cards, 0, err return cards, 0, err
} }
} }
if storeId != 0 {
var cardStocks []GameCardGoodsStock
err := NewGameCardGoodsStockQuerySet(DB).StoreIdEq(uint64(storeId)).RentStockGt(0).All(&cardStocks)
if err != nil {
logger.Error("GetGameIdByType err:", err)
return cards, 0, err
}
if len(cardStocks) <= 0 {
return cards, 0, nil
}
gameIds := make([]uint32, 0)
for i, _ := range cardStocks {
gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
}
if len(gameIds) <= 0 {
return cards, 0, nil
}
qs = qs.IDIn(gameIds...) if sortType == 1 {
} }
hideGamePrice := uint32(30000)
var user *User var user *User
if uid != 0 { if uid != 0 {
user = GetUserByUid(uid) user = GetUserByUid(uid)
if user.MemberExpire.After(time.Now()) && if user.MemberExpire.After(time.Now()) &&
user.MemberExpire.AddDate(0, 0, -14).Before(time.Now()) { user.MemberExpire.AddDate(0, 0, -14).Before(time.Now()) {
qs = qs.RealPriceLte(30000) qs = qs.RealPriceLte(hideGamePrice)
} }
} }
gameIds := make([]uint32, 0)
gameIdMap := make(map[uint32]uint32)
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)
if err != nil {
logger.Error("GetGameIdByType err:", err)
return cards, 0, err
}
for i, _ := range cardStocks {
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
if !ok {
gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
gameIdMap[uint32(cardStocks[i].GameCardId)] = 1
}
}
err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockGt(0).OrderDescByRentStock().All(&cardStocks)
if err != nil {
logger.Error("GetGameIdByType err:", err)
return cards, 0, err
}
for i, _ := range cardStocks {
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
if !ok {
gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
gameIdMap[uint32(cardStocks[i].GameCardId)] = 2
}
}
err = NewGameCardGoodsStockQuerySet(DB).StoreIdNe(uint64(storeId)).RentStockEq(0).All(&cardStocks)
if err != nil {
logger.Error("GetGameIdByType err:", err)
return cards, 0, err
}
for i, _ := range cardStocks {
_, ok := gameIdMap[uint32(cardStocks[i].GameCardId)]
if !ok {
gameIds = append(gameIds, uint32(cardStocks[i].GameCardId))
gameIdMap[uint32(cardStocks[i].GameCardId)] = 3
}
}
qs = qs.IDIn(gameIds...)
}
if count == 0 { if count == 0 {
count, err = qs.Count() count, err = qs.Count()
} }
totalPage = uint32(count/pageSize + 1)
err = qs.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&cards) //err = qs.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&cards)
if storeId == 0 {
err = qs.Offset(page * pageSize).Limit(pageSize).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
} }
totalPage = uint32(count/pageSize + 1) } else {
err = qs.All(&cards)
cardIds := make([]uint64, 0) 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 { for i, _ := range cards {
cardIds = append(cardIds, uint64(cards[i].ID)) cardMap[cards[i].ID] = cards[i]
}
for i, _ := range gameIds {
v, ok1 := cardMap[gameIds[i]]
v2, _ := gameIdMap[gameIds[i]]
v.StockState = v2
if ok1 {
list = append(list, v)
}
}
if uint32(page) < totalPage && totalPage != 1 {
cards = list[page*pageSize : (page+1)*pageSize]
} else {
cards = list[page*pageSize:]
}
} }
var cardStocks []GameCardGoodsStock //cardIds := make([]uint64, 0)
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).All(&cardStocks) //for i, _ := range cards {
if err != nil { // cardIds = append(cardIds, uint64(cards[i].ID))
logger.Error("err:", err) //}
return cards, totalPage, nil
} //var cardStocks []GameCardGoodsStock
cardStockMap := make(map[uint64]uint32, 0) //err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).All(&cardStocks)
for i, _ := range cardStocks { //if err != nil {
cardStockMap[cardStocks[i].GameCardId] += cardStocks[i].RentStock // 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)] //stock, ok := cardStockMap[uint64(cards[i].ID)]
if ok { //if ok {
cards[i].StockCount = stock // cards[i].StockCount = stock
} //}
if user != nil && user.IsMember() { if user != nil && user.IsMember() {
cards[i].RealPrice = 0 cards[i].RealPrice = 0
} }

View File

@ -105,16 +105,19 @@ func InitTestDB() {
//&CooperativeDeductSettle{}, //&CooperativeDeductSettle{},
//&XcxRole{}, //&XcxRole{},
&Goods{}, // 商城
&GoodsCat{}, //&Goods{},
&GoodsAttribute{}, //&GoodsCat{},
&GoodsAttributeCombo{}, //&GoodsAttribute{},
&Spec{}, //&GoodsAttributeCombo{},
&SpecValue{}, //&Spec{},
&GoodsOrder{}, //&SpecValue{},
&OperationLog{}, //&GoodsOrder{},
&DeliverTask{}, //&OperationLog{},
&DeliverTaskSub{}, //&DeliverTask{},
//&DeliverTaskSub{},
&GameCard{},
) )
fmt.Println("DB init success") fmt.Println("DB init success")
@ -197,16 +200,17 @@ func InitDBProd() {
//&CooperativeDeductSettle{}, //&CooperativeDeductSettle{},
//&XcxRole{}, //&XcxRole{},
&Goods{}, // 商城
&GoodsCat{}, //&Goods{},
&GoodsAttribute{}, //&GoodsCat{},
&GoodsAttributeCombo{}, //&GoodsAttribute{},
&Spec{}, //&GoodsAttributeCombo{},
&SpecValue{}, //&Spec{},
&GoodsOrder{}, //&SpecValue{},
&OperationLog{}, //&GoodsOrder{},
&DeliverTask{}, //&OperationLog{},
&DeliverTaskSub{}, //&DeliverTask{},
//&DeliverTaskSub{},
) )
if err := DBProd.DB().Ping(); err != nil { if err := DBProd.DB().Ping(); err != nil {