mh_server/model/shopping_cart.go
2022-01-15 21:10:00 +08:00

89 lines
2.0 KiB
Go

package model
import "github.com/codinl/go-logger"
//go:generate goqueryset -in shopping_cart.go
// gen:qs
type ShoppingCart struct {
Model
Uid uint64 `json:"uid" gorm:"index"`
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
Count uint32 `json:"count"` // 数量
GameCard GameCard `json:"game_card" gorm:"-"`
}
func (*ShoppingCart) TableName() string {
return "shopping_cart"
}
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
}