Files
MAcode/tcs-iptv/internal/service/query_admin.go
T

74 lines
2.5 KiB
Go

package service
import (
"github.com/tcs-iptv/tcs/internal/chain"
"github.com/tcs-iptv/tcs/internal/model"
)
// ---- 多维度标识查询(方案第一阶段标识查询接口补足)----
// QueryByHash 根据内容哈希反查标识信息及映射关系。
func (s *Service) QueryByHash(fileHash string) (model.ContentQueryResult, error) {
return s.chain.QueryByHash(fileHash)
}
// QueryByProvincialCode 根据省级内容编码(CP MediaID)反查标识信息。
func (s *Service) QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) {
return s.chain.QueryByProvincialCode(provincialCode)
}
// QueryByLibraryFileID 根据片库文件 ID(媒资库 ID)反查标识信息。
func (s *Service) QueryByLibraryFileID(libraryFileID string) (model.ContentQueryResult, error) {
return s.chain.QueryByLibraryFileID(libraryFileID)
}
// ---- MA 合并/拆分(方案 MA 管理模块补足)----
// MergeCCCodes 将多个 MA 码合并为一个主 MA 码(仅监管主体)。
// 被合并的 MA 码的哈希绑定和映射迁移至主 MA 码,原 MA 码状态标记为 merged。
// 全链路存证记录合并操作。
func (s *Service) MergeCCCodes(role chain.Role, req model.MergeRequest) (model.MergeResult, error) {
res, err := s.chain.MergeMA(role, req)
if err != nil {
return res, err
}
// 记录存证
s.prov.Record(model.ProvenanceEvent{
CCCode: req.PrimaryCCCode,
Node: model.NodeIssue,
Operator: req.Operator,
Detail: "MA 码合并:将 " + joinCCCodes(req.SecondaryCCCodes) + " 合并入 " + req.PrimaryCCCode + ",原因:" + req.Reason,
})
return res, nil
}
// SplitCCCode 将一个 MA 码拆分为多个独立 MA 码(仅监管主体)。
// 按集号将哈希绑定和映射迁移至新 MA 码,源 MA 码状态标记为 split。
// 全链路存证记录拆分操作。
func (s *Service) SplitCCCode(role chain.Role, req model.SplitRequest) (model.SplitResult, error) {
res, err := s.chain.SplitMA(role, req)
if err != nil {
return res, err
}
// 记录存证
s.prov.Record(model.ProvenanceEvent{
CCCode: req.SourceCCCode,
Node: model.NodeIssue,
Operator: req.Operator,
Detail: "MA 码拆分:将 " + req.SourceCCCode + " 拆分为 " + joinCCCodes(res.NewCCCodes) + ",原因:" + req.Reason,
})
return res, nil
}
// joinCCCodes 将 MA 码列表拼接为逗号分隔的字符串。
func joinCCCodes(codes []string) string {
if len(codes) == 0 {
return ""
}
out := codes[0]
for i := 1; i < len(codes); i++ {
out += ", " + codes[i]
}
return out
}