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> Login(MoLoginUser loginUser) { if (ModelState.IsValid == false || loginUser == null) { this.MsgBox("验证失败,请重试!"); return(View()); } User user; user = await _uf.UserRepository.GetUser(loginUser.UserName, loginUser.UserPwd); if (user == null) { this.MsgBox("账号或密码错误!"); return(View(typeof(MoLoginUser), loginUser)); } else if (user.UserStatus == UserStatus.未登录) { this.MsgBox("该账号已被禁用,或许你可以尝试重新注册一个账号!"); return(View()); } user.UserStatus = (int)UserStatus.启用; _uf.UserRepository.Update(user); var userToRole = _uf.UserToRoleRepository.GetAll(x => x.UserId == user.Id); await _uf.SaveChangesAsync(); var userInfo = new MoUserInfo { Id = user.Id, UserName = user.UserName, Email = user.Email, HeadPhoto = user.HeadPhoto, UserStatus = (int)user.UserStatus, Roles = userToRole.Any(x => x.Role.RoleName.Equals(RoleType.SuperAdmin.ToString(), StringComparison.OrdinalIgnoreCase)) ? RoleType.SuperAdmin.ToString() : userToRole.Any(x => x.Role.RoleName.Equals(RoleType.Admin.ToString(), StringComparison.OrdinalIgnoreCase)) ? RoleType.Admin.ToString() : RoleType.User.ToString() }; HttpContext.AddUserInfo(userInfo); if (String.IsNullOrWhiteSpace(loginUser.ReturnUrl)) { return(Redirect("http://localhost:17758/home/index")); } else { return(Redirect(loginUser.ReturnUrl)); } }
private async Task <bool> InitChatAsync(int userId, int targetUserId) { if (!await _uf.UserRepository.IsExistAsync(x => x.Id == targetUserId)) { // 不存在该用户 await OnSendAsync("找不到对方的账号"); return(false); } var pool = HubConnectionPool.Pool; // 用户添加或更新到对方连接池中 if (pool.Contains(targetUserId, userId)) { pool.TryUpdateValue(userId, targetUserId, this); } else { pool.TryAddValue(targetUserId, userId, this); } await _uf.SaveChangesAsync(); return(true); }
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> 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)); }
public async Task <IActionResult> UpHeadPhoto(int id) { HttpContext.TryGetUserInfo(out var userInfo); ViewData["Role"] = userInfo.Roles.ToLower(); var file = HttpRequest.Form.Files.Where(x => x.Name == "myHeadPhoto" && x.ContentType.Contains("image")) .SingleOrDefault(); if (file == null) { this.MsgBox("请选择上传的头像图片!"); return(View(userInfo)); } var maxSize = 1024 * 1024 * 4; // 图片大小不超过4M if (file.Length > maxSize) { this.MsgBox("头像图片不能大于4M"); return(View(userInfo)); } var directory = RootConfiguration.Root + Path.DirectorySeparatorChar + _mapSetting.UpHeadPhotoPath; var directoryInfo = new DirectoryInfo(directory); directoryInfo.DeleteAll(userInfo.Email); var fileExtend = file.FileName.Substring(file.FileName.LastIndexOf('.')); var fileNewName = $"{userInfo.Email}-{DateTime.Now.ToString("yyyyMMddHHssfff")}{fileExtend}"; var path = Path.Combine(directory, fileNewName); using (var stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) { await file.CopyToAsync(stream); // 读取上传的图片并保存 } // 更新数据 var viewPath = $"{_mapSetting.ViewHeadPhotoPath}/{fileNewName}"; using (var trans = _uf.BeginTransaction()) { try { var user = await _uf.UserRepository.GetByIdAsync(userInfo.Id); if (user == null) { this.MsgBox("上传失败,请稍后重试!"); return(View(userInfo)); } user.HeadPhoto = $"../../wwwroot{viewPath}"; _uf.UserRepository.Update(user); var result = await _uf.SaveChangesAsync(); if (result > 0) { userInfo.HeadPhoto = user.HeadPhoto; HttpContext.DeleteUserInfo(); HttpContext.AddUserInfo(userInfo); this.MsgBox("上传成功!"); trans.Commit(); } else { this.MsgBox("上传失败,请稍后再试!"); trans.Rollback(); } } catch (Exception ex) { this.MsgBox("上传失败,请稍后再试!"); trans.Rollback(); _logger.LogError(userInfo.Id, "上传头像操作失败"); _uf.SaveChanges(); trans.Commit(); } } return(View(userInfo)); }
public async Task <IActionResult> CreateTopic(MoTopicDes topicDes) { ViewData["BBSId"] = topicDes.BBSId; ViewData["BBSName"] = topicDes.BBSName; if (!ModelState.IsValid && (topicDes.ReplyType == ReplyType.Text && String.IsNullOrWhiteSpace(topicDes.TopicDes))) { return(ReturnViewMsg("发帖失败,请检查您的标题和内容是否为空")); } HttpContext.TryGetUserInfo(out var userInfo); var topic = new Topic(userInfo.Id, topicDes.BBSId, topicDes.TopicName); try { await _uf.TopicRepository.InsertAsync(topic); if (await _uf.SaveChangesAsync() == 0) { return(ReturnViewMsg("发帖失败,请稍后再试")); } if (topicDes.ReplyType == ReplyType.Image) { var(success, resultMsg) = SaveImg(topic.Id, HttpRequest.Form.Files.Where(x => x.ContentType.Contains("image")).SingleOrDefault()); if (!success) { this.MsgBox(resultMsg); return(View()); } topicDes.TopicDes = resultMsg; } } catch (Exception ex) { _logger.LogError(userInfo.Id, $"发表新帖失败-{ex.Message.Substring(0, 50)}-{DateTime.Now.ToStandardFormatString()}"); return(ReturnViewMsg("发帖失败,请稍后再试")); } var reply = new Reply { UserId = userInfo.Id, TopicId = topic.Id, UserName = userInfo.UserName, TopicName = topic.TopicName, ReplyType = topicDes.ReplyType, Message = topicDes.TopicDes, ReplyIndex = 1 }; UpdateIntegrate(userInfo.Id, (int)IntegrateType.CreateTopic); _uf.ReplyRepository.Insert(reply); if (_uf.SaveChanges() == 0) { _uf.TopicRepository.Delete(topic); _uf.SaveChanges(); this.MsgBox("发帖失败,请稍后再试"); } AddIndex(topic, reply); ViewData["TopicId"] = topic.Id; this.MsgBox("发帖成功"); return(View()); }