Esempio n. 1
0
 /// <summary>
 /// 创建新用户
 /// </summary>
 /// <param name="card"></param>
 public static int  CreateUserVcard(UserVcard card)
 {
     string sql = "insert into Users(userID,userName,GroupID,orderID,sex,Password,FaceIndex,CreateRooms,isAdmin,isSendSMS,isEditUserData,isSendNotice,isBroadcast,Vcard)"
                  + "values(@userID,@userName,@GroupID,@orderID,@sex,@Password,@FaceIndex,@CreateRooms,@isAdmin,@isSendSMS,@isEditUserData,@isSendNotice,@isBroadcast,@Vcard)";
     System.Data.SqlClient.SqlParameter[] sqlpar = new System.Data.SqlClient.SqlParameter[]
                   { new System.Data.SqlClient.SqlParameter("@userID",card.UserID ),
                     new System.Data.SqlClient.SqlParameter("@userName",card.UserName ),
                     new System.Data.SqlClient.SqlParameter("@GroupID",card.GroupID ),
                     new System.Data.SqlClient.SqlParameter("@orderID",card.OrderID ),
                     new System.Data.SqlClient.SqlParameter("@sex", card.Sex),
                     new System.Data.SqlClient.SqlParameter("@Password", card.Password),
                     new System.Data.SqlClient.SqlParameter("@FaceIndex", card.FaceIndex),
                     new System.Data.SqlClient.SqlParameter("@CreateRooms", card.CreateRooms),
                     new System.Data.SqlClient.SqlParameter("@isAdmin", card.isAdmin),
                     new System.Data.SqlClient.SqlParameter("@isSendSMS", card.isSendSMS),
                     new System.Data.SqlClient.SqlParameter("@isEditUserData", card.isEditUserData),
                     new System.Data.SqlClient.SqlParameter("@isSendNotice", card.isSendNotice),
                     new System.Data.SqlClient.SqlParameter("@isBroadcast", card.isBroadcast),
                     new System.Data.SqlClient.SqlParameter("@Vcard",Factory.CreateXMLMsg(card)),
                   };
  return    IMLibrary.SqlData.DataAccess.ExecSql(sql, sqlpar);
 }
Esempio n. 2
0
 /// <summary>
 /// 更新用户信息
 /// </summary>
 /// <param name="card"></param>
 public static int  UpdateUserVcard(UserVcard card)
 {
     string sql = "update Users set userName=@userName,GroupID=@GroupID,orderID=@orderID,sex=@sex,Password=@Password,FaceIndex=@FaceIndex,"
     + "CreateRooms=@CreateRooms,isAdmin=@isAdmin,isSendSMS=@isSendSMS,isEditUserData=@isEditUserData,isSendNotice=@isSendNotice,isBroadcast=@isBroadcast,Vcard=@Vcard"
                + " where userID=@userID";
     System.Data.SqlClient.SqlParameter[] sqlpar = new System.Data.SqlClient.SqlParameter[]
                   { new System.Data.SqlClient.SqlParameter("@userID",card.UserID ),
                     new System.Data.SqlClient.SqlParameter("@userName",card.UserName ),
                     new System.Data.SqlClient.SqlParameter("@GroupID",card.GroupID ),
                     new System.Data.SqlClient.SqlParameter("@orderID",card.OrderID ),
                     new System.Data.SqlClient.SqlParameter("@sex", card.Sex),
                     new System.Data.SqlClient.SqlParameter("@Password", card.Password),
                     new System.Data.SqlClient.SqlParameter("@FaceIndex", card.FaceIndex),
                     new System.Data.SqlClient.SqlParameter("@CreateRooms", card.CreateRooms),
                     new System.Data.SqlClient.SqlParameter("@isAdmin", card.isAdmin),
                     new System.Data.SqlClient.SqlParameter("@isSendSMS", card.isSendSMS),
                     new System.Data.SqlClient.SqlParameter("@isEditUserData", card.isEditUserData),
                     new System.Data.SqlClient.SqlParameter("@isSendNotice", card.isSendNotice),
                     new System.Data.SqlClient.SqlParameter("@isBroadcast", card.isBroadcast),
                     new System.Data.SqlClient.SqlParameter("@Vcard",Factory.CreateXMLMsg(card)),
                   };
    return  IMLibrary.SqlData.DataAccess.ExecSql(sql, sqlpar);
 }
