Exemplo n.º 1
0
        /// <summary>
        /// 获取所有活动地区
        /// </summary>
        /// <returns></returns>
        public static async Task <IEnumerable <T_ArearModel> > GetAllAreaAsync()
        {
            var key = $"GetAllAreaAsync";

            using (var client = CacheHelper.CreateCacheClient(DefaultClientName))
            {
                var result = await client.GetOrSetAsync(key, () => DalActivity.GetAllAreaAsync(), ActivityCacheExpiration);

                IEnumerable <T_ArearModel> xhrActivity;
                if (result.Success)
                {
                    xhrActivity = result.Value;
                }
                else
                {
                    Logger.Warn($"获取redis数据失败SelectAllArea:{key};Error:{result.Message}", result.Exception);
                    // redis查询失败查数据库
                    xhrActivity = await DalActivity.GetAllAreaAsync();
                }

                if (xhrActivity != null && xhrActivity.Any())
                {
                    return(xhrActivity);
                }
                return(null);
            }
        }
Exemplo n.º 2
0
        private void Run()
        {
            using (var acitivtyClient = new ActivityClient())
            {
                #region 世界杯活动清算

                //获取世界杯活动
                var activity = acitivtyClient.GetWorldCup2018Activity();

                if (activity.Success && activity.Result != null)
                {
                    //获取今天发布'结果'的题目  列表
                    var questions = DalActivity.SearchTodayReleaseQuestionAnswerList(activity.Result.QuestionnaireID)?.ToList();

                    if (questions != null)
                    {
                        if (questions.Count > 0)
                        {
                            //刷新缓存
                            RefreshCache(activity?.Result?.PKID ?? 0);
                        }

                        //循环问题
                        questions.ForEach(question =>
                        {
                            UserAnswerClear(question, activity.Result.PKID);
                        });
                    }
                }

                #endregion
            }
        }
        public List <ActivityMessageRemindModel> BeforeExecuteJob()
        {
            var list            = new List <ActivityMessageRemindModel>();
            var activtyProducts = DalActivity.SelectFlashSaleProductModels().ToList();

            if (activtyProducts.Any())
            {
                var pids = activtyProducts.Select(r => r.Pid);
                foreach (var enumerable in pids.Split(100).Select(_ => _.ToList()))
                {
                    var datas = (DalActivity.SelectActivityMessageRemindModel(enumerable)).ToList();
                    if (datas.Any())
                    {
                        list.AddRange(datas);
                    }
                }
                ;
                var result = (from l in list
                              join p in activtyProducts on l.Pid equals p.Pid
                              select new ActivityMessageRemindModel
                {
                    ActivityId = l.ActivityId,
                    ActivityName = l.ActivityName,
                    Pid = l.Pid,
                    Pkid = l.Pkid,
                    ProductName = l.ProductName,
                    UserId = l.UserId,
                    StartDtartTime = p.StartDateTime,
                }).ToList();
                return(result);
            }
            return(list);
        }
Exemplo n.º 4
0
        public TemplateListResponse GetTemplates()
        {
            TemplateListResponse response = new TemplateListResponse();

            using (DalActivity context = new DalActivity())
            {
                response = context.GetTemplates();
            }


            return(response);
        }
