55 "net/http"
66 "strconv"
77 "strings"
8+ "time"
89 "unicode/utf8"
910
1011 "github.com/gin-gonic/gin"
@@ -89,6 +90,10 @@ func Save(c *gin.Context, isEdit bool) {
8990 } else {
9091 //更新图书
9192 if err := model .DB .First (& updatedBook , bookData .ID ).Error ; err == nil {
93+ if updatedBook .UserID != user .ID {
94+ SendErrJSON ("您没有权限执行此操作" , c )
95+ return
96+ }
9297 updatedBook .ReadLimits = bookData .ReadLimits
9398 updatedBook .Name = bookData .Name
9499 updatedBook .CoverURL = bookData .CoverURL
@@ -158,6 +163,15 @@ func UpdateName(c *gin.Context) {
158163 SendErrJSON ("错误的图书id" , c )
159164 return
160165 }
166+
167+ userInter , _ := c .Get ("user" )
168+ user := userInter .(model.User )
169+
170+ if book .UserID != user .ID {
171+ SendErrJSON ("您没有权限执行此操作" , c )
172+ return
173+ }
174+
161175 book .Name = bookData .Name
162176 if err := model .DB .Save (& book ).Error ; err != nil {
163177 SendErrJSON ("error" , c )
@@ -187,6 +201,15 @@ func Publish(c *gin.Context) {
187201 SendErrJSON ("错误的图书id" , c )
188202 return
189203 }
204+
205+ userInter , _ := c .Get ("user" )
206+ user := userInter .(model.User )
207+
208+ if book .UserID != user .ID {
209+ SendErrJSON ("您没有权限执行此操作" , c )
210+ return
211+ }
212+
190213 book .Status = model .BookVerifySuccess
191214 if err := model .DB .Save (& book ).Error ; err != nil {
192215 fmt .Println (err .Error ())
@@ -246,7 +269,7 @@ func List(c *gin.Context) {
246269
247270 if err := model .DB .Model (& model.Book {}).Where ("read_limits <> ?" , model .BookReadLimitsPrivate ).
248271 Where ("status <> ?" , model .BookVerifyFail ).Where ("status <> ?" , model .BookUnpublish ).
249- Find (& books ).Error ; err != nil {
272+ Order ( "created_at desc" ). Find (& books ).Error ; err != nil {
250273 fmt .Println (err .Error ())
251274 SendErrJSON ("error" , c )
252275 return
@@ -287,7 +310,7 @@ func MyBooks(c *gin.Context) {
287310 pageSize := 20
288311 offset := (pageNo - 1 ) * pageSize
289312
290- if err := model .DB .Model (& model.Book {}).Where ("user_id = ?" , user .ID ).Offset (offset ).Limit (pageSize ).Find (& books ).Error ; err != nil {
313+ if err := model .DB .Model (& model.Book {}).Where ("user_id = ?" , user .ID ).Offset (offset ).Limit (pageSize ).Order ( "created_at desc" ). Find (& books ).Error ; err != nil {
291314 fmt .Println (err .Error ())
292315 SendErrJSON ("error" , c )
293316 return
@@ -310,7 +333,7 @@ func MyBooks(c *gin.Context) {
310333 })
311334}
312335
313- // UserPublicBooks 用户公开的图书
336+ // UserPublicBooks 用户公开的图书列表
314337func UserPublicBooks (c * gin.Context ) {
315338 SendErrJSON := common .SendErrJSON
316339
@@ -363,7 +386,7 @@ func UserPublicBooks(c *gin.Context) {
363386 })
364387}
365388
366- // Info 获取图书信息
389+ // Info 获取图书信息, 若图书是私有的,那么只有作者本人才能查看
367390func Info (c * gin.Context ) {
368391 SendErrJSON := common .SendErrJSON
369392 id , err := strconv .Atoi (c .Param ("id" ))
@@ -412,7 +435,7 @@ func Info(c *gin.Context) {
412435 })
413436}
414437
415- // Chapters 获取图书的所有章节
438+ // Chapters 获取图书的所有章节, 若图书是私有的,那么只有作者本人才能查看
416439func Chapters (c * gin.Context ) {
417440 SendErrJSON := common .SendErrJSON
418441 id , err := strconv .Atoi (c .Param ("bookID" ))
@@ -455,7 +478,7 @@ func Chapters(c *gin.Context) {
455478 })
456479}
457480
458- // Chapter 查询章节
481+ // Chapter 查询章节, 若图书是私有的,那么只有作者本人才能查看
459482func Chapter (c * gin.Context ) {
460483 SendErrJSON := common .SendErrJSON
461484 id , err := strconv .Atoi (c .Param ("chapterID" ))
@@ -581,8 +604,23 @@ func DeleteChapter(c *gin.Context) {
581604 SendErrJSON ("错误的章节id" , c )
582605 return
583606 }
584- var sql = "DELETE FROM book_chapters WHERE id = ? OR parent_id = ?"
585- if err := model .DB .Exec (sql , id , id ).Error ; err != nil {
607+
608+ var chapter model.BookChapter
609+ if err := model .DB .First (& chapter , id ).Error ; err != nil {
610+ SendErrJSON ("错误的章节id" , c )
611+ return
612+ }
613+
614+ userInter , _ := c .Get ("user" )
615+ user := userInter .(model.User )
616+
617+ if chapter .UserID != user .ID {
618+ SendErrJSON ("您没有权限执行此操作" , c )
619+ return
620+ }
621+
622+ var sql = "UPDATE book_chapters SET deleted_at = ? WHERE id = ? OR parent_id = ?"
623+ if err := model .DB .Exec (sql , time .Now (), id , id ).Error ; err != nil {
586624 fmt .Println (err .Error ())
587625 SendErrJSON ("error" , c )
588626 return
@@ -623,6 +661,15 @@ func UpdateChapterContent(c *gin.Context) {
623661 SendErrJSON ("错误的章节id" , c )
624662 return
625663 }
664+
665+ userInter , _ := c .Get ("user" )
666+ user := userInter .(model.User )
667+
668+ if chapter .UserID != user .ID {
669+ SendErrJSON ("您没有权限执行此操作" , c )
670+ return
671+ }
672+
626673 chapter .Content = reqData .Content
627674 chapter .HTMLContent = reqData .HTMLContent
628675
@@ -666,6 +713,15 @@ func UpdateChapterName(c *gin.Context) {
666713 SendErrJSON ("无效的章节id" , c )
667714 return
668715 }
716+
717+ userInter , _ := c .Get ("user" )
718+ user := userInter .(model.User )
719+
720+ if chapter .UserID != user .ID {
721+ SendErrJSON ("您没有权限执行此操作" , c )
722+ return
723+ }
724+
669725 chapter .Name = reqData .Name
670726 if err := model .DB .Save (& chapter ).Error ; err != nil {
671727 fmt .Println (err .Error ())
0 commit comments