Esempio n. 3
0
 /// <summary>
 /// 从用户中获取加入的群集合数组
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 private Room[] GetRooms(UserVcard user)
 {
     lock (user.Rooms)//确保线程安全
     {
         Room[] Rooms = new Room[user.Rooms.Count];
         user.Rooms.Values.CopyTo(Rooms, 0);
         return Rooms;
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 从群中获取用户集合数组
 /// </summary>
 /// <param name="room"></param>
 /// <returns></returns>
 private UserVcard[] GetUsers(Room room)
 {
     lock (room.Users)//确保线程安全
     {
         UserVcard[] Users = new UserVcard[room.Users.Count];
         room.Users.Values.CopyTo(Users, 0);
         return Users;
     }
 }
Esempio n. 5
0
        private void onUserVcard(UserVcard  card)
        {
            if (frmUserVcard != null && !frmUserVcard.IsDisposed  && card.type == type.New)
                frmUserVcard.isUpdateSuccess = true;

            exUser user = findUser(card.UserID);//查找本地用户是否存在操作用户

            if (card.type == type.New && user == null)
            {
                user = new exUser();
                user.UserID = card.UserID;
                user.GroupID = card.GroupID;
                Users.Add(user);
                addUserTreeNode(user);//将用户节点添加到树
                user.UserName = card.UserName;
                OpeRecordDB.UpdateUserVcard(card);//添加到本地数据库
            }
            else if (card.type == type.delete && user != null)
            {
                TreeNode node = user.TreeNode as TreeNode;
                if (node != null && node.Parent != null)
                {
                    if (user.ShowType != IMLibrary3.Enmu.ShowType.Offline)
                        user.Group.OnLineUserCount -= 1;

                    user.Group.UserCount -= 1;

                    node.Parent.Nodes.Remove(node);//删除用户树节点
                    Form frm = user.Tag as Form;
                    if (frm != null && !frm.IsDisposed) { frm.Close(); frm.Dispose(); }//关闭用户对话窗口
                    Users.Remove(user);//删除用户
                    OpeRecordDB.DeleteUser(card.UserID);//本地数据库中删除
                }
            }
            else if (user != null)
            {
                FormUserVcard frm = getUserVcardForm(card.UserID);
                if (frm != null && !frm.IsDisposed)
                    if (card.type != type.set)
                        frm.UserVcard = card;
                    else
                        frm.isUpdateSuccess = true;
                user.UserName = card.UserName;
                OpeRecordDB.UpdateUserVcard(card);//更新本地数据库
            }
        }
Esempio n. 6
0
 private void TsmDelUser_Click(object sender, EventArgs e)
 {
     TreeNode node = treeView_Organization.SelectedNode;
     if (node != null && node.Tag is exUser)
     {
         exUser user = node.Tag as exUser;
         if (MessageBox.Show("确定要删除用户 " + user.UserName + "(" + user.UserID + ")吗?", "提示", 
             MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information ) == DialogResult.Yes)
         {
             UserVcard card = new UserVcard();
             card.UserID = user.UserID;
             card.UserName = user.UserName;
             card.GroupID = user.GroupID;
             card.type = type.delete;
             SendMessageToServer(card);//通知服务器删除用户
         }
     }
 }
Esempio n. 7
0
        /// <summary>
        /// 显示用户资料窗口
        /// </summary>
        /// <param name="user"></param>
        public void ShowUserVcard(exUser user)
        {
            FormUserVcard frm = getUserVcardForm(user.UserID);
            if (frm == null)
            {
                frm = new FormUserVcard();
                frmUserVcards.Add(user.UserID, frm);

                if (MyAuth.isAdmin)//如果是管理员,则添加更新事件
                    frm.UpdateVcard += delegate(object sender1, UserVcard userVcard)//更新事件
                    {
                        UpdateUser(userVcard);//更新用户资料
                    };
                else//如果不是管理员,则添加刷新事件
                    frm.RefreshVcard += delegate(object sender1, UserVcard userVcard)//刷新事件
                    {
                        //向服务器请求获得用户最新资料
                        userVcard.type = type.get;
                        SendMessageToServer(userVcard);
                    };

                frm.FormClosed += delegate(object sender1, FormClosedEventArgs e1)//窗口关闭事件
                {
                    frm.Dispose();
                    frmUserVcards.Remove(user.UserID);
                };

                frm.ChanagePassword += delegate(object sender2, ChangePassword e2)//密码修改事件
                {
                    if (!frm.isAdmin && e2.OldPassword != myPassword)
                    {
                        IMLibrary3.Global.MsgShow("旧密码不正确,请重新输入");
                        return;
                    }
                    SendMessageToServer((object)e2);
                };

                UserVcard card = OpeRecordDB.GetUserVcard(user.UserID);
                if (card == null)
                {
                    card = new UserVcard();
                    card.UserID = user.UserID;
                    card.UserName = user.UserName;
                    card.GroupID = user.GroupID;
                    card.OrderID = user.OrderID;

                    //向服务器请求获得用户最新资料
                    card.type = type.get;
                    SendMessageToServer(card);
                }
                frm.UserVcard = card;
            }

            if (MyAuth.isAdmin)//如果是管理员
                frm.Text = "修改 " + user.UserName + "(" + user.UserID + ")的资料";
            else
                frm.Text = "查看 " + user.UserName + "(" + user.UserID + ")的资料";

            frm.myUserID = MyAuth.UserID;
            frm.isAdmin = MyAuth.isAdmin;
            frm.IsCreate = false;
            frm.Show();
            frm.Activate ();
        }
Esempio n. 8
0
 /// <summary>
 /// 更新用户
 /// </summary>
 /// <param name="userVcard"></param>
 public void UpdateUser(UserVcard card)
 {
     card.type = type.set;
     SendMessageToServer(card);
 }
Esempio n. 9
0
 /// <summary>
 /// 创建新用户
 /// </summary>
 /// <param name="userVcard"></param>
 public void CreateUser(UserVcard card)
 {
     card.type = type.New;
     SendMessageToServer(card);
 }
Esempio n. 10
0
 /// <summary>
 /// 更新用户Card,无数据则添加
 /// </summary>
 /// <param name="card"></param>
 public static void UpdateUserVcard(UserVcard card)
 {
     string sql = "update Users set UserName=@UserName,GroupID=@GroupID,OrderID=@OrderID where UserID=@UserID;"
         +"update UsersVcard set Vcard=@Vcard,LastUpdateTime=@LastUpdateTime where UserID=@UserID";
     System.Data.SQLite.SQLiteParameter[] parameters = new System.Data.SQLite.SQLiteParameter[]{   
              new System.Data.SQLite.SQLiteParameter("@UserID",card.UserID ),   
              new System.Data.SQLite.SQLiteParameter("@UserName",card.UserName  ),   
              new System.Data.SQLite.SQLiteParameter("@GroupID",card.GroupID ),   
              new System.Data.SQLite.SQLiteParameter("@OrderID",card.OrderID ),   
              new System.Data.SQLite.SQLiteParameter("@Vcard",IMLibrary3.Protocol.Factory.CreateXMLMsg(card)),
              new System.Data.SQLite.SQLiteParameter("@LastUpdateTime",DateTime.Now),
     };
     if (SQLiteDBHelper.ExecuteNonQuery(sql, parameters) == 0)
     {
         sql = "insert into Users(UserID,UserName,GroupID,OrderID) values(@UserID,@UserName,@GroupID,@OrderID);" +
             "insert into UsersVcard(UserID,Vcard,LastUpdateTime) values(@UserID,@Vcard,@LastUpdateTime)";
         SQLiteDBHelper.ExecuteNonQuery(sql, parameters);
     }
 }
Esempio n. 11
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="Session">TCP客户端</param>
 /// <param name="XMLMsg">XML消息字符串</param>
 /// <param name="obj">消息转换的对像</param>
 /// <param name="RequestUser">请求用户</param>
 public MsgServerEventArgs(TCPServerSession Session, string XMLMsg, object obj, UserVcard RequestUser)
 {
     this.Session = Session;
     this.XMLMsg = XMLMsg;
     this.obj = obj;
     this.RequestUser = RequestUser;
 }
Esempio n. 12
0
        /// <summary>
        /// 管理员添加变更用户信息
        /// </summary>
        /// <param name="card"></param>
        /// <param name="xmlMsg"></param>
        /// <param name="session"></param>
        private void onUserVcard(UserVcard card, string xmlMsg, TCPServerSession session)
        {
            if (card.UserID.Trim() == "" || card.UserName.Trim() == "" || card.GroupID.Trim() == "") return;
            card.UserID = card.UserID.Trim();

            UserVcard user = getUser(card.UserID);
            UserVcard requestUser = session.Tag as UserVcard;//请求用户

            if (card.type == type.New && user == null && requestUser.isAdmin)//如果用户不存在,创建新用户
            {
                Users.Add(card.UserID, card);
                //设置新用户密码为123456;
                card.Password = IMLibrary3.Security.Hasher.GetMD5Hash(IMLibrary3.Operation.TextEncoder.textToBytes("123456"));

                DBHelper.CreateUserVcard(card);//保存于数据库
                orgVersion = DBHelper.ResetOrgVersion(); //重设组织架构版本相关信息

                BroadcastingMessageToOnlineUser(xmlMsg);//将创建的新用户信息广播给所有在线用户  
            }
            else if (card.type == type.set && requestUser.isAdmin)//如果是更新用户
            {
                if (user == null) return;//如果用户不存在则退出

                string oldInfo = user.UserName + user.GroupID + user.OrderID;//老信息
                string newInfo = card.UserName.Trim() + card.GroupID.Trim() + card.OrderID; //新信息

                user.UserName = card.UserName.Trim();
                user.GroupID = card.GroupID.Trim();
                user.OrderID = card.OrderID;
                user.Job = card.Job.Trim();
                user.OfficePhone = card.OfficePhone.Trim();
                user.Mail = card.Mail.Trim();
                user.Phone = card.Phone.Trim();
                user.Post = card.Post.Trim();
                user.Remark = card.Remark.Trim();
                user.Birthday = card.Birthday.Trim();
                user.Sex = card.Sex;
                user.CreateRooms = card.CreateRooms;
                user.Disable = card.Disable;
                user.isAdmin = card.isAdmin;
                user.isSendNotice = card.isSendNotice;
                user.isSendSMS = card.isSendSMS;

                DBHelper.UpdateUserVcard(user);//更新数据库
                if (oldInfo != newInfo)//如果用户基本信息发生变更,则变更组织架构
                    orgVersion = DBHelper.ResetOrgVersion(); //重设组织架构版本相关信息

                SendMessageToUser(requestUser, xmlMsg);//通知管理员创建新用户成功 
            }
            else if (card.type == type.get)//如果是获取用户资料
            {
                if (user == null) return;//如果用户不存在则退出
                user.type = type.result;
                SendMessageToUser(requestUser, Factory.CreateXMLMsg(user));//将用户资料发送给请求者
            }
            else if (card.type == type.delete && requestUser.isAdmin)//如果是删除用户
            {
                if (user == null) return;//如果用户不存在则退出
                if (requestUser.UserID == user.UserID) return;//如果管理员想删除自己,退出
                TCPServerSession se = user.Tag as TCPServerSession;
                if (se != null && se.IsConnected) { se.Disconnect(); se.Dispose(); }//如果删除的用户在线,则将其踢出
                Users.Remove(card.UserID);

                DBHelper.DelUser(card.UserID);//数据库中删除
                orgVersion = DBHelper.ResetOrgVersion(); //重设组织架构版本相关信息

                BroadcastingMessageToOnlineUser(xmlMsg);//将删除的用户广播给所有在线用户 
            }

        }
Esempio n. 13
0
        /// <summary>
        /// 用户请求更新密码
        /// </summary>
        /// <param name="changePWD">变量密码协议</param>
        /// <param name="requestUser">请求用户</param>
        private void onChangePassword(ChangePassword changePWD, string XMLMsg, UserVcard requestUser)
        {
            if (changePWD.NewPassword.Trim() == "") return;

            UserVcard user = getUser(changePWD.from);
            if (user == null) return;

            ///将密码Hash为MD5 
            changePWD.OldPassword = IMLibrary3.Security.Hasher.GetMD5Hash(IMLibrary3.Operation.TextEncoder.textToBytes(changePWD.OldPassword.Trim()));
            changePWD.NewPassword = IMLibrary3.Security.Hasher.GetMD5Hash(IMLibrary3.Operation.TextEncoder.textToBytes(changePWD.NewPassword.Trim()));

            if (requestUser.isAdmin || changePWD.OldPassword == user.Password)//如果用户是管理员
            {
                if (DBHelper.UpdatePassword(user.UserID, changePWD.NewPassword) > 0)//更新密码
                {
                    user.Password = changePWD.NewPassword;
                    SendMessageToUser(requestUser, XMLMsg);//通知用户更新密码成功  
                }
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 将所有数据库中用户详细信息读入内存
        /// </summary>
        /// <returns></returns>
        public static Dictionary<string, UserVcard> GetUserVcards()
        {
            Dictionary<string, UserVcard> users = new Dictionary<string, UserVcard>();
            System.Data.SqlClient.SqlDataReader dr = DataAccess.GetReaderBySql("select * from users");
            if (dr != null)
            {
                while (dr.Read())
                {
                    UserVcard user = new UserVcard();

                    user.UserID = dr["UserID"].ToString().Trim();
                    user.UserName = dr["UserName"] is DBNull ? user.UserID : dr["UserName"].ToString().Trim();
                    user.Password = dr["Password"] is DBNull ? "E10ADC3949BA59ABBE56E057F20F883E" : dr["Password"].ToString().Trim();//123456
                    user.Sex = Convert.ToByte(dr["Sex"] is DBNull ? 0 : dr["Sex"]);
                    user.FaceIndex = Convert.ToInt32(dr["FaceIndex"] is DBNull ? 0 : dr["FaceIndex"]);
                    user.GroupID = dr["GroupID"] is DBNull ? "" : dr["GroupID"].ToString().Trim();
                    user.OrderID = Convert.ToInt32(dr["OrderID"] is DBNull ? 0 : dr["OrderID"]);
                    user.isAdmin = Convert.ToBoolean(dr["isAdmin"] is DBNull ? false : dr["isAdmin"]);
                    user.isBroadcast = Convert.ToBoolean(dr["isBroadcast"] is DBNull ? false : dr["isBroadcast"]);
                    user.isEditUserData = Convert.ToBoolean(dr["isEditUserData"] is DBNull ? false : dr["isEditUserData"]);
                    user.isSendNotice = Convert.ToBoolean(dr["isSendNotice"] is DBNull ? false : dr["isSendNotice"]);
                    user.isSendSMS = Convert.ToBoolean(dr["isSendSMS"] is DBNull ? false : dr["isSendSMS"]);
                    user.CreateRooms = Convert.ToInt32(dr["CreateRooms"] is DBNull ? 0 : dr["CreateRooms"]);
                    user.LastIP = dr["LastIP"] is DBNull ? "" : dr["LastIP"].ToString().Trim();
                    user.LastDateTime = dr["LastDateTime"] is DBNull ? "" : dr["LastDateTime"].ToString().Trim();
                    string cardstring = dr["Vcard"] is DBNull ? "<x x=\"\"/>" : dr["Vcard"].ToString().Trim();
                    UserVcard card = Factory.CreateInstanceObject(cardstring) as UserVcard;//鸡生蛋还是蛋生鸡?肯定有一个在前:)
                    if (card != null)//扩展资料,可以添加很多
                    {
                        user.Mail = card.Mail;
                        user.OfficePhone = card.OfficePhone;
                        user.Phone = card.Phone;
                        user.Post = card.Post;
                        user.Remark = card.Remark;
                        user.Job = card.Job;
                        user.Birthday = card.Birthday;
                    }
                    users.Add(user.UserID, user);
                }
                dr.Close();
            }
            dr.Dispose();
            return users;
        }