2021-06-30 02:12:05 +00:00
|
|
|
package model
|
|
|
|
|
2022-01-15 13:10:00 +00:00
|
|
|
import "github.com/codinl/go-logger"
|
|
|
|
|
2021-06-30 02:12:05 +00:00
|
|
|
//go:generate goqueryset -in shopping_cart.go
|
|
|
|
// gen:qs
|
|
|
|
type ShoppingCart struct {
|
|
|
|
Model
|
|
|
|
|
2022-01-15 13:10:00 +00:00
|
|
|
Uid uint64 `json:"uid" gorm:"index"`
|
|
|
|
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
|
|
|
|
Count uint32 `json:"count"` // 数量
|
|
|
|
|
|
|
|
GameCard GameCard `json:"game_card" gorm:"-"`
|
2021-06-30 02:12:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (*ShoppingCart) TableName() string {
|
|
|
|
return "shopping_cart"
|
|
|
|
}
|
2022-01-15 13:10:00 +00:00
|
|
|
|
|
|
|
type ShoppingCartListReq struct {
|
|
|
|
Uid uint32 `json:"uid"`
|
|
|
|
PageNum int `json:"page_num"`
|
|
|
|
PageSize int `json:"page_size"`
|
|
|
|
}
|
|
|
|
type ShoppingCartListResp struct {
|
|
|
|
List []ShoppingCart `json:"list"`
|
|
|
|
Total int `json:"total"`
|
|
|
|
PageNum int `json:"page_num"`
|
|
|
|
//PageSize int `json:"page_size"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *ShoppingCartListReq) List() (*ShoppingCartListResp, error) {
|
|
|
|
resp := &ShoppingCartListResp{
|
|
|
|
PageNum: m.PageNum,
|
|
|
|
}
|
|
|
|
page := m.PageNum - 1
|
|
|
|
if page < 0 {
|
|
|
|
page = 0
|
|
|
|
}
|
|
|
|
if m.PageSize == 0 {
|
|
|
|
m.PageSize = 10
|
|
|
|
}
|
|
|
|
qs := NewShoppingCartQuerySet(DB).UidEq(uint64(m.Uid))
|
|
|
|
count, err := qs.Count()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
return resp, err
|
|
|
|
}
|
|
|
|
resp.Total = count/m.PageSize + 1
|
|
|
|
var shoppingCart []ShoppingCart
|
|
|
|
err = qs.OrderDescByID().Offset(page * m.PageSize).Limit(m.PageSize).All(&shoppingCart)
|
|
|
|
if err != nil && err != RecordNotFound {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
return resp, err
|
|
|
|
}
|
|
|
|
resp.List = ShoppingCartListSetGameCard(shoppingCart)
|
|
|
|
return resp, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func ShoppingCartListSetGameCard(list []ShoppingCart) []ShoppingCart {
|
|
|
|
if len(list) == 0 {
|
|
|
|
return list
|
|
|
|
}
|
|
|
|
ids := make([]uint32, 0)
|
|
|
|
for i, _ := range list {
|
|
|
|
ids = append(ids, uint32(list[i].GameCardId))
|
|
|
|
}
|
|
|
|
var gameCards []GameCard
|
|
|
|
err := NewGameCardQuerySet(DB).IDIn(ids...).All(&gameCards)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
return list
|
|
|
|
}
|
|
|
|
gameCardMap := make(map[uint32]GameCard, 0)
|
|
|
|
for i, _ := range gameCards {
|
|
|
|
gameCardMap[gameCards[i].ID] = gameCards[i]
|
|
|
|
}
|
|
|
|
|
|
|
|
for i, _ := range list {
|
|
|
|
v, ok := gameCardMap[uint32(list[i].GameCardId)]
|
|
|
|
if ok {
|
|
|
|
list[i].GameCard = v
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return list
|
|
|
|
}
|