Beispiel #1
0
        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());
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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));
            }
        }