Exemplo n.º 5
0
        public ActivitiesListResponse GetActivitiesList(ActivityFilters filters)
        {
            ActivitiesListResponse response = new ActivitiesListResponse();

            using (DalActivity context = new DalActivity())
            {
                response = context.GetActivitiesList(filters);
            }


            return(response);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 获取所有活动
 /// </summary>
 /// <returns></returns>
 public static async Task <IEnumerable <T_Activity_xhrModel> > GetAllActivityManagerAsync(int pageIndex, int pageSize)
 {
     try
     {
         return(await DalActivity.GetAllActivityManagerAsync(pageIndex, pageSize));
     }
     catch (Exception ex)
     {
         Logger.Error($"GetAllActivityManagerAsync", ex);
         throw ex;
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// 管理员注册
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public static async Task <bool> ManagerRegisterAsync(T_ActivityManagerUserInfo_xhrModel request)
 {
     try
     {
         return(await DalActivity.ManagerRegisterAsync(request));
     }
     catch (Exception ex)
     {
         Logger.Error($"ManagerRegister", ex);
         throw ex;
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// 修改报名信息
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public static async Task <bool> UpdateActivitiesUserAsync(ActivityUserInfo_xhrRequest request)
 {
     try
     {
         return(await DalActivity.UpdateActivitiesUserAsync(request));
     }
     catch (Exception ex)
     {
         Logger.Error($"UpdateActivitiesUserAsync -> {JsonConvert.SerializeObject(request)}", ex);
         throw ex;
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// 获取密码盐
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public static string GetPassWordsSalt(T_ActivityManagerUserInfo_xhrModel request)
 {
     try
     {
         return(DalActivity.GetPassWordsSalt(request));
     }
     catch (Exception ex)
     {
         Logger.Error($"GetPassWordsSalt", ex);
         throw ex;
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// 验证登录状态
 /// </summary>
 /// <param name="managerId"></param>
 /// <returns></returns>
 public static async Task <bool> CheckLoginAsync(int managerId)
 {
     try
     {
         return(await DalActivity.CheckLoginAsync(managerId));
     }
     catch (Exception ex)
     {
         Logger.Error($"ManagerRegister", ex);
         throw ex;
     }
 }
Exemplo n.º 11
0
 /// <summary>
 /// 审核活动
 /// </summary>
 /// <returns></returns>
 public static async Task <bool> ReviewActivityTaskAsync()
 {
     try
     {
         return(await DalActivity.ReviewActivityTaskAsync());
     }
     catch (Exception ex)
     {
         Logger.Error($"ReviewActivityTask", ex);
         throw ex;
     }
 }
Exemplo n.º 12
0
        /// <summary>
        /// 根据地区查询用户信息
        /// </summary>
        /// <returns></returns>
        public static async Task <IEnumerable <T_ActivityUserInfo_xhrModels> > GetActivityUserInfoByAreaAsync(int areaId, int pageIndex, int pageSize)
        {
            IEnumerable <T_ActivityUserInfo_xhrModels> xhrActivity;

            xhrActivity = await DalActivity.GetActivityUserInfoByAreaAsync(areaId, pageIndex, pageSize);

            if (xhrActivity != null && xhrActivity.Any())
            {
                return(xhrActivity);
            }
            return(null);
        }
Exemplo n.º 13
0
        /// <summary>
        ///     私有 获取 游戏信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private async Task <GetGameInfoResponse> _GetGameInfoResponseAsync(GetGameInfoRequest request)
        {
            var dbResult = await DalActivity.GetActivityByTypeId(GameVersion);

            return(new GetGameInfoResponse
            {
                ActivityName = dbResult.ActivityName,
                StartTime = dbResult.StartTime,
                EndTime = dbResult.EndTime,
                GameRuleText = dbResult.GameRuleText,
                SupportRuleText = dbResult.SupportRuleText
            });
        }
 public void AfterExecuteJob(List <int> pkids)
 {
     foreach (var ints in pkids.Split(100).Select(_ => _.ToList()))
     {
         var enumerable = ints;
         var datas      = (DalActivity.UpdateActivityMessageRemindModel(enumerable));
         if (datas <= 0)
         {
             Logger.Warn("更新已经推送过的消息记录失败");
         }
         else
         {
             Logger.Info($"更新已经推送过的消息记录成功共计{datas}条数据");
         }
     }
 }
Exemplo n.º 15
0
        public void Execute(IJobExecutionContext context)
        {
            var watcher = new Stopwatch();

            watcher.Start();
            Logger.Info("自动审核活动Job开始执行");
            try
            {
                DalActivity.ReviewActivityTask();
            }
            catch (Exception ex)
            {
                Logger.Warn("自动审核活动Job出现异常", ex);
            }
            watcher.Stop();
            Logger.Info($"会员任务数据备份Job完成,用时{watcher.ElapsedMilliseconds}毫秒");
        }
Exemplo n.º 16
0
        public CrmResponse InsertActivity(ENTITIES.Activity newActivity)
        {
            CrmResponse response = new CrmResponse();

            using (DalActivity context = new DalActivity())
            {
                response = context.InsertNewActivity(newActivity);
                if (response.rc > -1)
                {
                    //insert lines to schedule email sending
                    response = context.ScheduleEmails(response.rc);
                }
            }


            return(response);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 获取所有可用活动
        /// </summary>
        /// <returns></returns>
        public static async Task <List <T_Activity_xhrModel> > GetAllActivityAsync(int pageIndex, int pageSize)
        {
            using (var hashClient = CacheHelper.CreateHashClient("GetAllActivity", ActivityCacheExpiration))
            {
                IEnumerable <T_Activity_xhrModel> xhrActivity;
                var getresult = hashClient.GetAsync <IEnumerable <T_Activity_xhrModel> >("GetAllActivityAsync/" + pageIndex.ToString());
                if (!getresult.Result.Success)
                {
                    Logger.Warn($"查询redis数据失败GetActivity:{"GetAllActivityAsync/" + pageIndex.ToString()};Error:{getresult.Result.Message}", getresult.Exception);
                    return(null);
                }
                else
                {
                    if (getresult.Result.Value.Any() && getresult.Result.Value != null)
                    {
                        xhrActivity = getresult.Result.Value;
                    }
                    else
                    {
                        var result = DalActivity.GetAllActivityAsync(pageIndex, pageSize);

                        var dic = new Dictionary <string, object>();
                        dic.Add("GetAllActivityAsync" + pageIndex.ToString(), result.Result);
                        IReadOnlyDictionary <string, object> roDic = new ReadOnlyDictionary <string, object>(dic);
                        var setResult = await hashClient.SetAsync <IEnumerable <T_Activity_xhrModel> >(roDic);

                        if (setResult.Success)
                        {
                            xhrActivity = result.Result;
                        }
                        else
                        {
                            Logger.Warn($"存储redis数据失败SetActivity:{"GetAllActivityAsync/" + pageIndex.ToString()};Error:{setResult.Message}", setResult.Exception);
                            return(null);
                        }
                    }
                }

                if (xhrActivity != null && xhrActivity.Any())
                {
                    return(xhrActivity.Where(_ => _.StartTime <= DateTime.Now && _.EndTime > DateTime.Now)?.ToList() ?? new List <T_Activity_xhrModel>());
                }
                return(null);
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// 修改活动信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static async Task <bool> UpdateActivityAsync(T_Activity_xhrModel request)
        {
            using (var hashClient = CacheHelper.CreateHashClient("GetAllActivity"))
            {
                try
                {
                    var result = await DalActivity.UpdateActivityAsync(request);

                    hashClient.RemoveSelf();
                    return(result);
                }
                catch (Exception ex)
                {
                    Logger.Error($"UpdateActivityAsync -> {JsonConvert.SerializeObject(request)}", ex);
                    throw ex;
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 刷新客户专享活动配置缓存
        /// </summary>
        /// <param name="activityExclusiveId"></param>
        /// <returns></returns>
        public static async Task <bool> RefreshRedisCacheCustomerSetting(string activityExclusiveId)
        {
            using (var client = CacheHelper.CreateCacheClient(ActivityManager.DefaultClientName))
            {
                var data = await DalActivity.SelectCustomerExclusiveSettingInfo(activityExclusiveId, false);

                var result = await client.SetAsync(string.Concat("CustomerSettingInfo/", activityExclusiveId), data
                                                   , TimeSpan.FromDays(2));

                if (result.Success)
                {
                    return(true);
                }
                else
                {
                    Logger.Warn($"set redis缓存失败,接口==》RefreshRedisCacheCustomerSettingAsync");
                    return(false);
                }
            }
        }
Exemplo n.º 20
0
        public static async Task <bool> RefreshVipCardCacheByActivityIdAsync(string activityId)
        {
            using (var client = CacheHelper.CreateCacheClient(ActivityManager.DefaultClientName))
            {
                var data = await DalActivity.GetVipCardSaleConfigDetailsAsync(activityId);

                var result = await client.SetAsync(GlobalConstant.VipCardPrefix + activityId, data
                                                   , TimeSpan.FromDays(10));

                if (result.Success)
                {
                    return(true);
                }
                else
                {
                    Logger.Warn($"set redis缓存失败,接口==》RefreshVipCardCacheByActivityIdAsync");
                    return(false);
                }
            }
        }
Exemplo n.º 21
0
        public void Execute(IJobExecutionContext context)
        {
            var sw = new Stopwatch();

            sw.Start();
            Logger.Info($"开始定时刷新活动页适配车型的产品缓存");
            try
            {
                var activityIds = DalActivity.GetSystemActivityIds();
                var result      = true;
                if (activityIds != null && activityIds.Any())
                {
                    using (var client = new Service.Activity.ActivityClient())
                    {
                        foreach (var activityId in activityIds)
                        {
                            var result1 = client.GetOrSetActivityPageSortedPids(new SortedPidsRequest()
                            {
                                IsRefresh     = true,
                                DicActivityId = new KeyValuePair <string, ActivityIdType>(activityId, ActivityIdType.AutoActivity)
                            });
                            result1.ThrowIfException(true);
                            if (result1.ErrorCode == "-1")
                            {
                                result = false;
                            }
                        }
                    }
                }
                if (result == false)
                {
                    Logger.Error($"刷新活动页适配车型的产品缓存执行失败");
                }
            }
            catch (Exception e)
            {
                Logger.Error($"开始定时刷新活动页适配车型的产品缓存执行失败", e.InnerException);
            }
            sw.Stop();
            Logger.Info($"定时刷新活动页适配车型的产品缓存耗时{sw.ElapsedMilliseconds}");
        }
Exemplo n.º 22
0
        /// <summary>
        ///     更新游戏信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <UpdateGameInfoResponse> UpdateGameInfoAsync(UpdateGameInfoRequest request)
        {
            try
            {
                var dbResult = await DalActivity.GetActivityByTypeId(GameVersion);

                using (var dbHelper = DbHelper.CreateDbHelper())
                {
                    dbResult.StartTime = request.StartTime;
                    dbResult.EndTime   = request.EndTime;
                    await DalActivity.UpdateActivtyAsync(dbHelper, dbResult);
                }

                return(new UpdateGameInfoResponse());
            }
            catch (Exception e)
            {
                Logger.Error(
                    $"{ManagerName} -> UpdateGameInfoAsync -> {JsonConvert.SerializeObject(request)} ",
                    e.InnerException ?? e);
                throw;
            }
        }
Exemplo n.º 23
0
        private static string GetActivityConfigInfo(DateTime dt)
        {
            var schedule = ConvertToSchedule(dt.Hour);

            #region 过期的待审核的数据在这里删掉
            var expiredDatas = DalActivity.SelectExpiredScheduleActivity(schedule);
            foreach (var activity in expiredDatas)
            {
                Logger.Info($"{activity}活动已经结束了,还没审核通过直接删掉了");
                DalActivity.DeleteFlashSaleTempByAcid(activity);
                DalActivity.DeleteFlashSaleProductsTempByAcid(activity);
            }
            #endregion
            var activityId = DalActivity.SelectNextScheduleActivity(schedule);
            if (string.IsNullOrEmpty(activityId))
            {
                return(null);
            }
            else
            {
                return(schedule);
            }
        }
Exemplo n.º 24
0
        public static async Task <TireActivityModel> SelectTireActivityAsync(string vehicleId, string tireSize)
        {
            using (var client = CacheHelper.CreateCacheClient(DefaultClientName))
            {
                var result = await client.GetOrSetAsync(string.Concat("TireActivity/", vehicleId, tireSize), () => DalActivity.SelectTireActivity(vehicleId, tireSize), ActivityCacheExpiration);

                IEnumerable <TireActivityModel> tireActivity;
                if (result.Success)
                {
                    tireActivity = result.Value;
                }
                else
                {
                    Logger.Warn($"获取redis数据失败SelectTireActivityAsync:{string.Concat("TireActivity/", vehicleId, tireSize)};Error:{result.Message}", result.Exception);
                    // redis查询失败查数据库
                    tireActivity = await DalActivity.SelectTireActivity(vehicleId, tireSize);
                }
                if (tireActivity != null && tireActivity.Any())
                {
                    return(tireActivity.FirstOrDefault(_ => _.StartTime <= DateTime.Now && _.EndTime > DateTime.Now));
                }
                return(null);
            }
        }
Exemplo n.º 25
0
        /// <summary>
        ///     清算用户数据
        /// </summary>
        /// <param name="questionModel"></param>
        /// <param name="activityId"></param>
        private void UserAnswerClear(QuestionModel questionModel, long activityId)
        {
            var questionId = questionModel.PKID;
            //获取题目的选项和子项
            var options = DalActivity.SearchQuestionOption(questionId)?.ToList();

            if (options?.Count == 0)
            {
                return;
            }
            //正确选项
            var rightOption = options.FirstOrDefault(p => p.QuestionParentID == 0 && p.IsRightValue == 1);

            if (rightOption == null)
            {
                return;
            }
            var i = 1;

            using (var db = DbHelper.CreateDbHelper())
                using (var configClient = new ConfigClient())
                    using (var userClient = new UserClient())
                        using (var activityClient = new ActivityClient())
                            using (var templatePushClient = new TemplatePushClient())
                                using (var cacheClient = CacheHelper.CreateCacheClient("ActivityUserQuestionAnswerClear"))
                                {
                                    //推送的开关设置
                                    var pushResult = configClient.GetOrSetRuntimeSwitch("activityquestionclearpush")?.Result;
                                    //推送开关
                                    var pushFlag = pushResult?.Value ?? false;
                                    //推送的模板ID
                                    var pushIdstr = pushResult?.Description;
                                    var pushId    = 0;
                                    int.TryParse(pushIdstr, out pushId);
                                    while (true)
                                    {
                                        var ts = new Stopwatch();
                                        ts.Start();
                                        var clearCount = 1000;
                                        //获取用户答题尚未清算数据
                                        var userAnswerNotClearDatas = DalActivity.SearchUserAnswerNotClear(questionId, clearCount)?.ToList();
                                        if (userAnswerNotClearDatas?.Count == 0)
                                        {
                                            break;
                                        }

                                        //循环用户数据
                                        userAnswerNotClearDatas.AsParallel().ForAll(userData =>
                                        {
                                            try
                                            {
                                                //用户选择的选项
                                                var userOption = options.FirstOrDefault(p => p.PKID == userData.AnswerOptionID);
                                                if (userOption != null)
                                                {
                                                    Logger.Info($"开始清算用户数据:{userData.UserID} {userData.AnswerOptionID}");

                                                    //找用户选项的根选项
                                                    var rootOption = GetRootOption(userOption, options);
                                                    //判断是否正确选项
                                                    //正确则赠送兑换券 否则不赠送兑换券
                                                    if (rootOption.PKID == rightOption.PKID)
                                                    {
                                                        //更新回答结果
                                                        var resultAnswer = activityClient.ModifyQuestionUserAnswerResult(
                                                            new ModifyQuestionUserAnswerResultRequest()
                                                        {
                                                            AnswerResultStatus = 1,
                                                            ResultId           = userData.PKID,
                                                            WinCouponCount     = userData.WinCouponCount
                                                        });

                                                        if (resultAnswer?.Result?.IsOk == true)
                                                        {
                                                            //更新兑换券 和 日志
                                                            var result = activityClient.ModifyActivityCoupon(userData.UserID,
                                                                                                             activityId,
                                                                                                             userOption.WinCouponCount ?? 0
                                                                                                             , "答题清算服务"
                                                                                                             , userData.AnswerDate);
                                                            if (!result.Success && result.Result <= 0)
                                                            {
                                                                Logger.Warn($"请求 ModifyActivityCoupon 失败 {result.ErrorMessage}");
                                                                //回滚
                                                                DalActivity.UpdateUserAnswerResult(db, userData.PKID,
                                                                                                   userData.WinCouponCount, 0);
                                                                return;
                                                            }
                                                        }
                                                    }
                                                    else
                                                    {
                                                        //更新用户答题结果
                                                        var resultAnswer = activityClient.ModifyQuestionUserAnswerResult(
                                                            new ModifyQuestionUserAnswerResultRequest()
                                                        {
                                                            AnswerResultStatus = 2,
                                                            ResultId           = userData.PKID,
                                                            WinCouponCount     = 0
                                                        });
                                                    }
                                                    Logger.Info($"用户 {userData.UserID} ");
                                                    //推送消息 判断推送开关是否开启
                                                    if (pushFlag && pushId != 0)
                                                    {
                                                        PushMessage(pushId, cacheClient, userClient, templatePushClient, userData.UserID, userData.CreateDatetime);
                                                    }
                                                }
                                            }
                                            catch (Exception e)
                                            {
                                                Logger.Error($" {nameof(ActivityUserQuestionAnswerClearJob)} 失败 ", e);
                                            }
                                        });
                                        ts.Stop();
                                        Logger.Info($" {nameof(UserAnswerClear)} 清算 {clearCount} 条数据 执行时间 {ts.Elapsed.TotalSeconds} 秒 ");
                                        i++;
                                    }
                                }
        }