作者 yangfu

fix: 封面

... ... @@ -77,6 +77,7 @@ type (
MeFollowFlag int `json:"meFollowFlag"` // 当前人员对作者的关注标识 (0 没有关注 1有关注)
Tags []string `json:"tags"` // 文章的标签
MatchUrl map[string]string `json:"matchUrl"` // 匹配文章内容中的url文本
Cover string `json:"cover"` //封面
}
ArticleSection {
Id int64 `json:"id"` //段落id
... ... @@ -116,6 +117,7 @@ type (
WhoRead []int64 `json:"whoRead"` //谁可查看
IsDel int `json:"isDel"` //是否删除 1-删除 0-否
DeletedType int `json:"deletedType"` //类型 1-运营删除 2-用户删除
Cover string `json:"cover"` //封面
}
SystemArticleSearchMeRequest {
... ... @@ -216,6 +218,7 @@ type (
Location Location `json:"location"`
Action string `json:"action"`
Show int `json:"show"`
Cover string `json:"cover"` //封面
}
)
... ... @@ -235,6 +238,7 @@ type (
Location Location `json:"location"`
Action string `json:"action"`
Show int `json:"show"`
Cover string `json:"cover"` //封面
}
)
... ... @@ -320,6 +324,7 @@ type (
CreatedAt int64 `json:"createdAt"`//
MatchUrl map[string]string `json:"matchUrl"` //匹配内容中的url文本
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
)
... ... @@ -342,6 +347,7 @@ type (
Location Location `json:"location"` // 坐标
MatchUrl map[string]string `json:"matchUrl"` //
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
)
... ... @@ -447,6 +453,7 @@ type (
Show int `json:"show"` // 评论的展示状态(0显示、1不显示)
Tags []ArticleTagItem `json:"tags"` //标签
TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人]
Cover string `json:"cover"` //封面
}
)
... ... @@ -473,6 +480,7 @@ type (
Title string `json:"title"` //标题
AuthorId int64 `json:"authorId"` //发布人ID
Author string `json:"author"` //发布人
Cover string `json:"cover"` //封面
Images []string `json:"images"` //图片
CreatedAt int64 `json:"createdAt"` //文章的创建日期
UpdatedAt int64 `json:"updatedAt"` //文章的编辑日期
... ... @@ -601,6 +609,7 @@ type (
Location Location `json:"location"` // 定位坐标
TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人]
Tags []int64 `json:"tags"` // 标签
Cover string `json:"cover"` //封面
}
)
// 管理后台文章恢复
... ... @@ -666,6 +675,7 @@ type (
Images []string `json:"images"`
CreatedAt int64 `json:"createdAt"`
MeReadFlag int `json:"meReadFlag"` //已读标识 [0:未读] [1:已读]
Cover string `json:"cover"` //封面
}
)
... ... @@ -755,6 +765,7 @@ type (
AuthorId int64 `json:"authorId"` //发布人id
Author string `json:"author"` //发布人
UpdatedAt int64 `json:"updatedAt"` //编辑时间
Cover string `json:"cover"` //封面
}
)
... ... @@ -799,6 +810,7 @@ type (
MatchUrl map[string]string `json:"matchUrl,optional"` // 匹配文章内容中的url文本
Tags []int64 `json:"tags"` // 标签
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
)
... ...
... ... @@ -236,6 +236,7 @@ type(
ReadFlag bool `json:"readFlag"` // 已读标识 true:已读 false:未读
Images []string `json:"images"` // 图片列表
Author UserItem `json:"author"` // 作者
Cover string `json:"cover"` //封面
}
MiniUserFollowedSearchRequest{
Page int `json:"page,optional"`
... ...
... ... @@ -76,6 +76,7 @@ func (l *MiniArticleBackupSearchLogic) MiniArticleBackupSearch(req *types.MiniAr
ChangeField: backupList[i].ChangeField,
Action: backupList[i].Action,
Show: int(backupList[i].Show),
Cover: backupList[i].GetCover(),
}
//根据修改的内容替换展示内容
changeFiled := []string{}
... ...
... ... @@ -69,6 +69,7 @@ func NewArticle(article *domain.Article) types.ArticleSearchMe {
WhoRead: article.WhoRead,
IsDel: article.IsDel,
DeletedType: article.DeletedType,
Cover: article.GetCover(),
}
return articleSearchMe
}
... ...
... ... @@ -67,6 +67,7 @@ func (l *MiniGetArticleBackupLogic) MiniGetArticleBackup(req *types.MiniGetArtic
ChangeField: backupInfo.ChangeField,
Action: backupInfo.Action,
Show: int(backupInfo.Show),
Cover: backupInfo.GetCover(),
}
return
... ...
... ... @@ -70,6 +70,7 @@ func (l *MiniGetArticleDraftMeLogic) MiniGetArticleDraftMe(req *types.MiniArticl
},
MatchUrl: map[string]string{},
Paragraphs: paragraphs,
Cover: draftInfo.GetCover(),
}
for k, v := range draftInfo.MatchUrl {
resp.MatchUrl[k] = v
... ...
... ... @@ -147,6 +147,7 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) (
Tags: tags,
MatchUrl: map[string]string{},
Videos: []types.Video{},
Cover: articleInfo.GetCover(),
}
if backupCount > 1 {
resp.Edit = 1
... ...
... ... @@ -75,6 +75,7 @@ func (l *MiniSearchArticleDraftMeLogic) MiniSearchArticleDraftMe(req *types.Mini
CreatedAt: draftList[i].CreatedAt,
MatchUrl: draftList[i].MatchUrl,
Paragraphs: paragraphs,
Cover: draftList[i].GetCover(),
}
}
return resp, nil
... ...
... ... @@ -76,6 +76,7 @@ func (l *MiniSearchArticlePageLogic) MiniSearchArticlePage(req *types.MiniSearch
Images: []string{},
CreatedAt: val.CreatedAt,
MeReadFlag: 0,
Cover: val.GetCover(),
}
if _, ok := readFlag[val.Id]; ok {
... ...
... ... @@ -54,6 +54,7 @@ func (l *SystemArticleGetHistoryLogic) SystemArticleGetHistory(req *types.System
TargetUser: int(backup.TargetUser),
Tags: backup.Tags,
Videos: make([]types.Video, 0),
Cover: backup.GetCover(),
}
//文章段落内容
... ...
... ... @@ -81,6 +81,7 @@ func (l *SystemGetArticleDraftLogic) SystemGetArticleDraft(req *types.SystemArti
WhoReviewInfo: make([]types.UserShowName, 0),
MatchUrl: articleDraft.MatchUrl,
Tags: articleDraft.Tags,
Cover: articleDraft.GetCover(),
}
userIds := lo.Union(resp.WhoRead, resp.WhoReview)
if len(userIds) > 0 {
... ...
... ... @@ -68,6 +68,7 @@ func (l *SystemGetArticleLogic) SystemGetArticle(req *types.SystemArticleGetRequ
Tags: make([]types.ArticleTagItem, 0),
TargetUser: int(article.TargetUser),
Videos: make([]types.Video, 0),
Cover: article.Cover,
}
for _, val := range article.Videos {
... ...
... ... @@ -72,6 +72,7 @@ func (l *SystemSearchArticleDraftLogic) SystemSearchArticleDraft(req *types.Syst
AuthorId: item.AuthorId,
Author: author,
UpdatedAt: item.UpdatedAt,
Cover: item.GetCover(),
})
})
return
... ...
... ... @@ -93,6 +93,7 @@ func (l *SystemSearchArticleLogic) SystemSearchArticle(req *types.SystemArticleS
Id: item.Operator.Id,
Name: item.Operator.Name,
},
Cover: item.Cover,
})
})
return
... ...
... ... @@ -64,6 +64,7 @@ func (l *MiniUserNewsLogic) MiniUserNews(req *types.MiniUserNewsRequest) (resp *
Time: item.CreatedAt,
Images: make([]string, 0),
ReadFlag: false,
Cover: item.GetCover(),
}
if author, _ := domain.LazyLoad(userMap, l.ctx, conn, item.AuthorId, l.svcCtx.UserRepository.FindOne); author != nil {
newsItem.Author = types.UserItem{
... ...
... ... @@ -607,6 +607,7 @@ type UserNewsItem struct {
ReadFlag bool `json:"readFlag"` // 已读标识 true:已读 false:未读
Images []string `json:"images"` // 图片列表
Author UserItem `json:"author"` // 作者
Cover string `json:"cover"` //封面
}
type MiniUserFollowedSearchRequest struct {
... ... @@ -1000,6 +1001,7 @@ type MiniArticleGetResponse struct {
MeFollowFlag int `json:"meFollowFlag"` // 当前人员对作者的关注标识 (0 没有关注 1有关注)
Tags []string `json:"tags"` // 文章的标签
MatchUrl map[string]string `json:"matchUrl"` // 匹配文章内容中的url文本
Cover string `json:"cover"` //封面
}
type ArticleSection struct {
... ... @@ -1037,6 +1039,7 @@ type ArticleSearchMe struct {
WhoRead []int64 `json:"whoRead"` //谁可查看
IsDel int `json:"isDel"` //是否删除 1-删除 0-否
DeletedType int `json:"deletedType"` //类型 1-运营删除 2-用户删除
Cover string `json:"cover"` //封面
}
type SystemArticleSearchMeRequest struct {
... ... @@ -1129,6 +1132,7 @@ type MiniArticleBackupItem struct {
Location Location `json:"location"`
Action string `json:"action"`
Show int `json:"show"`
Cover string `json:"cover"` //封面
}
type MiniGetArticleBackupRequest struct {
... ... @@ -1147,6 +1151,7 @@ type MiniGetArticleBackupResponse struct {
Location Location `json:"location"`
Action string `json:"action"`
Show int `json:"show"`
Cover string `json:"cover"` //封面
}
type MiniArticleMarkUserReadRequest struct {
... ... @@ -1217,6 +1222,7 @@ type MiniArticleDraftItem struct {
CreatedAt int64 `json:"createdAt"` //
MatchUrl map[string]string `json:"matchUrl"` //匹配内容中的url文本
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
type MiniArticleDraftGetMeRequest struct {
... ... @@ -1236,6 +1242,7 @@ type MiniArticleDraftGetMeResponse struct {
Location Location `json:"location"` // 坐标
MatchUrl map[string]string `json:"matchUrl"` //
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
type MiniArticleDraftDeleteMeRequest struct {
... ... @@ -1331,6 +1338,7 @@ type SystemArticleGetResponse struct {
Show int `json:"show"` // 评论的展示状态(0显示、1不显示)
Tags []ArticleTagItem `json:"tags"` //标签
TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人]
Cover string `json:"cover"` //封面
}
type SystemArticleSearchRequest struct {
... ... @@ -1355,6 +1363,7 @@ type SystemArticleSearch struct {
Title string `json:"title"` //标题
AuthorId int64 `json:"authorId"` //发布人ID
Author string `json:"author"` //发布人
Cover string `json:"cover"` //封面
Images []string `json:"images"` //图片
CreatedAt int64 `json:"createdAt"` //文章的创建日期
UpdatedAt int64 `json:"updatedAt"` //文章的编辑日期
... ... @@ -1476,6 +1485,7 @@ type SystemArticleGetHistoryResponse struct {
Location Location `json:"location"` // 定位坐标
TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人]
Tags []int64 `json:"tags"` // 标签
Cover string `json:"cover"` //封面
}
type SystemArticleRestoreRequest struct {
... ... @@ -1535,6 +1545,7 @@ type MiniSearchArticleItem struct {
Images []string `json:"images"`
CreatedAt int64 `json:"createdAt"`
MeReadFlag int `json:"meReadFlag"` //已读标识 [0:未读] [1:已读]
Cover string `json:"cover"` //封面
}
type SystemArticleDraftCreateRequest struct {
... ... @@ -1619,6 +1630,7 @@ type SystemArticleDraftSearch struct {
AuthorId int64 `json:"authorId"` //发布人id
Author string `json:"author"` //发布人
UpdatedAt int64 `json:"updatedAt"` //编辑时间
Cover string `json:"cover"` //封面
}
type SystemArticleDraftDeleteRequest struct {
... ... @@ -1659,6 +1671,7 @@ type SystemArticleDraftGetResponse struct {
MatchUrl map[string]string `json:"matchUrl,optional"` // 匹配文章内容中的url文本
Tags []int64 `json:"tags"` // 标签
Paragraphs []Paragraph `json:"paragraphs,optional"` // 段落
Cover string `json:"cover"` //封面
}
type SystemArticleSearchDeletedRequest struct {
... ...
... ... @@ -35,6 +35,7 @@ type Article struct {
Source int `gorm:"default:1"` // 来源 1-用户发布 2-运营发布
Operator domain.Operator `gorm:"type:jsonb;serializer:json"` // 运营操作人
DeletedType int `json:"deletedType"` // 删除类型 1-运营删除 2-用户删除
Cover string
}
func (m *Article) TableName() string {
... ...
... ... @@ -35,6 +35,7 @@ type Article struct {
Source int `gorm:"default:1"` // 来源 1-用户发布 2-运营发布
Operator Operator `gorm:"type:jsonb;serializer:json"` // 运营操作人
DeletedType int `json:"deletedType"` // 删除类型 1-运营删除 2-用户删除
Cover string `json:"cover"` // 封面
// ...more
}
... ... @@ -132,6 +133,8 @@ func (m *Article) SetSummary(sectionList []*ArticleSection) {
length = 50
}
m.Summary = string(runeContent[0:length])
// 设置封面
m.Cover = m.GetCoverWithSections(sectionList)
}
// GetSubscribeMessageTitle 获取订阅消息标题 超过20个字用...
... ... @@ -172,3 +175,28 @@ func (m *Article) WhoCanReview(userId int64) bool {
}
return false
}
func (m *Article) GetCover() string {
if len(m.Cover) > 0 {
return m.Cover
}
if len(m.Images) > 0 {
return m.Images[0].Url
}
return ""
}
func (m *Article) GetCoverWithSections(list []*ArticleSection) string {
if len(m.Cover) > 0 {
return m.Cover
}
if len(m.Images) > 0 {
return m.Images[0].Url
}
for _, sec := range list {
if sec.ParagraphType == ParagraphTypeImages && len(sec.Images) > 0 {
return sec.Images[0]
}
}
return ""
}
... ...
... ... @@ -200,3 +200,15 @@ func (bk *ArticleBackup) MakeBackup(operator UserSimple, article *Article, secti
}
*bk = b
}
func (m *ArticleBackup) GetCover() string {
if len(m.Images) > 0 {
return m.Images[0].Url
}
for _, sec := range m.Section {
if sec.ParagraphType == ParagraphTypeImages && len(sec.Images) > 0 {
return sec.Images[0]
}
}
return ""
}
... ...
... ... @@ -35,3 +35,15 @@ type ArticleDraftRepository interface {
FindOne(ctx context.Context, conn transaction.Conn, id int64) (*ArticleDraft, error)
Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*ArticleDraft, error)
}
func (m *ArticleDraft) GetCover() string {
if len(m.Images) > 0 {
return m.Images[0].Url
}
for _, sec := range m.Section {
if sec.ParagraphType == ParagraphTypeImages && len(sec.Images) > 0 {
return sec.Images[0]
}
}
return ""
}
... ...
... ... @@ -45,3 +45,15 @@ func (m *ArticleDraftOperation) Identify() interface{} {
}
return m.Id
}
func (m *ArticleDraftOperation) GetCover() string {
if len(m.Images) > 0 {
return m.Images[0].Url
}
for _, sec := range m.Section {
if sec.ParagraphType == ParagraphTypeImages && len(sec.Images) > 0 {
return sec.Images[0]
}
}
return ""
}
... ...
... ... @@ -5,4 +5,7 @@ alter table article_section add column paragraph_type int8;
alter table article_section add column images jsonb;
update article_section set paragraph_type = 0;
alter table article_draft_operation add column section jsonb;
\ No newline at end of file
alter table article_draft_operation add column section jsonb;
-- 文章封面
alter table article add column cover varchar(1024);
\ No newline at end of file
... ...