sendsms.cs

来自「该服务平台解决了计算机网络与移动网络之间信息交换问题」· CS 代码 · 共 515 行 · 第 1/2 页

CS
515
字号
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Data;
using System.Web;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Common;

namespace DataAccess
{
    public class SendSMS
    {
        /// <summary>
        /// 0:中国移动1:中国联通2:中国电信小灵通
        /// </summary>
        private Database mainDataBase;
        private Database db;
        private const string SEND_SMS_TO_CHINAMOBILE_SERVER_SQL = "INSERT INTO cp_send_table(sServiceID," +
            "sMobileNo,sMsgContent,tRegTime) VALUES('128','{0}','{1}','{2}')";

        public SendSMS()
        {
            mainDataBase = DatabaseFactory.CreateDatabase("SmSConnString");
            db = DatabaseFactory.CreateDatabase("Connection String");
        }

        #region 注释
        /*
        public bool SendMessage(int smsID,String sendMan,String mobileNo, String msgContent)
        {
            int mobileType = GetMobileTrederID(mobileNo);
            if (mobileType == 0)
            {
                try
                {
                    //发送短信
                    SendChinaMobileMessage(mobileNo, msgContent);
                    //将短信标志设置为已发送
                    SetSendSMSFlag(smsID, sendMan);
                    return true;
                }
                catch
                { return false; }
            }
            else if (mobileType == 2)
            {
                //SendSmallTraderMessageByStudent(mobileNo, msgContent);
                SendSmallTraderMessageByFarmer(mobileNo, msgContent);
                return true;
            }
            else
            { return false; }
        }

        private int SetSendSMSFlag(int smsId,String sendMan)
        {
            string strSql = string.Format("UPDATE SMSInfo SET Flag = 2, SendMan = '{0}' WHERE (SMSID = {1}) ", sendMan, smsId);
            Database db = DatabaseFactory.CreateDatabase("Connection String");
            return db.ExecuteNonQuery(CommandType.Text, strSql);
        }
        /// <summary>
        /// 中国移动短信发送
        /// </summary>
        /// <param name="mobileNo"></param>
        /// <param name="msgContent"></param>
        /// <returns></returns>
        private int SendChinaMobileMessage(String mobileNo, String msgContent)
        {
            string strSql = string.Format(SEND_SMS_TO_CHINAMOBILE_SERVER_SQL, mobileNo, msgContent,
                System.DateTime.Now.ToString());
            return db.ExecuteNonQuery(CommandType.Text, strSql);
        }
        /// <summary>
        /// 中国电信小灵通发送农信通信息
        /// </summary>
        /// <param name="mobileNo"></param>
        /// <param name="msgContent"></param>
        /// <returns></returns>
        private void SendSmallTraderMessageByStudent(String mobileNo, String msgContent)
        {
            string msg = HttpUtility.UrlEncode(msgContent);
            string goUrl = string.Format("http://phs.scol.com.cn/deliver/deliver.aspx?usertel={0}" +
                "&phscode=9143&content={1}&ywcode=119049", mobileNo, msg);
            HttpContext.Current.Response.Redirect(goUrl);
            
        }

        private void SendSmallTraderMessageByFarmer(String mobileNo, String msgContent)
        {
            string msg = HttpUtility.UrlEncode(msgContent, Encoding.GetEncoding("GB2312"));
            //string msg = HttpContext.Current.Server.UrlEncode(msgContent);
            string goUrl = string.Format("http://phs.scol.com.cn/deliver/deliver.aspx?usertel={0}" +
                "&phscode=91434&content={1}&ywcode=119050", mobileNo, msg);
            HttpContext.Current.Response.Redirect(goUrl);


        }
        /// <summary>
        /// 判断手机号
        /// </summary>
        /// <param name="mobileNumber"></param>
        /// <returns></returns>
        private int GetMobileTrederID(String mobileNumber)
        {
            char[] C_Mobile = mobileNumber.ToCharArray();
            string smallCommunicate = C_Mobile[0].ToString();
            if (smallCommunicate != "0")
            {
                string mobileNumType = C_Mobile[2].ToString();
                switch (mobileNumType)
                {
                    case "0" :
                        return 1;
                    case "1" :
                        return 1;
                    case "2":
                        return 1;
                    case "3":
                        return 1;
                    case "4":
                        return 0;
                    case "5":
                        return 0;
                    case "6":
                        return 0;
                    case "7":
                        return 0;
                    case "8":
                        return 0;
                    case "9":
                        return 0;
                    default:
                        return 0;
                }
            }
            else
            {
                //中国电信小灵通
                return 2;
            }
        }*/
        #endregion
        /// <summary>
        /// 得到短信发送表格式
        /// </summary>
        /// <returns></returns>
        private DataTable GetSendTableFormat()
        {
            DataTable dt = new DataTable("SendingSMS");
            dt.Columns.Add("MessageContent", typeof(String));
            dt.Columns.Add("Mobile", typeof(String));
            dt.Columns.Add("Trade", typeof(int));
            dt.Columns.Add("SmsType", typeof(int));
            dt.Columns.Add("CitySchool", typeof(String));
            dt.Columns["Mobile"].Unique = true;

            return dt;
        }

