コード例 #1
0
        public JsonResult RefreshPlanState(int siteId = 0)
        {
            PublicUserModel loginUser = this.GetLoginUser();
            RefreshPlan     planItem  = new RefreshPlan()
            {
                UserId = loginUser.UserID,
                SiteId = siteId
            };
            int    planId = refreshBll.RefreshPlanState(planItem);
            string msg    = string.Empty;

            switch (planId)
            {
            case -1:
                msg = "不支持云刷新";
                break;

            case -2:
                msg = "没有绑定账号";
                break;

            default:
                msg = "操作成功";
                break;
            }
            return(Json(new { status = planId, msg = msg }));
        }
コード例 #2
0
        public JsonResult RefreshSet(RefreshPlan item)
        {
            PublicUserModel loginUser = this.GetLoginUser();

            item.UserId = loginUser.UserID;
            int intervalTime = (int)item.IntervalTime;
            int beginHour = 0, beginMinute = 0, endHour = 0, endMinute = 0;

            int.TryParse(item.BeginHour.ToString(), out beginHour);
            int.TryParse(item.BeginMinute.ToString(), out beginMinute);
            int.TryParse(item.EndHour.ToString(), out endHour);
            int.TryParse(item.EndMinute.ToString(), out endMinute);
            TimeSpan             beginTp    = new TimeSpan(beginHour, beginMinute, 0);
            TimeSpan             endTp      = new TimeSpan(endHour, endMinute, 0);
            TimeSpan             diffTime   = endTp - beginTp;
            List <RefreshDetail> detailList = new List <RefreshDetail>();

            if (diffTime.TotalMinutes <= 0)
            {
                return(Json(new { status = -1, msg = "结束时间必须大于开始时间" }));
            }
            if (intervalTime < 1)
            {
                return(Json(new { status = -1, msg = "刷新间隔必须大于1分钟" }));
            }
            if (diffTime.TotalMinutes < intervalTime)
            {
                return(Json(new { status = -1, msg = "设置的开始和结束间隔时间不能小于刷新间隔时间" }));
            }
            if (item.CountPerTime <= 0)
            {
                return(Json(new { status = -1, msg = "刷新次数必须大于0" }));
            }
            TimeSpan detailTime = beginTp;

            for (int i = 0; i <= diffTime.TotalMinutes / intervalTime; i++)
            {
                detailList.Add(new RefreshDetail()
                {
                    BuildType    = item.BuildType,
                    CountPerTime = item.CountPerTime,
                    Hour         = detailTime.Hours,
                    Minute       = detailTime.Minutes,
                    TradeType    = item.TradeType
                });
                detailTime = detailTime.Add(new TimeSpan(0, intervalTime, 0));
            }
            int    result = refreshBll.RefreshDetailAdd(item, detailList);
            string msg    = string.Empty;

            if (result > 0)
            {
                msg = "添加成功";
            }
            if (result == -1)
            {
                msg = "计划已达上限,请先删除已有计划";
            }
            return(Json(new { status = result, msg = msg }));
        }
コード例 #3
0
        /// <summary>
        /// 刷新计划的开关
        /// </summary>
        /// <param name="item"></param>
        /// <returns>大于0 成功 -1:不支持云刷新,-2:没有绑定账号</returns>
        public virtual int RefreshPlanState(RefreshPlan item)
        {
            DbCommand cmd = GetStoredProcCommand("P_RefreshPlan_State");

            AddInParameter(cmd, "@UserId", DbType.Int32, item.UserId);
            AddInParameter(cmd, "@SiteId", DbType.Int32, item.SiteId);
            AddOutParameter(cmd, "@planId", DbType.Int32, 4);
            ExecuteNonQuery(cmd);
            int resultId = 0;

            int.TryParse(cmd.Parameters["@planId"].Value.ToString(), out resultId);
            return(resultId);
        }
コード例 #4
0
        public virtual int RefreshDetailAdd(RefreshPlan plan, List <RefreshDetail> details)
        {
            DbCommand cmd = GetStoredProcCommand("P_Refresh_DetailAdd");

            AddInParameter(cmd, "@PlanId", DbType.Int32, plan.PlanId);
            AddInParameter(cmd, "@UserId", DbType.Int32, plan.UserId);
            AddInParameter(cmd, "@TradeType", DbType.Int32, plan.TradeType);
            AddInParameter(cmd, "@BuildType", DbType.Int32, plan.BuildType);
            AddInParameter(cmd, "@BeginHour", DbType.Int32, plan.BeginHour);
            AddInParameter(cmd, "@BeginMinute", DbType.Int32, plan.BeginMinute);
            AddInParameter(cmd, "@EndHour", DbType.Int32, plan.EndHour);
            AddInParameter(cmd, "@EndMinute", DbType.Int32, plan.EndMinute);
            AddInParameter(cmd, "@IntervalTime", DbType.Int32, plan.IntervalTime);
            AddInParameter(cmd, "@CountPerTime", DbType.Int32, plan.CountPerTime);
            AddInParameter(cmd, "@SiteId", DbType.Int32, plan.SiteId);
            AddInParameter(cmd, "@RefreshDetail", DbType.Xml, ZJB.Core.Utilities.XmlUtility.Serialize(details, Encoding.UTF8, "RefreshDetailList"));
            AddReturnParameter(cmd, "@ReturnValue", DbType.Int32);
            ExecuteNonQuery(cmd);
            int result = 0;

            int.TryParse(cmd.Parameters["@ReturnValue"].Value.ToString(), out result);
            return(result);
        }
コード例 #5
0
        private async Task ProcessRefreshPlanAsync(ModelConfiguration model, RefreshPlan refreshPlan,
                                                   CancellationToken cancellationToken)
        {
            try
            {
                using (var server = await GetServerAsync())
                {
                    try
                    {
                        var database = GetDatabase(server, model.DatabaseName);

                        await _dataSourceFactory.Create(model.DataSource.Type)
                        .ProcessAsync(database, model, cancellationToken);

                        Logger.Info($"Processing table {refreshPlan.Table}.");

                        var table = GetTable(database, refreshPlan.Table);
                        refreshPlan.Refresh.Refresh(table);

                        Logger.Info($"Saving {refreshPlan.Table}.");
                        database.Model.SaveChanges(new SaveOptions {
                            MaxParallelism = model.MaxParallelism
                        });
                    }
                    finally
                    {
                        server.Disconnect();
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
                throw;
            }
        }
コード例 #6
0
        private async Task RetryProcessRefreshPlanAsync(ModelConfiguration model, RefreshPlan refreshPlan,
                                                        CancellationToken cancellationToken)
        {
            var attempt = 0;

            do
            {
                attempt++;

                try
                {
                    await ProcessRefreshPlanAsync(model, refreshPlan, cancellationToken);

                    break;
                }
                catch
                {
                    if (attempt == Attempts)
                    {
                        _failures.Add(refreshPlan.Table);
                    }
                }
            } while (attempt < Attempts);
        }
コード例 #7
0
ファイル: RefreshBll.cs プロジェクト: zhuangshaoying/ZJB
 public virtual int RefreshDetailAdd(RefreshPlan plan, List <RefreshDetail> details)
 {
     return(refrehsDal.RefreshDetailAdd(plan, details));
 }
コード例 #8
0
ファイル: RefreshBll.cs プロジェクト: zhuangshaoying/ZJB
 /// <summary>
 /// 刷新计划的开关
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public virtual int RefreshPlanState(RefreshPlan item)
 {
     return(refrehsDal.RefreshPlanState(item));
 }