134 lines
3.6 KiB
Go
134 lines
3.6 KiB
Go
package book
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
|
|
commonModel "github.com/flipped-aurora/gin-vue-admin/server/model/common"
|
|
)
|
|
|
|
func validateBook(item book.Book) error {
|
|
if item.EraTag != "" && !validBookEraTags[item.EraTag] {
|
|
return errors.New("eraTag不是有效值")
|
|
}
|
|
if item.CompletionStatus != "" && !validBookCompletionStatuses[item.CompletionStatus] {
|
|
return errors.New("completionStatus不是有效值")
|
|
}
|
|
if item.PublishStatus != "" && !validBookPublishStatuses[item.PublishStatus] {
|
|
return errors.New("publishStatus不是有效值")
|
|
}
|
|
if item.HotScore < 0 {
|
|
return errors.New("hotScore不能小于0")
|
|
}
|
|
if item.Rating < 0 || item.Rating > 10 {
|
|
return errors.New("rating必须在0到10之间")
|
|
}
|
|
if item.CommentCount < 0 {
|
|
return errors.New("commentCount不能小于0")
|
|
}
|
|
if item.WordCount < 0 {
|
|
return errors.New("wordCount不能小于0")
|
|
}
|
|
if item.SeriesSort < 0 {
|
|
return errors.New("seriesSort不能小于0")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var validBookEraTags = map[string]bool{
|
|
book.BookEraTagUnknown: true,
|
|
book.BookEraTagAncient: true,
|
|
book.BookEraTagHan: true,
|
|
book.BookEraTagTang: true,
|
|
book.BookEraTagSong: true,
|
|
book.BookEraTagYuan: true,
|
|
book.BookEraTagMing: true,
|
|
book.BookEraTagQing: true,
|
|
book.BookEraTagModern: true,
|
|
book.BookEraTagContemporary: true,
|
|
}
|
|
|
|
var validBookCompletionStatuses = map[string]bool{
|
|
book.BookCompletionStatusCompleted: true,
|
|
book.BookCompletionStatusSerializing: true,
|
|
}
|
|
|
|
var validBookPublishStatuses = map[string]bool{
|
|
book.BookPublishStatusDraft: true,
|
|
book.BookPublishStatusOffShelf: true,
|
|
book.BookPublishStatusOnShelf: true,
|
|
}
|
|
|
|
var validBookAuthorStatuses = map[string]bool{
|
|
commonModel.CommonEnabledStatusEnabled: true,
|
|
commonModel.CommonEnabledStatusDisabled: true,
|
|
}
|
|
|
|
var validBookCommentStatuses = map[string]bool{
|
|
book.BookCommentStatusNormal: true,
|
|
book.BookCommentStatusHidden: true,
|
|
}
|
|
|
|
func validateBookAuthor(item book.BookAuthor) error {
|
|
if item.AuthorStatus != "" && !validBookAuthorStatuses[item.AuthorStatus] {
|
|
return errors.New("authorStatus不是有效值")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateBookChapter(item book.BookChapter) error {
|
|
if item.ChapterNo <= 0 {
|
|
return errors.New("chapterNo必须大于0")
|
|
}
|
|
if item.TotalLines < 0 {
|
|
return errors.New("totalLines不能小于0")
|
|
}
|
|
if item.IsReadable && item.TotalLines <= 0 {
|
|
return errors.New("totalLines必须大于0后才能开放阅读")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateBookAuthorRelation(item book.BookAuthorRelation) error {
|
|
if item.AuthorSort <= 0 {
|
|
return errors.New("authorSort必须大于0")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func applyBookAuthorRelationDefaults(item book.BookAuthorRelation) book.BookAuthorRelation {
|
|
if item.AuthorSort == 0 {
|
|
item.AuthorSort = 1
|
|
}
|
|
return item
|
|
}
|
|
|
|
func validateBookComment(item book.BookComment) error {
|
|
if item.CommentStatus != "" && !validBookCommentStatuses[item.CommentStatus] {
|
|
return errors.New("commentStatus不是有效值")
|
|
}
|
|
if item.LineIndex < 0 {
|
|
return errors.New("lineIndex不能小于0")
|
|
}
|
|
if item.ChapterID == 0 && item.LineIndex != 0 {
|
|
return errors.New("lineIndex在整书评论时必须为0")
|
|
}
|
|
if item.LikeCount < 0 {
|
|
return errors.New("likeCount不能小于0")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateBookReadRecord(item book.BookReadRecord) error {
|
|
if item.ReadProgress < 0 || item.ReadProgress > 100 {
|
|
return errors.New("readProgress必须在0到100之间")
|
|
}
|
|
if item.ChapterID == 0 {
|
|
return errors.New("chapterId必须大于0")
|
|
}
|
|
if item.LineIndex <= 0 {
|
|
return errors.New("lineIndex必须大于0")
|
|
}
|
|
return nil
|
|
}
|