public JsonResult UpdateStatus(string id, string status, string cause, string ruleId)
        {
            var result = "";

            if (ControllerContext.HttpContext.User == null)
            {
                return(Json(new { result = "请重新登录!" }));
            }
            using (var client = new UserIntegralClient())
            {
                UpdateUserIntegralStatusRequest integralStatus = new UpdateUserIntegralStatusRequest
                {
                    IntegralDetailID = new Guid(id),
                    IntegralRuleID   = new Guid(ruleId),
                    IsActivity       = bool.Parse(status),
                    OperationAuthor  = ControllerContext.HttpContext.User.Identity.Name ?? "zhansan",
                    Reason           = cause
                };
                var tempresult = client.UpdateUserIntegralGradeStatus(integralStatus);
                result = string.IsNullOrWhiteSpace(tempresult.ErrorMessage) ? "状态修改成功!" : tempresult.ErrorMessage;
            }
            return(Json(new { result = result }));
        }
        private static void DoJob(bool isTest)
        {
            var count = DalExpiringIntegral.GetExpiringIntegralUserCount();

            if (count < 1)
            {
                Logger.Warn("待过期用户数量为0;");
                return;
            }

            var       start = 1500 * 95;
            const int step  = 1500;

            Logger.Info($"需处理{count}位用户数据,共{count / step + 1}批");
            var watcher = new Stopwatch();

            while (start <= count)
            {
                watcher.Start();
                var data = DalExpiringIntegral.GetUserExpiringPointInfo(start, step);
                start += step;

                if (!data.Any())
                {
                    continue;
                }
                var data2     = DalExpiringIntegral.GetUserConsumeIntegral(data.Select(g => g.UserId).ToList());
                var totalData = data.Union(data2).GroupBy(g => g.UserId).Select(g =>
                                                                                new UserExpiringPointModel
                {
                    UserId     = g.Key,
                    Integral   = g.Sum(t => t.Integral),
                    IntegralId =
                        g.Where(t => t.IntegralId != Guid.Empty).Select(t => t.IntegralId).FirstOrDefault()
                }).Where(g => g.Integral > 0 && g.IntegralId != Guid.Empty).ToList();

                Logger.Info($"积分过期Job, 第{start / step}批数据,需过期{totalData.Count}条数据");

                if (!totalData.Any())
                {
                    continue;
                }
                var client = new UserIntegralClient();
                try
                {
                    //DalExpiringIntegral.ExpireUserPoint(totalData, IntegralRule);
                    foreach (var item in totalData)
                    {
                        var result = client.UserIntegralChangeByUserID(item.UserId, new UserIntegralDetailModel
                        {
                            IntegralID          = item.IntegralId,
                            IntegralRuleID      = IntegralRule,
                            TransactionIntegral = item.Integral,
                            TransactionRemark   = $"{DateTime.Now.Year - 2}年积分过期",
                            TransactionDescribe = $"{DateTime.Now.Year - 2}年积分过期",
                            TransactionChannel  = "CJob",
                            Versions            = $"{DateTime.Now.Year - 2}",
                            IntegralType        = 1
                        }, null, 0);
                        if (!result.Success || result.Result == null)
                        {
                            Logger.Warn(
                                $"UserIntegralExpireJob==>fail==>{JsonConvert.SerializeObject(item)}==>{result.ErrorMessage}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Warn("插入数据出现异常", ex);
                }
                finally
                {
                    client.Dispose();
                }

                watcher.Stop();
                Logger.Info($"积分过期Job,第{start / step}批完成,共{count / step + 1}批,用时{watcher.ElapsedMilliseconds}毫秒");
                watcher.Reset();
                if (isTest)
                {
                    Logger.Info($"isTest==>{JsonConvert.SerializeObject(totalData.Take(10))}");
                    break;
                }
            }
        }