dto-record.go 3.84 KB
package cardholder

import (
	"apigame/common/svconst"
	"apigame/common/svdto"
	"apigame/service/constd"
	"apigame/util/utdto"
	"apigame/util/util-lx/lxtime"
	"fmt"
)

// CardHolderRecordBase 开卡包活动日志公共
type CardHolderRecordBase struct {
	Id         int64  `gorm:"primaryKey;comment:日志ID"`
	Uid        int64  `gorm:"comment:玩家唯一ID"`
	SequenceId string `gorm:"type:varchar(255);comment:用户序列组ID"`
	Cohort     string `gorm:"type:varchar(255);comment:用户分组ID"`
	ActivityId int64  `gorm:"comment:当前活动ID"`
	Round      int    `gorm:"comment:当前轮次"`
	CreateTime int64  `gorm:"comment:创建时间戳"`
	UpdateTime int64  `gorm:"comment:修改时间戳"`
}

func NewCardHolderRecordBase(uid int64, sequenceId string, cohort string, activityId int64, round int) CardHolderRecordBase {
	secNow := lxtime.NowUninx()
	return CardHolderRecordBase{
		CreateTime: secNow,
		UpdateTime: secNow,
		Uid:        uid,
		SequenceId: sequenceId,
		Cohort:     cohort,
		ActivityId: activityId,
		Round:      round,
	}
}

// CardHolderRecordOpen 开卡包活动日志开卡包
type CardHolderRecordOpen struct {
	CardHolderRecordBase
	OpenMode     int    `gorm:"comment:开包类型0客户端驱动1星星商店购买2剩余星星兑换"`
	CardholderId int    `gorm:"comment:卡包ID"`
	CardList     string `gorm:"type:varchar(255);comment:开卡内容"`
}

func (c *CardHolderRecordOpen) TableName() string { return utdto.MYSQL_TABLE_TEMPLATE }

func (d *CardHolderRecordOpen) GetRule(gameId string) *svdto.DtoRule {
	tableName := constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN
	return &svdto.DtoRule{
		DbMysql:   svconst.DbCommon,
		TableName: tableName + gameId,
		CacheKey:  fmt.Sprintf("%s:%s:%s", svdto.REDIS_CACHEP_REFIX, tableName, gameId),
		CacheTime: 300,
	}
}

func NewCardHolderRecordOpen(recordBase CardHolderRecordBase,
	openMode int, cardholderId int, cardList string) *CardHolderRecordOpen {
	return &CardHolderRecordOpen{
		CardHolderRecordBase: recordBase,
		OpenMode:             openMode,
		CardholderId:         cardholderId,
		CardList:             cardList,
	}
}

// CardHolderRecordRewardAlbum 开卡包活动日志领取卡组奖励
type CardHolderRecordRewardAlbum struct {
	CardHolderRecordBase
	AlbumId int    `gorm:"comment:卡组ID"`
	Award   string `gorm:"type:varchar(255);comment:奖励内容"`
}

func (c *CardHolderRecordRewardAlbum) TableName() string { return utdto.MYSQL_TABLE_TEMPLATE }

func (d *CardHolderRecordRewardAlbum) GetRule(gameId string) *svdto.DtoRule {
	tableName := constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM
	return &svdto.DtoRule{
		DbMysql:   svconst.DbCommon,
		TableName: tableName + gameId,
		CacheKey:  fmt.Sprintf("%s:%s:%s", svdto.REDIS_CACHEP_REFIX, tableName, gameId),
		CacheTime: 300,
	}
}

func NewCardHolderRecordRewardAlbum(recordBase CardHolderRecordBase,
	albumId int, award string) *CardHolderRecordRewardAlbum {
	return &CardHolderRecordRewardAlbum{
		CardHolderRecordBase: recordBase,
		AlbumId:              albumId,
		Award:                award,
	}
}

// CardHolderRecordRewardRound 开卡包活动日志领取轮次奖励
type CardHolderRecordRewardRound struct {
	CardHolderRecordBase
	Award string `gorm:"type:varchar(255);comment:奖励内容"`
}

func (c *CardHolderRecordRewardRound) TableName() string { return utdto.MYSQL_TABLE_TEMPLATE }

func (d *CardHolderRecordRewardRound) GetRule(gameId string) *svdto.DtoRule {
	tableName := constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND
	return &svdto.DtoRule{
		DbMysql:   svconst.DbCommon,
		TableName: tableName + gameId,
		CacheKey:  fmt.Sprintf("%s:%s:%s", svdto.REDIS_CACHEP_REFIX, tableName, gameId),
		CacheTime: 300,
	}
}

func NewCardHolderRecordRewardRound(recordBase CardHolderRecordBase,
	award string) *CardHolderRecordRewardRound {
	return &CardHolderRecordRewardRound{
		CardHolderRecordBase: recordBase,
		Award:                award,
	}
}