燕鹏
3 years ago
23 changed files with 29 additions and 1195 deletions
@ -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