108 lines
3.2 KiB
Go
108 lines
3.2 KiB
Go
package post
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"bsm/full/module/base/cms/internal/models"
|
|
pb "bsm/full/module/base/cms/pb"
|
|
"git.apinb.com/bsm-sdk/core/errcode"
|
|
"git.apinb.com/bsm-sdk/core/printer"
|
|
)
|
|
|
|
// 文章列表
|
|
func Fetch(ctx context.Context, in *pb.PostListRequest) (reply *pb.PostListReply, err error) {
|
|
if in.GetPage() <= 0 {
|
|
in.Page = 1
|
|
}
|
|
if in.GetSize() <= 0 {
|
|
in.Size = 10
|
|
}
|
|
if in.GetSize() > 50 {
|
|
in.Size = 50
|
|
}
|
|
list, cnt, err := models.PostList(in.Page, in.Size, in.CategoryIdentity, in.Keyword, int64(in.Type))
|
|
if err != nil {
|
|
printer.Error(err.Error())
|
|
return nil, errcode.ErrDB
|
|
}
|
|
var res = pb.PostListReply{
|
|
Count: cnt,
|
|
Data: make([]*pb.PostItem, 0),
|
|
}
|
|
for _, val := range list {
|
|
var (
|
|
accessoryData = make([]*pb.AccessoryItem, 0)
|
|
accessories = make([]string, 0)
|
|
|
|
categoryData = make([]*pb.CategoryItem, 0)
|
|
categories = make([]string, 0)
|
|
|
|
TagsData = make([]*pb.TagsItem, 0)
|
|
tagsIdentityArray = make([]string, 0)
|
|
)
|
|
for _, accessory := range val.Accessories {
|
|
accessoryData = append(accessoryData, &pb.AccessoryItem{
|
|
Identity: accessory.Identity,
|
|
Title: accessory.Title,
|
|
FilePath: accessory.FilePath,
|
|
})
|
|
accessories = append(accessories, accessory.Identity)
|
|
}
|
|
for _, category := range val.Categories {
|
|
categoryData = append(categoryData, &pb.CategoryItem{
|
|
Id: int64(category.Category.ID),
|
|
Identity: category.Category.Identity,
|
|
ParentId: int64(category.Category.ParentId),
|
|
Title: category.Category.Title,
|
|
CoverPath: category.Category.CoverPath,
|
|
Intro: category.Category.Intro,
|
|
})
|
|
categories = append(categories, category.CategoryIdentity)
|
|
}
|
|
for _, tags := range val.Tags {
|
|
TagsData = append(TagsData, &pb.TagsItem{
|
|
Id: int64(tags.Tags.ID),
|
|
Identity: tags.TagsIdentity,
|
|
Title: tags.Tags.Title,
|
|
Intro: tags.Tags.Intro,
|
|
CoverPath: tags.Tags.CoverPath,
|
|
})
|
|
tagsIdentityArray = append(tagsIdentityArray, tags.TagsIdentity)
|
|
}
|
|
|
|
res.Data = append(res.Data, &pb.PostItem{
|
|
Identity: val.Identity,
|
|
OwnerId: int64(val.OwnerID),
|
|
OwnerIdentity: val.OwnerIdentity,
|
|
Title: val.Title,
|
|
CoverPath: val.CoverPath,
|
|
Author: val.Author,
|
|
AuthorIdentity: val.AuthorIdentity,
|
|
Content: val.Content,
|
|
TargetUrl: val.TargetUrl,
|
|
SourceUrl: val.SourceUrl,
|
|
Hits: val.Hits,
|
|
HasAccessory: val.HasAccessory,
|
|
CreatedAt: val.CreatedAt.Format(time.DateTime),
|
|
UpdatedAt: val.UpdatedAt.Format(time.DateTime),
|
|
Description: val.Description,
|
|
LikeHits: val.LikeHits,
|
|
UnlikeHits: val.UnlikeHits,
|
|
CommentHits: val.CommentHits,
|
|
PostType: val.Types,
|
|
Key: val.Hash,
|
|
Hash: val.Hash,
|
|
AccessoryData: accessoryData,
|
|
AccessoryIdentityArray: accessories,
|
|
CategoryData: categoryData,
|
|
CategoryIdentityArray: categories,
|
|
TagsData: TagsData,
|
|
TagsIdentityArray: tagsIdentityArray,
|
|
})
|
|
|
|
}
|
|
|
|
return &res, nil
|
|
}
|