示例#1
0
        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);
                        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();
            }
        }
示例#2
0
        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 }));
            }
        }