燕鹏
пре 3 година
23 измењених фајлова са 29 додато и 1195 уклоњено
@ -1,88 +0,0 @@ |
|||
package controllers |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"beeblog/service" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
"strconv" |
|||
) |
|||
|
|||
type CommentController struct { |
|||
beego.Controller |
|||
} |
|||
|
|||
func (this *CommentController) Save() { |
|||
commentService := service.CommentService{} |
|||
blogService := service.BlogService{} |
|||
userService := service.UserService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
blogId, berr := this.GetInt64("blog") |
|||
if blogId == 0 || berr != nil { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
commVal := this.GetString("commval") |
|||
blog, err := blogService.ReadBlog(blogId) |
|||
if err != nil { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
comm := &models.Comment{BlogId: blogId, CuserId: uid.(int64), BuserId: blog.UserId, ComVal: commVal} |
|||
if pid, _ := this.GetInt64("pid"); pid != 0 { |
|||
parent := &models.Comment{Id: pid} |
|||
if err := commentService.ReadComment(parent); err == nil { |
|||
comm.BuserId = parent.CuserId |
|||
} |
|||
comm.Pid = pid |
|||
} |
|||
err = commentService.SaveComment(comm) |
|||
if err == nil { |
|||
this.Data["json"] = models.ReurnData("", comm) |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
userService.CountComments(uid.(int64), blogId) |
|||
return |
|||
} |
|||
|
|||
func (this *CommentController) Del() { |
|||
commentService := service.CommentService{} |
|||
userService := service.UserService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
comm := &models.Comment{Id: id} |
|||
err := commentService.ReadComment(comm) |
|||
if err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
if comm.CuserId != uid.(int64) { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
err = commentService.DelComment(id) |
|||
if err == nil { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
userService.CountComments(uid.(int64), id) |
|||
return |
|||
} |
@ -1,56 +0,0 @@ |
|||
package controllers |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"beeblog/service" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
"strconv" |
|||
) |
|||
|
|||
type LikeController struct { |
|||
beego.Controller |
|||
} |
|||
|
|||
func (this *LikeController) Save() { |
|||
likeService := service.LikeService{} |
|||
userService := service.UserService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
like := &models.Like{BlogId: id, UserId: uid.(int64)} |
|||
if _, err := likeService.SaveLike(like); err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} else { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} |
|||
this.ServeJSON() |
|||
userService.CountLike(uid.(int64), id) |
|||
return |
|||
} |
|||
|
|||
func (this *LikeController) Delete() { |
|||
likeService := service.LikeService{} |
|||
userService := service.UserService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
like := &models.Like{BlogId: id, UserId: uid.(int64)} |
|||
if _, err := likeService.DelLike(like); err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} else { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} |
|||
this.ServeJSON() |
|||
userService.CountLike(uid.(int64), id) |
|||
return |
|||
} |
@ -1,236 +0,0 @@ |
|||
package controllers |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"beeblog/service" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
"strconv" |
|||
) |
|||
|
|||
type NoteController struct { |
|||
beego.Controller |
|||
} |
|||
|
|||
func (this *NoteController) Save() { |
|||
noteService := service.NoteService{} |
|||
pid, _ := this.GetInt64("pid") |
|||
title := this.GetString("title") |
|||
uid := this.GetSession("userid") |
|||
noteHtml := this.GetString("noteHtml") |
|||
noteVal := this.GetString("noteVal") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "保存失败") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
note := &models.Note{Title: title, Pid: pid, UserId: uid.(int64), NoteVal: noteVal, NoteHtml: noteHtml} |
|||
err := noteService.SaveNote(note) |
|||
if err == nil { |
|||
this.Data["json"] = note |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
func (this *NoteController) Edit() { |
|||
noteService := service.NoteService{} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
noteHtml := this.GetString("noteHtml") |
|||
noteVal := this.GetString("noteVal") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
note := &models.Note{Id: id} |
|||
err1 := noteService.GetNote(note) |
|||
if err1 != nil { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
if uid != note.UserId { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
note.NoteHtml = noteHtml |
|||
note.NoteVal = noteVal |
|||
err := noteService.EditNote(note) |
|||
if err == nil { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
|
|||
func (this *NoteController) SaveNoteColl() { |
|||
noteService := service.NoteService{} |
|||
title := this.GetString("title") |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
note := &models.NoteColl{Title: title, UserId: uid.(int64)} |
|||
err := noteService.SaveNoteColl(note) |
|||
if err == nil { |
|||
this.Data["json"] = models.ReurnData("", note) |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
|
|||
func (this *NoteController) EditNoteColl() { |
|||
noteService := service.NoteService{} |
|||
title := this.GetString("title") |
|||
id, _ := this.GetInt64("id") |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
err := noteService.EditNoteColl(title, id, uid.(int64)) |
|||
if err == nil { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} else { |
|||
this.Data["json"] = models.ReurnError(500, "保存失败") |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
|
|||
func (this *NoteController) Get() { |
|||
noteService := service.NoteService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
note := &models.Note{Id: id} |
|||
err := noteService.GetNote(note) |
|||
if err == nil { |
|||
this.Data["json"] = note |
|||
} |
|||
if note.UserId != uid.(int64) { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
func (this *NoteController) DelNoteColl() { |
|||
noteService := service.NoteService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
err := noteService.DelNoteColl(id, uid.(int64)) |
|||
if err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "") |
|||
} else { |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
} |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
|
|||
func (this *NoteController) Delete() { |
|||
noteService := service.NoteService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Data["json"] = models.ReurnError(401, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
idStr := this.Ctx.Input.Param(":id") |
|||
id, _ := strconv.ParseInt(idStr, 10, 64) |
|||
note := &models.Note{Id: id} |
|||
err := noteService.GetNote(note) |
|||
if err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
if note.UserId != uid.(int64) { |
|||
this.Data["json"] = models.ReurnError(403, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
err = noteService.DelNote(note) |
|||
if err != nil { |
|||
this.Data["json"] = models.ReurnError(500, "") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
this.Data["json"] = models.ReurnSuccess("") |
|||
this.ServeJSON() |
|||
return |
|||
} |
|||
|
|||
func (this *NoteController) Note() { |
|||
noteService := service.NoteService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Redirect("/login", 302) |
|||
return |
|||
} |
|||
noteColls, err := noteService.GetNoteColl(uid.(int64)) |
|||
if err == nil { |
|||
if len(noteColls) > 0 { |
|||
for i := 0; i < len(noteColls); i++ { |
|||
notes, err1 := noteService.GetNoteByPid(noteColls[i].Id) |
|||
if err1 == nil { |
|||
noteColls[i].Notes = notes |
|||
} |
|||
} |
|||
} |
|||
} else { |
|||
noteColls = make([]*models.NoteColl, 0) |
|||
} |
|||
this.Data["HeadImg"] = this.GetSession("headimg") |
|||
this.Data["NickName"] = this.GetSession("nickname") |
|||
this.Data["NoteColls"] = noteColls |
|||
this.TplName = "note.html" |
|||
} |
|||
|
|||
func (this *NoteController) NoteApi() { |
|||
noteService := service.NoteService{} |
|||
uid := this.GetSession("userid") |
|||
if uid == nil { |
|||
this.Redirect("/login", 302) |
|||
return |
|||
} |
|||
noteColls, err := noteService.GetNoteColl(uid.(int64)) |
|||
if err == nil { |
|||
if len(noteColls) > 0 { |
|||
for i := 0; i < len(noteColls); i++ { |
|||
notes, err1 := noteService.GetNoteByPid(noteColls[i].Id) |
|||
if err1 == nil { |
|||
noteColls[i].Notes = notes |
|||
} |
|||
} |
|||
} |
|||
} else { |
|||
noteColls = make([]*models.NoteColl, 0) |
|||
} |
|||
this.Data["json"] = noteColls |
|||
this.ServeJSON() |
|||
} |
@ -1,17 +0,0 @@ |
|||
package models |
|||
|
|||
import "time" |
|||
|
|||
type Comment struct { |
|||
Id int64 |
|||
CuserId int64 `orm:"default(0)"` |
|||
BuserId int64 `orm:"default(0)"` |
|||
BlogId int64 `orm:"default(0)"` |
|||
Ctime time.Time `orm:"auto_now_add;type(datetime)"` |
|||
Pid int64 `orm:"default(0)"` |
|||
ComVal string `orm:"type(text)"` |
|||
|
|||
Childs []*Comment `orm:"-"` |
|||
CUser *User `orm:"-"` |
|||
BUser *User `orm:"-"` |
|||
} |
@ -1,16 +0,0 @@ |
|||
package models |
|||
|
|||
import "time" |
|||
|
|||
type Like struct { |
|||
Id int64 |
|||
UserId int64 |
|||
BlogId int64 |
|||
Ltime time.Time `orm:"auto_now_add;type(datetime)"` |
|||
|
|||
Blog *Blog `orm:"-"` |
|||
} |
|||
|
|||
func (u *Like) TableName() string { |
|||
return "tb_like" |
|||
} |
@ -1,16 +0,0 @@ |
|||
package models |
|||
|
|||
import "time" |
|||
|
|||
/** |
|||
笔记 |
|||
*/ |
|||
type Note struct { |
|||
Id int64 |
|||
UserId int64 |
|||
Title string |
|||
NoteHtml string `orm:"type(text)"` |
|||
NoteVal string `orm:"type(text)"` |
|||
Pid int64 |
|||
Utime time.Time `orm:"auto_now_add;type(datetime)"` |
|||
} |
@ -1,13 +0,0 @@ |
|||
package models |
|||
|
|||
/** |
|||
文章 |
|||
*/ |
|||
type NoteColl struct { |
|||
Id int64 |
|||
UserId int64 |
|||
Title string |
|||
|
|||
Notes []*Note `orm:"-"` |
|||
Count int64 `orm:"-"` |
|||
} |
@ -1,11 +0,0 @@ |
|||
package routers |
|||
|
|||
import ( |
|||
"beeblog/controllers" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
) |
|||
|
|||
func init() { |
|||
beego.Router("/api/comms/save", &controllers.CommentController{}, "post:Save") |
|||
beego.Router("/api/comms/del/:id([0-9]+)", &controllers.CommentController{}, "get:Del") |
|||
} |
@ -1,11 +0,0 @@ |
|||
package routers |
|||
|
|||
import ( |
|||
"beeblog/controllers" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
) |
|||
|
|||
func init() { |
|||
beego.Router("/api/like/:id([0-9]+)", &controllers.LikeController{}, "get:Save") |
|||
beego.Router("/api/unlike/:id([0-9]+)", &controllers.LikeController{}, "get:Delete") |
|||
} |
@ -1,18 +0,0 @@ |
|||
package routers |
|||
|
|||
import ( |
|||
"beeblog/controllers" |
|||
beego "github.com/beego/beego/v2/server/web" |
|||
) |
|||
|
|||
func init() { |
|||
beego.Router("/api/note/:id([0-9]+)", &controllers.NoteController{}, "get:Get") |
|||
beego.Router("/note", &controllers.NoteController{}, "get:Note") |
|||
beego.Router("/api/note", &controllers.NoteController{}, "get:NoteApi") |
|||
beego.Router("/api/notecoll/save", &controllers.NoteController{}, "post:SaveNoteColl") |
|||
beego.Router("/api/notecoll/edit", &controllers.NoteController{}, "post:EditNoteColl") |
|||
beego.Router("/api/note/save", &controllers.NoteController{}, "post:Save") |
|||
beego.Router("/api/note/edit/:id([0-9]+)", &controllers.NoteController{}, "post:Edit") |
|||
beego.Router("/api/note/del/:id([0-9]+)", &controllers.NoteController{}, "post:Delete") |
|||
beego.Router("/api/notecol/del/:id([0-9]+)", &controllers.NoteController{}, "post:DelNoteColl") |
|||
} |
@ -1,83 +0,0 @@ |
|||
package service |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"fmt" |
|||
"github.com/beego/beego/v2/client/orm" |
|||
) |
|||
|
|||
type CommentService struct { |
|||
} |
|||
|
|||
func (this *CommentService) FindCommentByBlog(bid int64) ([]*models.Comment, error) { |
|||
var comms []*models.Comment |
|||
o := orm.NewOrm() |
|||
_, err := o.QueryTable(&models.Comment{}).Filter("Pid", 0).Filter("BlogId", bid).OrderBy("-Ctime").All(&comms) |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
if len(comms) > 0 { |
|||
for i := 0; i < len(comms); i++ { |
|||
var childs []*models.Comment |
|||
_, childerrr := o.QueryTable(&models.Comment{}).Filter("Pid", comms[i].Id).OrderBy("-Ctime").All(&childs) |
|||
if childerrr == nil { |
|||
if len(childs) > 0 { |
|||
comms[i].Childs = childs |
|||
for j := 0; j < len(childs); j++ { |
|||
cuser := &models.User{Id: childs[j].CuserId} |
|||
o.Read(cuser) |
|||
childs[j].CUser = cuser |
|||
buser := &models.User{Id: childs[j].BuserId} |
|||
o.Read(buser) |
|||
childs[j].BUser = buser |
|||
} |
|||
} |
|||
} |
|||
cuser := &models.User{Id: comms[i].CuserId} |
|||
o.Read(cuser) |
|||
comms[i].CUser = cuser |
|||
} |
|||
} |
|||
return comms, nil |
|||
} |
|||
|
|||
func (this *CommentService) SaveComment(comment *models.Comment) error { |
|||
o := orm.NewOrm() |
|||
id, err := o.Insert(comment) |
|||
if err == nil { |
|||
comment.Id = id |
|||
cuser := &models.User{Id: comment.CuserId} |
|||
o.Read(cuser) |
|||
comment.CUser = cuser |
|||
if comment.BuserId != 0 { |
|||
buser := &models.User{Id: comment.BuserId} |
|||
o.Read(buser) |
|||
comment.BUser = buser |
|||
} |
|||
return nil |
|||
} |
|||
return err |
|||
} |
|||
|
|||
func (this *CommentService) ReadComment(comment *models.Comment) error { |
|||
return orm.NewOrm().Read(comment) |
|||
} |
|||
|
|||
func (this *CommentService) DelComment(id int64) error { |
|||
comm := &models.Comment{Id: id} |
|||
o := orm.NewOrm() |
|||
err := o.Read(comm) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
if comm.Pid != 0 { |
|||
if _, err := o.QueryTable(models.Comment{}).Filter("Pid", id).Delete(); err != nil { |
|||
fmt.Println(err) |
|||
} |
|||
|
|||
} |
|||
if _, err := o.Delete(comm); err != nil { |
|||
return err |
|||
} |
|||
return nil |
|||
} |
@ -1,71 +0,0 @@ |
|||
package service |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"beeblog/utils" |
|||
"fmt" |
|||
"github.com/beego/beego/v2/client/orm" |
|||
) |
|||
|
|||
type LikeService struct { |
|||
} |
|||
|
|||
func (this *LikeService) SaveLike(like *models.Like) (int64, error) { |
|||
return orm.NewOrm().Insert(like) |
|||
} |
|||
func (this *LikeService) DelLike(like *models.Like) (int64, error) { |
|||
return orm.NewOrm().QueryTable(models.Like{}).Filter("BlogId", like.BlogId).Filter("UserId", like.UserId).Delete() |
|||
} |
|||
|
|||
func (this *LikeService) IsLike(bid int64, uid int64) (bool, error) { |
|||
totalCount, err := orm.NewOrm().QueryTable(&models.Like{}).Filter("BlogId", bid).Filter("UserId", uid).Count() |
|||
if err == nil { |
|||
fmt.Println(totalCount, "like count") |
|||
if totalCount > 0 { |
|||
return true, nil |
|||
} else { |
|||
return false, nil |
|||
} |
|||
} else { |
|||
fmt.Println(err) |
|||
return false, err |
|||
} |
|||
} |
|||
|
|||
func (this *LikeService) MeLikes(num int, size int, uid int64) (*utils.Page, error) { |
|||
page, err := this.countLike(num, size, uid) |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
var likes []*models.Like |
|||
o := orm.NewOrm() |
|||
qs := o.QueryTable(&models.Like{}) |
|||
qs = qs.Filter("UserId", uid) |
|||
qs = qs.Limit(size, (page.PageNo-1)*size) |
|||
if _, err = qs.All(&likes); err != nil { |
|||
return nil, err |
|||
} |
|||
if len(likes) > 0 { |
|||
for i := 0; i < len(likes); i++ { |
|||
blog := &models.Blog{Id: likes[i].BlogId} |
|||
if err := o.Read(blog); err == nil { |
|||
likes[i].Blog = blog |
|||
} |
|||
} |
|||
} |
|||
page.List = likes |
|||
return page, nil |
|||
} |
|||
|
|||
func (this *LikeService) countLike(num int, size int, uid int64) (*utils.Page, error) { |
|||
o := orm.NewOrm() |
|||
qs := o.QueryTable(&models.Like{}) |
|||
totalCount, err := qs.Filter("UserId", uid).Count() |
|||
if err != nil { |
|||
return nil, err |
|||
} |
|||
return utils.PageUtil(totalCount, num, size), nil |
|||
} |
|||
func (likeService LikeService) DelLikeByBlog(id int64) { |
|||
orm.NewOrm().QueryTable(models.Like{}).Filter("BlogId", id).Delete() |
|||
} |
@ -1,105 +0,0 @@ |
|||
package service |
|||
|
|||
import ( |
|||
"beeblog/models" |
|||
"errors" |
|||
"github.com/beego/beego/v2/client/orm" |
|||
) |
|||
|
|||
type NoteService struct { |
|||
} |
|||
|
|||
func (this *NoteService) EditNote(note *models.Note) error { |
|||
o := orm.NewOrm() |
|||
id, err := o.Update(note) |
|||
if err == nil { |
|||
note.Id = id |
|||
} |
|||
return err |
|||
} |
|||
|
|||
func (this *NoteService) SaveNote(note *models.Note) error { |
|||
o := orm.NewOrm() |
|||
id, err := o.Insert(note) |
|||
if err == nil { |
|||
note.Id = id |
|||
} |
|||
return err |
|||
} |
|||
|
|||
func (this *NoteService) GetNote(note *models.Note) error { |
|||
o := orm.NewOrm() |
|||
return o.Read(note) |
|||
} |
|||
|
|||
func (this *NoteService) DelNote(note *models.Note) error { |
|||
o := orm.NewOrm() |
|||
_, err := o.Delete(note) |
|||
return err |
|||
} |
|||
|
|||
func (this *NoteService) GetNoteByPid(pid int64) ([]*models.Note, error) { |
|||
var notes []*models.Note |
|||
o := orm.NewOrm() |
|||
qs := o.QueryTable(models.Note{}) |
|||
_, err := qs.Filter("Pid", pid).All(¬es) |
|||
return notes, err |
|||
} |
|||
|
|||
func (this *NoteService) CountNote(pid int64) (int64, error) { |
|||
o := orm.NewOrm() |
|||
totalCount, err := o.QueryTable(&models.Note{}).Filter("Pid", pid).Count() |
|||
if err != nil { |
|||
return 0, err |
|||
} |
|||
return totalCount, nil |
|||
} |
|||
|
|||
func (this *NoteService) SaveNoteColl(note *models.NoteColl) error { |
|||
o := orm.NewOrm() |
|||
id, err := o.Insert(note) |
|||
if err == nil { |
|||
note.Id = id |
|||
} |
|||
return err |
|||
} |
|||
|
|||
func (this *NoteService) EditNoteColl(title string, id int64, uid int64) error { |
|||
o := orm.NewOrm() |
|||
noteColl := &models.NoteColl{Id: id} |
|||
|
|||
if err := o.Read(noteColl); err != nil { |
|||
return err |
|||
} |
|||
if noteColl.UserId != uid { |
|||
return errors.New("403") |
|||
} |
|||
noteColl.Title = title |
|||
_, err := o.Update(noteColl, "Title") |
|||
return err |
|||
} |
|||
|
|||
func (this *NoteService) GetNoteColl(uid int64) ([]*models.NoteColl, error) { |
|||
var notes []*models.NoteColl |
|||
o := orm.NewOrm() |
|||
qs := o.QueryTable(models.NoteColl{}) |
|||
_, err := qs.Filter("UserId", uid).All(¬es) |
|||
return notes, err |
|||
} |
|||
|
|||
func (this *NoteService) DelNoteColl(id int64, uid int64) error { |
|||
o := orm.NewOrm() |
|||
noteColl := &models.NoteColl{Id: id} |
|||
|
|||
if err := o.Read(noteColl); err != nil { |
|||
return err |
|||
} |
|||
if uid != noteColl.UserId { |
|||
return errors.New("403") |
|||
} |
|||
_, err := o.QueryTable(models.Note{}).Filter("Pid", id).Delete() |
|||
if err == nil { |
|||
_, err = o.Delete(noteColl) |
|||
} |
|||
return err |
|||
} |
@ -1,378 +0,0 @@ |
|||
<!doctype html> |
|||
<html lang="en" class="no-js"> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1"/> |
|||
<meta name="description" |
|||
content="码农随笔,个人随笔是一个面向IT技术人员,提供个人平时工作总结和在线记录学习笔记,个人技术博客,在线云笔记,码农笔录,最新的技术博客,www.aiprose.com"> |
|||
<meta name="keywords" content="码农随笔,个人随笔,博客,个人博客,个人笔记,技术博客,免费云笔记,云笔记,随笔,IT博客,谷歌地图,码农笔录,aiprose"> |
|||
<title>我的笔记 - 码农随笔</title> |
|||
<script type="text/javascript" src="/static/js/vue.min.js"></script> |
|||
<link rel="stylesheet" href="/static/css/iview.css"> |
|||
<script src="/static/js/iview.min.js"></script> |
|||
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.0/jquery.min.js"></script> |
|||
<link rel="stylesheet" href="/static/editor/css/index.css"> |
|||
<script src="/static/editor/mavon-editor.js"></script> |
|||
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.js"></script> |
|||
<style> |
|||
html, body { |
|||
height: 100%; |
|||
min-height: 100%; |
|||
} |
|||
|
|||
main { |
|||
margin-top: 0 !important; |
|||
margin-bottom: 0 !important; |
|||
background-color: #f5f4e9; |
|||
} |
|||
|
|||
#vue-app { |
|||
height: 100%; |
|||
} |
|||
|
|||
.v-note-wrapper { |
|||
height: 100%; |
|||
z-index: 99 !important; |
|||
} |
|||
|
|||
.v-note-wrapper .v-note-op { |
|||
padding-left: 40px !important; |
|||
} |
|||
|
|||
.ivu-menu-png { |
|||
z-index: 1000; |
|||
position: fixed; |
|||
left: 10px; |
|||
top: 5px; |
|||
} |
|||
|
|||
.ivu-drawer-body { |
|||
scrollbar-width: none; /* firefox */ |
|||
-ms-overflow-style: none; /* IE 10+ */ |
|||
overflow-x: hidden; |
|||
overflow-y: auto; |
|||
} |
|||
|
|||
::-webkit-scrollbar { |
|||
display: none; /* Chrome Safari */ |
|||
} |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<div id="vue-app"> |
|||
<div class="ivu-menu-png" @click="drawer = true"> |
|||
<img src="/static/img/imenu.png" alt="" width="30" height="30"> |
|||
</div> |
|||
<Modal |
|||
v-model="modal1" |
|||
title="笔记信息" |
|||
:mask-closable="false" |
|||
@on-ok="okHandler" |
|||
@on-cancel="cancelHandler"> |
|||
<i-form :label-width="100"> |
|||
<form-item label="文件夹名称"> |
|||
<i-select v-model="currentNote.Pid"> |
|||
<i-option v-for="item in noteCols" :value="item.id" :key="item.id">${ item.title }</i-option> |
|||
</i-select> |
|||
</form-item> |
|||
<form-item label="笔记名称"> |
|||
<i-input type="text" v-model="currentNote.Title" placeholder="请输入笔记名称"/> |
|||
</form-item> |
|||
</i-form> |
|||
</Modal> |
|||
<Modal |
|||
v-model="modal2" |
|||
title="新增文件夹" |
|||
:mask-closable="false" |
|||
@on-ok="okColHandler"> |
|||
<i-form :label-width="100"> |
|||
<form-item label="文件夹名称"> |
|||
<i-input type="text" v-model="colTitle" placeholder="请输入文件夹名称"/> |
|||
</form-item> |
|||
</i-form> |
|||
</Modal> |
|||
<mavon-editor :externalLink="externalLink" :toolbars="toolbars" v-model="meval" @imgAdd="$imgAdd" @save="saveHandler" |
|||
@change="changeHandler" ref=md></mavon-editor> |
|||
<Drawer title="目录选择" placement="left" :closable="false" v-model="drawer" width="400"> |
|||
<i-button type="primary" ghost long @click="newNoteColHandler">新建文件夹</i-button> |
|||
<i-button type="success" ghost long style="margin-top: 5px" @click="newNoteHandler">新建笔记</i-button> |
|||
<i-menu theme="light" accordion="true" width="380" @on-select="noteSelectHandler"> |
|||
<Submenu :name="item.Id" v-for="(item,key) in notes" :key="key"> |
|||
<template slot="title"> |
|||
<i class="ivu-icon ivu-icon-ios-paper"></i> |
|||
${item.Title} |
|||
</template> |
|||
<menu-item :name="note.Id" v-for="(note,nkey) in item.Notes" :key="nkey">${note.Title} |
|||
<Icon type="md-trash" style="float: right" @click="delHandler(note.Id)"/> |
|||
</menu-item> |
|||
</Submenu> |
|||
</i-menu> |
|||
</Drawer> |
|||
</div> |
|||
|
|||
</body> |
|||
<script> |
|||
var app = new Vue({ |
|||
delimiters: ['${', '}'], |
|||
el: '#vue-app', |
|||
components: { |
|||
'mavon-editor': MavonEditor.mavonEditor |
|||
}, |
|||
data: { |
|||
modal2: false, |
|||
modal1: false, |
|||
drawer: false, |
|||
colTitle: '', |
|||
externalLink: { |
|||
// markdown_css: function() { |
|||
// // 这是你的markdown css文件路径 |
|||
// return '/markdown/github-markdown.min.css'; |
|||
// }, |
|||
katex_css: function () { |
|||
// 这是你的katex配色方案路径路径 |
|||
return '/katex/katex.min.css'; |
|||
}, |
|||
katex_js: function () { |
|||
// 这是你的katex.js路径 |
|||
return '/katex/katex.min.js'; |
|||
}, |
|||
}, |
|||
toolbars: { |
|||
bold: true, // 粗体 |
|||
italic: true, // 斜体 |
|||
header: true, // 标题 |
|||
underline: true, // 下划线 |
|||
strikethrough: true, // 中划线 |
|||
mark: true, // 标记 |
|||
superscript: true, // 上角标 |
|||
subscript: true, // 下角标 |
|||
quote: true, // 引用 |
|||
ol: true, // 有序列表 |
|||
ul: true, // 无序列表 |
|||
link: true, // 链接 |
|||
imagelink: true, // 图片链接 |
|||
code: true, // code |
|||
table: true, // 表格 |
|||
//fullscreen: true, // 全屏编辑 |
|||
readmodel: true, // 沉浸式阅读 |
|||
htmlcode: true, // 展示html源码 |
|||
help: true, // 帮助 |
|||
/* 1.3.5 */ |
|||
undo: true, // 上一步 |
|||
//redo: true, // 下一步 |
|||
trash: true, // 清空 |
|||
save: true, // 保存(触发events中的save事件) |
|||
/* 1.4.2 */ |
|||
navigation: true, // 导航目录 |
|||
/* 2.1.8 */ |
|||
alignleft: true, // 左对齐 |
|||
aligncenter: true, // 居中 |
|||
alignright: true, // 右对齐 |
|||
/* 2.2.1 */ |
|||
subfield: true, // 单双栏模式 |
|||
preview: true, // 预览 |
|||
menu: true, // 预览 |
|||
}, |
|||
notes: [], |
|||
currentNote: {}, |
|||
meval: '', |
|||
noteCols: [] |
|||
|
|||
}, |
|||
mounted: function () { |
|||
var _this = this |
|||
var noteCahche = window.localStorage.getItem("note") |
|||
if (noteCahche) { |
|||
this.currentNote = JSON.parse(noteCahche) |
|||
this.meval = this.currentNote.NoteVal |
|||
} |
|||
this.getData() |
|||
// $vm.$emit('imgAdd', pos, $file); |
|||
this.$refs.md.$on("imgAdd",(pos, $file)=>{ |
|||
_this.$imgAdd(pos, $file) |
|||
}) |
|||
}, |
|||
methods: { |
|||
$imgAdd(pos, $file){ |
|||
debugger |
|||
var _this = this |
|||
// 第一步.将图片上传到服务器. |
|||
var formdata = new FormData(); |
|||
formdata.append('image', $file); |
|||
axios({ |
|||
url: '/file/upload', |
|||
method: 'post', |
|||
data: formdata, |
|||
headers: { 'Content-Type': 'multipart/form-data' }, |
|||
}).then((resp) => { |
|||
_this.$refs.md.$img2Url(pos, resp.data.Data); |
|||
}) |
|||
}, |
|||
delHandler (id){ |
|||
var _this = this |
|||
if(!id){ |
|||
return |
|||
} |
|||
$.post('/api/note/del/' + id, |
|||
function (data) { |
|||
if (data.Status == 0) { |
|||
this.currentNote = {} |
|||
this.meval = '' |
|||
_this.getData() |
|||
_this.$Notice.success({ |
|||
title: '删除成功', |
|||
desc: '' |
|||
}) |
|||
} else if (data.Status == 401) { |
|||
window.location.href = "/login" |
|||
} else if (data.Status == 403) { |
|||
this.$Notice.warning({ |
|||
title: '暂无权限', |
|||
desc: '' |
|||
}) |
|||
} else { |
|||
_this.$Notice.error({ |
|||
title: '删除失败', |
|||
desc: '' |
|||
}) |
|||
} |
|||
}, 'json') |
|||
}, |
|||
newNoteColHandler(){ |
|||
this.modal2 = true |
|||
}, |
|||
getData(){ |
|||
var _this = this |
|||
$.get("/api/note", function (data, status) { |
|||
_this.notes = data |
|||
data.forEach((el) => { |
|||
_this.noteCols.push({title: el.Title, id: el.Id}) |
|||
}) |
|||
}) |
|||
}, |
|||
okColHandler() { |
|||
var _this = this |
|||
if(!this.colTitle){ |
|||
return |
|||
} |
|||
$.post('/api/notecoll/save', { |
|||
title: this.colTitle |
|||
}, |
|||
function (data) { |
|||
if (data.Status == 500) { |
|||
_this.$Notice.error({ |
|||
title: '保存失败', |
|||
desc: '' |
|||
}) |
|||
} else if (data.Status == 401) { |
|||
window.location.href = "/login" |
|||
} else { |
|||
_this.getData() |
|||
_this.$Notice.success({ |
|||
title: '保存成功', |
|||
desc: '' |
|||
}) |
|||
} |
|||
}, 'json') |
|||
}, |
|||
changeHandler: function (value, render) { |
|||
this.currentNote.NoteVal = value |
|||
this.currentNote.NoteHtml = render |
|||
var jsonStr = JSON.stringify(this.currentNote); |
|||
window.localStorage.setItem("note", jsonStr) |
|||
}, |
|||
newNoteHandler() { |
|||
this.currentNote = {} |
|||
this.meval = '' |
|||
}, |
|||
okHandler() { |
|||
var _this = this |
|||
if (!this.currentNote.Pid) { |
|||
this.$Notice.warning({ |
|||
title: '请选择文件夹后重新保存', |
|||
desc: '' |
|||
}) |
|||
return |
|||
} |
|||
if (!this.currentNote.Title) { |
|||
this.$Notice.warning({ |
|||
title: '请输入笔记名称后重新保存', |
|||
desc: '' |
|||
}) |
|||
return |
|||
} |
|||
$.post('/api/note/save/', { |
|||
pid: this.currentNote.Pid, |
|||
title: this.currentNote.Title, |
|||
noteHtml: this.currentNote.NoteHtml, |
|||
noteVal: this.currentNote.NoteVal |
|||
}, |
|||
function (data) { |
|||
if (data.Status == 500) { |
|||
_this.$Notice.error({ |
|||
title: '保存失败', |
|||
desc: '' |
|||
}) |
|||
} else if (data.Status == 401) { |
|||
window.location.href = "/login" |
|||
} else { |
|||
_this.currentNote.Id = data.Id |
|||
_this.$Notice.success({ |
|||
title: '保存成功', |
|||
desc: '' |
|||
}) |
|||
} |
|||
}, 'json') |
|||
}, |
|||
cancelHandler() { |
|||
this.$Notice.warning({ |
|||
title: '笔记没有被保存!!!', |
|||
desc: '' |
|||
}) |
|||
}, |
|||
noteSelectHandler(id) { |
|||
var _this = this |
|||
this.notes.forEach((item) => { |
|||
item.Notes.forEach((note) => { |
|||
if (id == note.Id) { |
|||
_this.currentNote = note |
|||
_this.meval = note.NoteVal ? note.NoteVal : note.NoteHtml |
|||
} |
|||
}) |
|||
}) |
|||
}, |
|||
saveHandler(value, render) { |
|||
this.currentNote.NoteVal = value |
|||
this.currentNote.NoteHtml = render |
|||
if (!this.currentNote.Id) { |
|||
this.modal1 = true |
|||
} else { |
|||
this.editHandler(value, render) |
|||
} |
|||
}, |
|||
editHandler(value, render) { |
|||
var _this = this |
|||
$.post('/api/note/edit/' + this.currentNote.Id, { |
|||
noteHtml: render, |
|||
noteVal: value |
|||
}, |
|||
function (data) { |
|||
if (data.Status == 0) { |
|||
_this.$Notice.success({ |
|||
title: '保存成功', |
|||
desc: '' |
|||
}) |
|||
} else if (data.Status == 401) { |
|||
window.location.href = "/login" |
|||
} else { |
|||
_this.$Notice.error({ |
|||
title: '保存失败', |
|||
desc: '' |
|||
}) |
|||
} |
|||
}, 'json') |
|||
} |
|||
} |
|||
}) |
|||
</script> |
|||
</html> |
Loading…
Reference in new issue