static void Main(string[] args) { // 当 Code First 与数据库结构不一致时 // 自动升级到最新的版本. Database.SetInitializer(new MigrateDatabaseToLatestVersion <MyChatRoomContext, MyChatRoom.Migrations.Configuration>()); using (MyChatRoomContext context = new MyChatRoomContext()) { var query = from data in context.ChatRoomHouses select data; foreach (var house in query) { Console.WriteLine(house.HouseID); } } Console.WriteLine("Finish!"); Console.ReadLine(); }
public List <ChatRoomMessage> GetMyChatRoomMessageList(string houseID, long userID, string userNickName) { using (MyChatRoomContext context = new MyChatRoomContext()) { // 只查询 最近2小时的数据. DateTime minDateTime = DateTime.Now.AddHours(-2); var query = from data in context.ChatRoomMessages .Include("MessageSender.UserLevel").Include("ReplyMessage") where // 有效数据. data.Status == ChatRoomMessage.STATUS_IS_ACTIVE // 指定房间. && data.HouseID == houseID // 点对点消息. && data.MessageReceiverId != null && ( // 我发送的消息. (data.MessageSenderId == userID && data.MessageSenderNickName == userNickName) || // 或者是我接收的消息. (data.MessageReceiverId == userID && data.MessageReceiverNickName == userNickName) ) && data.LastUpdateTime > minDateTime select data; // 查询. List <ChatRoomMessage> resultList = query.ToList(); // 返回. return(resultList); } }
/// <summary> /// 取得房间信息. /// </summary> /// <param name="houseCode"></param> /// <returns></returns> public ChatRoomHouse GetChatRoomHouse(string houseCode) { using (MyChatRoomContext context = new MyChatRoomContext()) { ChatRoomHouse result = context.ChatRoomHouses.Include("HousePageData").FirstOrDefault(p => p.HouseID == houseCode); return(result); } }
/// <summary> /// 取得用户. /// </summary> /// <param name="userName"></param> /// <returns></returns> public ChatRoomUser GetChatRoomUserByName(string userName) { using (MyChatRoomContext context = new MyChatRoomContext()) { // 检查 用户. ChatRoomUser user = context.ChatRoomUsers.Include("UserLevel").FirstOrDefault(p => p.UserName == userName); // 返回. return(user); } }
/// <summary> /// 取得用户类型. /// </summary> /// <param name="code"></param> /// <returns></returns> public ChatRoomUserLevel GetChatRoomUserLevelByCode(string code) { using (MyChatRoomContext context = new MyChatRoomContext()) { // 检查 用户等级. ChatRoomUserLevel userLevel = context.ChatRoomUserLevels.FirstOrDefault(p => p.UserLevelCode == code); // 返回. return(userLevel); } }
/// <summary> /// 创建或更新用户 /// </summary> /// <param name="userData"></param> /// <param name="resultMsg"></param> /// <returns></returns> public bool InsertOrUpdateChatRoomUser(ChatRoomUser userData, ref string resultMsg) { try { using (MyChatRoomContext context = new MyChatRoomContext()) { // 先判断本次操作, 是插入, 还是更新. ChatRoomUser dbUserData = context.ChatRoomUsers.Find(userData.UserID); if (dbUserData == null) { // 插入. context.ChatRoomUsers.Add(userData); } else { // 更新. // 昵称. dbUserData.UserNickName = userData.UserNickName; // 等级. dbUserData.UserLevelCode = userData.UserLevelCode; // 头像. dbUserData.UserPhoto = userData.UserPhoto; } context.SaveChanges(); } return(true); } catch (System.Data.Entity.Validation.DbEntityValidationException dbErr) { foreach (var errItem in dbErr.EntityValidationErrors) { foreach (var err in errItem.ValidationErrors) { logger.InfoFormat("{0} : {1}", err.PropertyName, err.ErrorMessage); } } logger.Error(dbErr.Message, dbErr); resultMsg = dbErr.Message; return(false); } catch (Exception ex) { logger.Error(ex.Message, ex); resultMsg = ex.Message; return(false); } }
/// <summary> /// 取得用户. /// </summary> /// <param name="userName"></param> /// <returns></returns> public ChatRoomUser GetChatRoomUser(long userID) { using (MyChatRoomContext context = new MyChatRoomContext()) { // 检查 用户. ChatRoomUser user = context.ChatRoomUsers.Find(userID); // 返回. return(user); } }
/// <summary> /// 取得房间列表. /// </summary> /// <returns></returns> public List <ChatRoomHouse> GetChatRoomHouseList() { using (MyChatRoomContext context = new MyChatRoomContext()) { var query = from data in context.ChatRoomHouses select data; var resultList = query.ToList(); return(resultList); } }
/// <summary> /// 视频直播室房间列表. /// </summary> /// <returns></returns> public List <ChatRoomHouse> GetVideoChatRoomHouseList() { using (MyChatRoomContext context = new MyChatRoomContext()) { var query = from data in context.ChatRoomHouses where data.MediaType == HouseMediaType.VideoChatRoom select data; var resultList = query.ToList(); return(resultList); } }
public ChatRoomMessage GetChatRoomMessage(long msgId) { using (MyChatRoomContext context = new MyChatRoomContext()) { var query = from data in context.ChatRoomMessages .Include("MessageSender.UserLevel").Include("ReplyMessage") where data.MessageID == msgId && data.Status == ChatRoomMessage.STATUS_IS_ACTIVE select data; ChatRoomMessage result = query.FirstOrDefault(); return(result); } }
public bool Login(string userName, string password, ref string resultMsg) { // 用户名, 去空格,小写. userName = userName.Trim().ToLower(); using (MyChatRoomContext context = new MyChatRoomContext()) { // 检查 用户. ChatRoomUser user = context.ChatRoomUsers.FirstOrDefault(p => p.UserName == userName); if (user == null) { if (logger.IsInfoEnabled) { logger.InfoFormat("用户 {0} 不存在!", userName); } resultMsg = "用户名或密码不正确?"; // 用户不存在. return(false); } string key = String.Format(KeyWord, userName, password); string pass = SHA512Process.GetSHA512String(key); if (user.UserPassword != pass) { if (logger.IsInfoEnabled) { logger.InfoFormat("用户 {0} 登录,密码 {1} 输入错误!", userName, password); } resultMsg = "用户名或密码不正确!"; // 密码错误. return(false); } return(true); } }
public bool RefuseMessage(long messageID, string user, string ip, ref string resultMsg) { bool result = false; try { using (MyChatRoomContext context = new MyChatRoomContext()) { ChatRoomMessage message = context.ChatRoomMessages.Find(messageID); if (message == null) { resultMsg = String.Format("消息 {0} 不存在!", messageID); return(result); } message.AuditingBy = user; message.AuditingIp = ip; message.AuditingRefuse(); message.BeforeUpdateOperation(user); // 物理保存. context.SaveChanges(); // 如果能执行到这里, 认为处理成功. result = true; } } catch (Exception ex) { logger.Error(ex.Message, ex); result = false; resultMsg = ex.Message; } return(result); }
public List <ChatRoomMessage> GetChatRoomMessageList(string houseID, string auditingFlag = null, long lastID = 0, int lastN = 50, int nearMin = 120) { using (MyChatRoomContext context = new MyChatRoomContext()) { // 只查询 最近2小时的数据. DateTime minDateTime = DateTime.Now.AddMinutes(-1 * nearMin); var query = from data in context.ChatRoomMessages .Include("MessageSender.UserLevel").Include("ReplyMessage") where // 有效数据. data.Status == ChatRoomMessage.STATUS_IS_ACTIVE // 指定房间. && data.HouseID == houseID // 时间范围. && data.LastUpdateTime > minDateTime // 仅仅获取 全部的消息,忽略点对点消息。 // && data.MessageReceiverId == null select data; // 最近一条消息. if (lastID > 0) { ChatRoomMessage lastData = context.ChatRoomMessages.Find(lastID); if (lastData != null) { // 最近一条数据存在. DateTime lastDateTime = lastData.LastUpdateTime; query = query.Where(p => p.LastUpdateTime >= lastDateTime && p.MessageID != lastID); } } // 审核标志. if (auditingFlag != null) { query = query.Where(p => p.AuditingFlag == auditingFlag); } // 创建时间逆序. query = query.OrderByDescending(p => p.LastUpdateTime); // 查询. List <ChatRoomMessage> resultList = query.Take(lastN).ToList(); // 顺序反转. // 查询的时候, 是时间逆序, 取前 lastN 行. // 但是显示的时候, 还是需要 旧的消息放上面, 新的消息放下面. resultList.Reverse(); return(resultList); } }
/// <summary> /// 创建一个消息. /// </summary> /// <param name="message"></param> /// <param name="resultMsg"></param> /// <returns></returns> public bool CreateNewMessage(ChatRoomMessage message, ref string resultMsg) { bool result = false; try { using (MyChatRoomContext context = new MyChatRoomContext()) { // 检查 发消息用户. ChatRoomUser user = context.ChatRoomUsers.Find(message.MessageSenderId); if (user == null) { resultMsg = String.Format("用户 {0} 不存在!", message.MessageSenderId); return(result); } if (user.IsGag) { resultMsg = String.Format("用户 {0} 已经被禁言!", user.UserName); return(result); } // 如果指定了 接受者, 那么检查是否存在. if (message.MessageReceiverId != null) { ChatRoomUser userTo = context.ChatRoomUsers.Find(message.MessageReceiverId); if (userTo == null) { resultMsg = String.Format("用户 {0} 不存在!", message.MessageReceiverId); return(result); } } // 如果指定了 回复消息。 检查 回复消息是否存在. if (message.ReplyMessageId != null) { ChatRoomMessage replyMessag = context.ChatRoomMessages.Find(message.ReplyMessageId.Value); if (replyMessag == null) { resultMsg = String.Format("回复的消息 {0} 不存在!", message.ReplyMessageId); return(result); } // 填写回复的 用户ID 与 昵称. message.MessageReceiverId = replyMessag.MessageSenderId; message.MessageReceiverNickName = replyMessag.MessageSenderNickName; } // 获取消息发送的房间. var house = context.ChatRoomHouses.Find(message.HouseID); if (house == null) { resultMsg = String.Format("直播室房间 {0} 不存在!", message.HouseID); return(result); } // 判断指定房间, 消息是否需要审核. if (house.IsChatRoomMessageAutoPass) { // 直播室房间, 自动审核通过. message.AuditingPass(); message.AuditingIp = "-"; message.AuditingBy = "AUTO"; } else { // 直播室房间, 要求审核. // 检查用户的属性. if (user.IsAutoPass) { // 帐户能够直接审核通过. message.AuditingPass(); message.AuditingIp = "-"; message.AuditingBy = "AUTO"; } else { // 待审核. message.AuditingFlag = "WAIT"; } } // 发送者头像, 按照用户等级来处理. message.MessageSenderPhoto = "/images/level/" + user.UserLevel.UserLevelIcon; // 发信人昵称. if (String.IsNullOrEmpty(message.MessageSenderNickName)) { message.MessageSenderNickName = user.UserNickName; } // 当前时间 - 两条短消息之间的间隔 秒数. DateTime disableTime = DateTime.Now.AddSeconds(-1 * TwoMessageSecondLimit); // 两条短消息之间的间隔 秒数. var prevMessageQuery = from data in context.ChatRoomMessages where // 同一 发送人. data.MessageSenderId == message.MessageSenderId && data.MessageSenderNickName == message.MessageSenderNickName // 仅仅判断今天的. && data.CreateTime > disableTime orderby data.CreateTime descending select data; if (prevMessageQuery.Count() > 0) { // 存在有重复提交的情况. resultMsg = "您消息发送得太频繁了......"; return(result); } message.BeforeInsertOperation("Web"); // 插入. context.ChatRoomMessages.Add(message); // 物理保存. context.SaveChanges(); // 如果能执行到这里, 认为处理成功. result = true; } } catch (System.Data.Entity.Validation.DbEntityValidationException dbErr) { logger.Info(message); foreach (var errItem in dbErr.EntityValidationErrors) { foreach (var err in errItem.ValidationErrors) { logger.InfoFormat("{0} : {1}", err.PropertyName, err.ErrorMessage); } } logger.Error(dbErr.Message, dbErr); result = false; resultMsg = dbErr.Message; } catch (Exception ex) { logger.Error(ex.Message, ex); result = false; resultMsg = ex.Message; } return(result); }