package md

import (
	"code.fnuoos.com/EggPlanet/egg_system_rules.git/rule/egg_energy/md"
)

const (
	ExecutionInterval = 10 // 结算执行间隔
)

type VirtualCoin struct {
	Id            int    `json:"id" `
	Name          string `json:"name" `                              // 名称
	ExchangeRatio string `json:"exchange_ratio" example:"兑换比例(与金额)"` // 兑换比例(与金额)
	IsUse         int    `json:"is_use" `                            // 是否开启: 0否 1是
	CreateAt      string `json:"create_at" `
	UpdateAt      string `json:"update_at" `
}

// BasicSetting 基础设置
type BasicSetting struct {
	IsOpen                int                              `json:"is_open" `                   // 是否开启(1:开启 0:关闭)
	PersonEggEnergyCoinId int                              `json:"person_egg_energy_coin_id" ` // 个人蛋蛋能量对应虚拟币 id
	TeamEggEnergyCoinId   int                              `json:"team_egg_energy_coin_id" `   // 团队蛋蛋能量对应虚拟币 id
	PersonEggPointsCoinId int                              `json:"person_egg_points_coin_id" ` // 个人蛋蛋积分对应虚拟币 id
	TeamEggPointsCoinId   int                              `json:"team_egg_points_coin_id" `   // 团队蛋蛋积分对应虚拟币 id
	DirectPushReward      md.DirectPushRewardSettingStruct `json:"direct_push_reward"`         // 直推奖励
}

// VideoRewardSetting 视频奖励
type VideoRewardSetting struct {
	VideoRewardIsOpen int                        `json:"video_reward_is_open" ` // 视频奖励是否开启(1:开启 0:关闭)
	VideoRewardSystem md.VideoRewardSystemStruct `json:"video_reward_system"`   // 视频奖励机制
}

// DataSetting 数据设置
type DataSetting struct {
	TotalIssuanceAmount        string `json:"total_issuance_amount" example:"总发行量"`        // 总发行量
	TotalTechnologyTeam        string `json:"total_technology_team" example:"技术团队"`        // 技术团队
	TotalAngelInvestor         string `json:"total_angel_investor" example:"天使投资人"`        // 天使投资人
	TotalOperateFund           string `json:"total_operate_fund" example:"运营资金"`           // 运营资金
	TotalEcologicalDevelopment string `json:"total_ecological_development" example:"当前价格"` // 生态建设
	TotalTeamDividends         string `json:"total_team_dividends" example:"团队分红"`         // 团队分红
	TotalUserForPerson         string `json:"total_user_for_person" example:"个人区域"`        // 个人区域
	TotalUserForTeam           string `json:"total_user_for_team" example:"团队区域"`          // 团队区域
}

type GetEggEnergyBasicResp struct {
	BasicSetting          BasicSetting                `json:"basic_setting"`            // 基础设置
	VideoRewardSetting    VideoRewardSetting          `json:"video_reward_setting"`     // 视频奖励
	DataSetting           DataSetting                 `json:"data_setting"`             // 数据设置
	DestructionSetting    md.DestructionSettingStruct `json:"destruction_setting"`      // 销毁设置
	PriceSetting          md.PriceSettingStruct       `json:"price_setting"`            // 价格设置
	ExchangeRules         md.ExchangeRulesStruct      `json:"exchange_rules"`           // 兑换规则
	RewardSystem          []md.RewardSystemStruct     `json:"reward_system"`            // 圈层奖励
	NewUserIncentiveRules md.NewUserRewardRules       `json:"new_user_incentive_rules"` // 新用户奖励规则
	SystemID              int                         `json:"system_id"`                // 该设置系统 ID
}

type UpdateEggEnergyBasicReq struct {
	SystemID              int                         `json:"system_id,required"`       // 该设置系统 ID
	BasicSetting          BasicSetting                `json:"basic_setting"`            // 基础设置
	VideoRewardSetting    VideoRewardSetting          `json:"video_reward_setting"`     // 视频奖励
	DataSetting           DataSetting                 `json:"data_setting"`             // 数据设置
	DestructionSetting    md.DestructionSettingStruct `json:"destruction_setting"`      // 销毁设置
	PriceSetting          md.PriceSettingStruct       `json:"price_setting"`            // 价格设置
	ExchangeRules         md.ExchangeRulesStruct      `json:"exchange_rules"`           // 兑换规则
	RewardSystem          []md.RewardSystemStruct     `json:"reward_system"`            // 圈层奖励
	NewUserIncentiveRules md.NewUserRewardRules       `json:"new_user_incentive_rules"` // 新用户奖励规则											 // 新用户奖励规则
}

type AddVirtualCoinNode struct {
	Name          string `json:"name"`           // 名称
	ExchangeRatio string `json:"exchange_ratio"` // 兑换比例(与金额)
	IsUse         int    `json:"is_use" `        // 是否开启:0否 1是
}

type BatchAddVirtualCoinsReq struct {
	List []AddVirtualCoinNode `json:"list"` // 新增的货币列表
}

