fix(qa): ISSUE-006 — 新增字段编码唯一性校验,避免创建重复字段
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user