package model import "time" // 四期(大小屏融合):跨域解析、扫码验真、跨屏权益相关模型。 // ScreenType 屏幕/终端类型(大小屏融合)。 type ScreenType string const ( ScreenIPTV ScreenType = "iptv" // 大屏:IPTV 机顶盒 ScreenOTT ScreenType = "ott" // 大屏:OTT 盒子 / 智能电视 ScreenApp ScreenType = "app" // 小屏:手机 APP / 小程序 ) // AllScreens 大小屏融合覆盖的全部屏类型(同一 MA 码跨屏可用)。 func AllScreens() []ScreenType { return []ScreenType{ScreenIPTV, ScreenOTT, ScreenApp} } // ValidScreen 校验屏类型合法性。 func ValidScreen(s ScreenType) bool { switch s { case ScreenIPTV, ScreenOTT, ScreenApp: return true default: return false } } // ParsedMA 六段式 MA 码解析结果(含可选集级子标识)。 type ParsedMA struct { Raw string `json:"raw"` // 原始 MA 码(含集级子标识) Prefix string `json:"prefix"` // MA CountryCode string `json:"country_code"` // 156 IndustryNode string `json:"industry_node"` // 行业节点 OrgNode string `json:"org_node"` // 机构节点 Category string `json:"category"` // 内容类目 WD/WJ/DY/DH Year string `json:"year"` // 年份 Sequence string `json:"sequence"` // 号段内序列 Episode int `json:"episode"` // 集级子标识 #Exx;0 表示整剧 Valid bool `json:"valid"` // 结构是否合法 } // ResolveResult 跨域解析网关返回(四期 C.1/C.2,大小屏统一解析)。 type ResolveResult struct { MACode string `json:"ma_code"` Parsed ParsedMA `json:"parsed"` Title string `json:"title"` Status string `json:"status"` // 流通状态(published/revoked/...) InCirculation bool `json:"in_circulation"` // 是否流通中 Screens []ScreenType `json:"screens"` // 跨屏可用屏类型 Issuer string `json:"issuer"` IssueDate string `json:"issue_date"` Resolved bool `json:"resolved"` Message string `json:"message"` } // ScanVerifyResult 用户扫码验真返回(四期 B.2)。 type ScanVerifyResult struct { MACode string `json:"ma_code"` Authentic bool `json:"authentic"` // MA 码真伪(链上存在且结构合法) Compliant bool `json:"compliant"` // 是否合规流通(未下架) Status string `json:"status"` Title string `json:"title"` Parsed ParsedMA `json:"parsed"` Screens []ScreenType `json:"screens"` Message string `json:"message"` } // PurchaseRecord 用户一次购买记录(四期 D.1)。 type PurchaseRecord struct { MACode string `json:"ma_code"` UserHash string `json:"user_hash"` Screen ScreenType `json:"screen"` // 购买时所在屏 PurchasedAt time.Time `json:"purchased_at"` } // UserRights 用户跨屏权益账户:以 MA 码为维度记录购买,任一屏购买即全屏通看。 type UserRights struct { UserHash string `json:"user_hash"` Purchases map[string]PurchaseRecord `json:"purchases"` // maCode -> record } // CrossScreenRightsResult 跨屏权益核验返回(四期 D.1)。 type CrossScreenRightsResult struct { MACode string `json:"ma_code"` UserHash string `json:"user_hash"` Entitled bool `json:"entitled"` // 是否有权益(任一屏购买即全屏通看) RequestScreen ScreenType `json:"request_screen"` // 当前请求屏 PurchaseScreen ScreenType `json:"purchase_screen,omitempty"` // 原始购买屏 PurchasedAt time.Time `json:"purchased_at,omitempty"` Message string `json:"message"` }