type UpdateVirtualCoinReq struct {
	Id            int    `json:"id"`
	Name          string `json:"name"`           // 名称
	ExchangeRatio string `json:"exchange_ratio"` // 兑换比例(与金额)
	IsUse         int    `json:"is_use"`         // 是否开启:0否 1是

}

type DeleteVirtualCoinReq struct {
	Id int `json:"id"`
}

type VipEquitySettingNode struct {
	VipLevelID                string `json:"vip_level_id"`                 // 会员等级ID
	VipLevelName              string `json:"vip_level_name"`               // 会员等级名称
	ExchangeAccountBalanceFee string `json:"exchange_account_balance_fee"` //兑换余额手续费
	DividendRatio             string `json:"dividend_ratio"`               //分红比例
}

type GetEggEnergyVipSettingResp struct {
	LevelList []map[string]interface{} `json:"level_list"` // 会员等级列表
	List      []VipEquitySettingNode   `json:"list"`       // 会员权益设置
}

type AddEggEnergyVipSettingReq struct {
	VipLevelId                string `json:"vip_level_id"`                 //会员等级ID
	ExchangeAccountBalanceFee string `json:"exchange_account_balance_fee"` //兑换余额手续费
	DividendRatio             string `json:"dividend_ratio"`               //分红比例
}

type UpdateVipEquitySettingNode struct {
	VipLevelID                string `json:"vip_level_id"`                 // 会员等级ID
	ExchangeAccountBalanceFee string `json:"exchange_account_balance_fee"` //兑换余额手续费
	DividendRatio             string `json:"dividend_ratio"`               //分红比例
}

type UpdateEggEnergyVipSettingReq struct {
	List []UpdateVipEquitySettingNode `json:"list"` // 更新后数据
}

type GetEggCoreDataListResp struct {
	PlanetTotalValue   string `json:"planet_total_value" example:"星球价值"`    // 星球价值
	NowPrice           string `json:"now_price" example:"当前价格"`             // 当前价格
	NowEnergyTotalNums string `json:"now_energy_total_nums" example:"现行总量"` // 现行总量
	UserHoldTotalNums  string `json:"user_hold_total_nums"`                 // 用户持有总量
}

type GetPriceCurveResp struct {
	XData []interface{} `json:"x_data"`
	YData []interface{} `json:"y_data"`
}

type GetFundDataListReq struct {
	Kind    int    `json:"kind"` // 数据类型
	StartAt string `json:"start_at" example:"开始时间"`
	EndAt   string `json:"end_at" example:"结束时间"`
	Page    int    `json:"page,required"`   // 页数
	Limit   int    `json:"limit,required" ` // 每页大小
}

type FundDataNode struct {
	SystemID      int    `json:"system_id"`
	Kind          int    `json:"kind" `           //种类(1:公司补贴 2:资方投资 3:市场期望)
	TotalAmount   string `json:"total_amount" `   // 金额
	BalanceAmount string `json:"balance_amount" ` // 余额
	Hours         int    `json:"hours" `          // 时长
	BalanceTimes  int    `json:"balance_times" `  // 剩余执行次数
	Memo          string `json:"memo" `           // 备注
	CreateAt      string `json:"create_at" `      // 创建时间
}

type GetFundDataListResp struct {
	KindList []map[string]interface{} `json:"kind_list"` // 类型列表
	Paginate Paginate                 `json:"paginate"`  // 分页数据
	List     []FundDataNode           `json:"list"`      // 数据列表
}

type GetFundDataRecordListReq struct {
	SystemID int `json:"system_id,required"` // 数据在系统中的 ID
	Page     int `json:"page,required"`      // 页数
	Limit    int `json:"limit,required"`     // 页面大小
}

type FundDataRecordNode struct {
	TotalAmount            string `json:"total_amount" `              // 金额
	BalanceAmount          string `json:"balance_amount" `            // 余额
	BalanceTimes           int    `json:"balance_times" `             //剩余执行次数
	BeforePrice            string `json:"before_price" `              // 执行前-价格
	AfterPrice             string `json:"after_price" `               // 执行后-价格
	BeforePlanetTotalValue string `json:"before_planet_total_value" ` // 执行前-星球价值
	AfterPlanetTotalValue  string `json:"after_planet_total_value" `  // 执行后-星球价值
	CreateAt               string `json:"create_at" `
}

type GetFundDataRecordListResp struct {
	List     []FundDataRecordNode `json:"list"`
	Paginate Paginate             `json:"paginate"`
}

type GetFundDataRecordDataListReq struct {
	Kind    int    `json:"kind"` //种类(1:公司补贴 2:资方投资 3:市场期望)
	StartAt string `json:"start_at"`
	EndAt   string `json:"end_at"`
	Page    int    `json:"page"`
	Limit   int    `json:"limit"`
}

type AddFundDataReq struct {
	Kind        int    `json:"kind,required"`         // 种类(1:公司补贴 2:资方投资 3:市场期望)
	TotalAmount string `json:"total_amount,required"` // 金额
	Hours       int    `json:"hours,required"`        // 时长(小时)
	Memo        string `json:"memo" example:"备注"`
	Frequency   int    `json:"frequency"` // 频率(分钟)
}