商品批量更新折扣

开发工具与关键技术:Visual Studio 2015
作者:徐晶旗
撰写时间:2019年8月17日

在做商品管理这一模块的时候遇到了商品批量操作,比如批量导入商品信息,批量更新折扣,批量上架下架,批量特价商品,今天我就来做一下批量更新折扣这一操作。批量更新折扣顾名思义也就是修改原先的商品折扣,比如原先这一批商品不打折,按吊牌价销售,或者之前这批商品是在吊牌价的基础上打九折,然后现在要更新这些商品的折扣,更新的折扣为八折,这些商品就要按吊牌价的八折进行销售,这就是批量更新折扣了,也就是修改折扣。

商品数据更新到es_商品数据更新到es

现在就来做一下这个批量更新折扣吧?
首先我要写出一个模态框来,模态框中显示要更新的内容。“openModal1();”是获取到模态框中的内容,然后点击批量更新折扣就会弹出这个模态框。

<a class="dropdown-item" href="#" onclick="openModal1;()">
<img src="~/Content/img/st.png" /> 
<b style="font-size:12px;">批量更新折扣</b>
</a>

至于模态框的具体内容在这里就没有写,给大家看一下模态框内容的图片吧!下面就是在页面中弹出的模态框的图片。

商品数据更新到es_批量更新_02


然后下面就要写方法了,先给要在模态框输入的内容赋值,因为这里的下拉框选项中都默认给了第一个值,所以可以不进行选择,如果没有输入折扣的话,或者输入的折扣不在变量“Discounts”的范围内,就会提示请输入折扣,如果输入的折扣大于1或者等于0,就会提示折扣超出限定范围,请重新输入,这样就避免了不合理的折扣出现。

/*************批量更新折扣***************/

        function BatchDiscount() {
           var CommodityTypeID = $("#CommodityTypeID1").val();//商品类别
           var BrandID = $("#brand2").val();//品牌
           var SeasonID = $("#season2").val();//季节
           var Discount = $("#Discount1").val();//折扣          
           var Discounts = /^([0-1]{1}\.[0-9]{1,2})$/ //用正则表达式给限定的字符范围赋值,如果输入的内容不再这些字符范围内,就读取不到数据
           if (!Discounts.test(Discount)) {
                layer.msg("请输入折扣!", { icon: 0, title: '三易通', anim: 1 });
                return;
            }
           if (Discount > 1 || Discount == 0) {
                layer.msg("折扣超出限定范围,请重新输入!", { icon: 0, title: '三易通', offset: "200px;" });
                $("#Discount1").val("1.00");
                return;
            }
           layerIndex = layer.load();

下面是用键值对的格式请求控制其中的方法

$.post("BatchDiscount", { CommodityTypeID: CommodityTypeID, BrandID: BrandID, SeasonID: SeasonID, Discount: Discount }, function (strMsg) {
                    layer.close(layerIndex);
                    $("#BatchDiscount").modal('hide');
                    layer.alert(strMsg, { icon: 0, title: '三易通', anim: 1 });
                    TabTitles.reload();//表格刷新
                }, 'json');
        }

控制器中的代码如下:

public ActionResult BatchDiscount(int CommodityTypeID, int BrandID, int SeasonID, string Discount)
        {
            string strMsg = "failed";
            int countSuccessDel = 0;//记录删除成功的条数
            int countFailedDel = 0;//记录删除失败的条数
            try
            {
                List<CommodityTo> dbCommodity = (from tbCommodity in myModels.B_Commodity//商品ID表
                                              select new CommodityTo
                                              {
                                                  CommodityID = tbCommodity.CommodityID,//商品ID
                                                  CommodityTypeID = tbCommodity.CommodityTypeID,//类别ID
                                                  BrandID = tbCommodity.BrandID,//品牌ID
                                                  SeasonID = tbCommodity.SeasonID,//季节ID
                                              }).ToList();
                 //根据条件进行筛选数据                             
                if (CommodityTypeID > 0)//类别ID
                {
                    dbCommodity = dbCommodity.Where(S => S.CommodityTypeID == CommodityTypeID).ToList();
                }
                if (BrandID > 0)//品牌ID
                {
                    dbCommodity = dbCommodity.Where(S => S.BrandID == BrandID).ToList();
                }
                if (SeasonID > 0)//季节ID
                {
                    dbCommodity = dbCommodity.Where(S => S.SeasonID == SeasonID).ToList();
                }
                if (dbCommodity.Count() != 0)
                {
                    for (int i = 0; i < dbCommodity.Count; i++)
                    {
                        int? CommodityID = dbCommodity[i].CommodityID;
                        B_Commodity pwCommodit = (from tbCommodity in myModels.B_Commodity
                                                   where tbCommodity.CommodityID == CommodityID
                                                   select tbCommodity).Single();
                        pwCommodit.Discount = Convert.ToDecimal(Discount);
                        myModels.Entry(pwCommodit).State = EntityState.Modified;
                        if (myModels.SaveChanges() > 0)
                        {
                            countSuccessDel++;
                        }
                        else
                        {
                            countFailedDel++;
                        }
                    }

                    strMsg = "总共需要修改" + dbCommodity.Count() + "条商品信息!其中成功修改" + countSuccessDel + "条,失败" + countFailedDel + "条。";
                }
                else
                {
                    strMsg = "没有匹配的数据!";
                }

            }
            catch (Exception e)
            {
                Console.Write(e);
                strMsg = "参数异常!";
            }


            return Json(strMsg, JsonRequestBehavior.AllowGet);
        }

写好了控制器中的方法就可以进行更新折扣了,如果输入的内容有对应的商品,就会提示总共要修改多少条商品,如果没有,就会提示没有匹配的商品。

商品数据更新到es_商品数据更新到es_03