func (this *NoteService) AddNote(note info.Note, fromApi bool) info.Note { if note.NoteId.Hex() == "" { noteId := bson.NewObjectId() note.NoteId = noteId } note.CreatedTime = time.Now() note.UpdatedTime = note.CreatedTime note.IsTrash = false note.UpdatedUserId = note.UserId note.UrlTitle = GetUrTitle(note.UserId.Hex(), note.Title, "note") note.Usn = userService.IncrUsn(note.UserId.Hex()) notebookId := note.NotebookId.Hex() // api会传IsBlog, web不会传 if !fromApi { // 设为blog note.IsBlog = notebookService.IsBlog(notebookId) } // if note.IsBlog { note.PublicTime = note.UpdatedTime // } db.Insert(db.Notes, note) // tag1 tagService.AddTags(note.UserId.Hex(), note.Tags) // recount notebooks' notes number notebookService.ReCountNotebookNumberNotes(notebookId) return note }
// 添加共享d笔记 func (this *NoteService) AddSharedNote(note info.Note, myUserId bson.ObjectId) info.Note { // 判断我是否有权限添加 if shareService.HasUpdateNotebookPerm(note.UserId.Hex(), myUserId.Hex(), note.NotebookId.Hex()) { note.CreatedUserId = myUserId // 是我给共享我的人创建的 return this.AddNote(note, false) } return info.Note{} }
func (this *NoteService) AddNoteAndContentApi(note info.Note, noteContent info.NoteContent, myUserId bson.ObjectId) info.Note { if note.NoteId.Hex() == "" { noteId := bson.NewObjectId() note.NoteId = noteId } noteContent.NoteId = note.NoteId if note.UserId != myUserId { note = this.AddSharedNote(note, myUserId) } else { note = this.AddNote(note, true) } if note.NoteId != "" { this.AddNoteContent(noteContent) } return note }
// 添加笔记 // [OK] func (c ApiNote) AddNote(noteOrContent info.ApiNote) revel.Result { userId := bson.ObjectIdHex(c.getUserId()) re := info.NewRe() myUserId := userId // 为共享新建? /* if noteOrContent.FromUserId != "" { userId = bson.ObjectIdHex(noteOrContent.FromUserId) } */ // Log(noteOrContent.Title) // LogJ(noteOrContent) /* LogJ(c.Params) for name, _ := range c.Params.Files { Log(name) file, _, _ := c.Request.FormFile(name) LogJ(file) } */ // return c.RenderJson(re) if noteOrContent.NotebookId == "" || !bson.IsObjectIdHex(noteOrContent.NotebookId) { re.Msg = "notebookIdNotExists" return c.RenderJson(re) } noteId := bson.NewObjectId() // TODO 先上传图片/附件, 如果不成功, 则返回false // attachNum := 0 if noteOrContent.Files != nil && len(noteOrContent.Files) > 0 { for i, file := range noteOrContent.Files { if file.HasBody { if file.LocalFileId != "" { // FileDatas[54c7ae27d98d0329dd000000] ok, msg, fileId := c.upload("FileDatas["+file.LocalFileId+"]", noteId.Hex(), file.IsAttach) if !ok { re.Ok = false if msg != "" { Log(msg) Log(file.LocalFileId) re.Msg = "fileUploadError" } // 报不是图片的错误没关系, 证明客户端传来非图片的数据 if msg != "notImage" { return c.RenderJson(re) } } else { // 建立映射 file.FileId = fileId noteOrContent.Files[i] = file if file.IsAttach { attachNum++ } } } else { return c.RenderJson(re) } } } } c.fixPostNotecontent(¬eOrContent) // Log("Add") // LogJ(noteOrContent) // return c.RenderJson(re) note := info.Note{UserId: userId, NoteId: noteId, NotebookId: bson.ObjectIdHex(noteOrContent.NotebookId), Title: noteOrContent.Title, Tags: noteOrContent.Tags, Desc: noteOrContent.Desc, // ImgSrc: noteOrContent.ImgSrc, IsBlog: noteOrContent.IsBlog, IsMarkdown: noteOrContent.IsMarkdown, AttachNum: attachNum, } noteContent := info.NoteContent{NoteId: note.NoteId, UserId: userId, IsBlog: note.IsBlog, Content: noteOrContent.Content, Abstract: noteOrContent.Abstract} // 通过内容得到Desc, abstract if noteOrContent.Abstract == "" { note.Desc = SubStringHTMLToRaw(noteContent.Content, 200) noteContent.Abstract = SubStringHTML(noteContent.Content, 200, "") } else { note.Desc = SubStringHTMLToRaw(noteContent.Abstract, 200) } note = noteService.AddNoteAndContentApi(note, noteContent, myUserId) if note.NoteId == "" { re.Ok = false return c.RenderJson(re) } // 添加需要返回的 noteOrContent.NoteId = note.NoteId.Hex() noteOrContent.Usn = note.Usn noteOrContent.CreatedTime = note.CreatedTime noteOrContent.UpdatedTime = note.UpdatedTime noteOrContent.UserId = c.getUserId() noteOrContent.IsMarkdown = note.IsMarkdown // 删除一些不要返回的, 删除Desc? noteOrContent.Content = "" noteOrContent.Abstract = "" // apiNote := info.NoteToApiNote(note, noteOrContent.Files) return c.RenderJson(noteOrContent) }