310 lines
9.1 KiB
Go
310 lines
9.1 KiB
Go
package model
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/codinl/go-logger"
|
|
)
|
|
|
|
//go:generate goqueryset -in game_card.go
|
|
// gen:qs
|
|
type GameCard struct {
|
|
Model
|
|
|
|
Name string `json:"name" gorm:"index"` // 名称
|
|
Price uint32 `json:"price" gorm:"index"` // 价格
|
|
CoverImg string `json:"cover_img"` // 封面
|
|
OrderCount uint32 `json:"order_count" gorm:"index"` // 订单数
|
|
NewProducts uint8 `json:"new_products"` // 新品: 1-新品 2-非新品
|
|
Status uint8 `json:"status"` // 状态: 1-上架 2-下架
|
|
StockCount uint32 `json:"stock_count"` // 库存
|
|
TotalCount uint32 `json:"total_count"` // 总量
|
|
GameTypeId uint32 `json:"game_type_id"` // 游戏类型
|
|
GoodsGalleryUrl string `json:"goods_gallery_url" gorm:"type:text;comment:'轮播图'"` // 轮播图
|
|
ViewCount uint32 `json:"view_count"` // 查看人数
|
|
Playability uint32 `json:"playability"` // 耐玩度
|
|
Playfulness uint32 `json:"playfulness"` // 好玩度
|
|
GameTime uint32 `json:"game_time"` // 游戏时间
|
|
Likes uint32 `json:"likes"` // 点赞
|
|
DetailInfo string `json:"detail_info" gorm:"type:text;comment:'详情描述'"` // 详情描述
|
|
DetailImg string `json:"detail_img"` // 详情图片
|
|
}
|
|
|
|
func (*GameCard) TableName() string {
|
|
return "game_card"
|
|
}
|
|
|
|
// gen:qs
|
|
type HomeCarousel struct {
|
|
Model
|
|
|
|
Name string `json:"name" gorm:"index"` // 名称
|
|
Img string `json:"img"` // 图片
|
|
Sort uint32 `json:"sort" gorm:"index"`
|
|
IsShow uint32 `json:"is_show"` // 1-显示 2-隐藏
|
|
Detail string `json:"detail" gorm:"type:text;comment:'详情描述'"`
|
|
Link string `json:"link"`
|
|
}
|
|
|
|
func (*HomeCarousel) TableName() string {
|
|
return "home_carousel"
|
|
}
|
|
|
|
func GetGameCardList(sortType, page, pageSize int, gameTypeIds []uint64) ([]GameCard, uint32, error) {
|
|
var (
|
|
cards []GameCard = make([]GameCard, 0)
|
|
totalPage uint32
|
|
)
|
|
page -= 1
|
|
if page < 0 {
|
|
page = 0
|
|
//return cards, 0, errors.New("page is err")
|
|
}
|
|
count, err := NewGameCardQuerySet(DB).Count()
|
|
if err != nil {
|
|
logger.Error("NewGameCardQuerySet err:", err)
|
|
return cards, 0, err
|
|
}
|
|
qs := NewGameCardQuerySet(DB)
|
|
switch sortType {
|
|
case 1:
|
|
// 排序类型 1-默认
|
|
qs = qs.OrderDescByCreatedAt()
|
|
case 2:
|
|
// 排序类型 2-新品
|
|
qs = qs.NewProductsEq(1).OrderDescByCreatedAt()
|
|
count, err = NewGameCardQuerySet(DB).NewProductsEq(1).Count()
|
|
case 3:
|
|
// 排序类型 3-销量
|
|
qs = qs.OrderDescByOrderCount()
|
|
case 4:
|
|
// 排序类型 4-价格 大到小
|
|
qs = qs.OrderDescByPrice()
|
|
case 5:
|
|
// 排序类型 5-价格 小到大
|
|
qs = qs.OrderAscByPrice()
|
|
}
|
|
|
|
if len(gameTypeIds) > 0 {
|
|
gameIdByType, err := GetGameIdByType(gameTypeIds)
|
|
if err != nil {
|
|
logger.Error("GetGameIdByType err:", err)
|
|
return cards, 0, err
|
|
}
|
|
if len(gameIdByType) != 0 {
|
|
//qs = qs.GameTypeIdIn(gameIdByType...)
|
|
qs = qs.IDIn(gameIdByType...)
|
|
} else {
|
|
return cards, 0, err
|
|
}
|
|
}
|
|
qs = qs.StatusEq(1)
|
|
|
|
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)
|
|
|
|
return cards, totalPage, nil
|
|
}
|
|
|
|
func IsGameCardOnline(gameCardId uint32) (bool, error) {
|
|
count, err := NewGameCardQuerySet(DB).IDEq(gameCardId).StatusEq(1).Count()
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return false, err
|
|
}
|
|
return count == 1, nil
|
|
}
|
|
|
|
const (
|
|
GameCardGoodsStatusStock = 1 // 库存中
|
|
GameCardGoodsStatusInWay = 2 // 在途
|
|
GameCardGoodsStatusCustomerHold = 3 // 客户持有
|
|
)
|
|
|
|
// gen:qs
|
|
type GameCardGoods struct {
|
|
Model
|
|
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
|
|
SerialNumber string `json:"serial_number" gorm:"index"` // 编号
|
|
Status uint8 `json:"status"` // 状态:1-库存中 2-在途 3-客户持有
|
|
StoreId uint64 `json:"store_id"` // 门店id
|
|
Provider string `json:"provider"` // 供应商
|
|
}
|
|
|
|
func (*GameCardGoods) TableName() string {
|
|
return "game_card_goods"
|
|
}
|
|
|
|
// gen:qs
|
|
type GameCardGoodsStock struct {
|
|
Model
|
|
|
|
StoreId uint64 `json:"store_id"` // 门店id
|
|
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
|
|
StoreStock uint32 `json:"store_stock"` // 门店库存
|
|
RentStock uint32 `json:"rent_stock"` // 租借库存
|
|
}
|
|
|
|
func (*GameCardGoodsStock) TableName() string {
|
|
return "game_card_goods_stock"
|
|
}
|
|
|
|
func GetGameCardInfo(id uint64) (GameCard, error) {
|
|
game := GameCard{}
|
|
err := NewGameCardQuerySet(DB).IDEq(uint32(id)).One(&game)
|
|
if err != nil && err != RecordNotFound {
|
|
logger.Error("err:", err)
|
|
return game, err
|
|
}
|
|
return game, nil
|
|
}
|
|
|
|
func GetGameCardSearch(name string, page, pageSize int) ([]GameCard, uint32, error) {
|
|
var (
|
|
cards []GameCard = make([]GameCard, 0)
|
|
totalPage uint32
|
|
cardCount = struct {
|
|
Count uint32 `json:"count"`
|
|
}{}
|
|
)
|
|
page -= 1
|
|
if page < 0 {
|
|
page = 0
|
|
}
|
|
|
|
//countSql := "SELECT game_card.* FROM game_card WHERE game_card.name LIKE '%" + name + "%'"
|
|
countSql := "SELECT COUNT(id) AS count FROM game_card WHERE game_card.name LIKE '%" + name + "%'"
|
|
err := DB.Raw(countSql).Scan(&cardCount).Error
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return cards, 0, err
|
|
}
|
|
|
|
sql := "SELECT game_card.* FROM game_card WHERE game_card.name LIKE '%" + name + "%'" + fmt.Sprintf(" LIMIT %d,%d;", page*pageSize, pageSize)
|
|
//sql := fmt.Sprintf(`SELECT * FROM game_card WHERE name LIKE '%%s%';`)
|
|
err = DB.Raw(sql).Scan(&cards).Error
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return cards, 0, err
|
|
}
|
|
|
|
totalPage = cardCount.Count/uint32(pageSize) + 1
|
|
return cards, totalPage, nil
|
|
}
|
|
|
|
// TODO 订单
|
|
|
|
func GetHomeCarouselList() ([]HomeCarousel, error) {
|
|
carousels := make([]HomeCarousel, 0)
|
|
err := NewHomeCarouselQuerySet(DB).IsShowEq(1).OrderDescBySort().All(&carousels)
|
|
if err != nil && err != RecordNotFound {
|
|
logger.Error("err:", err)
|
|
return carousels, err
|
|
}
|
|
return carousels, nil
|
|
}
|
|
|
|
// gen:qs
|
|
type GameCardType struct {
|
|
Model
|
|
|
|
Name string `json:"name"` // 游戏类型
|
|
Sort uint32 `json:"sort" gorm:"index"` // 排序
|
|
//GameCount uint32 `json:"game_count"` // 游戏数量
|
|
}
|
|
|
|
func (*GameCardType) TableName() string {
|
|
return "game_card_type"
|
|
}
|
|
|
|
func GetGameCardTypeList() ([]GameCardType, error) {
|
|
gameTypes := make([]GameCardType, 0)
|
|
err := NewGameCardTypeQuerySet(DB).OrderAscBySort().All(&gameTypes)
|
|
if err != nil {
|
|
logger.Errorf("err:%+v", err)
|
|
return gameTypes, err
|
|
}
|
|
return gameTypes, nil
|
|
}
|
|
|
|
// gen:qs
|
|
type GameType struct {
|
|
Model
|
|
|
|
GameCardId uint64 `json:"gameCardId" gorm:"column:game_card_id;index"` // 游戏卡id
|
|
GameCardTypeId uint64 `json:"gameCardTypeId" gorm:"column:game_card_type_id;index"` // 分类id
|
|
}
|
|
|
|
func (*GameType) TableName() string {
|
|
return "game_type"
|
|
}
|
|
|
|
func GetGameIdByType(gameTypeIds []uint64) ([]uint32, error) {
|
|
gameTypes := make([]GameType, 0)
|
|
err := NewGameTypeQuerySet(DB).GameCardTypeIdIn(gameTypeIds...).All(&gameTypes)
|
|
if err != nil && err != RecordNotFound {
|
|
logger.Error("err:", err)
|
|
return nil, err
|
|
}
|
|
|
|
gameIds := make([]uint32, 0)
|
|
if len(gameTypes) == 0 {
|
|
return gameIds, nil
|
|
}
|
|
|
|
for i, _ := range gameTypes {
|
|
gameIds = append(gameIds, uint32(gameTypes[i].GameCardId))
|
|
}
|
|
return gameIds, nil
|
|
}
|
|
|
|
//func (m *GameType) GetGameByType(gameIds []int) ([]GameCard, error) {
|
|
// games := make([]GameCard, 0)
|
|
// gameTypes := make([]GameType,0)
|
|
// err := DB.Table(m.TableName()).Where("id in (?)", ids).Find(&gameTypes).Error
|
|
// if err != nil {
|
|
// logger.Error("err:", err)
|
|
// return games, err
|
|
// }
|
|
// gameCardId := make([]uint32,0)
|
|
// for i, _ := range gameTypes {
|
|
// gameCardId= append(gameCardId, uint32(gameTypes[i].GameCardId))
|
|
// }
|
|
// NewGameCardQuerySet(DB).IDIn(gameCardId...).All()
|
|
// return games, nil
|
|
//}
|
|
|
|
func (m *GameCard) GetGameType() ([]GameCardType, error) {
|
|
gameCardTypes := make([]GameCardType, 0)
|
|
gameTypes := make([]GameType, 0)
|
|
err := NewGameTypeQuerySet(DB).GameCardIdEq(uint64(m.ID)).All(&gameTypes)
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return gameCardTypes, err
|
|
}
|
|
gameCardTypeId := make([]uint32, 0)
|
|
for i, _ := range gameTypes {
|
|
gameCardTypeId = append(gameCardTypeId, uint32(gameTypes[i].GameCardTypeId))
|
|
}
|
|
if len(gameCardTypeId) == 0 {
|
|
return gameCardTypes, nil
|
|
}
|
|
err = NewGameCardTypeQuerySet(DB).IDIn(gameCardTypeId...).All(&gameCardTypes)
|
|
if err != nil {
|
|
logger.Error("err:", err)
|
|
return gameCardTypes, err
|
|
}
|
|
return gameCardTypes, nil
|
|
}
|
|
|
|
type RspAliyunStsToken struct {
|
|
AccessKeyId string `json:"access_key_id"`
|
|
AccessKeySecret string `json:"access_key_secret"`
|
|
SecurityToken string `json:"security_token"`
|
|
BucketName string `json:"bucket_name"`
|
|
Expiration uint64 `json:"expiration"`
|
|
}
|