231 lines
8.6 KiB
Go
231 lines
8.6 KiB
Go
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"
|
|
}
|