Files
full/module/base/cms/internal/logic/pages/get_by_identity.go

82 lines
2.3 KiB
Go
Raw Normal View History

package pages
import (
"context"
"time"
"bsm/full/module/base/cms/internal/impl"
"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"
"gorm.io/gorm"
)
// 获取文章详情 By Identity
func GetByIdentity(ctx context.Context, in *pb.GetPagesRequest) (reply *pb.PagesItem, err error) {
if in.GetIdentity() == "" {
return nil, errcode.ErrInvalidArgument
}
data, err := GetPages("Cms_pages.identity", in.Identity)
if err != nil {
printer.Error(err.Error())
return nil, errcode.ErrDB
}
var res = &pb.PagesItem{}
if data != nil {
res.Identity = data.Identity
res.Title = data.Title
res.CoverPath = data.CoverPath
res.Content = data.Content
res.Hits = data.Hits
res.HasAccessory = data.HasAccessory
res.CreatedAt = data.CreatedAt.String()
res.UpdatedAt = data.UpdatedAt.String()
res.Description = data.Description
res.PostType = data.Type
}
for _, val := range data.Accessories {
res.AccessoryData = append(res.AccessoryData, &pb.AccessoryItem{
Identity: val.Identity,
Title: val.Title,
FilePath: val.FilePath,
CreatedAt: val.CreatedAt.Format(time.DateTime),
})
}
for _, val := range data.Accessories {
res.AccessoryIdentityArray = append(res.AccessoryIdentityArray, val.Identity)
}
for _, val := range data.Tags {
res.TagsData = append(res.TagsData, &pb.TagsItem{
Id: int64(val.ID),
Identity: val.Tags.Identity,
Title: val.Tags.Title,
Intro: val.Tags.Intro,
CoverPath: val.Tags.CoverPath,
CreatedAt: val.Tags.CreatedAt.Format(time.DateTime),
})
}
for _, val := range data.Tags {
res.TagsIdentityArray = append(res.TagsIdentityArray, val.Identity)
}
return res, nil
}
func GetPages(key, val string) (*models.CmsPages, error) {
var pages = models.CmsPages{}
//// 使用事务确保操作
// 查询帖子并更新点击量
err := impl.DBService.Model(&models.CmsPages{}).Debug().Preload("Accessories").Preload("Tags.Tags").
Where(key+" = ?", val).First(&pages).Error
if err != nil {
return nil, err
}
if err := impl.DBService.Model(&models.CmsPages{}).Where("key = ?", val).
UpdateColumn("hits", gorm.Expr("hits + 1")).Error; err != nil {
return nil, err
}
return &pages, err
}