private string GetCreateProductSQL(ProductCategoryInfoModel catInfo, ProductInfoDomainModel productInfo, Dictionary <string, ProductCategoryAttributesModel> catAttList) { StringBuilder sql = new StringBuilder(); sql.AppendFormat(@"INSERT INTO [{0}] ([product_id],[created_on],[created_by],[modified_on],[modified_by],[status_code]", catInfo.TableName); foreach (ProductCategoryAttributesModel item in catAttList.Values) { sql.AppendFormat(",[{0}]", item.AttributeName); } sql.AppendFormat(@") VALUES ('{0}',GETDATE(),'{1}',NULL,NULL, 0", productInfo.BasicInfo.ProductId, SessionUtil.Current.UserId); foreach (ProductCategoryAttributesModel item in catAttList.Values) { if (item.FieldType == "int" || item.FieldType == "decimal") { sql.AppendFormat(", {0}", productInfo.AttributeList[item.CategoryAttributeId]); } else { sql.AppendFormat(", '{0}'", productInfo.AttributeList[item.CategoryAttributeId]); } } sql.Append(");"); return(sql.ToString()); }
/// <summary> /// 获取产品信息领域模型。 /// </summary> /// <param name="productId"></param> /// <param name="clear"></param> /// <returns></returns> public ProductInfoDomainModel GetProductDomainInfoByProductId(string productId, bool clear) { if (string.IsNullOrEmpty(productId)) { return(null); } string cacheKey = CacheKey.PRODUCT_DOMAIN_MODEL.GetKeyDefine(productId); ProductInfoDomainModel info = CacheUtil.Get <ProductInfoDomainModel>(cacheKey); if (info == null || clear) { info = GetProductDomainInfoByProductIdFromDatabase(productId); if (info != null) { CacheUtil.Set(cacheKey, info); } else { CacheUtil.Remove(cacheKey); } } return(info); }
private ProductInfoDomainModel GetProductDomainInfoByProductIdFromDatabase(string productId) { ProductInfoDomainModel domainInfo = null; ProductInfoModel basicInfo = Retrieve(productId); if (basicInfo != null) { domainInfo = new ProductInfoDomainModel(); domainInfo.BasicInfo = basicInfo; ProductCategoryInfoModel catInfo = ProductCategoryInfoService.Instance.GetProductCategoryInfoById(basicInfo.CategoryId); if (catInfo == null) { LogUtil.Debug(string.Format("产品表中存在未知类型ID的记录,CategoryId: {0}, ProductId: {1}", basicInfo.CategoryId, productId)); return(null); } Dictionary <string, ProductCategoryAttributesModel> catAttList = ProductCategoryAttributesService.Instance.GetProductCategoryAttributeList(catInfo.ProductCategoryId, false); if (catAttList == null) { LogUtil.Debug(string.Format("产品表中类型ID为{0}的记录无扩展属性", basicInfo.CategoryId, productId)); return(null); } string getDetailSQL = string.Format("SELECT * FROM [{0}] WHERE product_id = $product_id$", catInfo.TableName); ParameterCollection pc = new ParameterCollection(); pc.Add("product_id", basicInfo.ProductId); DataTable dt = ExecuteDataTable(getDetailSQL, pc); if (dt != null && dt.Rows.Count > 0) { domainInfo.AttributeList = new Dictionary <string, string>(); foreach (ProductCategoryAttributesModel item in catAttList.Values) { domainInfo.AttributeList.Add(item.AttributeName, dt.Rows[0][item.AttributeName].ToString()); } if (dt.Rows.Count > 1) { LogUtil.Debug(string.Format("产品表中存在相同ProductId的记录,CategoryId: {0}, ProductId: {1}", basicInfo.CategoryId, productId)); return(null); } } } return(domainInfo); }
public bool CreateProductInfo(ProductInfoDomainModel productInfo, out string message) { bool result = false; message = "操作失败,请与管理员联系"; if (productInfo == null || productInfo.BasicInfo == null || productInfo.AttributeList == null) { message = "操作失败,产品参数不完整"; return(false); } ProductCategoryInfoModel catInfo = ProductCategoryInfoService.Instance.GetProductCategoryInfoById(productInfo.BasicInfo.CategoryId); Dictionary <string, ProductCategoryAttributesModel> catAttList = ProductCategoryAttributesService.Instance.GetProductCategoryAttributeList(productInfo.BasicInfo.CategoryId, false); if (catAttList == null) { message = "操作失败,不存在的产品类型ID"; return(false); } string InsProductSQL = GetCreateProductSQL(catInfo, productInfo, catAttList); try { BeginTransaction(); if (Create(productInfo.BasicInfo) == 1) { ProductAttributesValueModel valueInfo = null; foreach (KeyValuePair <string, string> item in productInfo.AttributeList) { valueInfo = new ProductAttributesValueModel(); valueInfo.ValueId = GetGuid(); valueInfo.AttributeId = item.Key; valueInfo.AttributeValue = item.Value; valueInfo.ProductCategoryId = productInfo.BasicInfo.CategoryId; valueInfo.ProductId = productInfo.BasicInfo.ProductId; if (ProductAttributesValueService.Instance.Create(valueInfo) != 1) { RollbackTransaction(); message = "操作失败,保存产品属性值失败"; return(false); } } if (ExecuteNonQuery(InsProductSQL) != 1) { RollbackTransaction(); message = "操作失败,插入产品信息表失败"; return(false); } CommitTransaction(); message = "成功创建产品信息"; GetProductDomainInfoByProductId(productInfo.BasicInfo.ProductId, true); result = true; } } catch (Exception ex) { RollbackTransaction(); LogUtil.Error("创建产品信息异常", ex); throw ex; } return(result); }
public bool ChangeProductSaleStatus(string productCategoryId, string productId, string statusName) { bool result = false; ProductCategoryDomainModel category = GetProductCategoryDomainModelById(productCategoryId); if (category == null) { return(false); } ProductInfoDomainModel product = GetProductDomainInfoByProductId(productId, false); if (product == null) { return(false); } if (product.BasicInfo.SalesStatus == statusName) { return(true); } product.BasicInfo.SalesStatus = statusName; //product.AttributeList[""] = statusName; try { BeginTransaction(); if (ProductInfoService.Instance.Update(product.BasicInfo) != 1) { RollbackTransaction(); return(false); } string sql = string.Format(@" UPDATE [{0}] SET [销售状态] = $statusName$, [modified_on] = GETDATE(), [modified_by] = $modifiedBy$ WHERE product_id = $productId$", category.BasicInfo.TableName); ParameterCollection pc = new ParameterCollection(); pc.Add("statusName", statusName); pc.Add("modifiedBy", SessionUtil.Current.UserId); pc.Add("productId", product.BasicInfo.ProductId); if (DbUtil.IBPDBManager.IData.ExecuteNonQuery(sql, pc) == 0) { RollbackTransaction(); return(false); } CommitTransaction(); GetProductDomainInfoByProductId(product.BasicInfo.ProductId, true); result = true; } catch (Exception ex) { RollbackTransaction(); LogUtil.Error(ex.Message, ex); throw ex; } return(result); }
public JsonResult DoAddProductInfo() { string message = "操作失败,请与管理员联系"; string productCategoryId = GetFormData("productCategory"); Dictionary <string, ProductCategoryAttributesModel> catAttList = ProductCategoryAttributesService.Instance.GetProductCategoryAttributeList(productCategoryId, false); if (catAttList == null) { return(FailedJson("操作失败,不存在的产品类型ID")); } ProductInfoDomainModel productInfo = new ProductInfoDomainModel(); productInfo.BasicInfo = new ProductInfoModel(); productInfo.BasicInfo.CategoryId = productCategoryId; productInfo.BasicInfo.ProductId = Guid.NewGuid().ToString(); productInfo.BasicInfo.ProductCode = (GetFormData("productCode") == "AUTO" || GetFormData("productCode") == null) ? productInfo.BasicInfo.ProductId : GetFormData("productCode"); productInfo.BasicInfo.ProductName = GetFormData("productName"); productInfo.BasicInfo.SalesStatus = GetFormData("productSaleStatus"); productInfo.AttributeList = new Dictionary <string, string>(); string attValue = ""; foreach (ProductCategoryAttributesModel item in catAttList.Values) { if (item.AttributeName == "产品代码") { productInfo.AttributeList.Add(item.CategoryAttributeId, productInfo.BasicInfo.ProductCode); } else if (item.AttributeName == "产品名称") { productInfo.AttributeList.Add(item.CategoryAttributeId, productInfo.BasicInfo.ProductName); } else if (item.AttributeName == "销售状态") { productInfo.AttributeList.Add(item.CategoryAttributeId, productInfo.BasicInfo.SalesStatus); } else { attValue = GetFormData(item.AttributeName); if (item.IsRequest == 0 && string.IsNullOrEmpty(attValue)) { return(FailedJson("操作失败,请检查所有必填项是否全部输入")); } switch (item.FieldType) { case "string": if (attValue.Length < item.FieldMinLength || attValue.Length > item.FieldMaxLength) { return(FailedJson(string.Format("操作失败,【{0}】属性长度不符合要求,请检查输入", item.AttributeName))); } break; case "decimal": if (RegexUtil.IsNumeric(attValue) == false) { return(FailedJson(string.Format("操作失败,【{0}】属性为数值类型,请检查输入", item.AttributeName))); } break; case "datetime": if (RegexUtil.IsDateTime(attValue) == false) { return(FailedJson(string.Format("操作失败,【{0}】属性为日期时间类型,请检查输入", item.AttributeName))); } break; case "custom": if (item.CustomValue.Split('\n').ToList().Contains(attValue) == false) { return(FailedJson(string.Format("操作失败,【{0}】属性值输入不在枚举范围内,请检查输入", item.AttributeName))); } break; default: break; } productInfo.AttributeList.Add(item.CategoryAttributeId, attValue); } } if (ProductInfoService.Instance.CreateProductInfo(productInfo, out message)) { return(SuccessedJson(message, "ProductCenter_ProductStockMgr", "ProductCenter_ProductStockMgr", "forward", "/productcenter/ProductStockMgr?catid=" + productInfo.BasicInfo.CategoryId + "&=" + DateTime.Now.ToString("yyyyMMddHHmmssfff"))); } else { return(FailedJson(message)); } }