public IActionResult DeleteTag(string token, string tag, int usn) { bool result = tagService.DeleteTagApi(GetUserIdByToken(token), tag, usn, out int toUsn, out string msg); if (result) { ReUpdate reUpdate = new ReUpdate() { Ok = true, Usn = toUsn, Msg = msg }; return(Json(reUpdate, MyJsonConvert.GetLeanoteOptions())); } else { ApiRe apiRe = new ApiRe() { Ok = false, Msg = msg }; return(Json(apiRe, MyJsonConvert.GetLeanoteOptions())); } }
public JsonResult UpdateNote(ApiNote noteOrContent, string token) { Note noteUpdate = new Note(); var needUpdateNote = false; var re = new ReUpdate(); long?tokenUserId = GetUserIdByToken(token); var noteId = noteOrContent.NoteId.ToLongByHex(); //-------------校验参数合法性 if (tokenUserId == 0) { re.Msg = "NOlogin"; re.Ok = false; return(Json(re, MyJsonConvert.GetSimpleOptions())); } if (string.IsNullOrEmpty(noteOrContent.NoteId)) { re.Msg = "noteIdNotExists"; re.Ok = false; return(Json(re, MyJsonConvert.GetSimpleOptions())); } if (noteOrContent.Usn < 1) { re.Msg = "usnNotExists"; re.Ok = false; return(Json(re, MyJsonConvert.GetSimpleOptions())); } // 先判断USN的问题, 因为很可能添加完附件后, 会有USN冲突, 这时附件就添错了 var note = noteService.GetNote(noteId, tokenUserId); var noteContent = noteContentService.GetNoteContent(note.NoteId, tokenUserId, false); if (note == null || note.NoteId == 0) { re.Msg = "notExists"; re.Ok = false; return(Json(re, MyJsonConvert.GetSimpleOptions())); } //判断服务器版本与客户端版本是否一致 if (note.Usn != noteOrContent.Usn) { re.Msg = "conflict"; re.Ok = false; return(Json(re, MyJsonConvert.GetSimpleOptions())); } //-------------更新文件和附件内容 if (noteOrContent.Files != null && noteOrContent.Files.Length > 0) { for (int i = 0; i < noteOrContent.Files.Length; i++) { var file = noteOrContent.Files[i]; if (file.HasBody) { if (!string.IsNullOrEmpty(file.LocalFileId)) { var result = UploadImages("FileDatas[" + file.LocalFileId + "]", tokenUserId, noteId, file.IsAttach, out long?serverFileId, out string msg); if (!result) { if (string.IsNullOrEmpty(msg)) { re.Msg = "fileUploadError"; } if (!string.Equals(msg, "notImage", System.StringComparison.OrdinalIgnoreCase)) { return(Json(re, MyJsonConvert.GetLeanoteOptions())); } } else { // 建立映射 file.FileId = serverFileId.ToHex24(); noteOrContent.Files[i] = file; } } else { return(Json(new ReUpdate() { Ok = false, Msg = "LocalFileId_Is_NullOrEmpty", Usn = 0 }, MyJsonConvert.GetSimpleOptions())); } } } } //更新用户元数据 //int usn = UserService.IncrUsn(tokenUserId); // 移到外面来, 删除最后一个file时也要处理, 不然总删不掉 // 附件问题, 根据Files, 有些要删除的, 只留下这些 if (noteOrContent.Files != null) { attachService.UpdateOrDeleteAttachApiAsync(noteId, tokenUserId, noteOrContent.Files); } //-------------更新笔记内容 var afterContentUsn = 0; var contentOk = false; var contentMsg = ""; long?contentId = 0; if (noteOrContent.Content != null) { // 把fileId替换下 FixPostNotecontent(ref noteOrContent); // 如果传了Abstract就用之 if (noteOrContent.Abstract != null) { noteOrContent.Abstract = MyHtmlHelper.SubHTMLToRaw(noteOrContent.Abstract, 200); } else { noteOrContent.Abstract = MyHtmlHelper.SubHTMLToRaw(noteOrContent.Content, 200); } } else { noteOrContent.Abstract = MyHtmlHelper.SubHTMLToRaw(noteContent.Content, 200); } //上传noteContent的变更 contentOk = noteContentService.UpdateNoteContent( noteOrContent, out contentMsg, out contentId ); //返回处理结果 if (!contentOk) { re.Ok = false; re.Msg = contentMsg; re.Usn = afterContentUsn; return(Json(re, MyJsonConvert.GetLeanoteOptions())); } //-------------更新笔记元数据 int afterNoteUsn = 0; var noteOk = false; var noteMsg = ""; noteOk = noteService.UpdateNote( ref noteOrContent, tokenUserId, contentId, true, true, out noteMsg, out afterNoteUsn ); if (!noteOk) { re.Ok = false; re.Msg = noteMsg; return(Json(re, MyJsonConvert.GetLeanoteOptions())); } //处理结果 //-------------API返回客户端信息 note = noteService.GetNote(noteId, tokenUserId); // noteOrContent.NoteId = noteId.ToHex24(); // noteOrContent.UserId = tokenUserId.ToHex24(); // noteOrContent.Title = note.Title; // noteOrContent.Tags = note.Tags; // noteOrContent.IsMarkdown = note.IsMarkdown; // noteOrContent.IsBlog = note.IsBlog; //noteOrContent.IsTrash = note.IsTrash; //noteOrContent.IsDeleted = note.IsDeleted; //noteOrContent.IsTrash = note.IsTrash; //noteOrContent.Usn = note.Usn; //noteOrContent.CreatedTime = note.CreatedTime; //noteOrContent.UpdatedTime = note.UpdatedTime; //noteOrContent.PublicTime = note.PublicTime; noteOrContent.Content = ""; noteOrContent.Usn = afterNoteUsn; noteOrContent.UpdatedTime = DateTime.Now; noteOrContent.IsDeleted = false; noteOrContent.UserId = tokenUserId.ToHex24(); return(Json(noteOrContent, MyJsonConvert.GetLeanoteOptions())); }