        public int SendingSingleSMS(String messageContnte, String mobile, int tradeID, int smsType, String citySchool)
        {
            String strSql = string.Format("INSERT INTO SendingSMS(MessageContent, Mobile, Trade, SmsType, CitySchool) " +
                "VALUES ('{0}','{1}',{2},{3},'{4}')", messageContnte, mobile, tradeID, smsType, citySchool);
            return mainDataBase.ExecuteNonQuery(CommandType.Text, strSql);
        }

        public int SendingSMS(String mobile, String msg)
        {
            String strSql = String.Format("INSERT INTO SendingSMS(MessageContent, Mobile) VALUES('{0}','{1}')", msg, mobile);
            return mainDataBase.ExecuteNonQuery(CommandType.Text, strSql);
        }

        /// <summary>
        /// 发送短信息
        /// </summary>
        /// <param name="areaID"></param>
        /// <param name="countyID"></param>
        /// <param name="villageID"></param>
        /// <param name="corporationID"></param>
        /// <param name="mainOperationID"></param>
        /// <param name="childOperationID"></param>
        /// <param name="traderID"></param>
        /// <param name="sms"></param>
        /// <param name="smsType"></param>
        public void AddSMSToMainDataBase(int areaID, int countyID, int villageID, ArrayList corporationID,
            ArrayList mainOperationID, ArrayList childOperationID, int traderID, String sms, int smsType)
        {
            DataTable dt = GetSendTableFormat();

            DataTable userData = new DataTable("UserData");
            userData.Columns.Add("Mobile", typeof(String));
            userData.Columns.Add("TradeID", typeof(int));

            userData = GetUserList(areaID, countyID, villageID, traderID, mainOperationID, childOperationID, corporationID);

            if (userData.Rows.Count > 0)
            {
                for (int i = 0; i < userData.Rows.Count; i++)
                {
                    try
                    {
                        DataRow row = dt.NewRow();
                        row["MessageContent"] = sms;
                        row["Mobile"] = userData.Rows[i]["Mobile"].ToString();
                        row["Trade"] = userData.Rows[i]["TradeID"];
                        row["SmsType"] = smsType;
                        row["CitySchool"] = "0";

                        dt.Rows.Add(row);
                    }
                    catch
                    {
                        continue;
                    }
                }

                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    String messageContnte = dt.Rows[j]["MessageContent"].ToString();
                    String mobile = dt.Rows[j]["Mobile"].ToString();
                    int tradeID = int.Parse(dt.Rows[j]["Trade"].ToString());
                    //int smsType = int.Parse(dt.Rows[j]["SmsType"].ToString());
                    String citySchool = dt.Rows[j]["CitySchool"].ToString();

                    SendingSingleSMS(messageContnte, mobile, tradeID, smsType, citySchool);
                }
                
            }

        }
        #region 得到用户注视
        /*
        /// <summary>
        /// 根据用户地区编码得到用户手机号运营商信息
        /// </summary>
        /// <param name="areaID"></param>
        /// <param name="countyID"></param>
        /// <param name="villageID"></param>
        /// <param name="tradeID"></param>
        /// <returns></returns>
        public DataTable GetUserListByArea(int areaID,int countyID,int villageID,int tradeID)
        {
            String formatSql = string.Format("SELECT Mobile, TradeID FROM UserInfo WHERE (AreaID = {0})",areaID);

            //String strSql = string.Format("SELECT Mobile, TradeID FROM UserInfo WHERE (AreaID = {0}) AND (CountyID = {1}) " +
            //    "AND (VillageID = {2}) AND (TradeID = {3})", areaID, countyID, villageID, tradeID);
            if (countyID != 0)
                formatSql += string.Format(" AND (CountyID = {0}", countyID);
            if (villageID != 0)
                formatSql += string.Format(" AND (VillageID = {0}", villageID);
            if (tradeID != 0)
                formatSql += string.Format(" AND (TradeID = {0})", tradeID);
            DataSet ds = db.ExecuteDataSet(CommandType.Text, formatSql);
            return ds.Tables[0];
        }
        /// <summary>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?