/// <summary> /// 匹配正常 /// </summary> /// <param name="routeValue"></param> /// <param name="sharding"></param> /// <returns></returns> protected virtual int GetRemainderTableStep(object routeValue, ShardingInfo sharding) { var tableMaxStep = sharding.GetTableMaxStep(); if (tableMaxStep == -1) { return(-1); } var value = Math.Abs(long.Parse(routeValue.ToString())); var step = (int)(value % tableMaxStep); return(step); }
/// <summary> /// 匹配正常 /// </summary> /// <param name="routeValue"></param> /// <param name="sharding"></param> /// <returns></returns> protected virtual int GetValueTableStep(object routeValue, ShardingInfo sharding) { var tableMaxStep = sharding.GetTableMaxStep(); if (tableMaxStep == -1) { return(-1); } var value = Math.Abs(long.Parse(routeValue.ToString())); if (value > StartValue + (EndValue - StartValue + 1) * tableMaxStep) { return(-1); } var step = (int)(Math.Floor((double)((value - StartValue) / (EndValue - StartValue)))); if (sharding.TableStep > 0) { step = step / sharding.TableStep; } return(step); }
/// <summary> /// 匹配正常 /// </summary> /// <param name="routeValue"></param> /// <param name="sharding"></param> /// <returns></returns> protected virtual int GetYearTableStep(object routeValue, ShardingInfo sharding) { var tableMaxStep = sharding.GetTableMaxStep(); if (tableMaxStep == -1) { return(-1); } var date = DateTime.Parse(routeValue.ToString()); var maxDate = DateTime.Parse(sharding.TableIndex).AddYears(tableMaxStep); if (date > maxDate) { return(-1); } var curdate = DateTime.Parse(FixedValue); var step = date.Year - curdate.Year; if (sharding.TableStep > 0) { step = step / sharding.TableStep; } return(step); }
/// <summary> /// 匹配正常 /// </summary> /// <param name="routeValue"></param> /// <param name="sharding"></param> /// <returns></returns> protected virtual int GetMonthTableStep(object routeValue, ShardingInfo sharding) { var tableMaxStep = sharding.GetTableMaxStep(); if (tableMaxStep == -1) { return(-1); } var date = DateTime.Parse(routeValue.ToString()); var maxDate = DateTime.Parse(sharding.TableIndex.Insert(4, "-")).AddMonths(tableMaxStep); if (date > maxDate) { return(-1); } var curdate = DateTime.Parse(FixedValue); var step = (date.Year - curdate.Year) * 12 + (date.Month - curdate.Month); if (sharding.TableStep > 0) { step = step / sharding.TableStep; } return(step); }
/// <summary> /// 匹配正常 /// </summary> /// <param name="routeValue"></param> /// <param name="sharding"></param> /// <returns></returns> protected virtual int GetDayTableStep(object routeValue, ShardingInfo sharding) { var tableMaxStep = sharding.GetTableMaxStep(); if (tableMaxStep == -1) { return(-1); } var date = DateTime.Parse(routeValue.ToString()); var maxDate = DateTime.Parse(sharding.TableIndex.Insert(4, "-").Insert(7, "-")).AddDays(tableMaxStep); if (date > maxDate) { return(-1); } var curdate = DateTime.Parse(FixedValue); var step = (date - curdate).TotalDays; if (sharding.TableStep > 0) { step = step / sharding.TableStep; } return((int)step); }