基础项目
Some checks failed
CI / init (pull_request) Has been cancelled
CI / Frontend node 18.16.0 (pull_request) Has been cancelled
CI / Backend go (1.22) (pull_request) Has been cancelled
CI / release-pr (pull_request) Has been cancelled
CI / devops-test (1.22, 18.16.0) (pull_request) Has been cancelled
CI / release-please (pull_request) Has been cancelled
CI / devops-prod (1.22, 18.x) (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled

This commit is contained in:
2026-04-26 15:32:21 +08:00
parent cc40d743cb
commit 1e33640629
102 changed files with 4088 additions and 197 deletions

138
server/api/v1/book/book.go Normal file
View File

@@ -0,0 +1,138 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookApi struct{}
// @Tags Book
// @Summary 创建书籍信息
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body book.Book true "书籍信息"
// @Success 200 {object} response.Response{msg=string}
// @Router /book/createBook [post]
func (a *BookApi) CreateBook(c *gin.Context) {
var item book.Book
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookService.CreateBook(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
// @Tags Book
// @Summary 删除书籍信息
// @Security ApiKeyAuth
// @Param id query int true "主键ID"
// @Success 200 {object} response.Response{msg=string}
// @Router /book/deleteBook [delete]
func (a *BookApi) DeleteBook(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookService.DeleteBook(book.Book{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
// @Tags Book
// @Summary 批量删除书籍信息
// @Security ApiKeyAuth
// @Param ids query []int true "主键ID数组"
// @Success 200 {object} response.Response{msg=string}
// @Router /book/deleteBookByIds [delete]
func (a *BookApi) DeleteBookByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookService.DeleteBookByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
// @Tags Book
// @Summary 更新书籍信息
// @Security ApiKeyAuth
// @Param data body book.Book true "书籍信息"
// @Success 200 {object} response.Response{msg=string}
// @Router /book/updateBook [put]
func (a *BookApi) UpdateBook(c *gin.Context) {
var item book.Book
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookService.UpdateBook(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
// @Tags Book
// @Summary 查询书籍详情
// @Security ApiKeyAuth
// @Param id query int true "主键ID"
// @Success 200 {object} response.Response{data=bookRes.BookResponse,msg=string}
// @Router /book/findBook [get]
func (a *BookApi) FindBook(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookService.GetBook(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookResponse{Book: item}, "获取成功", c)
}
// @Tags Book
// @Summary 分页获取书籍列表
// @Security ApiKeyAuth
// @Param data query bookReq.BookSearch true "分页与筛选条件"
// @Success 200 {object} response.Response{data=response.PageResult,msg=string}
// @Router /book/getBookList [get]
func (a *BookApi) GetBookList(c *gin.Context) {
var info bookReq.BookSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookService.GetBookInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookAuthorApi struct{}
func (a *BookAuthorApi) CreateBookAuthor(c *gin.Context) {
var item book.BookAuthor
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookAuthorService.CreateBookAuthor(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookAuthorApi) DeleteBookAuthor(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookAuthorService.DeleteBookAuthor(book.BookAuthor{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookAuthorApi) DeleteBookAuthorByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookAuthorService.DeleteBookAuthorByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookAuthorApi) UpdateBookAuthor(c *gin.Context) {
var item book.BookAuthor
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookAuthorService.UpdateBookAuthor(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookAuthorApi) FindBookAuthor(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookAuthorService.GetBookAuthor(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookAuthorResponse{BookAuthor: item}, "获取成功", c)
}
func (a *BookAuthorApi) GetBookAuthorList(c *gin.Context) {
var info bookReq.BookAuthorSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookAuthorService.GetBookAuthorInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookAuthorRelationApi struct{}
func (a *BookAuthorRelationApi) CreateBookAuthorRelation(c *gin.Context) {
var item book.BookAuthorRelation
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookAuthorRelationService.CreateBookAuthorRelation(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookAuthorRelationApi) DeleteBookAuthorRelation(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookAuthorRelationService.DeleteBookAuthorRelation(book.BookAuthorRelation{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookAuthorRelationApi) DeleteBookAuthorRelationByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookAuthorRelationService.DeleteBookAuthorRelationByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookAuthorRelationApi) UpdateBookAuthorRelation(c *gin.Context) {
var item book.BookAuthorRelation
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookAuthorRelationService.UpdateBookAuthorRelation(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookAuthorRelationApi) FindBookAuthorRelation(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookAuthorRelationService.GetBookAuthorRelation(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookAuthorRelationResponse{BookAuthorRelation: item}, "获取成功", c)
}
func (a *BookAuthorRelationApi) GetBookAuthorRelationList(c *gin.Context) {
var info bookReq.BookAuthorRelationSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookAuthorRelationService.GetBookAuthorRelationInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookChapterApi struct{}
func (a *BookChapterApi) CreateBookChapter(c *gin.Context) {
var item book.BookChapter
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookChapterService.CreateBookChapter(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookChapterApi) DeleteBookChapter(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookChapterService.DeleteBookChapter(book.BookChapter{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookChapterApi) DeleteBookChapterByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookChapterService.DeleteBookChapterByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookChapterApi) UpdateBookChapter(c *gin.Context) {
var item book.BookChapter
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookChapterService.UpdateBookChapter(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookChapterApi) FindBookChapter(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookChapterService.GetBookChapter(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookChapterResponse{BookChapter: item}, "获取成功", c)
}
func (a *BookChapterApi) GetBookChapterList(c *gin.Context) {
var info bookReq.BookChapterSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookChapterService.GetBookChapterInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookCommentApi struct{}
func (a *BookCommentApi) CreateBookComment(c *gin.Context) {
var item book.BookComment
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookCommentService.CreateBookComment(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookCommentApi) DeleteBookComment(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookCommentService.DeleteBookComment(book.BookComment{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookCommentApi) DeleteBookCommentByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookCommentService.DeleteBookCommentByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookCommentApi) UpdateBookComment(c *gin.Context) {
var item book.BookComment
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookCommentService.UpdateBookComment(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookCommentApi) FindBookComment(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookCommentService.GetBookComment(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookCommentResponse{BookComment: item}, "获取成功", c)
}
func (a *BookCommentApi) GetBookCommentList(c *gin.Context) {
var info bookReq.BookCommentSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookCommentService.GetBookCommentInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookCommentLikeRecordApi struct{}
func (a *BookCommentLikeRecordApi) CreateBookCommentLikeRecord(c *gin.Context) {
var item book.BookCommentLikeRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookCommentLikeRecordService.CreateBookCommentLikeRecord(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookCommentLikeRecordApi) DeleteBookCommentLikeRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookCommentLikeRecordService.DeleteBookCommentLikeRecord(book.BookCommentLikeRecord{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookCommentLikeRecordApi) DeleteBookCommentLikeRecordByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookCommentLikeRecordService.DeleteBookCommentLikeRecordByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookCommentLikeRecordApi) UpdateBookCommentLikeRecord(c *gin.Context) {
var item book.BookCommentLikeRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookCommentLikeRecordService.UpdateBookCommentLikeRecord(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookCommentLikeRecordApi) FindBookCommentLikeRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookCommentLikeRecordService.GetBookCommentLikeRecord(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookCommentLikeRecordResponse{BookCommentLikeRecord: item}, "获取成功", c)
}
func (a *BookCommentLikeRecordApi) GetBookCommentLikeRecordList(c *gin.Context) {
var info bookReq.BookCommentLikeRecordSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookCommentLikeRecordService.GetBookCommentLikeRecordInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookFavoriteRecordApi struct{}
func (a *BookFavoriteRecordApi) CreateBookFavoriteRecord(c *gin.Context) {
var item book.BookFavoriteRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookFavoriteRecordService.CreateBookFavoriteRecord(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookFavoriteRecordApi) DeleteBookFavoriteRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookFavoriteRecordService.DeleteBookFavoriteRecord(book.BookFavoriteRecord{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookFavoriteRecordApi) DeleteBookFavoriteRecordByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookFavoriteRecordService.DeleteBookFavoriteRecordByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookFavoriteRecordApi) UpdateBookFavoriteRecord(c *gin.Context) {
var item book.BookFavoriteRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookFavoriteRecordService.UpdateBookFavoriteRecord(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookFavoriteRecordApi) FindBookFavoriteRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookFavoriteRecordService.GetBookFavoriteRecord(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookFavoriteRecordResponse{BookFavoriteRecord: item}, "获取成功", c)
}
func (a *BookFavoriteRecordApi) GetBookFavoriteRecordList(c *gin.Context) {
var info bookReq.BookFavoriteRecordSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookFavoriteRecordService.GetBookFavoriteRecordInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookReadRecordApi struct{}
func (a *BookReadRecordApi) CreateBookReadRecord(c *gin.Context) {
var item book.BookReadRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookReadRecordService.CreateBookReadRecord(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookReadRecordApi) DeleteBookReadRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookReadRecordService.DeleteBookReadRecord(book.BookReadRecord{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookReadRecordApi) DeleteBookReadRecordByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookReadRecordService.DeleteBookReadRecordByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookReadRecordApi) UpdateBookReadRecord(c *gin.Context) {
var item book.BookReadRecord
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookReadRecordService.UpdateBookReadRecord(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookReadRecordApi) FindBookReadRecord(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookReadRecordService.GetBookReadRecord(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookReadRecordResponse{BookReadRecord: item}, "获取成功", c)
}
func (a *BookReadRecordApi) GetBookReadRecordList(c *gin.Context) {
var info bookReq.BookReadRecordSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookReadRecordService.GetBookReadRecordInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,100 @@
package book
import (
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
bookReq "github.com/flipped-aurora/gin-vue-admin/server/model/book/request"
bookRes "github.com/flipped-aurora/gin-vue-admin/server/model/book/response"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type BookSeriesApi struct{}
func (a *BookSeriesApi) CreateBookSeries(c *gin.Context) {
var item book.BookSeries
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookSeriesService.CreateBookSeries(item); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return
}
response.OkWithMessage("创建成功", c)
}
func (a *BookSeriesApi) DeleteBookSeries(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
if err := bookSeriesService.DeleteBookSeries(book.BookSeries{HardDeleteModel: book.HardDeleteModel{ID: id}}); err != nil {
global.GVA_LOG.Error("删除失败!", zap.Error(err))
response.FailWithMessage("删除失败", c)
return
}
response.OkWithMessage("删除成功", c)
}
func (a *BookSeriesApi) DeleteBookSeriesByIds(c *gin.Context) {
ids, ok := bindIDs(c)
if !ok {
return
}
if err := bookSeriesService.DeleteBookSeriesByIds(ids); err != nil {
global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
response.FailWithMessage("批量删除失败", c)
return
}
response.OkWithMessage("批量删除成功", c)
}
func (a *BookSeriesApi) UpdateBookSeries(c *gin.Context) {
var item book.BookSeries
if err := c.ShouldBindJSON(&item); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if item.ID == 0 {
response.FailWithMessage("ID不能为空", c)
return
}
if err := bookSeriesService.UpdateBookSeries(item); err != nil {
global.GVA_LOG.Error("更新失败!", zap.Error(err))
response.FailWithMessage("更新失败", c)
return
}
response.OkWithMessage("更新成功", c)
}
func (a *BookSeriesApi) FindBookSeries(c *gin.Context) {
id, ok := bindID(c)
if !ok {
return
}
item, err := bookSeriesService.GetBookSeries(id)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
response.OkWithDetailed(bookRes.BookSeriesResponse{BookSeries: item}, "获取成功", c)
}
func (a *BookSeriesApi) GetBookSeriesList(c *gin.Context) {
var info bookReq.BookSeriesSearch
if err := c.ShouldBindQuery(&info); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
list, total, err := bookSeriesService.GetBookSeriesInfoList(info)
if err != nil {
global.GVA_LOG.Error("获取失败!", zap.Error(err))
response.FailWithMessage("获取失败", c)
return
}
pageResult(c, list, total, info.PageInfo)
}

View File

@@ -0,0 +1,50 @@
package book
import (
"fmt"
commonReq "github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
"github.com/flipped-aurora/gin-vue-admin/server/utils"
"github.com/gin-gonic/gin"
)
func bindID(c *gin.Context) (uint, bool) {
var req commonReq.GetById
if err := c.ShouldBindQuery(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return 0, false
}
if err := utils.Verify(req, utils.IdVerify); err != nil {
response.FailWithMessage(err.Error(), c)
return 0, false
}
return req.Uint(), true
}
func bindIDs(c *gin.Context) (commonReq.IdsReq, bool) {
var req commonReq.IdsReq
if err := c.ShouldBindQuery(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return req, false
}
if len(req.Ids) == 0 {
for _, rawID := range c.QueryArray("ids[]") {
var id int
if _, err := fmt.Sscanf(rawID, "%d", &id); err != nil {
response.FailWithMessage(err.Error(), c)
return req, false
}
req.Ids = append(req.Ids, id)
}
}
if len(req.Ids) == 0 {
response.FailWithMessage("ids不能为空", c)
return req, false
}
return req, true
}
func pageResult(c *gin.Context, list interface{}, total int64, page commonReq.PageInfo) {
response.OkWithDetailed(response.PageResult{List: list, Total: total, Page: page.Page, PageSize: page.PageSize}, "获取成功", c)
}

View File

@@ -0,0 +1,33 @@
package book
import (
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
)
func TestBindIDsAcceptsDocumentedIdsArrayQuery(t *testing.T) {
gin.SetMode(gin.TestMode)
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
ctx.Request = httptest.NewRequest("DELETE", "/book/deleteBookByIds?ids[]=1&ids[]=2", nil)
ids, ok := bindIDs(ctx)
if !ok {
t.Fatal("bindIDs() ok = false, want true")
}
if len(ids.Ids) != 2 || ids.Ids[0] != 1 || ids.Ids[1] != 2 {
t.Fatalf("ids = %#v, want [1 2]", ids.Ids)
}
}
func TestBindIDsRejectsEmptyIDList(t *testing.T) {
gin.SetMode(gin.TestMode)
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
ctx.Request = httptest.NewRequest("DELETE", "/book/deleteBookByIds", nil)
_, ok := bindIDs(ctx)
if ok {
t.Fatal("bindIDs() ok = true, want false")
}
}

View File

@@ -0,0 +1,27 @@
package book
import "github.com/flipped-aurora/gin-vue-admin/server/service"
type ApiGroup struct {
BookApi
BookAuthorApi
BookAuthorRelationApi
BookChapterApi
BookCommentApi
BookCommentLikeRecordApi
BookFavoriteRecordApi
BookReadRecordApi
BookSeriesApi
}
var (
bookService = service.ServiceGroupApp.BookServiceGroup.BookService
bookAuthorService = service.ServiceGroupApp.BookServiceGroup.BookAuthorService
bookAuthorRelationService = service.ServiceGroupApp.BookServiceGroup.BookAuthorRelationService
bookChapterService = service.ServiceGroupApp.BookServiceGroup.BookChapterService
bookCommentService = service.ServiceGroupApp.BookServiceGroup.BookCommentService
bookCommentLikeRecordService = service.ServiceGroupApp.BookServiceGroup.BookCommentLikeRecordService
bookFavoriteRecordService = service.ServiceGroupApp.BookServiceGroup.BookFavoriteRecordService
bookReadRecordService = service.ServiceGroupApp.BookServiceGroup.BookReadRecordService
bookSeriesService = service.ServiceGroupApp.BookServiceGroup.BookSeriesService
)