Пример #1
0
        public CommonServiceResult <long> GetFirstBuyableCommodityDetail(string commodityMasterCode, string batchCode, string buyerCode)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    CommodityDetail detail = context.CommodityDetails.FirstOrDefault(p =>
                                                                                     p.CommodityMasterCode == commodityMasterCode &&
                                                                                     p.BatchCode == batchCode &&
                                                                                     p.CommodityStatus == CommodityDetail.COMMODITY_STATUS_IS_CREATED);

                    if (detail == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult <long> .DataNotFoundResult);
                    }

                    // 修改状态.
                    detail.CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_LOCKED;

                    // 购买人.
                    detail.BuyerCode = buyerCode;

                    context.SaveChanges();

                    return(CommonServiceResult <long> .CreateDefaultSuccessResult(detail.CommodityDetailID));
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult <long>(ex));
            }
        }
Пример #2
0
        public List <CommodityDetail> GetCommodityDetailList(string commodityMasterCode, string batchCode, string commodityStatus)
        {
            using (MyBuyingContext context = new MyBuyingContext())
            {
                var query =
                    from data in context.CommodityDetails
                    where
                    data.CommodityMasterCode == commodityMasterCode &&
                    data.BatchCode == batchCode &&
                    data.CommodityStatus == commodityStatus
                    select
                    data;

                List <CommodityDetail> resultList = query.ToList();
                return(resultList);
            }
        }
Пример #3
0
        public CommonServiceResult CommodityDetailUsedByCode(string commodityMasterCode, string batchCode, string commodityDetailCode)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    CommodityDetail detail = context.CommodityDetails.FirstOrDefault(p =>
                                                                                     p.CommodityMasterCode == commodityMasterCode &&
                                                                                     p.BatchCode == batchCode &&
                                                                                     p.CommodityDetailCode == commodityDetailCode);

                    if (detail == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult.DataNotFoundResult);
                    }

                    if (detail.CommodityStatus != CommodityDetail.COMMODITY_STATUS_IS_PAYED)
                    {
                        CommonServiceResult errorResult = new CommonServiceResult()
                        {
                            ResultCode    = "COMMODITY_STATUS_ERROR",
                            ResultMessage = "状态数据无效!",
                        };
                        return(errorResult);
                    }

                    // 修改状态.
                    detail.CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_USED;

                    context.SaveChanges();
                }

                return(CommonServiceResult.DefaultSuccessResult);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult(ex));
            }
        }
Пример #4
0
        public CommonServiceResult CreateOrder(long commodityDetailID, string buyerCode)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    CommodityDetail detail = context.CommodityDetails.Find(commodityDetailID);
                    if (detail == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult.DataNotFoundResult);
                    }

                    if (detail.CommodityStatus != CommodityDetail.COMMODITY_STATUS_IS_LOCKED)
                    {
                        CommonServiceResult errorResult = new CommonServiceResult()
                        {
                            ResultCode    = "COMMODITY_STATUS_ERROR",
                            ResultMessage = "状态数据无效!",
                        };
                        return(errorResult);
                    }

                    // 修改状态.
                    detail.CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_PAYING;

                    // 购买人.
                    detail.BuyerCode = buyerCode;

                    context.SaveChanges();
                }

                return(CommonServiceResult.DefaultSuccessResult);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult(ex));
            }
        }
Пример #5
0
        static void Main(string[] args)
        {
            // 当 Code First 与数据库结构不一致时
            // 自动升级到最新的版本.
            Database.SetInitializer(new MigrateDatabaseToLatestVersion <MyBuyingContext, MyBuying.Migrations.Configuration>());

            using (MyBuyingContext context = new MyBuyingContext())
            {
                var query =
                    from data in context.CommodityMasters
                    select data;


                foreach (var item in query)
                {
                    Console.WriteLine(item.CommodityMasterName);
                }
            }

            Console.WriteLine("Finish!");
            Console.ReadLine();
        }
Пример #6
0
        public CommonServiceResult <CommodityDetail> OrderPayed(long commodityDetailID)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    CommodityDetail detail = context.CommodityDetails.Find(commodityDetailID);
                    if (detail == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult <CommodityDetail> .DataNotFoundResult);
                    }

                    if (detail.CommodityStatus != CommodityDetail.COMMODITY_STATUS_IS_PAYING)
                    {
                        CommonServiceResult <CommodityDetail> errorResult = new CommonServiceResult <CommodityDetail>()
                        {
                            ResultCode    = "COMMODITY_STATUS_ERROR",
                            ResultMessage = "状态数据无效!",
                        };
                        return(errorResult);
                    }

                    // 修改状态.
                    detail.CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_PAYED;

                    context.SaveChanges();


                    return(CommonServiceResult <CommodityDetail> .CreateDefaultSuccessResult(detail));
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult <CommodityDetail>(ex));
            }
        }
