⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sms.cs

📁 全自动办公软件
💻 CS
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Runtime.InteropServices;

namespace OASelfManage.Components
{
	/// <summary>
	/// SMS 
	/// </summary>
	public class SMS
	{
		
		
		int CommIndex = 1;

		 

		public SMS()
		{
			//
			// TODO: 
			//
		}
		/// <summary>
		/// 得到在线人数
		/// </summary>
		/// <returns>返回int</returns>
		public int GetOnlineCount()
		{
			Database data = new Database();
			SqlDataReader dataReader = null;
			try 
			{
				data.RunProc("SP_SMS_GetOnlineCount",out dataReader);
				if(dataReader.Read()) return Int32.Parse(dataReader[0].ToString());
				else return 0;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("读取在线人数出错!",ex);
			}
			finally
			{
				data	   = null;
				dataReader = null;
			}
		}

		/// <summary>
		/// 得到新消息总数
		/// </summary>
		/// <returns>返回int</returns>
		public int GetNewMsgCount(string Username)
		{
			Database data = new Database();
			SqlDataReader dataReader = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@username",    SqlDbType.VarChar, 50, Username)
								   };
			try 
			{
				data.RunProc("SP_SMS_GetNewMsgCount",prams,out dataReader);
				if(dataReader.Read()) return Int32.Parse(dataReader[0].ToString());
				else return 0;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("得到新消息总数出错!",ex);
			}
			finally
			{
				data	   = null;
				dataReader = null;
			}
		}

