Ejemplo n.º 1
0
        /// <summary>
        /// 插入或更新银行美容活动配置
        /// </summary>
        /// <param name="config">插入活动配置</param>
        /// <param name="adConfig">广告位配置</param>
        /// <param name="operateUser">操作人</param>
        /// <returns></returns>
        public bool UpsertBankMRActivityConfig(BankMRActivityConfig config, IEnumerable <BankMRActivityAdConfig> adConfig, string operateUser)
        {
            var result = false;

            try
            {
                TuhuGrouponDbScopeManager.CreateTransaction(conn =>
                {
                    if (config.ActivityId != null && config.ActivityId != Guid.Empty)
                    {
                        var currentActivity = GetBankMRActivityConfigByActivityId(config.ActivityId);
                        if (!string.Equals(currentActivity.RoundCycleType, config.RoundCycleType) ||
                            currentActivity.StartTime != config.StartTime || currentActivity.EndTime != config.EndTime)//如果活动场次周期类型变了,则需要重新生成活动场次
                        {
                            BankMRActivityDal.SetBankMRActivityRoundDisable(conn, config.ActivityId);
                            var roundResult = handler.GenerateBankMRActivityRound(conn, config);
                            if (!roundResult)
                            {
                                throw new Exception("生成银行美容活动场次失败");
                            }
                        }
                        var updateResult = BankMRActivityDal.UpdateBankMRActivityConfig(conn, config);

                        if (!updateResult)
                        {
                            throw new Exception("更新银行美容活动配置失败");
                        }
                        var log = new BeautyOprLog
                        {
                            LogType     = "UpdateBankMRActivityConfig",
                            IdentityID  = config.ActivityId.ToString(),
                            OldValue    = JsonConvert.SerializeObject(currentActivity),
                            NewValue    = JsonConvert.SerializeObject(config),
                            Remarks     = $"修改银行美容活动配置,活动ID:{config.ActivityId}",
                            OperateUser = operateUser,
                        };
                        LoggerManager.InsertLog("BeautyOprLog", log);
                    }
                    else
                    {
                        config.ActivityId = Guid.NewGuid();
                        adConfig?.ForEach(s => s.ActivityId = config.ActivityId);
                        var insertResult = BankMRActivityDal.InsertBankMRActivityConfig(conn, config);
                        if (insertResult)
                        {
                            var roundResult = handler.GenerateBankMRActivityRound(conn, config);
                            if (!roundResult)
                            {
                                throw new Exception("生成银行美容活动场次失败");
                            }
                        }
                        else
                        {
                            throw new Exception("插入银行美容活动配置失败");
                        }
                        var log = new BeautyOprLog
                        {
                            LogType     = "InsertBankMRActivityConfig",
                            IdentityID  = config.ActivityId.ToString(),
                            OldValue    = null,
                            NewValue    = JsonConvert.SerializeObject(config),
                            Remarks     = $"插入银行美容活动配置,活动ID:{config.ActivityId}",
                            OperateUser = operateUser,
                        };
                        LoggerManager.InsertLog("BeautyOprLog", log);
                    }

                    if (adConfig != null && adConfig.Any())
                    {
                        foreach (var ad in adConfig)
                        {
                            if (ad != null && ad.ActivityId != Guid.Empty)
                            {
                                BankMRActivityDal.UpsertBankMRActivityAdConfig(conn, ad);
                            }
                        }
                        var oldAdConfig =
                            BankMRActivityDal.SelectBankMRActivityAdConfigByActivityId(conn, config.ActivityId);
                        var adLog = new BeautyOprLog()
                        {
                            LogType    = "UpsertBankMRActivityAdConfig",
                            IdentityID = config.ActivityId.ToString(),
                            OldValue   = oldAdConfig != null && oldAdConfig.Any()
                                ? JsonConvert.SerializeObject(oldAdConfig)
                                : string.Empty,
                            NewValue    = JsonConvert.SerializeObject(adConfig),
                            Remarks     = $"修改银行广告位配置,活动ID:{config.ActivityId}",
                            OperateUser = operateUser,
                        };
                        LoggerManager.InsertLog("BeautyOprLog", adLog);
                    }

                    result = true;
                });
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
            }

            return(result);
        }