一个批量处理数组的方法
#region
Send MobileMessage By userList
/// <summary>
/// Send MobileMessage By userList
/// Tony 2007-05-31
/// <param name="site"> Site </param>
/// <param name="lng"> lng </param>
/// <param name="UserList"> userList </param>
/// <param name="SendContent"> SendContent </param>
/// <param name="MobileSource"> 1为PassPort,1为Message </param>
public static void SendToMobileByUserList( string site, string lng, string [] UserList, string SendContent, short MobileSource)
{
if (UserList == null || UserList.Length == 0 )
{ return ;}
else
{
if (IsLoginWithSite(site.Trim()))
{
try
{
#region 定义变量
SendHistory s;
StringBuilder sb = new StringBuilder();
// 组内计数
int LevelCount = 0 ;
// 数组长度
int userLen = UserList.Length;
string temp1 = string .Empty;
// 当前组序号
int CurrentLevel = 0 ;
// 总的组数(取整) such as 8/3=2
// MaxBatchMobileNumber为外部public Vars,每批处理的数量
int MaxLevel = userLen / MaxBatchMobileNumber;
PassPort.User2007.Framework.Components.User2007 ur;
PassPortWebService pws = new PassPortWebService();
MobileMessageSet m;
string m1;
#endregion
foreach ( string u in UserList)
{
if (u == null || u.Trim().Length == 0 )
{
// 组内计数加一
LevelCount ++ ;
continue ;
}
#region 获取一串手机号码
switch (MobileSource)
{
case 1 :
#region 从Passport获取号码
ur = pws.GetUser2007(u,lng);
if (ur != null && ur.Mobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(ur.Mobile.Trim());
if (m1.Length > 10 )
{sb.Append(m1 + " , " );}
}
ur = null ;
#endregion
break ;
case 2 :
#region 从短信提醒设置获取号码
m = SMS.MobileMessageSet.Framework.Data.DataDTOProvider.MobileMessageSetSelectByLoginID( 0 ,u,lng);
if (m != null && m.ToMobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(m.ToMobile);
if (m1.Length > 10 )
{sb.Append(m1 + " , " ); }
}
m = null ;
#endregion
break ;
default :
#region 从Passport获取号码
ur = pws.GetUser2007(u,lng);
if (ur != null && ur.Mobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(ur.Mobile.Trim());
if (m1.Length > 10 )
{sb.Append(m1 + " , " );}
}
ur = null ;
#endregion
break ;
}
// 组内计数加一
LevelCount ++ ;
#endregion
#region 发送一批号码
if (LevelCount == userLen && LevelCount < MaxBatchMobileNumber)
{
#region 用户数量小于批数量
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
#endregion
#endregion
}
else if (LevelCount == MaxBatchMobileNumber)
{
#region 刚好一批
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
// 当前组数加一
CurrentLevel ++ ;
#endregion
#endregion
}
else if (LevelCount < MaxBatchMobileNumber && (userLen % MaxBatchMobileNumber) == LevelCount && MaxLevel == CurrentLevel)
{
#region 最后一批
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
#endregion
#endregion
}
#endregion
}
}
catch // (Exception ex)
{
return ;
}
}
}
}
#endregion
/// <summary>
/// Send MobileMessage By userList
/// Tony 2007-05-31
/// <param name="site"> Site </param>
/// <param name="lng"> lng </param>
/// <param name="UserList"> userList </param>
/// <param name="SendContent"> SendContent </param>
/// <param name="MobileSource"> 1为PassPort,1为Message </param>
public static void SendToMobileByUserList( string site, string lng, string [] UserList, string SendContent, short MobileSource)
{
if (UserList == null || UserList.Length == 0 )
{ return ;}
else
{
if (IsLoginWithSite(site.Trim()))
{
try
{
#region 定义变量
SendHistory s;
StringBuilder sb = new StringBuilder();
// 组内计数
int LevelCount = 0 ;
// 数组长度
int userLen = UserList.Length;
string temp1 = string .Empty;
// 当前组序号
int CurrentLevel = 0 ;
// 总的组数(取整) such as 8/3=2
// MaxBatchMobileNumber为外部public Vars,每批处理的数量
int MaxLevel = userLen / MaxBatchMobileNumber;
PassPort.User2007.Framework.Components.User2007 ur;
PassPortWebService pws = new PassPortWebService();
MobileMessageSet m;
string m1;
#endregion
foreach ( string u in UserList)
{
if (u == null || u.Trim().Length == 0 )
{
// 组内计数加一
LevelCount ++ ;
continue ;
}
#region 获取一串手机号码
switch (MobileSource)
{
case 1 :
#region 从Passport获取号码
ur = pws.GetUser2007(u,lng);
if (ur != null && ur.Mobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(ur.Mobile.Trim());
if (m1.Length > 10 )
{sb.Append(m1 + " , " );}
}
ur = null ;
#endregion
break ;
case 2 :
#region 从短信提醒设置获取号码
m = SMS.MobileMessageSet.Framework.Data.DataDTOProvider.MobileMessageSetSelectByLoginID( 0 ,u,lng);
if (m != null && m.ToMobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(m.ToMobile);
if (m1.Length > 10 )
{sb.Append(m1 + " , " ); }
}
m = null ;
#endregion
break ;
default :
#region 从Passport获取号码
ur = pws.GetUser2007(u,lng);
if (ur != null && ur.Mobile != null )
{
m1 = string .Empty;
m1 = GetMobileStartWith13(ur.Mobile.Trim());
if (m1.Length > 10 )
{sb.Append(m1 + " , " );}
}
ur = null ;
#endregion
break ;
}
// 组内计数加一
LevelCount ++ ;
#endregion
#region 发送一批号码
if (LevelCount == userLen && LevelCount < MaxBatchMobileNumber)
{
#region 用户数量小于批数量
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
#endregion
#endregion
}
else if (LevelCount == MaxBatchMobileNumber)
{
#region 刚好一批
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
// 当前组数加一
CurrentLevel ++ ;
#endregion
#endregion
}
else if (LevelCount < MaxBatchMobileNumber && (userLen % MaxBatchMobileNumber) == LevelCount && MaxLevel == CurrentLevel)
{
#region 最后一批
temp1 = sb.ToString();
if (temp1.EndsWith( " , " ))
{
temp1 = temp1.Remove(temp1.Length - 1 , 1 );
}
int bRtn = new JL().SendMsg(pHandle,strMobileCode,temp1,SendContent, "" );
#region 发送成功后写入数据库
if (bRtn == 0 )
{
s = new SendHistory();
s.MessageID =- 100 ;
s.Status = 0 ;
lng = (lng == null || lng.Trim().Length == 0 ) ? " cn " :lng;
string str = " 来自于{0},语言为{1},发送给{2}的手机({3})的短信内容:{4} " ;
s.Topic = string .Format(str,site,lng,u,temp1,SendContent);;
s.CreatTime = DateTime.Now;
s.F1 = 0 ;
s.F2 = 0 ;
s.F3 = site + " - " + lng;
s.F4 = "" ;
s.UpdateTime = DateTime.Now;
SMS.SendHistory.Framework.Data.DataDTOProvider.SendHistoryInsert(s);
s = null ;
}
#endregion
#region 完成后清零
sb = new StringBuilder();
temp1 = string .Empty;
LevelCount = 0 ;
#endregion
#endregion
}
#endregion
}
}
catch // (Exception ex)
{
return ;
}
}
}
}
#endregion