package msg

import "leafstalk/covenant/model"

const (
	// 战令类型
	AcTypeActive        = 1 // 活跃
	AcTypeGrade         = 2 // 等级
	AcTypePrincipalLine = 3 // 主线
	// 奖励类型
	AcAwardTypeFree   = 1 // 免费
	AcAwardTypeSenior = 2 // 高级
	AcAwardTypeLuxury = 3 // 豪华
)

// GetWarOrderActiveStatus 获取活跃战令
type GetWarOrderActiveStatus struct {
	PlayerId int64 `json:"userId"`
}

type ResponseGetWarOrderActiveStatus struct {
	ErrCode int                          `json:"errCode"`
	Msg     string                       `json:"msg,omitempty"`
	Data    *GetWarOrderActiveStatusData `json:"data"`
}

type GetWarOrderActiveStatusData struct {
	// 周期结束倒计时
	EndTs int64 `json:"endTs"`
	// 是否开通高级战令
	IsSenior bool `json:"isSenior"`
	// 是否开通豪华战令
	IsLuxury bool `json:"isLuxury"`
	// 看广告获得双倍积分计数
	AdCount int64 `json:"adCount"`
	// 看广告获得双倍积分标志
	AdDoubleFlag bool `json:"adDoubleFlag"`
	// 今日获得积分统计
	DayPointCount int64 `json:"dayCountPoint"`
	// 周期内积分总数
	PointTotal int64 `json:"totalPoint"`
	// 已领取的最大免费奖励等级
	FreeLevel int64 `json:"freeLevel"`
	// 已领取的最大高级奖励等级
	SeniorLevel int64 `json:"seniorLevel"`
	// 已领取的最大豪华奖励等级
	LuxuryLevel int64 `json:"luxuryLevel"`
}

// GetWarOrderGradeStatus 获取等级战令
type GetWarOrderGradeStatus struct {
	PlayerId int64 `json:"userId"`
}

type ResponseGetWarOrderGradeStatus struct {
	ErrCode int                    `json:"errCode"`
	Msg     string                 `json:"msg,omitempty"`
	Data    *model.GeneralWarOrder `json:"data"`
}

// GetWarOrderLineStatus 获取主线战令
type GetWarOrderLineStatus struct {
	PlayerId int64 `json:"userId"`
}

type ResponseGetWarOrderLineStatus struct {
	ErrCode int                    `json:"errCode"`
	Msg     string                 `json:"msg,omitempty"`
	Data    *model.GeneralWarOrder `json:"data"`
}

// 领取战令奖励
type ClaimWarOrderAward struct {
	PlayerId int64 `json:"userId"`
	AcType   int64 `json:"acType"` // 战令类型 1:活跃 2:等级 3:主线

	PlayerLevel        int64   `json:"playerLevel"`
	UnlockWarOrderLine []int64 `json:"unlockWarOrderLine"`
}

type ResponseClaimWarOrderAward struct {
	ErrCode int                     `json:"errCode"`
	Msg     string                  `json:"msg,omitempty"`
	Data    *ClaimWarOrderAwardData `json:"data"`
}

type ClaimWarOrderAwardData struct {
	Bundles               *model.DropedBundle          `json:"bundles"`
	ActiveAcStatus        *GetWarOrderActiveStatusData `json:"activeAcStatus,omitempty"`
	GradeAcStatus         *model.GeneralWarOrder       `json:"gradeAcStatus,omitempty"`
	PrincipalLineAcStatus *model.GeneralWarOrder       `json:"principalLineAcStatus,omitempty"`
}

// 7日签到状态
type SevenDaySignInStatus struct {
	PlayerId int64 `json:"userId"`
}

type ResponseSevenDaySignInStatus struct {
	ErrCode int                         `json:"errCode"`
	Msg     string                      `json:"msg,omitempty"`
	Data    *model.SevenDaySignInStatus `json:"data"`
}

// 7日签到
type SevenDaySignIn struct {
	PlayerId int64 `json:"userId"`
	Day      int64 `json:"day"`
}

type SevenDaySignInData struct {
	Bundles      *model.DropedBundle         `json:"bundles"`
	SignInStatus *model.SevenDaySignInStatus `json:"signInStatus"`
}

type ResponseSevenDaySignIn struct {
	ErrCode int                 `json:"errCode"`
	Msg     string              `json:"msg,omitempty"`
	Data    *SevenDaySignInData `json:"data"`
}

// 获取月卡状态
type GetMonthCardsStatus struct {
	PlayerId int64 `json:"userId"`
}

type ResponseGetMonthCardsStatus struct {
	ErrCode int         `json:"errCode"`
	Msg     string      `json:"msg,omitempty"`
	Data    *MonthCards `json:"data"`
}

