public Error Set(CmsCategoryEntity src) { if (src.ParentId != 0 && src.ParentId == value.ID) { return(new Error("父级栏目有误:与子栏目相同")); } if (value.ID <= 0) { if (src.SiteId <= 0) { return(new Error("参数错误:SiteId")); } if (string.IsNullOrEmpty(src.Tag)) { return(new Error("缺少参数:Tag")); } if (string.IsNullOrEmpty(src.Name)) { return(new Error("栏目名称不能为空")); } value.SiteId = src.SiteId; value.Code = src.Code ?? ""; value.Tag = src.Tag ?? ""; value.Icon = ""; value.Path = ""; value.Flag = 0; //todo: 初始化flag var maxSortNumber = _repo.GetMaxSortNumber(value.SiteId); if (maxSortNumber == 0) { maxSortNumber = 1; } value.SortNumber = maxSortNumber; _pathChanged = true; } if (src.Tag == "-") { return(new Error("不允许使用栏目保留Tag")); } if (src.ParentId == 0 && errTags.Contains(src.Tag)) { return(new Error("不允许使用保留栏目Tag")); } if (value.ParentId != src.ParentId) { if (src.ParentId > 0) { var ip = _repo.GetCategory(value.SiteId, src.ParentId); if (ip == null || ip.Get().SiteId != value.SiteId) { return(new Error("上级分类不存在")); } } value.ParentId = src.ParentId; _pathChanged = true; } if (string.IsNullOrEmpty(src.Tag)) { return(new Error("栏目tag不能为空")); } if (!_repo.CheckTagMatch(value.SiteId, value.ParentId, src.Tag, value.ID)) { return(new Error("分类TAG已存在")); } if (value.Tag != src.Tag) { _pathChanged = true; } value.Tag = src.Tag; value.Flag = src.Flag; value.ModuleId = src.ModuleId; value.Name = src.Name ?? ""; value.Icon = src.Icon ?? ""; value.Title = src.Title ?? ""; value.Keywords = src.Keywords ?? ""; value.Description = src.Description ?? ""; value.Location = src.Location ?? ""; if (string.IsNullOrEmpty(src.Location)) { value.Flag ^= (int)CategoryFlag.Redirect; } else { value.Flag |= (int)CategoryFlag.Redirect; } return(null); }