// 添加笔记 // 首先要判断Notebook是否是Blog, 是的话设为blog // [ok] public static Note AddNote(Note note, bool fromAPI) { if (note.NoteId == 0) { note.NoteId = SnowFlake_Net.GenerateSnowFlakeID(); } // 关于创建时间, 可能是客户端发来, 此时判断时间是否有 note.CreatedTime = Tools.FixUrlTime(note.CreatedTime); note.UpdatedTime = Tools.FixUrlTime(note.UpdatedTime); note.UrlTitle = InitServices.GetUrTitle(note.UserId, note.Title, "note", note.NoteId); note.Usn = UserService.IncrUsn(note.UserId); long?notebookId = note.NotebookId; // api会传IsBlog, web不会传 if (!fromAPI) { note.IsBlog = NotebookService.IsBlog(notebookId); } // if note.IsBlog { note.PublicTime = note.UpdatedTime; AddNote(note); // tag1 TagService.AddTags(note.UserId, note.Tags); // recount notebooks' notes number NotebookService.ReCountNotebookNumberNotes(notebookId); return(note); }
public AuthService(DataContext dataContext, IPasswordStore passwordStore, NotebookService notebookService, ConfigFileService configFileService, IDistributedIdGenerator idGenerator, PasswordStoreFactory passwordStoreFactory) { this.idGenerator = idGenerator; this.dataContext = dataContext; this.passwordStore = passwordStore; this.NotebookService = notebookService; this.config = configFileService.WebConfig; this.passwordStoreFactory = passwordStoreFactory; }
//todo 删除废纸篓 public static bool DeleteTrashApi(long noteId, long userId, int usn, out string msg, out int afterUsn) { Note note = NoteService.GetNote(noteId, userId); if (note == null) { msg = "notExists"; afterUsn = 0; //todo: 存疑 return(false); } if (note.Usn != usn) { msg = "conflict"; afterUsn = 0; return(false); } // 设置删除位 //afterUsn = UserService.IncrUsn(userId); // delete note's attachs var result = NoteService.SetDeleteStatus(noteId, userId, out afterUsn); if (!result) { msg = "设置删除位错误"; afterUsn = 0; return(false); } AttachService.DeleteAllAttachs(noteId, userId); // 删除content history NoteContentService.DeleteByIdAndUserId(noteId, userId, true); NotebookService.ReCountNotebookNumberNotes(note.NotebookId); msg = ""; return(true); }
/// <summary> /// 更新笔记 元数据 /// </summary> /// <param name="apiNote"></param> /// <returns></returns> public static bool UpdateNote(ref ApiNote apiNote, long updateUser, long contentId, bool verifyUsn, bool verifyOwner, out string msg, out int afterUsn) { var noteId = MyConvert.HexToLong(apiNote.NoteId); afterUsn = 0; if (apiNote == null) { msg = "apiNote_is_null"; return(false); } // var noteId = MyConvert.HexToLong(apiNote.NoteId); if (noteId == 0) { msg = "noteId_is_note_long_Number"; return(false); } using (var db = new DataContext()) { var result = db.Note.Where(b => b.NoteId == noteId && b.UserId == updateUser); if (result == null) { msg = "inexistence"; return(false); } var note = result.FirstOrDefault(); if (verifyUsn) { if (note.Usn != apiNote.Usn) { msg = "Verify_Usn_Failure"; return(false); } } if (verifyOwner) { if (note.UserId != updateUser) { msg = "Verify_updateUser_Failure"; return(false); } } if (apiNote.Desc != null) { note.Desc = apiNote.Desc; } if (apiNote.Title != null) { note.Title = apiNote.Title; } if (apiNote.IsTrash != null) { note.IsTrash = apiNote.IsTrash.GetValueOrDefault(); } if (apiNote.IsBlog != null) { if (note.IsBlog == false && apiNote.IsBlog == true) { note.PublicTime = DateTime.Now; } note.IsBlog = apiNote.IsBlog.GetValueOrDefault(false); } if (apiNote.Tags != null) { note.Tags = apiNote.Tags; TagService.AddTags(note.UserId, note.Tags); BlogService.ReCountBlogTags(note.UserId); } if (apiNote.NotebookId != null) { var noteBookId = MyConvert.HexToLong(apiNote.NotebookId); if (note.NotebookId == 0) { msg = "NotebookId_Is_Illegal"; return(false); } if (note.NotebookId != noteBookId) { // 如果修改了notebookId, 则更新notebookId'count // 两方的notebook也要修改 NotebookService.ReCountNotebookNumberNotes(note.NotebookId); NotebookService.ReCountNotebookNumberNotes(noteBookId); note.NotebookId = noteBookId; } } if (apiNote.Content != null) { note.ContentId = contentId; if (apiNote.Abstract == null) { if (apiNote.IsMarkdown.GetValueOrDefault(note.IsMarkdown)) { note.Desc = MyHtmlHelper.SubMarkDownToRaw(apiNote.Content, 200); } else { note.Desc = MyHtmlHelper.SubHTMLToRaw(apiNote.Content, 200); } // note.Desc = MyHtmlHelper.SubStringHTMLToRaw(apiNote.Content, 200); } else { note.Desc = MyHtmlHelper.SubHTMLToRaw(apiNote.Abstract, 200); //note.Desc = MyHtmlHelper.SubStringHTMLToRaw(apiNote.Abstract, 200); } } if (apiNote.UpdatedTime != null) { note.UpdatedTime = Tools.FixUrlTime(apiNote.UpdatedTime); } else { note.UpdatedTime = DateTime.Now; } if (note.IsBlog && note.HasSelfDefined) { note.ImgSrc = null; note.Desc = null; } if (apiNote.IsTrash != null) { note.IsTrash = apiNote.IsTrash.GetValueOrDefault(false); NotebookService.ReCountNotebookNumberNotes(note.NotebookId); } if (apiNote.IsMarkdown != null) { note.IsMarkdown = apiNote.IsMarkdown.GetValueOrDefault(); } note.UpdatedUserId = MyConvert.HexToLong(apiNote.UserId); //更新用户元数据乐观锁 afterUsn = UserService.IncrUsn(note.UserId); //更新笔记元数据乐观锁 note.Usn = afterUsn; db.SaveChanges(); msg = "success"; return(true); } }