type MonthCards struct {
	DailyRewardFlag bool                       `json:"dailyRewardFlag"` // 每日福利领取标志
	CardsStatus     map[int64]*MonthCardStatus `json:"cardsStatus"`     // 月卡状态
}

type MonthCardStatus struct {
	// 剩余时间
	RemainTime int64 `json:"remainTime"`
	// 是否已领取奖励
	IsGetAward bool `json:"isGetAward"`
}

const (
	MonthCardWelfareTypeViewing = 1 // 观影月卡福利
	MonthCardWelfareTypeSuper   = 2 // 超值月卡福利
	MonthCardWelfareTypeDaily   = 3 // 每日福利福利
)

// 领取月卡福利
type GetMonthCardReward struct {
	PlayerId int64 `json:"userId"`
	Type     int64 `json:"type"` // 福利类型 1:观影月卡 2:超值月卡 3:每日福利
}
type GetMonthCardRewardData struct {
	MonthCards *MonthCards         `json:"monthCards"`
	Bundles    *model.DropedBundle `json:"bundles"`
}

type ResponseGetMonthCardReward struct {
	ErrCode int                     `json:"errCode"`
	Msg     string                  `json:"msg,omitempty"`
	Data    *GetMonthCardRewardData `json:"data"`
}

// 购买月卡
//type BuyMonthCard struct {
//	PlayerId   int64  `json:"userId"`
//	ClientPlat string `json:"clientPlat"`
//	Type       int64  `json:"type"` // 月卡类型 1:观影月卡 2:超值月卡
//}
//type ResponseBuyMonthCard struct {
//	ErrCode int                     `json:"errCode"`
//	Msg     string                  `json:"msg,omitempty"`
//	Data    *GetMonthCardRewardData `json:"data"`
//}

// 获取特权卡状态
type GetPrivilegeCardsStatus struct {
	PlayerId int64 `json:"userId"`
}
type ResponseGetPrivilegeCardsStatus struct {
	ErrCode int             `json:"errCode"`
	Msg     string          `json:"msg,omitempty"`
	Data    map[int64]int64 `json:"data"`
}

// 购买特权卡
//type BuyPrivilegeCard struct {
//	PlayerId   int64  `json:"userId"`
//	ClientPlat string `json:"clientPlat"`
//	Type       int64  `json:"type"` // 特权卡类型 1:永久钻石卡 2:永久巡逻卡
//}
//type ResponseBuyPrivilegeCard struct {
//	ErrCode int             `json:"errCode"`
//	Msg     string          `json:"msg,omitempty"`
//	Data    map[int64]int64 `json:"data"`
//}

// 更新活跃战令积分
type UpdateWarOrderActivePoint struct {
	PlayerId int64 `json:"userId"`
	Point    int64 `json:"point"`
}

// 更新等级战令等级
type UpdateWarOrderGradeLv struct {
	PlayerId int64 `json:"userId"`
	Level    int64 `json:"level"`
}

// 更新主线战令章节
type UpdateWarOrderLineChapter struct {
	PlayerId int64 `json:"userId"`
	Chapter  int64 `json:"chapter"`
}

// 购买战令
type BuyWarOrder struct {
	PlayerId  int64 `json:"userId"`
	AcType    int64 `json:"acType"`    // 战令类型 1:活跃 2:等级 3:主线
	AwardType int64 `json:"awardType"` // 奖励类型 2:高级 3:豪华
}

type BuyWarOrderData struct {
	WarOrderActiveStatus *GetWarOrderActiveStatusData `json:"warOrderActiveStatus,omitempty"`
	WarOrderGradeStatus  *model.GeneralWarOrder       `json:"warOrderGradeStatus,omitempty"`
	WarOrderLineStatus   *model.GeneralWarOrder       `json:"warOrderLineStatus,omitempty"`
}

type ResponseBuyWarOrder struct {
	ErrCode int              `json:"errCode"`
	Msg     string           `json:"msg,omitempty"`
	Data    *BuyWarOrderData `json:"data"`
}

// 更新活跃战令看广告状态
type WarOrderActiveAd struct {
	PlayerId int64 `json:"userId"`
}

type ResponseWarOrderActiveAd struct {
	ErrCode int                          `json:"errCode"`
	Msg     string                       `json:"msg,omitempty"`
	Data    *GetWarOrderActiveStatusData `json:"data"`
}

// 更新7日签到当日活跃度
type UpdateSevenDaySignInDayActive struct {
	PlayerId  int64 `json:"userId"`
	ActiveNum int64 `json:"activeNum"`
}

