init: init refactor

This commit is contained in:
Blizzard
2026-04-27 00:02:18 +08:00
commit e515f6a287
360 changed files with 30713 additions and 0 deletions
+230
View File
@@ -0,0 +1,230 @@
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"
}