/// <summary> /// 创建店铺分类 /// </summary> public static int CreateStoreClass(StoreClassInfo storeClassInfo) { return BrnMall.Core.BMAData.RDBS.CreateStoreClass(storeClassInfo); }
/// <summary> /// 更新店铺分类 /// </summary> public static void UpdateStoreClass(StoreClassInfo storeClassInfo) { BrnMall.Core.BMAData.RDBS.UpdateStoreClass(storeClassInfo); }
/// <summary> /// 递归更新店铺分类及其子店铺分类的级别和路径 /// </summary> /// <param name="storeClassList">店铺分类列表</param> /// <param name="storeClassInfo">店铺分类信息</param> /// <param name="changeLayer">变化的级别</param> /// <param name="parentPath">父路径</param> private static void UpdateChildStoreClassLayerAndPath(List<StoreClassInfo> storeClassList, StoreClassInfo storeClassInfo, int changeLayer, string parentPath) { storeClassInfo.Layer = storeClassInfo.Layer + changeLayer; storeClassInfo.Path = parentPath + "," + storeClassInfo.StoreCid; BrnMall.Data.Stores.UpdateStoreClass(storeClassInfo); foreach (StoreClassInfo info in storeClassList.FindAll(x => x.ParentId == storeClassInfo.StoreCid)) { UpdateChildStoreClassLayerAndPath(storeClassList, info, changeLayer, storeClassInfo.Path); } }
/// <summary> /// 获得店铺分类列表 /// </summary> /// <param name="storeId">店铺id</param> /// <returns></returns> public static List<StoreClassInfo> GetStoreClassList(int storeId) { List<StoreClassInfo> storeClassList = new List<StoreClassInfo>(); IDataReader reader = BrnMall.Core.BMAData.RDBS.GetStoreClassList(storeId); while (reader.Read()) { StoreClassInfo storeClassInfo = new StoreClassInfo(); storeClassInfo.StoreCid = TypeHelper.ObjectToInt(reader["storecid"]); storeClassInfo.StoreId = TypeHelper.ObjectToInt(reader["storeid"]); storeClassInfo.DisplayOrder = TypeHelper.ObjectToInt(reader["displayorder"]); storeClassInfo.Name = reader["name"].ToString(); storeClassInfo.ParentId = TypeHelper.ObjectToInt(reader["parentid"]); storeClassInfo.Layer = TypeHelper.ObjectToInt(reader["layer"]); storeClassInfo.HasChild = TypeHelper.ObjectToInt(reader["haschild"]); storeClassInfo.Path = reader["path"].ToString(); storeClassList.Add(storeClassInfo); } reader.Close(); return storeClassList; }
/// <summary> /// 更新店铺分类 /// </summary> public static void UpdateStoreClass(StoreClassInfo storeClassInfo, int oldParentId) { if (storeClassInfo.ParentId != oldParentId)//父分类改变时 { int changeLayer = 0; List<StoreClassInfo> storeClassList = BrnMall.Data.Stores.GetStoreClassList(storeClassInfo.StoreId); StoreClassInfo oldParentStoreClassInfo = storeClassList.Find(x => x.StoreCid == oldParentId);//旧的父分类 if (storeClassInfo.ParentId > 0)//非顶层分类时 { StoreClassInfo newParentStoreClassInfo = storeClassList.Find(x => x.StoreCid == storeClassInfo.ParentId);//新的父分类 if (oldParentStoreClassInfo == null) { changeLayer = newParentStoreClassInfo.Layer - 1; } else { changeLayer = newParentStoreClassInfo.Layer - oldParentStoreClassInfo.Layer; } storeClassInfo.Layer = newParentStoreClassInfo.Layer + 1; storeClassInfo.Path = newParentStoreClassInfo.Path + "," + storeClassInfo.StoreCid; if (newParentStoreClassInfo.HasChild == 0) { newParentStoreClassInfo.HasChild = 1; BrnMall.Data.Stores.UpdateStoreClass(newParentStoreClassInfo); } } else//顶层分类时 { changeLayer = 1 - oldParentStoreClassInfo.Layer; storeClassInfo.Layer = 1; storeClassInfo.Path = storeClassInfo.StoreCid.ToString(); } if (oldParentId > 0 && storeClassList.FindAll(x => x.ParentId == oldParentId).Count == 1) { oldParentStoreClassInfo.HasChild = 0; BrnMall.Data.Stores.UpdateStoreClass(oldParentStoreClassInfo); } foreach (StoreClassInfo info in storeClassList.FindAll(x => x.ParentId == storeClassInfo.StoreCid)) { UpdateChildStoreClassLayerAndPath(storeClassList, info, changeLayer, storeClassInfo.Path); } } BrnMall.Data.Stores.UpdateStoreClass(storeClassInfo); BrnMall.Core.BMACache.Remove(CacheKeys.MALL_STORE_CLASSLIST + storeClassInfo.StoreId); }
/// <summary> /// 创建店铺分类 /// </summary> public static void CreateStoreClass(StoreClassInfo storeClassInfo) { if (storeClassInfo.ParentId > 0) { List<StoreClassInfo> storeClassList = BrnMall.Data.Stores.GetStoreClassList(storeClassInfo.StoreId); StoreClassInfo parentStoreClassInfo = storeClassList.Find(x => x.StoreCid == storeClassInfo.ParentId); storeClassInfo.Layer = parentStoreClassInfo.Layer + 1; storeClassInfo.HasChild = 0; storeClassInfo.Path = ""; int storeCid = BrnMall.Data.Stores.CreateStoreClass(storeClassInfo); storeClassInfo.StoreCid = storeCid; storeClassInfo.Path = parentStoreClassInfo.Path + "," + storeCid; BrnMall.Data.Stores.UpdateStoreClass(storeClassInfo); if (parentStoreClassInfo.HasChild == 0) { parentStoreClassInfo.HasChild = 1; BrnMall.Data.Stores.UpdateStoreClass(parentStoreClassInfo); } } else { storeClassInfo.Layer = 1; storeClassInfo.HasChild = 0; storeClassInfo.Path = ""; int storeCid = BrnMall.Data.Stores.CreateStoreClass(storeClassInfo); storeClassInfo.StoreCid = storeCid; storeClassInfo.Path = storeCid.ToString(); BrnMall.Data.Stores.UpdateStoreClass(storeClassInfo); } BrnMall.Core.BMACache.Remove(CacheKeys.MALL_STORE_CLASSLIST + storeClassInfo.StoreId); }
/// <summary> /// 更新店铺分类 /// </summary> public void UpdateStoreClass(StoreClassInfo storeClassInfo) { DbParameter[] parms = { GenerateInParam("@storeid", SqlDbType.Int,4, storeClassInfo.StoreId), GenerateInParam("@displayorder", SqlDbType.Int,4, storeClassInfo.DisplayOrder), GenerateInParam("@name", SqlDbType.NChar,60, storeClassInfo.Name), GenerateInParam("@parentid", SqlDbType.Int, 4, storeClassInfo.ParentId), GenerateInParam("@layer", SqlDbType.TinyInt,1,storeClassInfo.Layer), GenerateInParam("@haschild", SqlDbType.TinyInt,1,storeClassInfo.HasChild), GenerateInParam("@path", SqlDbType.Char,100, storeClassInfo.Path), GenerateInParam("@storecid", SqlDbType.Int,4, storeClassInfo.StoreCid) }; string commandText = string.Format("UPDATE [{0}storeclasses] SET [storeid]=@storeid,[displayorder]=@displayorder,[name]=@name,[parentId]=@parentId,[layer]=@layer,[haschild]=@haschild,[path]=@path WHERE [storecid]=@storecid", RDBSHelper.RDBSTablePre); RDBSHelper.ExecuteNonQuery(CommandType.Text, commandText, parms); }
/// <summary> /// 创建店铺分类 /// </summary> public int CreateStoreClass(StoreClassInfo storeClassInfo) { DbParameter[] parms = { GenerateInParam("@storeid", SqlDbType.Int,4, storeClassInfo.StoreId), GenerateInParam("@displayorder", SqlDbType.Int,4, storeClassInfo.DisplayOrder), GenerateInParam("@name", SqlDbType.NChar,60, storeClassInfo.Name), GenerateInParam("@parentid", SqlDbType.Int, 4, storeClassInfo.ParentId), GenerateInParam("@layer", SqlDbType.TinyInt,1,storeClassInfo.Layer), GenerateInParam("@haschild", SqlDbType.TinyInt,1,storeClassInfo.HasChild), GenerateInParam("@path", SqlDbType.Char,100, storeClassInfo.Path) }; string commandText = string.Format("INSERT INTO [{0}storeclasses]([storeid],[displayorder],[name],[parentid],[layer],[haschild],[path]) VALUES(@storeid,@displayorder,@name,@parentid,@layer,@haschild,@path);SELECT SCOPE_IDENTITY()", RDBSHelper.RDBSTablePre); return TypeHelper.ObjectToInt(RDBSHelper.ExecuteScalar(CommandType.Text, commandText, parms), -1); }
public ActionResult AddStoreClass(StoreClassModel model) { if (AdminStores.GetStoreCidByStoreIdAndName(WorkContext.StoreId, model.StoreClassName) > 0) ModelState.AddModelError("StoreClassName", "名称已经存在"); if (model.ParentId != 0 && AdminStores.GetStoreClassByStoreIdAndStoreCid(WorkContext.StoreId, model.ParentId) == null) ModelState.AddModelError("ParentId", "父分类不存在"); if (ModelState.IsValid) { StoreClassInfo storeClassInfo = new StoreClassInfo() { StoreId = WorkContext.StoreId, DisplayOrder = model.DisplayOrder, Name = model.StoreClassName, ParentId = model.ParentId }; AdminStores.CreateStoreClass(storeClassInfo); AddStoreAdminLog("添加店铺分类", "添加店铺分类,店铺分类为:" + model.StoreClassName); return PromptView("店铺分类添加成功"); } LoadStoreClass(WorkContext.StoreId); return View(model); }