package model import ( "sundynix-micro-go/common/model" "time" ) // ========== 用户扩展表(radio业务特有字段) ========== // SundynixRadioUserProfile 电台服务用户扩展表 type SundynixRadioUserProfile struct { model.BaseModel UserID string `gorm:"size:50;uniqueIndex;column:user_id" json:"userId"` NickName string `gorm:"size:100;column:nick_name" json:"nickName"` AvatarID string `gorm:"size:50;column:avatar_id" json:"avatarId"` IsVip int `gorm:"default:0;column:is_vip" json:"isVip"` VipExpireAt *time.Time `gorm:"column:vip_expire_at" json:"vipExpireAt"` VipLevel int `gorm:"default:0;column:vip_level" json:"vipLevel"` } func (SundynixRadioUserProfile) TableName() string { return "sundynix_radio_user_profile" } // ========== 分类 ========== // SundynixRadioCategory 电台分类 type SundynixRadioCategory struct { model.BaseModel Name string `gorm:"size:50;column:name" json:"name"` Icon string `gorm:"size:255;column:icon" json:"icon"` Sort int `gorm:"default:0;column:sort" json:"sort"` } func (SundynixRadioCategory) TableName() string { return "sundynix_radio_category" } // ========== 频道 ========== // SundynixRadioChannel 电台频道 type SundynixRadioChannel struct { model.BaseModel CategoryID string `gorm:"size:50;index;column:category_id" json:"categoryId"` Name string `gorm:"size:50;column:name" json:"name"` Description string `gorm:"size:500;column:description" json:"description"` IsFree int `gorm:"default:0;column:is_free" json:"isFree"` IsVipOnly int `gorm:"default:0;column:is_vip_only" json:"isVipOnly"` MonthlyPrice int `gorm:"default:0;column:monthly_price" json:"monthlyPrice"` QuarterlyPrice int `gorm:"default:0;column:quarterly_price" json:"quarterlyPrice"` AnnualPrice int `gorm:"default:0;column:annual_price" json:"annualPrice"` Cover string `gorm:"size:100;column:cover" json:"cover"` Tags string `gorm:"size:255;column:tags" json:"tags"` Sort int `gorm:"default:0;column:sort" json:"sort"` Status int `gorm:"default:1;column:status" json:"status"` } func (SundynixRadioChannel) TableName() string { return "sundynix_radio_channel" } // ========== 节目 ========== // SundynixRadioProgram 电台节目 type SundynixRadioProgram struct { model.BaseModel ChannelID string `gorm:"size:50;index;column:channel_id" json:"channelId"` Title string `gorm:"size:100;column:title" json:"title"` Description string `gorm:"size:500;column:description" json:"description"` Content string `gorm:"type:text;column:content" json:"content"` Cover string `gorm:"size:100;column:cover" json:"cover"` AudioID string `gorm:"size:50;column:audio_id" json:"audioId"` AudioStatus int `gorm:"default:0;column:audio_status" json:"audioStatus"` Duration int `gorm:"default:0;column:duration" json:"duration"` Tags string `gorm:"size:255;column:tags" json:"tags"` PlayCount int `gorm:"default:0;column:play_count" json:"playCount"` LikeCount int `gorm:"default:0;column:like_count" json:"likeCount"` Status int `gorm:"default:1;column:status" json:"status"` } func (SundynixRadioProgram) TableName() string { return "sundynix_radio_program" } // ========== 音色 ========== // SundynixRadioVoice 音色管理 type SundynixRadioVoice struct { model.BaseModel SpeakerID string `gorm:"size:50;uniqueIndex;column:speaker_id" json:"speakerId"` Name string `gorm:"size:50;column:name" json:"name"` Description string `gorm:"size:255;column:description" json:"description"` Gender string `gorm:"size:10;column:gender" json:"gender"` Icon string `gorm:"size:255;column:icon" json:"icon"` AudioID string `gorm:"size:50;column:audio_id" json:"audioId"` Sort int `gorm:"default:0;column:sort" json:"sort"` Status int `gorm:"default:1;column:status" json:"status"` IsDefault int `gorm:"default:0;column:is_default" json:"isDefault"` UseCount int `gorm:"default:0;column:use_count" json:"useCount"` } func (SundynixRadioVoice) TableName() string { return "sundynix_radio_voice" } // ========== 互动 ========== // SundynixRadioLike 节目点赞 type SundynixRadioLike struct { model.BaseModel ProgramID string `gorm:"size:50;index;column:program_id" json:"programId"` UserID string `gorm:"size:50;index;column:user_id" json:"userId"` } func (SundynixRadioLike) TableName() string { return "sundynix_radio_like" } // SundynixRadioFavorite 节目收藏 type SundynixRadioFavorite struct { model.BaseModel ProgramID string `gorm:"size:50;index;column:program_id" json:"programId"` UserID string `gorm:"size:50;index;column:user_id" json:"userId"` } func (SundynixRadioFavorite) TableName() string { return "sundynix_radio_favorite" } // SundynixRadioComment 节目评论 type SundynixRadioComment struct { model.BaseModel ProgramID string `gorm:"size:50;index;column:program_id" json:"programId"` UserID string `gorm:"size:50;column:user_id" json:"userId"` Content string `gorm:"size:500;column:content" json:"content"` ParentID string `gorm:"size:50;column:parent_id" json:"parentId"` } func (SundynixRadioComment) TableName() string { return "sundynix_radio_comment" } // SundynixRadioHistory 播放历史 type SundynixRadioHistory struct { model.BaseModel ProgramID string `gorm:"size:50;index;column:program_id" json:"programId"` UserID string `gorm:"size:50;index;column:user_id" json:"userId"` Duration int `gorm:"default:0;column:duration" json:"duration"` } func (SundynixRadioHistory) TableName() string { return "sundynix_radio_history" } // ========== 订阅/支付 ========== // SundynixRadioSubscription 用户订阅 type SundynixRadioSubscription struct { model.BaseModel UserID string `gorm:"size:50;index;column:user_id" json:"userId"` ChannelID string `gorm:"size:50;index;column:channel_id" json:"channelId"` ExpiredAt time.Time `gorm:"index;column:expired_at" json:"expiredAt"` Status int `gorm:"default:1;column:status" json:"status"` } func (SundynixRadioSubscription) TableName() string { return "sundynix_radio_subscription" } // SundynixRadioSubscriptionOrder 订阅订单 type SundynixRadioSubscriptionOrder struct { model.BaseModel UserID string `gorm:"size:50;index;column:user_id" json:"userId"` ChannelID string `gorm:"size:50;column:channel_id" json:"channelId"` OrderNo string `gorm:"size:50;uniqueIndex;column:order_no" json:"orderNo"` PlanType string `gorm:"size:20;column:plan_type" json:"planType"` Amount int `gorm:"column:amount" json:"amount"` Status int `gorm:"default:0;column:status" json:"status"` PayType string `gorm:"size:20;column:pay_type" json:"payType"` PrepayID string `gorm:"size:100;column:prepay_id" json:"prepayId"` } func (SundynixRadioSubscriptionOrder) TableName() string { return "sundynix_radio_subscription_order" } // SundynixRadioPayNotify 支付回调记录 type SundynixRadioPayNotify struct { model.BaseModel OrderNo string `gorm:"size:50;column:order_no" json:"orderNo"` TransactionID string `gorm:"size:50;column:transaction_id" json:"transactionId"` TradeState string `gorm:"size:20;column:trade_state" json:"tradeState"` RawData string `gorm:"type:text;column:raw_data" json:"rawData"` } func (SundynixRadioPayNotify) TableName() string { return "sundynix_radio_pay_notify" } // ========== VIP配置 ========== // SundynixRadioVipConfig VIP配置 type SundynixRadioVipConfig struct { model.BaseModel Name string `gorm:"size:50;column:name" json:"name"` PlanType string `gorm:"size:20;column:plan_type" json:"planType"` Price int `gorm:"column:price" json:"price"` OriginalPrice int `gorm:"column:original_price" json:"originalPrice"` Duration int `gorm:"column:duration" json:"duration"` Desc string `gorm:"size:200;column:desc" json:"desc"` Sort int `gorm:"default:0;column:sort" json:"sort"` Status int `gorm:"default:1;column:status" json:"status"` } func (SundynixRadioVipConfig) TableName() string { return "sundynix_radio_vip_config" } // SundynixRadioListenLog 收听日志(数据分析用) type SundynixRadioListenLog struct { model.BaseModel UserID string `gorm:"size:50;index;column:user_id" json:"userId"` ProgramID string `gorm:"size:50;index;column:program_id" json:"programId"` ChannelID string `gorm:"size:50;index;column:channel_id" json:"channelId"` Duration int `gorm:"column:duration" json:"duration"` } func (SundynixRadioListenLog) TableName() string { return "sundynix_radio_listen_log" }