// 更新笔记 // [OK] func (c ApiNote) UpdateNote(noteOrContent info.ApiNote) revel.Result { re := info.NewReUpdate() noteUpdate := bson.M{} needUpdateNote := false noteId := noteOrContent.NoteId if noteOrContent.NoteId == "" { re.Msg = "noteIdNotExists" return c.RenderJson(re) } if noteOrContent.Usn <= 0 { re.Msg = "usnNotExists" return c.RenderJson(re) } // Log("_____________") // LogJ(noteOrContent) /* LogJ(c.Params.Files) LogJ(c.Request.Header) LogJ(c.Params.Values) */ // 先判断USN的问题, 因为很可能添加完附件后, 会有USN冲突, 这时附件就添错了 userId := c.getUserId() note := noteService.GetNote(noteId, userId) if note.NoteId == "" { re.Msg = "notExists" return c.RenderJson(re) } if note.Usn != noteOrContent.Usn { re.Msg = "conflict" Log("conflict") return c.RenderJson(re) } // 如果传了files // TODO 测试 /* for key, v := range c.Params.Values { Log(key) Log(v) } */ // Log(c.Has("Files[0]")) if c.Has("Files[0][LocalFileId]") { // LogJ(c.Params.Files) 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, file.IsAttach) if !ok { Log("upload file error") re.Ok = false if msg == "" { re.Msg = "fileUploadError" } else { re.Msg = msg } return c.RenderJson(re) } else { // 建立映射 file.FileId = fileId noteOrContent.Files[i] = file } } else { return c.RenderJson(re) } } } } // Log("after upload") // LogJ(noteOrContent.Files) } // 移到外面来, 删除最后一个file时也要处理, 不然总删不掉 // 附件问题, 根据Files, 有些要删除的, 只留下这些 attachService.UpdateOrDeleteAttachApi(noteId, userId, noteOrContent.Files) // Desc前台传来 if c.Has("Desc") { needUpdateNote = true noteUpdate["Desc"] = noteOrContent.Desc } /* if c.Has("ImgSrc") { needUpdateNote = true noteUpdate["ImgSrc"] = noteOrContent.ImgSrc } */ if c.Has("Title") { needUpdateNote = true noteUpdate["Title"] = noteOrContent.Title } if c.Has("IsTrash") { needUpdateNote = true noteUpdate["IsTrash"] = noteOrContent.IsTrash } // 是否是博客 if c.Has("IsBlog") { needUpdateNote = true noteUpdate["IsBlog"] = noteOrContent.IsBlog } /* Log(c.Has("tags[0]")) Log(c.Has("Tags[]")) for key, v := range c.Params.Values { Log(key) Log(v) } */ if c.Has("Tags[0]") { needUpdateNote = true noteUpdate["Tags"] = noteOrContent.Tags } if c.Has("NotebookId") { if bson.IsObjectIdHex(noteOrContent.NotebookId) { needUpdateNote = true noteUpdate["NotebookId"] = bson.ObjectIdHex(noteOrContent.NotebookId) } } if c.Has("Content") { // 通过内容得到Desc, 如果有Abstract, 则用Abstract生成Desc if noteOrContent.Abstract == "" { noteUpdate["Desc"] = SubStringHTMLToRaw(noteOrContent.Content, 200) } else { noteUpdate["Desc"] = SubStringHTMLToRaw(noteOrContent.Abstract, 200) } } afterNoteUsn := 0 noteOk := false noteMsg := "" if needUpdateNote { noteOk, noteMsg, afterNoteUsn = noteService.UpdateNote(c.getUserId(), noteOrContent.NoteId, noteUpdate, noteOrContent.Usn) if !noteOk { re.Ok = false re.Msg = noteMsg return c.RenderJson(re) } } //------------- afterContentUsn := 0 contentOk := false contentMsg := "" if c.Has("Content") { // 把fileId替换下 c.fixPostNotecontent(¬eOrContent) // 如果传了Abstract就用之 if noteOrContent.Abstract == "" { noteOrContent.Abstract = SubStringHTML(noteOrContent.Content, 200, "") } // Log("--------> afte fixed") // Log(noteOrContent.Content) contentOk, contentMsg, afterContentUsn = noteService.UpdateNoteContent(c.getUserId(), noteOrContent.NoteId, noteOrContent.Content, noteOrContent.Abstract, needUpdateNote, noteOrContent.Usn) } if needUpdateNote { re.Ok = noteOk re.Msg = noteMsg re.Usn = afterNoteUsn } else { re.Ok = contentOk re.Msg = contentMsg re.Usn = afterContentUsn } if !re.Ok { return c.RenderJson(re) } noteOrContent.Content = "" noteOrContent.Usn = re.Usn noteOrContent.UpdatedTime = time.Now() // Log("after upload") // LogJ(noteOrContent.Files) noteOrContent.UserId = c.getUserId() return c.RenderJson(noteOrContent) }
// 删除trash func (c ApiNote) DeleteTrash(noteId string, usn int) revel.Result { re := info.NewReUpdate() re.Ok, re.Msg, re.Usn = trashService.DeleteTrashApi(noteId, c.getUserId(), usn) return c.RenderJson(re) }
// 删除标签 // [OK] func (c ApiTag) DeleteTag(tag string, usn int) revel.Result { re := info.NewReUpdate() re.Ok, re.Msg, re.Usn = tagService.DeleteTagApi(c.getUserId(), tag, usn) return c.RenderJson(re) }