public static bool SaveLimitAreaSalePid(string pid, int isLimit, string user) { var bResult = true; try { var beforvalue = DalLimitAreaSale.GetLimitAreaSaleProductConfigLimit(pid); var result1 = DalLimitAreaSale.SaveLimitAreaSalePid(pid, isLimit); if (result1 <= 0) { return(false); } var oprLog = new FlashSaleProductOprLog { OperateUser = ThreadIdentity.Operator.Name, CreateDateTime = DateTime.Now, BeforeValue = beforvalue == null?JsonConvert.SerializeObject(null) : JsonConvert.SerializeObject(new SimpleLimitAreaSaleModel() { Pid = pid, IsLimit = beforvalue.Value, }), AfterValue = JsonConvert.SerializeObject(new SimpleLimitAreaSaleModel() { Pid = pid, IsLimit = isLimit, }), LogType = "LimitAreaPid", LogId = pid, Operation = beforvalue == null? "新增产品限售": "修改产品限售" }; LoggerManager.InsertLog("LimitAreaOprLog", oprLog); var tableData = SelectLimitAreaSaleCityInfo(); if (!tableData.Any()) { var municipalit = new[] { "上海市", "北京市", "天津市", "重庆市" }; var dbresult = LimitAreaSaleManager.SelectRegions(); var result = new List <LimitAreaSaleCityModel>(); foreach (var province in dbresult) { if (municipalit.Contains(province.RegionName)) { var regionModel = new LimitAreaSaleCityModel() { ProvinceId = province.PKID, ProvinceName = province.RegionName, CityId = province.PKID, CityName = province.RegionName }; result.Add(regionModel); } else { foreach (var city in province.ChildrenRegion) { var regionModel = new LimitAreaSaleCityModel() { ProvinceId = province.PKID, ProvinceName = province.RegionName, CityId = city.PKID, CityName = city.RegionName }; result.Add(regionModel); } } } var tempdata = (from a in result join b in tableData on a.CityId equals b.CityId into temp from b in temp.DefaultIfEmpty() select new LimitAreaSaleCityModel { ProductConfigId = 0, ProvinceId = a.ProvinceId, ProvinceName = a.ProvinceName, CityId = a.CityId, CityName = a.CityName, IsAllowSale = b?.IsAllowSale ?? 0, WarehouseId = b?.WarehouseId, WarehouseName = b?.WarehouseName, SupplierId = b?.SupplierId, SupplierName = b?.SupplierName, Pid = pid, }).ToList(); tempdata.ForEach(r => { bResult = bResult && SaveLimitAreaSaleCity(r.ProductConfigId, r.CityId, r.CityName, r.IsAllowSale, r.WarehouseId, r.WarehouseName, r.SupplierId, r.SupplierName); }); } } catch (Exception ex) { logger.Error(ex.Message, ex); } return(bResult); }