// 初始化精彩活动
type InitAc struct {
	PlayerId int64 `json:"userId"`
}

// 获取每日特惠状态
type GetDailyDeal struct {
	PlayerId int64 `json:"userId"`
}

type ResponseGetDailyDeal struct {
	ErrCode int                    `json:"errCode"`
	Msg     string                 `json:"msg,omitempty"`
	Data    *model.DailyDealStatus `json:"data"`
}

// 领取每日特惠
type ClaimDailyDeal struct {
	PlayerId   int64  `json:"userId"`
	ClientPlat string `json:"clientPlat"`
	Uid        int64  `json:"uid"`
}

type ClaimDailyDealData struct {
	Bundles         *model.DropedBundle    `json:"bundles"`
	Cost            map[int64]int64        `json:"cost"`
	DailyDealStatus *model.DailyDealStatus `json:"dailyDealInfo"`
}

type ResponseClaimDailyDeal struct {
	ErrCode int                 `json:"errCode"`
	Msg     string              `json:"msg,omitempty"`
	Data    *ClaimDailyDealData `json:"data"`
}

// 获取特惠礼包状态
type GetDiscountPack struct {
	PlayerId int64 `json:"userId"`
}
type GetDiscountPackData struct {
	DiscountPack     *DiscountPackStatus `json:"discountPack,omitempty"`
	DiscountDayPack  *DiscountPackStatus `json:"discountDayPack,omitempty"`
	DiscountWeekPack *DiscountPackStatus `json:"discountWeekPack,omitempty"`
	DiscountMoonPack *DiscountPackStatus `json:"discountMoonPack,omitempty"`
}

type DiscountPackStatus struct {
	// 剩余时间
	RemainTs int64 `json:"remainTs"`
	// {Uid:周期内购买次数}
	BuyStatus map[int64]int64 `json:"buyStatus"`
}
type ResponseGetDiscountPack struct {
	ErrCode int                  `json:"errCode"`
	Msg     string               `json:"msg,omitempty"`
	Data    *GetDiscountPackData `json:"data"`
}

// 领取特惠礼包
const (
	// 特惠礼包类型 1:新手礼包 2:每日礼包 3:每周礼包 4:每月礼包
	DiscountPackTypeBeginner = 1
	DiscountPackTypeDay      = 2
	DiscountPackTypeWeek     = 3
	DiscountPackTypeMoon     = 4
)

type ClaimDiscountPack struct {
	PlayerId   int64  `json:"userId"`
	ClientPlat string `json:"clientPlat"`
	Uid        int64  `json:"uid"`
	Type       int64  `json:"type"`
}
type ClaimDiscountPackData struct {
	Bundles            *model.DropedBundle  `json:"bundles"`
	Cost               map[int64]int64      `json:"cost"`
	DiscountPackStatus *GetDiscountPackData `json:"discountPackStatus"`
}

type ResponseClaimDiscountPack struct {
	ErrCode int                    `json:"errCode"`
	Msg     string                 `json:"msg,omitempty"`
	Data    *ClaimDiscountPackData `json:"data"`
}

// 获取首充状态
type GetFirstChargeStatus struct {
	PlayerId int64 `json:"userId"`
}

type GetFirstChargeStatusData struct {
	// 购买后的第几天
	BuyDay int64 `json:"buyDay"`
	// 已领取奖励的最后一个天数
	Reward int64 `json:"reward"`
}

type ResponseGetFirstChargeStatus struct {
	ErrCode int                                 `json:"errCode"`
	Msg     string                              `json:"msg,omitempty"`
	Data    map[int64]*GetFirstChargeStatusData `json:"data"`
}

// 购买首充
//type BuyFirstCharge struct {
//	PlayerId   int64  `json:"userId"`
//	ClientPlat string `json:"clientPlat"`
//	PriceId    int64  `json:"priceId"`
//}
//
//type ResponseBuyFirstCharge struct {
//	ErrCode int                                 `json:"errCode"`
//	Msg     string                              `json:"msg,omitempty"`
//	Data    map[int64]*GetFirstChargeStatusData `json:"data"`
//}

// 领取首充奖励
type ClaimFirstChargeReward struct {
	PlayerId int64 `json:"userId"`
	PriceId  int64 `json:"priceId"`
}

type ClaimFirstChargeRewardData struct {
	Bundles           *model.DropedBundle                 `json:"bundles"`
	FirstChargeStatus map[int64]*GetFirstChargeStatusData `json:"firstChargeStatus"`
}

type ResponseClaimFirstChargeReward struct {
	ErrCode int                         `json:"errCode"`
	Msg     string                      `json:"msg,omitempty"`
	Data    *ClaimFirstChargeRewardData `json:"data"`
}
