Exemple #1
0
        /// <summary>
        /// 插入前台分类的层级关系
        /// </summary>
        /// <param name="relation">前台分类的层级关系</param>
        public void InsertRelation(ECCategoryRelation relation)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("ECCategory_InsertRelation");

            cmd.SetParameterValue(relation);

            cmd.ExecuteNonQuery();
            relation.SysNo = Convert.ToInt32(cmd.GetParameterValue("@SysNo"));
        }
        /// <summary>
        /// 插入前台显示分类
        /// </summary>
        /// <param name="entity">前台显示分类</param>
        public ECCategory Insert(ECCategory entity)
        {
            Validate(entity);
            using (TransactionScope ts = new TransactionScope())
            {
                _ecCategoryDA.Insert(entity);
                if (entity.Level == ECCategoryLevel.Category1)
                {
                    ECCategoryRelation r = new ECCategoryRelation();
                    r.ECCategorySysNo = entity.SysNo.Value;
                    r.ParentSysNo     = null;
                    _ecCategoryDA.InsertRelation(r);
                }
                else
                {
                    if (entity.ParentList != null)
                    {
                        foreach (var p in entity.ParentList)
                        {
                            if (p.RSysNo > 0)
                            {
                                ECCategoryRelation r = new ECCategoryRelation();
                                r.ECCategorySysNo = entity.SysNo.Value;
                                r.ParentSysNo     = p.RSysNo;
                                _ecCategoryDA.InsertRelation(r);
                            }
                            else
                            {
                                ECCategory parentItem = _ecCategoryDA.Load(p.SysNo.Value);
                                if (parentItem == null || parentItem.RSysNo <= 0)
                                {
                                    throw new BizException(string.Format("节点{1}为无效节点!", p.Name));
                                }
                                ECCategoryRelation r = new ECCategoryRelation();
                                r.ECCategorySysNo = entity.SysNo.Value;
                                r.ParentSysNo     = parentItem.RSysNo;
                                _ecCategoryDA.InsertRelation(r);
                            }
                        }
                    }
                }


                ts.Complete();
            }

            return(entity);
        }
        /// <summary>
        /// 更新前台显示分类
        /// </summary>
        /// <param name="entity">前台显示分类</param>
        public void Update(ECCategory entity)
        {
            Validate(entity);
            using (TransactionScope ts = new TransactionScope())
            {
                _ecCategoryDA.Update(entity);
                //2.删除不在当前父类列表中的层级关系
                List <int> rParentSysNoList = entity.ParentList.ConvertAll(p => p.RSysNo);
                _ecCategoryDA.DeleteOldRelation(entity.SysNo.Value, rParentSysNoList);
                //3.重新插入层级关系
                foreach (var rSysNo in rParentSysNoList)
                {
                    if (!_ecCategoryDA.ExistsRelation(entity.SysNo.Value, rSysNo))
                    {
                        ECCategoryRelation r = new ECCategoryRelation();
                        r.ECCategorySysNo = entity.SysNo.Value;
                        r.ParentSysNo     = rSysNo;
                        _ecCategoryDA.InsertRelation(r);
                    }
                }

                ts.Complete();
            }
        }