手记

一个批量处理数组的方法

一个批量处理数组的方法

#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

0人推荐
随时随地看视频
慕课网APP