95 lines
2.0 KiB
Go
95 lines
2.0 KiB
Go
|
package model
|
||
|
|
||
|
import (
|
||
|
"github.com/codinl/go-logger"
|
||
|
)
|
||
|
|
||
|
//go:generate goqueryset -in history_browsing.go
|
||
|
// gen:qs
|
||
|
type HistoryBrowsing struct {
|
||
|
Model
|
||
|
|
||
|
Uid uint64 `json:"uid" gorm:"index"` // 用户id
|
||
|
GameCardId uint64 `json:"game_card_id"` // 游戏卡id
|
||
|
}
|
||
|
|
||
|
func (*HistoryBrowsing) TableName() string {
|
||
|
return "history_browsing"
|
||
|
}
|
||
|
|
||
|
func GetHistoryBrowsingList(uid uint32, page, pageSize int) ([]GameCard, uint32, error) {
|
||
|
var (
|
||
|
totalPage uint32
|
||
|
historys []HistoryBrowsing
|
||
|
gameCards []GameCard = make([]GameCard, 0)
|
||
|
)
|
||
|
page -= 1
|
||
|
if page < 0 {
|
||
|
page = 0
|
||
|
}
|
||
|
|
||
|
// TODO 查看商品添加浏览记录
|
||
|
|
||
|
querySet := NewHistoryBrowsingQuerySet(DB).UidEq(uint64(uid))
|
||
|
count, err := querySet.Count()
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return gameCards, 0, err
|
||
|
}
|
||
|
|
||
|
err = querySet.OrderDescByCreatedAt().Offset(page * pageSize).Limit(pageSize).All(&historys)
|
||
|
if err != nil && err != RecordNotFound {
|
||
|
logger.Error("err:", err)
|
||
|
return gameCards, 0, err
|
||
|
}
|
||
|
gameIds := make([]uint32, 0, len(historys))
|
||
|
for i, _ := range historys {
|
||
|
gameIds = append(gameIds, uint32(historys[i].GameCardId))
|
||
|
}
|
||
|
if len(gameIds) > 0 {
|
||
|
err := NewGameCardQuerySet(DB).IDIn(gameIds...).All(&gameCards)
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return gameCards, 0, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
totalPage = uint32(count/pageSize + 1)
|
||
|
|
||
|
return gameCards, totalPage, nil
|
||
|
}
|
||
|
|
||
|
func HistoryBrowsingAdd(uid uint64, gameCardId uint64) error {
|
||
|
querySet := NewHistoryBrowsingQuerySet(DB.Unscoped()).UidEq(uid)
|
||
|
count, err := querySet.GameCardIdEq(gameCardId).Count()
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return err
|
||
|
}
|
||
|
if count == 0 {
|
||
|
historyBrowsing := &HistoryBrowsing{
|
||
|
Uid: uid,
|
||
|
GameCardId: gameCardId,
|
||
|
}
|
||
|
err = historyBrowsing.Create(DB)
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
totalCount, err := querySet.Count()
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
if totalCount > 150 {
|
||
|
err := querySet.OrderAscByCreatedAt().Limit(50).Delete()
|
||
|
if err != nil {
|
||
|
logger.Error("err:", err)
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|