public async Task <IActionResult> GoTopicDisable(int id, bool isDisable) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); var topic = await _uf.TopicRepository.GetByIdAsync(id); if (topic == null) { data.IsOk = false; data.Msg = "找不到指定的帖子"; return(Json(data)); } if (!userInfo.Roles.Equals("SuperAdmin", StringComparison.OrdinalIgnoreCase)) { if (!userInfo.Roles.Equals("Admin", StringComparison.OrdinalIgnoreCase) || !await _uf.BBSRepository.IsExistAsync(x => x.Id == topic.BbsId && x.UserId == userInfo.Id)) { data.IsOk = false; data.Msg = "您没有屏蔽此贴的权限"; return(Json(data)); } } topic.TopicStatus = isDisable ? TopicStatus.Disabled : TopicStatus.Normal; _uf.TopicRepository.Update(topic); await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> RemoveBBS(int id) { var data = new MoData(); var bbs = await _uf.BBSRepository.GetByIdAsync(id); if (bbs == null) { data.IsOk = false; data.Msg = "找不到该论坛编号"; return(Json(data)); } _uf.BBSRepository.Delete(bbs); var result = await _uf.SaveChangesAsync(); if (result <= 0) { data.IsOk = false; data.Msg = "删除该论坛失败"; return(Json(data)); } data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> DeleteChildReply(int id) { var data = new MoData(); var childReply = await _uf.ReplyUserRepository.GetByIdAsync(id); if (childReply == null) { data.IsOk = false; data.Msg = "找不到指定的评论"; return(Json(data)); } if (childReply.ReplyType == ReplyType.Image) { //var path = RootConfiguration.Root + Path.DirectorySeparatorChar + childReply.Message.Substring(6).Replace('/', Path.DirectorySeparatorChar); //if (System.IO.File.Exists(path)) //{ // System.IO.File.Delete(path); //} DeleteImg(childReply.Message); } _uf.ReplyUserRepository.Delete(childReply); await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> GoUserStar(int id, bool isStar) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); if (userInfo.Id == id) { data.IsOk = false; data.Msg = "你不能关注你自己"; return(Json(data)); } var user = await _uf.UserRepository.GetByIdAsync(id); if (user == null) { data.IsOk = false; data.Msg = "找不到指定的用户"; return(Json(data)); } var userStar = await _uf.UserStarRepository.GetAsync(x => x.StarUserId == user.Id && x.UserId == userInfo.Id); if (isStar) { // 关注 if (userStar != null) { data.IsOk = false; data.Msg = $"你已经关注{user.UserName}"; return(Json(data)); } var newUserStar = new UserStar { StarUserId = user.Id, UserId = userInfo.Id }; await _uf.UserStarRepository.InsertAsync(newUserStar); } else { // 取消关注 if (userStar == null) { data.IsOk = false; data.Msg = $"你还没有关注{user.UserName}"; return(Json(data)); } _uf.UserStarRepository.Delete(userStar); } await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> GetTopicContent(int id, int page) { var data = new MoData(); var topic = await _uf.TopicRepository.GetAsync(x => x.Id == id && x.TopicStatus != TopicStatus.Disabled); if (topic == null) { data.IsOk = false; data.Msg = "帖子丢失啦~~~"; return(Json(data)); } var replys = await _uf.ReplyRepository.GetTopicReplyAsync(id, topic.UserId, page, 20); if (replys == null && replys.PageData != null) { data.IsOk = false; } else { data.IsOk = true; data.Data = replys; } return(Json(data)); }
public async Task <IActionResult> GoUserDisable(int id, bool isDisable) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); if (userInfo.Id == id) { data.IsOk = false; data.Msg = "你不能禁用你自己"; return(Json(data)); } var user = await _uf.UserRepository.GetByIdAsync(id); if (user == null) { data.IsOk = false; data.Msg = "找不到指定的用户"; return(Json(data)); } if (isDisable) { // 禁用 if (user.UserStatus == UserStatus.禁用) { data.IsOk = false; data.Msg = "该用户已被禁用"; return(Json(data)); } user.UserStatus = UserStatus.禁用; } else { // 取消禁用 if (user.UserStatus != UserStatus.禁用) { data.IsOk = false; data.Msg = "该用户未被禁用"; return(Json(data)); } user.UserStatus = UserStatus.启用; } _uf.UserRepository.Update(user); if (await _uf.SaveChangesAsync() > 0) { data.IsOk = true; } else { data.IsOk = false; data.Msg = "禁用失败,请稍后再试"; } return(Json(data)); }
public async Task <IActionResult> GoTopicTop(int id, bool isTop) { var data = new MoData(); var topic = await _uf.TopicRepository.GetByIdAsync(id); if (topic == null) { data.IsOk = false; data.Msg = "找不到指定的帖子"; return(Json(data)); } HttpContext.TryGetUserInfo(out var userInfo); if (!userInfo.Roles.Equals("SuperAdmin", StringComparison.OrdinalIgnoreCase)) { if (!(await _uf.BBSRepository.IsExistAsync(x => x.Id == topic.BbsId && x.UserId == userInfo.Id))) { data.IsOk = false; data.Msg = "您不是该版块的版主,无法进行此操作"; return(Json(data)); } } if (topic.TopicStatus == TopicStatus.Disabled) { data.IsOk = false; data.Msg = "该帖子目前处于屏蔽状态,无法操作"; return(Json(data)); } if (isTop) { if (topic.TopicStatus == TopicStatus.Top) { data.IsOk = false; data.Msg = "该帖子已被置顶,请勿反复操作"; return(Json(data)); } topic.TopicStatus = TopicStatus.Top; } else { if (topic.TopicStatus == TopicStatus.Normal) { data.IsOk = false; data.Msg = "该帖子未被置顶,请勿仿佛操作"; return(Json(data)); } topic.TopicStatus = TopicStatus.Normal; } _uf.TopicRepository.Update(topic); await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> DeleteTopic(int id) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); var topic = await _uf.TopicRepository.GetByIdAsync(id); if (topic == null) { data.IsOk = false; data.Msg = "找不到指定的帖子"; return(Json(data)); } if (userInfo.Id != topic.UserId) { if (!userInfo.Roles.Equals("SuperAdmin", StringComparison.OrdinalIgnoreCase)) { var bbs = await _uf.BBSRepository.GetByIdAsync(topic.BbsId); if (bbs.UserId != userInfo.Id) { data.IsOk = false; data.Msg = "您没有删除此贴的权限"; return(Json(data)); } } } var separator = Path.DirectorySeparatorChar; var path = RootConfiguration.Root + separator + _mapSetting.UpContentPhotoPath.Replace("\\", $"{separator}") + separator + topic.Id; if (Directory.Exists(path)) { Directory.Delete(path, true); } var replies = await _uf.ReplyRepository.GetAllAsync(x => x.TopicId == topic.Id); foreach (var reply in replies) { JiebaLucene.Instance.Delete(reply.Id.ToString()); } _uf.TopicRepository.Delete(topic); if (await _uf.SaveChangesAsync() > 0) { data.IsOk = true; } else { data.IsOk = false; data.Msg = "删除失败,请稍后再试"; } return(Json(data)); }
public async Task <IActionResult> GetUserTopicCount(int userId) { var data = new MoData { Data = (await _uf.TopicRepository .GetAllAsync(x => x.UserId == userId)) .Count(), IsOk = true }; return(Json(data)); }
public async Task <IActionResult> GetUserReplyCount(int userId) { var data = new MoData { Data = (await _uf.ReplyRepository .GetAllAsync(x => x.UserId == userId && x.ReplyIndex != 0)) .Count(), IsOk = true }; return(Json(data)); }
public async Task <IActionResult> DeleteAdmin(int id) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); using (var trans = _uf.BeginTransaction()) { try { var bbs = await _uf.BBSRepository.GetAsync(x => x.UserId == id); if (bbs == null) { data.IsOk = false; return(Json(data)); } bbs.UserId = userInfo.Id; _uf.BBSRepository.Update(bbs); var role = await _uf.RoleRepository.GetAsync(x => x.RoleName.Equals("User", StringComparison.OrdinalIgnoreCase)); var userRole = await _uf.UserToRoleRepository.GetAsync(x => x.UserId == id); userRole.RoleId = role.Id; _uf.UserToRoleRepository.Update(userRole); if (await _uf.SaveChangesAsync() > 0) { data.IsOk = true; } else { data.IsOk = false; } trans.Commit(); } catch (Exception ex) { trans.Rollback(); _logger.LogError(id, $"撤销版主失败-{ex.Message}:{DateTime.Now.ToStandardFormatString()}"); _uf.SaveChanges(); data.IsOk = false; } } return(Json(data)); }
public async Task <IActionResult> GetUserDisable(int page) { var data = new MoData(); page = page > 1 ? page : 1; data.Data = (await _uf.UserRepository.GetAllAsync(x => x.UserStatus == UserStatus.禁用)) .OrderByDescending(x => x.Id) .Skip((page - 1) * 50) .Take(50) .Select(x => new { Id = x.Id, Email = x.Email, UserName = x.UserName }) .ToList(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> GetTopics(int id, int page = 1) { var data = new MoData(); var topics = await _uf.TopicRepository.GetLatelyTopicsAsync(page, 15, true, id); if (topics == null && !topics.Topics.Any()) { data.IsOk = false; } else { data.IsOk = true; data.Data = topics; } return(Json(data)); }
private MoData GetData(string baseName) { if (!_moDatum.TryGetValue(baseName, out MoData database)) { var path = Path.Combine(TextFolder, baseName + ".mo"); if (!File.Exists(path)) { return(null); } database = MoData.ReadFrom(path); _moDatum.Add(baseName, database); } return(database); }
public async Task <IActionResult> GetTopicsDisabled(int page, int?id) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); if (id == null) { if (!userInfo.Roles.Equals("SuperAdmin", StringComparison.OrdinalIgnoreCase)) { data.IsOk = false; data.Msg = "您不是超级管理员"; return(Json(data)); } data.Data = (await _uf.TopicRepository.GetAllAsync(x => x.TopicStatus == TopicStatus.Disabled)) .Join(await _uf.UserRepository.GetAllAsync(), t => t.UserId, u => u.Id, (t, u) => new MoTopicDisabled { TopicId = t.Id, TopicName = t.TopicName, UserId = u.Id, UserName = u.UserName, CreateTime = t.CreateTime.ToStandardFormatString() }); } else { if (!userInfo.Roles.Equals("Admin") || !await _uf.BBSRepository.IsExistAsync(x => x.Id == id)) { data.IsOk = false; data.Msg = "您没有对该版块的管理权限"; return(Json(data)); } data.Data = (await _uf.TopicRepository.GetAllAsync(x => x.BbsId == id && x.TopicStatus == TopicStatus.Disabled)) .Join(await _uf.UserRepository.GetAllAsync(), t => t.UserId, u => u.Id, (t, u) => new MoTopicDisabled { TopicId = t.Id, TopicName = t.TopicName, UserId = u.Id, UserName = u.UserName, CreateTime = t.CreateTime.ToStandardFormatString() }); } data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> ModifyAdmin(int id, int bbsId) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); var admin = await _uf.UserRepository.GetByIdAsync(id); if (admin == null) { data.IsOk = false; data.Msg = "找不到指定的用户"; return(Json(data)); } var bbs = await _uf.BBSRepository.GetByIdAsync(bbsId); var originBbs = await _uf.BBSRepository.GetAsync(x => x.UserId == id); if (bbs == null) { data.IsOk = false; data.Msg = "找不到指定的版块"; return(Json(data)); } if (originBbs != null) { originBbs.UserId = userInfo.Id; _uf.BBSRepository.Update(originBbs); } if (bbs.UserId != userInfo.Id) { data.IsOk = false; data.Msg = "一个版块只能有一个版主,该版块已经有其它版主了"; return(Json(data)); } bbs.UserId = id; _uf.BBSRepository.Update(bbs); await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> SendQuestion(string message) { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); string url = $"http://www.tuling123.com/openapi/api?key=d62fe8c1764648d8a5b5633b816454a6&info={message}&userid={userInfo.Id}"; string responseResult = await RequestApi(url, Encoding.UTF8); if (responseResult == String.Empty) { data.IsOk = false; return(Json(data)); } data.Data = JsonConvert.DeserializeObject(responseResult); data.IsOk = true; return(Json(data)); async Task <string> RequestApi(string apiUrl, Encoding encoding) { string result = String.Empty; try { WebRequest request = WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; // 默认身份验证 request.Timeout = 10000; request.Method = "POST"; WebResponse response = await request.GetResponseAsync(); using (var reader = new StreamReader(response.GetResponseStream(), encoding)) { result = await reader.ReadToEndAsync(); } } catch { return(String.Empty); } return(result); } }
public async Task <IActionResult> GetTopicStarLog(int id, int page, int pageSize = 5) { var data = new MoData(); page = page <= 0 ? 1 : page; var pageData = await _uf.TopicStarRepository.GetTopicStarListAsync(id, page, pageSize); if (pageData.PageData != null) { data.Data = pageData; data.IsOk = true; } else { data.IsOk = false; } return(Json(data)); }
public async Task <IActionResult> GetChildReply(int id, int index, int page, int pageSize) { var data = new MoData(); var topic = await _uf.TopicRepository.GetByIdAsync(id); MoPageData pageData = await _uf.ReplyUserRepository.GetChildReplyAsync(id, topic.UserId, index, page, pageSize); if (pageData.PageData != null) { data.Data = pageData; data.IsOk = true; } else { data.IsOk = false; } return(Json(data)); }
public async Task <IActionResult> GetRecommends() { var data = new MoData(); try { var key = "recommends"; List <MoRecommend> recommends; recommends = _cache.Get <List <MoRecommend> >(key); if (recommends == null || recommends.Count == 0) { using (_uf) { recommends = (await _uf.TopicRepository.GetRecommends(5)); if (recommends != null && recommends.Count > 0) { data.Data = recommends; data.IsOk = true; _cache.Set <List <MoRecommend> >(key, recommends, TimeSpan.FromDays(1)); } else { data.IsOk = false; } } } else { data.IsOk = true; data.Data = recommends; } } catch (Exception ex) { data.IsOk = false; _logger.LogError(0, $"在{nameof(HomeController)}.{nameof(GetRecommends)}中,{ex.Message}"); } return(Json(data)); }
public async Task <IActionResult> DeleteReply(int id) { var data = new MoData(); var reply = await _uf.ReplyRepository.GetByIdAsync(id); if (reply == null) { data.IsOk = false; data.Msg = "找不到指定的评论"; return(Json(data)); } if (reply.ReplyType == ReplyType.Image) { DeleteImg(reply.Message); } var childReplies = await _uf.ReplyUserRepository.GetAllAsync(x => x.TopicId == reply.TopicId && x.ReplyIndex == reply.ReplyIndex); if (childReplies != null && childReplies.Any()) { foreach (var childReply in childReplies) { if (childReply.ReplyType == ReplyType.Image) { DeleteImg(childReply.Message); } } _uf.ReplyUserRepository.DeleteRange(childReplies); } _uf.ReplyRepository.Delete(reply); // 删除索引 JiebaLucene.Instance.Delete(reply.Id.ToString()); await _uf.SaveChangesAsync(); data.IsOk = true; return(Json(data)); }
public JsonResult GetLoginInfo() { var data = new MoData(); if (!HttpContext.TryGetUserInfo(out var userInfo)) { data.IsOk = false; data.Msg = "找不到该账号,请重新登录"; return(Json(data)); } if (userInfo.UserStatus == (int)UserStatus.禁用) { data.IsOk = false; data.Msg = "该账号已被禁用"; } data.Data = userInfo; data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> GetSearchResult(string query, int searchType, int page = 1) { var data = new MoData(); // int转枚举型失败不会抛出异常,用default捕获 switch ((SearchType)searchType) { case SearchType.Topic: { var topics = await _uf.TopicRepository.GetTopicSearchAsync(query, page, 15); if (topics != null && topics.PageData != null) { data.Data = topics; data.IsOk = true; } else { data.IsOk = false; } break; } case SearchType.User: { var users = await _uf.UserRepository.GetUserSearchAsync(query, page, 15); if (users != null && users.PageData != null) { data.Data = users; data.IsOk = true; } else { data.IsOk = false; } break; } case SearchType.Content: { try { var(contents, totalCount) = await JiebaLucene.Instance.Search(query, page, 15); if (contents == null || totalCount == 0) { data.IsOk = false; } else { data.Data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0, NextPage = page < ((totalCount + 14) / 15) ? page + 1 : 0, PageTotal = totalCount, PageData = contents }; data.IsOk = true; } } catch (Exception ex) { data.IsOk = false; } break; } default: data.IsOk = false; break; } return(Json(data)); }
public async Task <IActionResult> GetChatHistory(int targetUserId, bool isHistory, string nowTime = "") { var data = new MoData(); HttpContext.TryGetUserInfo(out var userInfo); if (targetUserId == userInfo.Id) { data.IsOk = false; return(Json(data)); } DateTime dt; if (String.IsNullOrWhiteSpace(nowTime)) { dt = DateTime.Now; } else { dt = nowTime.ToCSharpDateTime(); } IList <Chat> chats; if (isHistory) { // 对方的离线消息 chats = (await _uf.ChatRepository.GetOffLineChatAsync(targetUserId, userInfo.Id, dt)).ToList(); data.Data = chats.Select(x => new { Id = x.UserId, Message = x.Message }).ToList(); foreach (var chat in chats) { chat.IsArrive = true; } _uf.ChatRepository.UpdateRange(chats); await _uf.SaveChangesAsync(); } else { // 历史消息 chats = (await _uf.ChatRepository .GetOnLineChatAsync(userInfo.Id, targetUserId, dt)) .ToList(); } data.Data = new { Chats = chats.Select(x => new { Id = x.UserId, Message = x.Message }).ToList(), NowTime = (chats.Count > 0 ? chats.Last().CreateTime : DateTime.Now).ToJSString() }; data.IsOk = true; return(Json(data)); }
public async Task <IActionResult> GoTopicStar(int id, bool isLike) { var data = new MoData(); var topic = await _uf.TopicRepository.GetByIdAsync(id); if (topic == null) { data.IsOk = false; data.Msg = "找不到指定的帖子"; return(Json(data)); } HttpContext.TryGetUserInfo(out var userInfo); if (userInfo.Id == topic.UserId) { data.IsOk = false; data.Msg = "你不能点赞你自己的帖子"; return(Json(data)); } if (isLike) { // 点赞 var isTemp = await _uf.TopicStarRepository.IsExistAsync(x => x.TopicId == id && x.UserId == userInfo.Id); if (isTemp) { data.IsOk = false; data.Msg = "你已经赞过了"; return(Json(data)); } var topicStar = new TopicStar { TopicId = topic.Id, UserId = userInfo.Id }; topic.StarCount = topic.StarCount + 1; await _uf.TopicStarRepository.InsertAsync(topicStar); } else { var topicStar = await _uf.TopicStarRepository.GetAsync(x => x.TopicId == id && x.UserId == userInfo.Id); if (topicStar != null) { topic.StarCount = topic.StarCount - 1; _uf.TopicStarRepository.Delete(topicStar); } } _uf.TopicRepository.Update(topic); await _uf.SaveChangesAsync(); data.IsOk = true; data.Msg = topic.StarCount.ToString(); return(Json(data)); }