private bool validQuantityPeruser(PackageActivityConfig newData, PackageActivityConfig oldData) { var result = false; if (oldData == null || oldData.ActivityId == Guid.Empty) { result = true; } else { if (newData.StartTime < DateTime.Now) { if (newData.ItemQuantityPerUser >= oldData.ItemQuantityPerUser) { result = true; } } else { result = true; } } return(result); }
public PackageActivityConfig SelectPackageActivityConfig(Guid activityId) { PackageActivityConfig result = new PackageActivityConfig(); try { dbReadScopeManager.Execute(conn => { result = DALPackageActivity.SelectPackageActivity(conn, activityId, "", null, null, 1, 99).FirstOrDefault(); if (result != null && result.ActivityId != Guid.Empty) { result.ShopConfig = DALPackageActivity.SelectPackageActivityShopConfig(conn, activityId); result.RoundConfig = DALPackageActivity.SelectPackageActivitySceneConfig(conn, activityId); result.ProductConfig = DALPackageActivity.SelectPackageActivityProductConfig(conn, activityId); result.VehicleConfig = DALPackageActivity.SelectPackageActivityVehicleConfig(conn, activityId); result.PriceConfig = DALPackageActivity.SelectPackageActivityPriceConfig(conn, activityId); } }); } catch (Exception ex) { logger.Error(ex); } return(result); }
private PackageActivityConfig ConvertOther(PackageActivityConfig model) { model.MaxSaleQuantity = model.RoundConfig.Select(x => x.LimitedQuantity).Sum(); model.StartTime = model.RoundConfig.Select(x => x.StartTime).Min(); model.EndTime = model.RoundConfig.Select(x => x.EndTime).Max(); if (model.ShopConfig != null && model.ShopConfig.Any()) { model.ShopConfig = model.ShopConfig.Distinct(new ListDistinctForShopConfig()).ToList(); } if (model.ProductConfig != null && model.ProductConfig.Any()) { model.ProductConfig = model.ProductConfig.Distinct(new ListDistinctForProductConfig()).ToList(); } return(model); }
private PackageActivityViewModel ConvertPackageActivity(PackageActivityConfig data) { PackageActivityViewModel result = new PackageActivityViewModel(); if (data != null) { result = new PackageActivityViewModel { ActivityId = data.ActivityId, ActivityName = data.ActivityName, StartTime = data.StartTime, EndTime = data.EndTime, MaxSaleQuantity = data.MaxSaleQuantity, PackageTypes = data.PackageTypes, IsChargeInstallFee = data.IsChargeInstallFee, IsUsePromotion = data.IsUsePromotion, InstallOrPayType = data.InstallOrPayType, ItemQuantityPerUser = data.ItemQuantityPerUser, PromotionPrice = data.PromotionPrice, TipTextColor = data.TipTextColor, ButtonBackgroundColor = data.ButtonBackgroundColor, ButtonTextColor = data.ButtonTextColor, BackgroundImg = data.BackgroundImg, OngoingButtonText = data.OngoingButtonText }; result.ShopConfig = ConvertPackageActivityShopConfig(data.ShopConfig); result.RoundConfig = ConvertPackageActivityRoundConfig(data.RoundConfig); result.ProductConfigDetails = ConvertPackageActivityProductConfig(data.ProductConfig); result.VehicleConfig = data.VehicleConfig.Select(x => new VehicleConfig { Vehicle = x.Vehicle, AvgPrice = x.AvgPrice, Brand = x.Brand, VehicleID = x.VehicleID, }).ToList(); var array = Enum.GetNames(typeof(TierType)); result.IsTieredPricing = data.PriceConfig != null && data.PriceConfig.Any(); result.PriceConfig = array.ToDictionary(tier => tier, tier => { var priceItem = data.PriceConfig?.FirstOrDefault(x => x.TierType == tier); return((priceItem != null && priceItem.Price != null && priceItem.Price > 0) ? priceItem.Price.Value.ToString("f2") : "/"); }); } return(result); }
public static bool UpdatePackageActivityConfig(SqlConnection conn, PackageActivityConfig data, string user) { const string sql = @"UPDATE BaoYang..PackageActivityConfig SET ActivityName = @ActivityName , StartTime = @StartTime , EndTime = @EndTime , MaxSaleQuantity = @MaxSaleQuantity , PackageTypes = @PackageTypes , IsChargeInstallFee = @IsChargeInstallFee , IsUsePromotion = @IsUsePromotion , InstallOrPayType = @InstallOrPayType , ItemQuantityPerUser = @ItemQuantityPerUser , PromotionPrice = @PromotionPrice , TipTextColor = @TipTextColor , ButtonBackgroundColor = @ButtonBackgroundColor , ButtonTextColor = @ButtonTextColor , BackgroundImg = @BackgroundImg , OngoingButtonText = @OngoingButtonText , LastUpdateDateTime = GETDATE() , UpdateUser = @UpdateUser WHERE ActivityId = @ActivityId; "; return(conn.Execute(sql, new { ActivityId = data.ActivityId, ActivityName = data.ActivityName, StartTime = data.StartTime, EndTime = data.EndTime, MaxSaleQuantity = data.MaxSaleQuantity, PackageTypes = data.PackageTypes, IsChargeInstallFee = data.IsChargeInstallFee, IsUsePromotion = data.IsUsePromotion, InstallOrPayType = data.InstallOrPayType, ItemQuantityPerUser = data.ItemQuantityPerUser, PromotionPrice = data.PromotionPrice.ToString("f2"), TipTextColor = data.TipTextColor, ButtonBackgroundColor = data.ButtonBackgroundColor, ButtonTextColor = data.ButtonTextColor, BackgroundImg = data.BackgroundImg, OngoingButtonText = data.OngoingButtonText, UpdateUser = user, }, commandType: CommandType.Text) > 0); }
public JsonResult UpsertPaceageActivityConfig(string jsonData) { PackageActivityManager manager = new PackageActivityManager(); var result = false; string msg = "数据格式有误"; var flagTwo = true; PackageActivityConfig oldData = null; if (!string.IsNullOrEmpty(jsonData)) { var model = JsonConvert.DeserializeObject <PackageActivityConfig>(jsonData); if (model != null) { if (model.IsTieredPricing) { var tierList = Enum.GetNames(typeof(TierType)); model.PromotionPrice = 0; model.PriceConfig = model.PriceConfig?.Join( tierList, x => x.TierType, y => y, (x, y) => new PackageActivityPriceConfig { TierType = y, Price = x.Price, }).GroupBy(x => x.TierType) .Select(g => g.FirstOrDefault()).ToList() ?? new List <PackageActivityPriceConfig>(); if (model.PriceConfig.Count != tierList.Length || model.PriceConfig.Select(x => x.TierType).Distinct().Count() != tierList.Length) { return(Json(new { status = false, msg = "分层定价填写有误" })); } } else { model.PriceConfig = new List <PackageActivityPriceConfig>(); } if (model.ActivityId != Guid.Empty) { oldData = manager.SelectPackageActivityConfig(model.ActivityId); } var flag = ValidRoundConfig(model.RoundConfig, oldData); if (flag.Item1) { model = ConvertOther(model); if (model.PackageTypes.Contains("xby") && model.PackageTypes.Contains("dby")) { msg = "小保养服务和大保养服务不能同时勾选"; } else { flagTwo = validQuantityPeruser(model, oldData); if (flagTwo) { result = manager.UpsertPaceageActivityConfig(model, HttpContext.User.Identity.Name); } else { msg = "活动进行中时,每人每个项目限购数量只能调整的更大,而不能调小"; } } } else { msg = flag.Item2; } } } return(Json(new { status = result, msg = msg }, JsonRequestBehavior.AllowGet)); }
private Tuple <bool, string> ValidRoundConfig(List <PackageActivityRoundConfig> data, PackageActivityConfig oldData) { var result = true; string msg = ""; DateTime startTime = DateTime.MinValue; if (data != null && data.Any()) { foreach (var item in data) { if (item.EndTime < item.StartTime) { result = false; } else { if (startTime != DateTime.MinValue && startTime != item.StartTime) { result = false; } } if (!result) { msg = "场次配置时间验证未通过"; break; } startTime = item.EndTime.AddSeconds(+1); } if (result && oldData != null && oldData.ActivityId != Guid.Empty) { foreach (var item in oldData.RoundConfig) { var newData = data.Where(x => String.Equals(x.PKID, item.PKID) && x.PKID > 0).FirstOrDefault(); if (newData != null && newData.PKID > 0) { if (newData.StartTime < DateTime.Now) { if (newData.LimitedQuantity < item.LimitedQuantity) { result = false; } } } if (!result) { msg = "正在进行中的场次限购数量不允许调低"; break; } } } } return(Tuple.Create(result, msg)); }
public bool UpsertPaceageActivityConfig(PackageActivityConfig data, string user) { var result = false; string msg = ""; try { dbScopeManager.CreateTransaction(conn => { var flag = false; if (data.ActivityId != Guid.Empty) { msg = "更新活动配置"; flag = DALPackageActivity.UpdatePackageActivityConfig(conn, data, user); } else { msg = "添加活动配置"; data.ActivityId = Guid.NewGuid(); flag = DALPackageActivity.InsertPackageActivityConfig(conn, data, user); } if (flag) { DALPackageActivity.DeletePackageActivitySceneConfig(conn, data.ActivityId); DALPackageActivity.DeletePackageActivityShopConfig(conn, data.ActivityId); DALPackageActivity.DeletePackageActivityProductConfig(conn, data.ActivityId); DALPackageActivity.DeletePackageActivityVehicleConfig(conn, data.ActivityId); DALPackageActivity.DeletePackageActivityPriceConfig(conn, data.ActivityId); if (data.RoundConfig != null && data.RoundConfig.Any()) { foreach (var item in data.RoundConfig) { item.ActivityId = data.ActivityId; DALPackageActivity.InsertPackageActivitySceneConfig(conn, item); } } if (data.ProductConfig != null && data.ProductConfig.Any()) { foreach (var item in data.ProductConfig) { item.ActivityId = data.ActivityId; DALPackageActivity.InsertPackageActivityProductConfig(conn, item); } } if (data.ShopConfig != null && data.ShopConfig.Any()) { foreach (var item in data.ShopConfig) { item.ActivityId = data.ActivityId; DALPackageActivity.InsertPackageActivityShopConfig(conn, item); } } if (data.VehicleConfig != null && data.VehicleConfig.Any()) { var vehicleIds = data.VehicleConfig.Select(x => x.VehicleID).Distinct(); foreach (var vehicleId in vehicleIds) { DALPackageActivity.InsertPackageActivityVehicleConfig(conn, data.ActivityId, vehicleId); } } if (data.PriceConfig != null && data.PriceConfig.Any()) { var priceConfigs = data.PriceConfig; foreach (var priceConfig in priceConfigs) { DALPackageActivity.InsertPackageActivityPriceConfig(conn, data.ActivityId, priceConfig); } } result = true; } }); } catch (Exception ex) { logger.Error(ex); } if (result) { data.ProductConfig = new List <PackageActivityProductConfig>(); data.RoundConfig = new List <PackageActivityRoundConfig>(); data.VehicleConfig = new List <PackageActivityVehicleConfig>(); RecordActivityTypeLog(data.ActivityId, data.StartTime, data.EndTime); InsertLog("UpsertPaceageActivityConfig", data.ActivityId.ToString(), JsonConvert.SerializeObject(data), msg, user, LogType); Thread.Sleep(2000); RefreshPackageBaoYangCache(data.ActivityId); } return(result); }
public static bool InsertPackageActivityConfig(SqlConnection conn, PackageActivityConfig data, string user) { const string sql = @"INSERT INTO BaoYang..PackageActivityConfig ( ActivityId , ActivityName , StartTime , EndTime , MaxSaleQuantity , PackageTypes , IsChargeInstallFee , IsUsePromotion , InstallOrPayType , ItemQuantityPerUser , PromotionPrice , TipTextColor , ButtonBackgroundColor , ButtonTextColor , BackgroundImg , OngoingButtonText , CreateDateTime , CreateUser , LastUpdateDateTime ) VALUES ( @ActivityId , @ActivityName , @StartTime , @EndTime , @MaxSaleQuantity , @PackageTypes , @IsChargeInstallFee , @IsUsePromotion , @InstallOrPayType , @ItemQuantityPerUser , @PromotionPrice , @TipTextColor , @ButtonBackgroundColor , @ButtonTextColor , @BackgroundImg , @OngoingButtonText , GETDATE() , @CreateUser , GETDATE() );"; return(conn.Execute(sql, new { ActivityId = data.ActivityId, ActivityName = data.ActivityName, StartTime = data.StartTime, EndTime = data.EndTime, MaxSaleQuantity = data.MaxSaleQuantity, PackageTypes = data.PackageTypes, IsChargeInstallFee = data.IsChargeInstallFee, IsUsePromotion = data.IsUsePromotion, InstallOrPayType = data.InstallOrPayType, ItemQuantityPerUser = data.ItemQuantityPerUser, PromotionPrice = data.PromotionPrice.ToString("f2"), TipTextColor = data.TipTextColor, ButtonBackgroundColor = data.ButtonBackgroundColor, ButtonTextColor = data.ButtonTextColor, BackgroundImg = data.BackgroundImg, OngoingButtonText = data.OngoingButtonText, CreateUser = user, }, commandType: CommandType.Text) > 0); }