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"))
}
// 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
// nolint: dupl
func (qs GameCardQuerySet) OrderAscByTotalCount() GameCardQuerySet {
@ -4351,6 +4357,12 @@ func (qs GameCardQuerySet) OrderDescByStockCount() GameCardQuerySet {
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
// nolint: dupl
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))
}
// 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
// nolint: dupl
func (qs GameCardQuerySet) TotalCountEq(totalCount uint32) GameCardQuerySet {
@ -5000,6 +5068,13 @@ func (u GameCardUpdater) SetStockCount(stockCount uint32) GameCardUpdater {
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
// nolint: dupl
func (u GameCardUpdater) SetTotalCount(totalCount uint32) GameCardUpdater {
@ -5060,6 +5135,7 @@ var GameCardDBSchema = struct {
NewProducts GameCardDBSchemaField
Status GameCardDBSchemaField
StockCount GameCardDBSchemaField
StockState GameCardDBSchemaField
TotalCount GameCardDBSchemaField
GameTypeId GameCardDBSchemaField
GoodsGalleryUrl GameCardDBSchemaField
@ -5086,6 +5162,7 @@ var GameCardDBSchema = struct {
NewProducts: GameCardDBSchemaField("new_products"),
Status: GameCardDBSchemaField("status"),
StockCount: GameCardDBSchemaField("stock_count"),
StockState: GameCardDBSchemaField("stock_state"),
TotalCount: GameCardDBSchemaField("total_count"),
GameTypeId: GameCardDBSchemaField("game_type_id"),
GoodsGalleryUrl: GameCardDBSchemaField("goods_gallery_url"),
@ -5116,6 +5193,7 @@ func (o *GameCard) Update(db *gorm.DB, fields ...GameCardDBSchemaField) error {
"new_products": o.NewProducts,
"status": o.Status,
"stock_count": o.StockCount,
"stock_state": o.StockState,
"total_count": o.TotalCount,
"game_type_id": o.GameTypeId,
"goods_gallery_url": o.GoodsGalleryUrl,

View File

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

View File

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