Пример #7
0
        /// <summary>
        /// 简单创建商品明细
        /// </summary>
        /// <param name="commodityMasterCode"></param>
        /// <param name="batchCode"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public CommonServiceResult CreateCommodityDetail(string commodityMasterCode, string batchCode, int count)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    // 先查询 商品主表是否存在.
                    CommodityMaster commodityMaster = context.CommodityMasters.Find(commodityMasterCode);
                    if (commodityMaster == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult.DataNotFoundResult);
                    }

                    // 再查询, 相同的商品主表代码+批次, 是否已存在有数据.
                    int dbDataCount = context.CommodityDetails.Count(p => p.CommodityMasterCode == commodityMasterCode && p.BatchCode == batchCode);
                    if (dbDataCount > 0)
                    {
                        // 数据已存在.
                        return(CommonServiceResult.DataHadExistsResult);
                    }

                    if (count <= 0)
                    {
                        CommonServiceResult errorResult = new CommonServiceResult()
                        {
                            ResultCode    = "COUNT_MUST_MORE_THAN_ZERO",
                            ResultMessage = "数量必须大于零。",
                        };
                        return(errorResult);
                    }


                    HashSet <int> resultCodes = new HashSet <int>();
                    Random        random      = new Random();

                    while (resultCodes.Count < count)
                    {
                        int num = random.Next(1, 99999999);
                        if (!resultCodes.Contains(num))
                        {
                            resultCodes.Add(num);
                        }
                    }

                    foreach (int num in resultCodes)
                    {
                        CommodityDetail commodityDetail = new CommodityDetail()
                        {
                            // 主表代码.
                            CommodityMasterCode = commodityMasterCode,
                            // 批次.
                            BatchCode = batchCode,
                            // 明细代码.
                            CommodityDetailCode = num.ToString("00000000"),

                            // 商品状态 : 可用.
                            CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_CREATED,
                        };

                        context.CommodityDetails.Add(commodityDetail);
                    }

                    context.SaveChanges();
                }


                return(CommonServiceResult.DefaultSuccessResult);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult(ex));
            }
        }
Пример #8
0
        /// <summary>
        /// 根据模板创建商品明细
        /// </summary>
        /// <param name="commodityMasterCode"></param>
        /// <param name="batchCode"></param>
        /// <returns></returns>
        public CommonServiceResult CreateCommodityDetailByTemplate(string commodityMasterCode, string batchCode)
        {
            try
            {
                using (MyBuyingContext context = new MyBuyingContext())
                {
                    // 先查询 商品主表是否存在.
                    CommodityMaster commodityMaster = context.CommodityMasters.Find(commodityMasterCode);
                    if (commodityMaster == null)
                    {
                        // 数据不存在.
                        return(CommonServiceResult.DataNotFoundResult);
                    }

                    // 再获取模板数据.
                    List <CommodityDetailTemplate> templateDataList = context.CommodityDetailTemplates.Where(p => p.CommodityMasterCode == commodityMasterCode).ToList();
                    if (templateDataList.Count == 0)
                    {
                        CommonServiceResult errorResult = new CommonServiceResult()
                        {
                            ResultCode    = "WITHOUT_TEMPLATE_DATA",
                            ResultMessage = "未查询到模板数据",
                        };
                        return(errorResult);
                    }

                    // 再查询, 相同的商品主表代码+批次, 是否已存在有数据.
                    int dbDataCount = context.CommodityDetails.Count(p => p.CommodityMasterCode == commodityMasterCode && p.BatchCode == batchCode);
                    if (dbDataCount > 0)
                    {
                        // 数据已存在.
                        return(CommonServiceResult.DataHadExistsResult);
                    }


                    HashSet <int> resultCodes = new HashSet <int>();
                    Random        random      = new Random();

                    while (resultCodes.Count < templateDataList.Count)
                    {
                        int num = random.Next(1, 99999999);
                        if (!resultCodes.Contains(num))
                        {
                            resultCodes.Add(num);
                        }
                    }

                    // 索引.
                    var index = 0;
                    foreach (int num in resultCodes)
                    {
                        CommodityDetail commodityDetail = new CommodityDetail()
                        {
                            // 主表代码.
                            CommodityMasterCode = commodityMasterCode,
                            // 批次.
                            BatchCode = batchCode,
                            // 明细代码.
                            CommodityDetailCode = num.ToString("00000000"),

                            // 商品状态 : 可用.
                            CommodityStatus = CommodityDetail.COMMODITY_STATUS_IS_CREATED,

                            // 附加数据.
                            CommodityDetailExpData = templateDataList[index].CommodityDetailExpData,
                        };

                        context.CommodityDetails.Add(commodityDetail);
                        index++;
                    }

                    context.SaveChanges();
                }


                return(CommonServiceResult.DefaultSuccessResult);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
                return(new CommonServiceResult(ex));
            }
        }