public ActionResult Save(string strmodel, string products, string originProducts) { try { if (strmodel == null) { return(Json(new { Status = 0, Message = "保存失败【活动内容为空】" })); } var model1 = JsonConvert.DeserializeObject <QiangGouModel>(strmodel); if (model1.StrStatus == "已驳回") { if (SeckillManager.SelectQiangGouIsExist(model1.ActivityID.ToString()) == 0) { var delResult = SeckillManager.DeleteFirstCreateActivityApproveBack(model1.ActivityID.ToString()); if (delResult == -1) { return(Json(new { Status = 0, Message = "保存失败【请重试】" })); } model1.ActivityID = null; } } var model = new QiangGouModel(); if (model1.IsDefault) { switch (model1.ActivityName) { case "0点场": model.StartDateTime = Convert.ToDateTime(DateTime.Now.ToString("2018-04-26 00:00:00")); model.EndDateTime = Convert.ToDateTime(DateTime.Now.ToString("2019-04-26 10:00:00")); break; case "10点场": model.StartDateTime = Convert.ToDateTime(DateTime.Now.ToString("2018-04-26 10:00:00")); model.EndDateTime = Convert.ToDateTime(DateTime.Now.ToString("2019-04-26 13:00:00")); break; case "13点场": model.StartDateTime = Convert.ToDateTime(DateTime.Now.ToString("2018-04-26 13:00:00")); model.EndDateTime = Convert.ToDateTime(DateTime.Now.ToString("2019-04-26 16:00:00")); break; case "16点场": model.StartDateTime = Convert.ToDateTime(DateTime.Now.ToString("2018-04-26 16:00:00")); model.EndDateTime = Convert.ToDateTime(DateTime.Now.ToString("2019-04-26 20:00:00")); break; case "20点场": model.StartDateTime = Convert.ToDateTime(DateTime.Now.ToString("2018-04-26 20:00:00")); model.EndDateTime = Convert.ToDateTime(DateTime.Now.ToString("2019-04-26 23:59:59")); break; } model.IsDefault = model1.IsDefault; model.ActivityID = model1.ActivityID; model.ActiveType = 1; model.ActivityName = $"默认配置:{model1.ActivityName}"; model.NeedExam = model1.NeedExam; } else { switch (model1.ActivityName) { case "0点场": model.StartDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 00:00:00")); model.EndDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 10:00:00")); break; case "10点场": model.StartDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 10:00:00")); model.EndDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 13:00:00")); break; case "13点场": model.StartDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 13:00:00")); model.EndDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 16:00:00")); break; case "16点场": model.StartDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 16:00:00")); model.EndDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 20:00:00")); break; case "20点场": model.StartDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 20:00:00")); model.EndDateTime = Convert.ToDateTime(Convert.ToDateTime(model1.ShortDate).ToString("yyyy-MM-dd 23:59:59")); break; } model.IsDefault = model1.IsDefault; model.ActivityID = model1.ActivityID; model.ActiveType = 1; model.ActivityName = $"{model1.ShortDate}:{model1.ActivityName}"; model.NeedExam = model1.NeedExam; } var isUpdate = model.ActivityID != null; var originModels = new List <QiangGouProductModel>(); if (originProducts != "[]" && !string.IsNullOrWhiteSpace(originProducts)) { originModels = JsonConvert.DeserializeObject <List <QiangGouProductModel> >(originProducts); } model.Products = JsonConvert.DeserializeObject <List <QiangGouProductModel> >(products); List <QiangGouDiffModel> qiangGouDiff = new List <QiangGouDiffModel>(); if (!model.Products.Any()) { return(Json(new { Status = 0, Message = "保存失败【活动无产品】" })); } var result = QiangGouManager.Save(model, qiangGouDiff); if (result.Item1 == -1) { return(Json(new { Status = 0, Message = "保存失败【闪购活动时间不允许重叠】" })); } if (result.Item1 == -3) { return(Json(new { Status = 0, Message = "刷新缓存失败【请手动刷新】" })); } else if (result.Item1 > 0) { if (model.NeedExam) { var approveResult = SeckillManager.UpdateSeckillToToApprove(result.Item2.ToString()); { if (approveResult <= 0) { return(Json(new { Status = 0, Message = "保存失败重试" })); } } } if (!isUpdate) { SeckillManager.OpertionLogs(SeckillManager.OpertionType.Add, model.Products.Count().ToString(), "", result.Item2.ToString()); } else { var logdata = CompareModifyData(originModels, model.Products.ToList()); foreach (var log in logdata) { if (log.Key == SeckillManager.OpertionType.EditEdit) { var count = log.Value.Length; //先拆成两段来存储,如果后面出现还存不下的想办法多条存储 SeckillManager.OpertionLogs(log.Key, log.Value.Substring(0, count / 2), log.Value.Substring(count / 2), result.Item2.ToString()); } else { SeckillManager.OpertionLogs(log.Key, log.Value, "", result.Item2.ToString()); } } } var request = new ActivityTypeRequest() { ActivityId = model.ActivityID.Value, StartDateTime = model.StartDateTime, EndDateTime = model.EndDateTime, Status = 1, Type = 1 }; var activityTypeResult = QiangGouManager.RecordActivityType(request); if (!activityTypeResult) { return(Json(new { Status = 0, Message = "保存失败重试" })); } if (model.ActivityID != null && !model.NeedExam) { var cache = QiangGouManager.ReflashQiangGouCache(model.ActivityID.Value, false, model.ActiveType); if (cache == false) { return(Json(new { Status = 0, Message = "刷新缓存失败【请手动刷新】" })); } } return(Json(new { Status = 1, Message = "保存成功" })); } return(Json(new { Status = 0, Message = "保存失败【未知错误】" })); } catch (Exception e) { return(Json(new { Status = 0, Message = e.Message + e.InnerException + e.StackTrace })); } }
public ActionResult Save(QiangGouModel model, string Products, string QiangGouDiff) { try { if (model == null) { return(Json(new { Status = 0, Message = "保存失败【活动内容为空】" })); } var cacheGetFlag = GetOperateFlagCache(); if (cacheGetFlag) { return(Json(new { Status = 0, Message = "现在有人正在操作请稍等下。。。。" })); } var cacheSetStartFlag = SetOperateFlagStartCache(); if (!cacheSetStartFlag) { return(Json(new { Status = 0, Message = "服务器异常,请再点击保存" })); } var isUpdate = model.ActivityID != null; var origin = new QiangGouModel(); if (isUpdate) { origin = QiangGouManager.FetchQiangGouAndProducts(model.ActivityID.Value); } model.Products = JsonConvert.DeserializeObject <List <QiangGouProductModel> >(Products); List <QiangGouDiffModel> qiangGouDiff = new List <QiangGouDiffModel>(); if (QiangGouDiff != null) { qiangGouDiff = JsonConvert.DeserializeObject <List <QiangGouDiffModel> >(QiangGouDiff); } if (!model.Products.Any()) { return(Json(new { Status = 0, Message = "保存失败【活动无产品】" })); } var result = QiangGouManager.Save(model, qiangGouDiff); if (result.Item1 == -1) { return(Json(new { Status = 0, Message = "保存失败【闪购活动时间不允许重叠】" })); } if (result.Item1 == -3) { return(Json(new { Status = 0, Message = "刷新缓存失败【请手动刷新】" })); } else if (result.Item1 > 0) { QiangGouModel after; if (model.ActivityID != null && !model.NeedExam) { after = QiangGouManager.FetchQiangGouAndProducts(model.ActivityID.Value); } else { after = QiangGouManager.FetchQiangGouAndProductsTemp(model.ActivityID.Value); } var request = new ActivityTypeRequest() { ActivityId = model.ActivityID.Value, StartDateTime = model.StartDateTime, EndDateTime = model.EndDateTime, Status = 1, Type = 1 }; var activityTypeResult = QiangGouManager.RecordActivityType(request); if (!activityTypeResult) { return(Json(new { Status = 0, Message = "保存失败重试" })); } if (isUpdate) { var chandata = LogChangeDataManager.GetLogChangeData(origin, after); var beforeValue = QiangGouManager.GenerateSimpleQiangGouModel(chandata.Item1); var afterValue = QiangGouManager.GenerateSimpleQiangGouModel(chandata.Item2); var oprLog = new FlashSaleProductOprLog { OperateUser = ThreadIdentity.Operator.Name, CreateDateTime = DateTime.Now, BeforeValue = JsonConvert.SerializeObject(beforeValue), AfterValue = JsonConvert.SerializeObject(afterValue), LogType = "FlashSaleLog", LogId = result.Item2.ToString(), Operation = model.NeedExam ? "修改活动到待审核" : "修改活动" }; LoggerManager.InsertLog("FlashSaleOprLog", oprLog); LoggerManager.InsertFlashSaleLog(chandata.Item1, beforeValue.HashKey); LoggerManager.InsertFlashSaleLog(chandata.Item2, afterValue.HashKey); } else { var afterValue = QiangGouManager.GenerateSimpleQiangGouModel(after); var oprLog = new FlashSaleProductOprLog { OperateUser = ThreadIdentity.Operator.Name, CreateDateTime = DateTime.Now, BeforeValue = JsonConvert.SerializeObject(Json(new { actvityid = result.Item2.ToString() })), AfterValue = JsonConvert.SerializeObject(afterValue), LogType = "FlashSaleLog", LogId = result.Item2.ToString(), Operation = model.NeedExam ? "新建活动到待审核" : "新建活动" }; LoggerManager.InsertLog("FlashSaleOprLog", oprLog); LoggerManager.InsertFlashSaleLog(after, afterValue.HashKey); } if (model.ActivityID != null && !model.NeedExam) { var cache = UpdateToCache(model.ActivityID.Value, false, model.ActiveType); if (cache == false) { return(Json(new { Status = 0, Message = "刷新缓存失败【请手动刷新】" })); } } return(Json(new { Status = 1, Message = "保存成功" })); } return(Json(new { Status = 0, Message = "保存失败【未知错误】" })); } catch (Exception e) { return(Json(new { Status = 0, Message = e.Message + e.InnerException + e.StackTrace })); } finally { SetOperateFlagEndCache(); } }