251 lines
9.5 KiB
Go
251 lines
9.5 KiB
Go
package model
|
||
|
||
import (
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
)
|
||
|
||
type Book struct {
|
||
g.Meta `orm:"table:books"`
|
||
Id int64 `json:"id" orm:"id"`
|
||
AuthorId int64 `json:"authorId" orm:"author_id"`
|
||
Author Author `json:"author" orm:"with:id = author_id"`
|
||
CategoryId int64 `json:"categoryId" orm:"category_id"`
|
||
Category Category `json:"category" orm:"with:id = category_id"`
|
||
Title string `json:"title" orm:"title"`
|
||
CoverUrl string `json:"coverUrl" orm:"cover_url"`
|
||
Description string `json:"description" orm:"description"`
|
||
Status int `json:"status" orm:"status"`
|
||
WordsCount int `json:"wordsCount" orm:"words_count"`
|
||
ChaptersCount int `json:"chaptersCount" orm:"chapters_count"`
|
||
LatestChapterId int64 `json:"latestChapterId" orm:"latest_chapter_id"`
|
||
Rating float64 `json:"rating" orm:"rating"`
|
||
ReadCount int64 `json:"readCount" orm:"read_count"`
|
||
CurrentReaders int64 `json:"currentReaders" orm:"current_readers"`
|
||
Tags string `json:"tags" orm:"tags"`
|
||
IsRecommended int `json:"isRecommended" orm:"is_recommended"`
|
||
IsFeatured int `json:"isFeatured" orm:"is_featured"`
|
||
Language string `json:"language" orm:"language"`
|
||
}
|
||
|
||
// App作者信息结构体
|
||
type AppAuthor struct {
|
||
g.Meta `orm:"table:authors"`
|
||
Id int64 `json:"id" orm:"id"`
|
||
UserId int64 `json:"-" orm:"user_id"`
|
||
PenName string `json:"penName" orm:"pen_name"`
|
||
Bio string `json:"bio" orm:"bio"`
|
||
Status int `json:"status" orm:"status"`
|
||
}
|
||
|
||
type BookListIn struct {
|
||
Page int
|
||
Size int
|
||
Title string
|
||
CategoryId int64
|
||
AuthorId int64
|
||
Status int
|
||
IsRecommended int
|
||
Sort string
|
||
}
|
||
type BookListOut struct {
|
||
Total int
|
||
List []Book
|
||
}
|
||
|
||
type BookAddIn struct {
|
||
AuthorId int64
|
||
CategoryId int64
|
||
Title string
|
||
CoverUrl string
|
||
Description string
|
||
Status int
|
||
Tags string
|
||
IsRecommended int
|
||
IsFeatured int
|
||
Language string
|
||
}
|
||
type BookEditIn struct {
|
||
Id int64
|
||
AuthorId int64
|
||
CategoryId int64
|
||
Title string
|
||
CoverUrl string
|
||
Description string
|
||
Status int
|
||
Tags string
|
||
IsRecommended int
|
||
IsFeatured int
|
||
Language string
|
||
}
|
||
type BookDelIn struct {
|
||
Id int64
|
||
}
|
||
|
||
type BookCRUDOut struct {
|
||
Success bool
|
||
}
|
||
|
||
type BookHistoryRemoveOut struct {
|
||
Success bool `json:"success" dc:"是否成功"`
|
||
}
|
||
|
||
// App 书籍列表项结构体
|
||
type BookAppItem struct {
|
||
g.Meta `orm:"table:books"`
|
||
Id int64 `json:"id" dc:"书籍ID" orm:"id"`
|
||
CoverUrl string `json:"coverUrl" dc:"封面图" orm:"cover_url"`
|
||
Rating float64 `json:"rating" dc:"评分" orm:"rating"`
|
||
Title string `json:"title" dc:"标题" orm:"title"`
|
||
Description string `json:"description" dc:"简介" orm:"description"`
|
||
AuthorId int64 `json:"authorId" dc:"作者ID" orm:"author_id"`
|
||
Author AppAuthor `json:"author" dc:"作者信息" orm:"with:id = author_id"`
|
||
IsFeatured int `json:"isFeatured" dc:"是否精选" orm:"is_featured"`
|
||
Language string `json:"language" dc:"语言" orm:"language"`
|
||
CategoryId int64 `json:"categoryId" dc:"分类ID" orm:"category_id"`
|
||
Category Category `json:"category" dc:"分类信息" orm:"with:id = category_id"`
|
||
Status int `json:"status" dc:"状态" orm:"status"`
|
||
WordsCount int `json:"wordsCount" dc:"字数" orm:"words_count"`
|
||
ChaptersCount int `json:"chaptersCount" dc:"章节数" orm:"chapters_count"`
|
||
LatestChapterId int64 `json:"latestChapterId" dc:"最新章节ID" orm:"latest_chapter_id"`
|
||
ReadCount int64 `json:"readCount" dc:"阅读人数" orm:"read_count"`
|
||
CurrentReaders int64 `json:"currentReaders" dc:"在读人数" orm:"current_readers"`
|
||
Tags string `json:"tags" dc:"标签" orm:"tags"`
|
||
IsRecommended int `json:"isRecommended" dc:"是否推荐" orm:"is_recommended"`
|
||
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间" orm:"created_at"`
|
||
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间" orm:"updated_at"`
|
||
HasRated bool `json:"hasRated" dc:"当前用户是否已评分"`
|
||
MyRating float64 `json:"myRating" dc:"当前用户评分(未评分为0)"`
|
||
}
|
||
|
||
// App 书籍列表查询输入参数
|
||
type BookAppListIn struct {
|
||
Page int `json:"page" dc:"页码"`
|
||
Size int `json:"size" dc:"每页数量"`
|
||
IsRecommended bool `json:"isRecommended" dc:"是否推荐"`
|
||
IsLatest int `json:"isLatest" dc:"是否最新"`
|
||
CategoryId int64 `json:"categoryId" dc:"分类ID"`
|
||
Title string `json:"title" dc:"书名模糊搜索"`
|
||
UserId int64 `json:"userId" dc:"用户ID"`
|
||
AuthorId int `json:"authorId" dc:"作者ID"`
|
||
IsFeatured bool `json:"isFeatured" dc:"是否精选"`
|
||
Language string `json:"language" dc:"语言"`
|
||
Sort string `json:"sort" dc:"排序字段"`
|
||
}
|
||
|
||
// App 书籍列表输出结构体
|
||
type BookAppListOut struct {
|
||
Total int `json:"total" dc:"总数"`
|
||
List []BookAppItem `json:"list" dc:"书籍列表"`
|
||
}
|
||
|
||
// App 书籍详情查询输入参数
|
||
type BookAppDetailIn struct {
|
||
Id int64 `json:"id" dc:"书籍ID"`
|
||
UserId int64 `json:"userId" dc:"用户ID"`
|
||
}
|
||
|
||
// App 书籍详情输出结构体
|
||
type BookAppDetailOut struct {
|
||
Id int64 `json:"id" dc:"书籍ID"`
|
||
AuthorId int64 `json:"authorId" dc:"作者ID"`
|
||
CategoryId int64 `json:"categoryId" dc:"分类ID"`
|
||
Title string `json:"title" dc:"书名"`
|
||
CoverUrl string `json:"coverUrl" dc:"封面图"`
|
||
Description string `json:"description" dc:"简介"`
|
||
Status int `json:"status" dc:"状态"`
|
||
Tags string `json:"tags" dc:"标签"`
|
||
IsRecommended int `json:"isRecommended" dc:"是否推荐"`
|
||
IsFeatured int `json:"isFeatured" dc:"是否精选"`
|
||
Language string `json:"language" dc:"语言"`
|
||
Rating float64 `json:"rating" dc:"评分"`
|
||
CurrentReaders int64 `json:"currentReaders" dc:"在读人数"`
|
||
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"`
|
||
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"`
|
||
HasRead bool `json:"hasRead" dc:"是否读过"`
|
||
ReadProgress int `json:"readProgress" dc:"阅读进度百分比"`
|
||
LastChapterId int64 `json:"lastChapterId" dc:"最近阅读章节ID"`
|
||
LastReadAt string `json:"lastReadAt" dc:"最近阅读时间"`
|
||
}
|
||
|
||
// App 用户评分输入参数
|
||
type BookAppRateIn struct {
|
||
BookId int64 `json:"bookId" dc:"书籍ID"`
|
||
UserId int64 `json:"userId" dc:"用户ID"`
|
||
Rating float64 `json:"rating" dc:"评分(1-10分)"`
|
||
}
|
||
|
||
// App 用户评分输出结构体
|
||
type BookAppRateOut struct {
|
||
Success bool `json:"success" dc:"是否成功"`
|
||
}
|
||
|
||
// 书籍评分模型
|
||
type BookRating struct {
|
||
g.Meta `orm:"table:book_ratings"`
|
||
Id int64 `json:"id" orm:"id"`
|
||
UserId int64 `json:"userId" orm:"user_id"`
|
||
BookId int64 `json:"bookId" orm:"book_id"`
|
||
Score float64 `json:"score" orm:"score"`
|
||
Comment string `json:"comment" orm:"comment"`
|
||
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at"`
|
||
}
|
||
|
||
// 书籍评分输入参数
|
||
type BookRatingAddIn struct {
|
||
UserId int64 `json:"userId" dc:"用户ID"`
|
||
BookId int64 `json:"bookId" dc:"书籍ID"`
|
||
Score float64 `json:"score" dc:"评分(1-10分)"`
|
||
Comment string `json:"comment" dc:"用户评论"`
|
||
}
|
||
|
||
// 书籍评分输出结构体
|
||
type BookRatingCRUDOut struct {
|
||
Success bool `json:"success" dc:"是否成功"`
|
||
}
|
||
|
||
// 我的书籍列表项
|
||
// =============================
|
||
type MyBookItem struct {
|
||
Id int64 `json:"id"`
|
||
Title string `json:"title"`
|
||
CoverUrl string `json:"coverUrl"`
|
||
Description string `json:"description"`
|
||
Progress int `json:"progress" dc:"阅读进度百分比"`
|
||
IsInShelf bool `json:"isInShelf" dc:"是否在书架"`
|
||
LastReadAt string `json:"lastReadAt" dc:"最近阅读时间"`
|
||
Status int `json:"status" dc:"书籍状态"`
|
||
AuthorId int64 `json:"authorId"`
|
||
CategoryId int64 `json:"categoryId"`
|
||
}
|
||
|
||
// 我的书籍列表查询参数
|
||
// =============================
|
||
type MyBookListIn struct {
|
||
Type int // 1-正在读 2-已读完 3-历史记录
|
||
Page int
|
||
Size int
|
||
UserId int64
|
||
Sort string
|
||
}
|
||
|
||
// 我的书籍列表返回
|
||
// =============================
|
||
type MyBookListOut struct {
|
||
Total int
|
||
List []MyBookItem
|
||
}
|
||
|
||
// =============================
|
||
// 新增:单独修改精选状态和推荐状态
|
||
// =============================
|
||
type BookSetFeaturedIn struct {
|
||
Id int64 `json:"id" dc:"书籍ID"`
|
||
IsFeatured int `json:"isFeatured" dc:"是否精选"`
|
||
}
|
||
|
||
type BookSetRecommendedIn struct {
|
||
Id int64 `json:"id" dc:"书籍ID"`
|
||
IsRecommended int `json:"isRecommended" dc:"是否推荐"`
|
||
}
|