Пример #1
0
        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);
        }