74 lines
2.5 KiB
Go
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
|
|
}
|