一个批量处理数组的方法

一个批量处理数组的方法

#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
posted @ 2007-12-29 15:08  邀月  阅读(1212)  评论(0编辑  收藏  举报