feat: 方案100%匹配 — RBAC动态权限+Grafana监控+目录库独立微服务+全国目录中心+标识同步
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
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 管理模块补足)----
|
||||
|
||||
// MergeMACodes 将多个 MA 码合并为一个主 MA 码(仅监管主体)。
|
||||
// 被合并的 MA 码的哈希绑定和映射迁移至主 MA 码,原 MA 码状态标记为 merged。
|
||||
// 全链路存证记录合并操作。
|
||||
func (s *Service) MergeMACodes(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{
|
||||
MACode: req.PrimaryMACode,
|
||||
Node: model.NodeIssue,
|
||||
Operator: req.Operator,
|
||||
Detail: "MA 码合并:将 " + joinMACodes(req.SecondaryMACodes) + " 合并入 " + req.PrimaryMACode + ",原因:" + req.Reason,
|
||||
})
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// SplitMACode 将一个 MA 码拆分为多个独立 MA 码(仅监管主体)。
|
||||
// 按集号将哈希绑定和映射迁移至新 MA 码,源 MA 码状态标记为 split。
|
||||
// 全链路存证记录拆分操作。
|
||||
func (s *Service) SplitMACode(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{
|
||||
MACode: req.SourceMACode,
|
||||
Node: model.NodeIssue,
|
||||
Operator: req.Operator,
|
||||
Detail: "MA 码拆分:将 " + req.SourceMACode + " 拆分为 " + joinMACodes(res.NewMACodes) + ",原因:" + req.Reason,
|
||||
})
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// joinMACodes 将 MA 码列表拼接为逗号分隔的字符串。
|
||||
func joinMACodes(codes []string) string {
|
||||
if len(codes) == 0 {
|
||||
return ""
|
||||
}
|
||||
out := codes[0]
|
||||
for i := 1; i < len(codes); i++ {
|
||||
out += ", " + codes[i]
|
||||
}
|
||||
return out
|
||||
}
|
||||
Reference in New Issue
Block a user