		/// <summary>
		/// 读消息
		/// </summary>
		public bool ReadMsg(string MsgIDS,string Username)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@MsgIDS",    SqlDbType.VarChar, 2000, MsgIDS),
									   data.MakeInParam("@Username",    SqlDbType.VarChar, 20, Username),
			};
			try 
			{
				data.RunProc("SP_SMS_ReadMsg",prams);
				return true;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				//	throw new Exception("读消息出错!",ex);
				return false;
			}
			finally
			{
				data	   = null;
			}
		}


		/// <summary>
		/// 更新在线记录表.添加新的在线人员
		/// </summary>
		public void UpdateOnlineInfo(string Username,string HostAddr,string SessionID)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@username",    SqlDbType.VarChar, 50, Username),
									   data.MakeInParam("@hostaddr",    SqlDbType.VarChar, 50, HostAddr),
									   data.MakeInParam("@sessionid",   SqlDbType.VarChar, 50, SessionID)
								   };
			try 
			{
				data.RunProc("SP_SMS_UpdateOnlineInfo",prams);
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("更新在线记录表出错!",ex);
			}
			finally
			{
				data	   = null;
			}
		}

		/// <summary>
		/// 更新活动记录及检测未活动人员
		/// </summary>
		public string CheckUpdate(string Username,string SessionID,int ActiveNodeID)
		{
			string ReturnStr = "";
			int ReturnID = 0;
			int NewMsgFlag = 0;
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@username",    SqlDbType.VarChar, 100, Username),
									   data.MakeInParam("@sessionid",   SqlDbType.VarChar, 100, SessionID),
									   data.MakeInParam("@ActiveNodeID",   SqlDbType.Int, 4, ActiveNodeID),
									   data.MakeOutParam("@ReturnID", SqlDbType.Int, 4),
									   data.MakeOutParam("@NewMsgFlag", SqlDbType.Int, 4)
								   };
			try 
			{
				data.RunProc("SP_SMS_CheckUpdate",prams);
				ReturnID =  Int32.Parse(prams[3].Value.ToString()); 
				if(ReturnID==-1)
					NewMsgFlag = 0;
				else
					NewMsgFlag =  Int32.Parse(prams[4].Value.ToString()); 
				ReturnStr = ReturnID.ToString()+"|"+NewMsgFlag.ToString();
				data = null;
				return ReturnStr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("更新活动记录及检测未活动人员出错!",ex);
			}
			finally
			{
				data	   = null;
			}
		}

		/// <summary>
		/// 得到所有在线人员
		/// </summary>
		/// <returns></returns>
		public SqlDataReader GetOnlinePerson()
		{
			Database data = new Database();
			SqlDataReader dr = null;
			try 
			{
				data.RunProc("sp_SMS_GetOnlinePerson",out dr);
				return dr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("读取在线人员数据出错!",ex);
			}
			finally
			{
				data	   = null;
				dr		   = null;
			}
		}

		/// <summary>
		/// 得到聊天记录
		/// </summary>
		/// <returns></returns>
		public SqlDataReader GetHistory(string Receiver,string Sender)
		{
			Database data = new Database();
			SqlDataReader dr = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@Sender",    SqlDbType.VarChar, 50, Sender),
									   data.MakeInParam("@Receiver",   SqlDbType.VarChar, 50, Receiver)
								   };
			try 
			{
				data.RunProc("SP_SMS_GetHistory",prams,out dr);
				return dr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("得到聊天记录出错!",ex);
			}
			finally
			{
				data	   = null;
				dr		   = null;
			}
		}

		/// <summary>
		/// 得到我所接收的所有短信
		/// </summary>
		/// <returns></returns>
		public SqlDataReader GetMyReceive(string Username)
		{
			Database data = new Database();
			SqlDataReader dr = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@Username",    SqlDbType.VarChar, 50, Username)
								   };
			try 
			{
				data.RunProc("SP_SMS_GetMyAllMsg",prams,out dr);
				return dr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("得到我所接收的所有短信出错!",ex);
			}
			finally
			{
				data	   = null;
				dr		   = null;
			}
		}

		/// <summary>
		/// 得到我所发送的所有短信
		/// </summary>
		/// <returns></returns>
		public SqlDataReader GetMySent(string Username)
		{
			Database data = new Database();
			SqlDataReader dr = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@Username",    SqlDbType.VarChar, 50, Username)
								   };
			try 
			{
				data.RunProc("SP_SMS_GetMySent",prams,out dr);
				return dr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("得到我所接收的所有短信出错!",ex);
			}
			finally
			{
				data	   = null;
				dr		   = null;
			}

		}
		/// <summary>
		/// 得到某个人的最新一条消息
		/// </summary>
		/// <returns></returns>
		public SqlDataReader GetNewLocalMsg(string Username)
		{
			Database data = new Database();
			SqlDataReader dr = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@username",    SqlDbType.VarChar, 50, Username)
								   };
			try 
			{
				data.RunProc("sp_SMS_GetNewMsg",prams,out dr);
				return dr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("得到某个人的最新一条消息出错!",ex);
			}
			finally
			{
				data	   = null;
				dr		   = null;
			}
		}


		/// <summary>
		/// 发送站内短消息
		/// </summary>
		/// <param name="sender">发送者用户名</param>
		/// <param name="receivers">接受者用户名,可用逗号相隔多人</param>
		/// <param name="msg">短消息内容</param>
		/// <param name="sendtime">短消息发送时间</param>
		/// <returns>无返回值</returns>
		public void SendLocalMsg(string sender,string receivers,string msg,DateTime sendtime)
		{
			string newmsgid = "0";
			Database data = new Database();
			
			#region 存消息至数据库,返回MsgID
			SqlParameter[] prams1 = {
										data.MakeInParam("@sender",    SqlDbType.VarChar, 50, sender),
										data.MakeInParam("@content",   SqlDbType.VarChar, 255, msg),
										data.MakeInParam("@type",   SqlDbType.Int, 1, 1),	
										data.MakeInParam("@sendtime",   SqlDbType.DateTime, 30, sendtime),
										data.MakeOutParam("@newmsgid", SqlDbType.Int, 4)									
									};
			try 
			{
				data.RunProc("SP_SMS_SendLocalMsg",prams1);
				newmsgid =  prams1[4].Value.ToString();   
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("存消息至数据库出错!",ex);
			}
			#endregion

			#region 将消息与接收者关联
			SqlParameter[] prams2 = {
										data.MakeInParam("@MsgID",    SqlDbType.Int, 4, Int32.Parse(newmsgid)),
										data.MakeInParam("@Receivers",SqlDbType.VarChar, 5000, receivers),
										data.MakeInParam("@MobileNo",   SqlDbType.VarChar, 4, ""),	
										data.MakeInParam("@type",   SqlDbType.Int, 1, 1)
									};
			try 
			{
				data.RunProc("SP_SMS_SetMsgReceiver",prams2);
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("将消息与接收者关联出错!",ex);
			}
			#endregion


		}

	
		/// <summary>
		///  发站用户站内手机短消息
		/// </summary>
		/// <param name="Sender">发送者用户名</param>
		/// <param name="RecipientMobileNo">接受者手机号码,可用逗号相隔多人</param>
		/// <param name="Content">短消息内容</param>
		/// <param name="Sendtime">短消息发送时间</param>
		/// <param name="RepeatTimes">短消息重复发送次数</param>
		/// <param name="RepeatPeriod">重复发送周期,以分钟为单位</param>
		/// <returns>返回执行代码 1 正常 2 错误</returns>
		public static int SaveMobileMsgToBuffer(string Sender,string RecipientMobileNo,string Content,DateTime Sendtime,int RepeatTimes,int RepeatPeriod)
		{
			Database data = new Database();
			#region 存消息至数据库,返回MsgID
			SqlParameter[] prams1 = {
										data.MakeInParam("@Sender",    SqlDbType.VarChar, 50, Sender),
										data.MakeInParam("@RecipientMobileNo",   SqlDbType.VarChar, 255, RecipientMobileNo),
										data.MakeInParam("@Content",   SqlDbType.VarChar, 255, Content),	
										data.MakeInParam("@Sendtime",   SqlDbType.DateTime, 30, Sendtime),
										data.MakeInParam("@RepeatTimes", SqlDbType.Int, 4,RepeatTimes),
										data.MakeInParam("@RepeatPeriod", SqlDbType.Int, 4,RepeatPeriod)						
									};
			try 
			{
				data.RunProc("SP_SMS_SaveMobileMsgToBuffer",prams1);
				return 1;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("存消息至数据库出错!",ex);
			}
			#endregion

		}



		
		/// <summary>
		/// 发送短消息
		/// </summary>
		/// <param name="sender">发送者用户名</param>
		/// <param name="receivers">接受者用户名,可用逗号相隔多人</param>
		/// <param name="msg">短消息内容</param>
		/// <param name="type">短消息类型 1为站内消息 2为手机短信 3为站外手机(取mobileno)</param>
		/// <param name="sendtime">短消息发送时间</param>
		/// <param name="mobileno">如果是站外用户时用。表示站外用户的手机号</param>
		/// <param name="repeattimes">如果是手机短信时用。表示此条讯息的重复发送次数</param>
		/// <param name="repeattimes">如果是手机短信时用。表示此条讯息的重复发送时间间隔(以分钟为单位)</param>
		/// <returns>返回操作结束代码</returns>
		public int SendMsg(string sender,string recipients,string msg,int type,DateTime sendtime,string mobileno,int repeattimes,int repeatperiod)
		{
			int RtnCode = 1;
			//去除最后一位的逗号,并替换全角至半角
			if(recipients.EndsWith(",")) recipients = recipients.Substring(0,recipients.Length-1);
			recipients = recipients.Replace(",",",");
			
			switch (type)
			{
				case 1://站内用户的站内短信
					SendLocalMsg(sender,recipients,msg,sendtime);
					return RtnCode;
					
				case 2: //站内用户的手机短信
					string MobileNoStr = GetMobileNoByUsername(recipients);
					RtnCode =  SaveMobileMsgToBuffer(sender,MobileNoStr,msg,sendtime,repeattimes,repeatperiod);
					return RtnCode;
					
				case 3: //站外用户的手机短信
					RtnCode = SaveMobileMsgToBuffer(sender,mobileno,msg,sendtime,repeattimes,repeatperiod);
					return RtnCode;
					
				default:
					return RtnCode;
					
			}
			
			
			
		}

		#region 根据用户名字符串获取手机号码字符串
		/// <summary>
		/// 根据用户名字符串获取手机号码字符串
		/// <param name="Username">用户名字符串,用逗号相隔</param>
		/// <returns>返回手机字符串</returns>
		/// </summary>
		public string GetMobileNoByUsername(string Username)
		{
			string MobileNoStr = "";
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@UserNameStr",    SqlDbType.VarChar, 3000, Username),
									   data.MakeOutParam("@MobileNoStr", SqlDbType.VarChar, 3000)
								   };
			try 
			{
				data.RunProc("SP_SMS_GetMobileNoByUsername",prams);
				MobileNoStr =  prams[1].Value.ToString();   
				return MobileNoStr;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				throw new Exception("根据用户名字符串获取手机号码字符串出错!",ex);
			}
			finally
			{
				data	   = null;
			}
		}
		#endregion


		
		/// <summary>
		/// 删除一组短信
		/// </summary>
		/// <param name="MsgIDS">消息ID的连接字符串,用逗号相隔开</param>
		public bool MsgDelete(string MsgIDS)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@MsgIDS",   SqlDbType.VarChar,4000, MsgIDS)
								   };
			try
			{
				data.RunProc("SP_SMS_DelMsg",prams);
				data = null;
				return true;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return false;
			}

		}
		

	}
}

⌨️ 快捷键说明

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