fix(qa): ISSUE-006 — 新增字段编码唯一性校验,避免创建重复字段

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
lmk
2026-06-17 17:34:32 +08:00
co-authored by Claude
parent b78ad2b561
commit 22f96a2dce
+14
View File
@@ -362,6 +362,20 @@ func (s *ReportService) SaveField(ctx context.Context, req *model.SaveFieldReq)
field.FilterOperators = []string{"=", "!=", ">", "<", ">=", "<=", "IN", "LIKE", "BETWEEN"}
}
// 新增时校验字段编码唯一性
if req.ID == nil || *req.ID == 0 {
existing, err := s.configLoader.GetReportFields(ctx, req.BusinessCode, req.ReportCode)
if err != nil {
return nil, fmt.Errorf("校验字段编码失败: %w", err)
}
allFields := append(append(existing.Dimensions, existing.Indicators...), existing.Filters...)
for _, f := range allFields {
if f.FieldCode == req.FieldCode && f.Status == model.StatusActive {
return nil, fmt.Errorf("字段编码 %s 已存在(业务: %s, 报表: %s", req.FieldCode, req.BusinessCode, req.ReportCode)
}
}
}
if req.ID != nil && *req.ID > 0 {
field.Id = *req.ID
if err := s.configLoader.UpdateField(ctx, field); err != nil {