/// <summary>
 /// 将GoodsSkuInfo转换成SetGoodsSkuInfoModel
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public SetGoodsSkuInfoModel ToSetGoodsInfoModel(GoodsSkuInfo info)
 {
     Skuid            = info.Skuid;
     Goodsid          = info.Goodsid;
     SkuName          = info.SkuName;
     SkuOriginalPrice = info.SkuOriginalPrice;
     SkuMaketPrice    = info.SkuMaketPrice;
     SkuFactoryPrice  = info.SkuFactoryPrice;
     SkuVipPrice      = info.SkuVipPrice;
     Stock            = info.Stock;
     SkuImage         = info.SkuImage;
     IsDefault        = info.IsDefault;
     Number           = info.Number;
     Status           = info.Status;
     return(this);
 }
        public async Task <IActionResult> SetGoodsSkuInfo([FromServices] IHostingEnvironment env, IList <IFormFile> skufiles, long goodsId)
        {
            const string fileFilt   = ".gif|.jpg|.jpeg|.png|.webp|";
            const string saveSuffix = ".jpeg";

            foreach (var file in Request.Form.Files)
            {
                var fileExtension = Path.GetExtension(file.FileName);
                if (fileExtension == null)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件没有后缀")));
                }
                if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件不是图片")));
                }
                if (file.Length > 1024 * 1024 * 2)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件不能大于2M")));
                }
            }

            var skuArr = Request.Get <string>("SkuArr");

            string[] skuNumArr = skuArr.Split(',');

            GoodsInfo            info           = goodsInfoService.GetGoodsInfo(goodsId);
            List <GoodsSkuInfo>  skuModels      = new List <GoodsSkuInfo>();
            List <GoodsSkuInout> skuinoutModels = new List <GoodsSkuInout>();
            var index    = 0;
            var imgIndex = 0;

            foreach (var skuNum in skuNumArr)
            {
                GoodsSkuInfo goodsSkuInfo = new GoodsSkuInfo();
                goodsSkuInfo.Skuid            = Request.Get <int>($"Skuid{skuNum}");
                goodsSkuInfo.SkuName          = Request.Get <string>($"SkuName{skuNum}");
                goodsSkuInfo.SkuOriginalPrice = Request.Get <decimal>($"SkuOriginalPrice{skuNum}");
                goodsSkuInfo.SkuMaketPrice    = Request.Get <decimal>($"SkuMaketPrice{skuNum}");
                goodsSkuInfo.SkuFactoryPrice  = Request.Get <decimal>($"SkuFactoryPrice{skuNum}");
                goodsSkuInfo.SkuVipPrice      = Request.Get <decimal>($"SkuVipPrice{skuNum}");
                goodsSkuInfo.Stock            = Request.Get <int>($"Stock{skuNum}");
                goodsSkuInfo.IsDefault        = Request.Get <bool>($"IsDefault{skuNum}");
                goodsSkuInfo.Number           = Request.Get <int>($"Number{skuNum}");
                goodsSkuInfo.Status           = goodsSkuInfo.Status = (int)GoodsSkuInfoStatus.Show;
                goodsSkuInfo.SkuImage         = Request.Get <string>($"SkuImage{skuNum}");
                goodsSkuInfo.Goodsid          = goodsId;

                if (string.IsNullOrWhiteSpace(goodsSkuInfo.SkuImage))
                {
                    if (skufiles.Count > 0)
                    {
                        IFormFile file = skufiles[imgIndex - index];
                        goodsSkuInfo.SkuImage = await Utility.SaveImage(env, file, Request, saveSuffix);
                    }
                }
                else
                {
                    imgIndex++;
                }

                if (goodsSkuInfo.IsDefault)
                {
                    info.GoodsPrice     = goodsSkuInfo.SkuMaketPrice;
                    info.GoodsRealPrice = goodsSkuInfo.SkuFactoryPrice;
                    info.ImageUrl       = goodsSkuInfo.SkuImage;
                }
                skuModels.Add(goodsSkuInfo);
                index++;
            }
            if (goodsInfoService.SetGoodsSkuInfo(info, skuModels, UserContext.CurrentUser.UserId))
            {
                return(Json(new StatusMessageData(StatusMessageType.Success, "发布成功")));
            }
            return(Json(new StatusMessageData(StatusMessageType.Error, "设置失败")));
        }
        public async Task <IActionResult> AddGoods([FromServices] IHostingEnvironment env, GoodsInfoModel model, IList <IFormFile> imgfiles, IList <IFormFile> skufiles)
        {
            const string fileFilt   = ".gif|.jpg|.jpeg|.png|.webp|";
            const string saveSuffix = ".jpeg";

            foreach (var file in Request.Form.Files)
            {
                var fileExtension = Path.GetExtension(file.FileName);
                if (fileExtension == null)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件没有后缀")));
                }
                if (fileFilt.IndexOf(fileExtension.ToLower(), StringComparison.Ordinal) <= -1)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件不是图片")));
                }
                if (file.Length > 1024 * 1024 * 2)
                {
                    return(Json(new StatusMessageData(StatusMessageType.Error, "上传的文件不能大于2M")));
                }
            }

            var skuArr = Request.Get <string>("SkuArr");

            string[] skuNumArr = skuArr.Split(',');

            GoodsInfo infoModel = model.AsGoodsInfo();

            infoModel.Status      = (int)GoodsInfoStatus.Shelves;
            infoModel.IsEnable    = false;
            infoModel.DateCreated = DateTime.Now;
            infoModel.Userid      = UserContext.CurrentUser.UserId;

            List <GoodsSkuInfo>         skuModels = new List <GoodsSkuInfo>();
            List <GoodsInRotationImage> imgModels = new List <GoodsInRotationImage>();

            var index = 0;

            foreach (var skuNum in skuNumArr)
            {
                GoodsSkuInfo goodsSkuInfo = new GoodsSkuInfo();
                goodsSkuInfo.SkuName          = Request.Get <string>($"SkuName{skuNum}");
                goodsSkuInfo.SkuOriginalPrice = Request.Get <string>($"SkuOriginalPrice{skuNum}").AsDecimal();
                goodsSkuInfo.SkuMaketPrice    = Request.Get <decimal>($"SkuMaketPrice{skuNum}");
                goodsSkuInfo.SkuFactoryPrice  = Request.Get <decimal>($"SkuFactoryPrice{skuNum}");
                goodsSkuInfo.SkuVipPrice      = Request.Get <string>($"SkuVipPrice{skuNum}").AsDecimal();
                goodsSkuInfo.Stock            = Request.Get <string>($"Stock{skuNum}").AsInt();
                goodsSkuInfo.Number           = Request.Get <int>($"Number{skuNum}");
                goodsSkuInfo.IsDefault        = Request.Get <bool>($"IsDefault{skuNum}");
                goodsSkuInfo.Status           = (int)GoodsSkuInfoStatus.Show;
                IFormFile file = skufiles[index];
                goodsSkuInfo.SkuImage = await Utility.SaveImage(env, file, Request, saveSuffix);

                if (index == 0)
                {
                    infoModel.GoodsPrice     = goodsSkuInfo.SkuMaketPrice;
                    infoModel.GoodsRealPrice = goodsSkuInfo.SkuFactoryPrice;
                }

                skuModels.Add(goodsSkuInfo);
                index++;
            }


            foreach (var img in imgfiles)
            {
                GoodsInRotationImage imgModel = new GoodsInRotationImage();
                var       imgIndex            = imgfiles.IndexOf(img);
                IFormFile file = imgfiles[imgIndex];
                imgModel.Number             = imgIndex + 1;
                imgModel.GoodsRotationImage = await Utility.SaveImage(env, file, Request, saveSuffix);

                if (imgIndex == 0)
                {
                    infoModel.ImageUrl = imgModel.GoodsRotationImage;
                }
                imgModels.Add(imgModel);
            }
            var detailsImg = Request.Get <string>("goodsDetailsImg");

            string[] detailsImgArr = detailsImg.Split(',');

            if (goodsInfoService.ReleaseGoods(infoModel, skuModels, imgModels, detailsImgArr, UserContext.CurrentUser.UserId))
            {
                return(Json(new StatusMessageData(StatusMessageType.Success, "发布成功")));
            }
            return(Json(new StatusMessageData(StatusMessageType.Error, "发布失败")));
        }