作者 tangxvhui

Merge branch 'dev' into test

@@ -201,12 +201,12 @@ func (l *MiniCreateArticleLogic) MiniCreateArticle(req *types.MiniArticleCreateR @@ -201,12 +201,12 @@ func (l *MiniCreateArticleLogic) MiniCreateArticle(req *types.MiniArticleCreateR
201 } 201 }
202 } 202 }
203 // 设置保存备份 203 // 设置保存备份
204 - backup := newArticle.MakeBackup(newArticle.Author, sectionList)  
205 - backup.Action = "新增"  
206 - _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, backup)  
207 - if err != nil {  
208 - return xerr.NewErrMsgErr("创建文章内容失败", err)  
209 - } 204 + // backup := newArticle.MakeBackup(newArticle.Author, sectionList)
  205 + // backup.Action = "新增"
  206 + // _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, backup)
  207 + // if err != nil {
  208 + // return xerr.NewErrMsgErr("创建文章内容失败", err)
  209 + // }
210 return nil 210 return nil
211 }, true) 211 }, true)
212 if err != nil { 212 if err != nil {
@@ -38,8 +38,18 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) ( @@ -38,8 +38,18 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) (
38 if articleInfo.CompanyId != req.CompanyId { 38 if articleInfo.CompanyId != req.CompanyId {
39 return nil, xerr.NewErrMsg("没有查看权限") 39 return nil, xerr.NewErrMsg("没有查看权限")
40 } 40 }
41 - //TODO 检查可查看人  
42 - if articleInfo.Show == domain.ArticleShowDisable { 41 +
  42 + inWhoRead := false
  43 +
  44 + if len(articleInfo.WhoRead) > 0 {
  45 + for _, val := range articleInfo.WhoRead {
  46 + if req.UserId == int(val) {
  47 + inWhoRead = true
  48 + }
  49 + }
  50 + }
  51 +
  52 + if articleInfo.Show == domain.ArticleShowDisable || !inWhoRead {
43 // 文章内容不显示 53 // 文章内容不显示
44 resp = &types.MiniArticleGetResponse{ 54 resp = &types.MiniArticleGetResponse{
45 Id: articleInfo.Id, 55 Id: articleInfo.Id,
@@ -81,6 +91,9 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) ( @@ -81,6 +91,9 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) (
81 91
82 follow, _ := l.svcCtx.UserFollowRepository.FindOneUserFollowing(l.ctx, conn, int64(req.UserId), articleInfo.AuthorId) 92 follow, _ := l.svcCtx.UserFollowRepository.FindOneUserFollowing(l.ctx, conn, int64(req.UserId), articleInfo.AuthorId)
83 93
  94 + queryOption = domain.NewQueryOptions().WithFindOnly().WithOffsetLimit(1, 1).WithKV("articleId", articleInfo.Id)
  95 + _, backupList, _ := l.svcCtx.ArticleBackupRepository.Find(l.ctx, conn, queryOption)
  96 +
84 sortBy := domain.SortArticleSection(sectionList) 97 sortBy := domain.SortArticleSection(sectionList)
85 sort.Sort(sortBy) 98 sort.Sort(sortBy)
86 articleSection := []types.ArticleSection{} 99 articleSection := []types.ArticleSection{}
@@ -124,7 +137,7 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) ( @@ -124,7 +137,7 @@ func (l *MiniGetArticleLogic) MiniGetArticle(req *types.MiniArticleGetRequest) (
124 Tags: tags, 137 Tags: tags,
125 MatchUrl: map[string]string{}, 138 MatchUrl: map[string]string{},
126 } 139 }
127 - if articleInfo.CreatedAt != articleInfo.UpdatedAt { 140 + if len(backupList) > 0 {
128 resp.Edit = 1 141 resp.Edit = 1
129 } 142 }
130 143
@@ -36,10 +36,30 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl @@ -36,10 +36,30 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl
36 if err != nil { 36 if err != nil {
37 return nil, xerr.NewErrMsgErr("获取编辑历史记录失败", err) 37 return nil, xerr.NewErrMsgErr("获取编辑历史记录失败", err)
38 } 38 }
  39 + //获取当前用户信息
  40 + userToken := contextdata.GetUserTokenFromCtx(l.ctx)
  41 + userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken})
  42 + if err != nil {
  43 + return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err)
  44 + }
39 article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, backup.ArticleId) 45 article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, backup.ArticleId)
40 if err != nil { 46 if err != nil {
41 return nil, xerr.NewErrMsgErr("获取文章失败", err) 47 return nil, xerr.NewErrMsgErr("获取文章失败", err)
42 } 48 }
  49 + _, sectionList, err := l.svcCtx.ArticleSectionRepository.Find(l.ctx, conn, map[string]interface{}{"articleId": article.Id})
  50 + if err != nil {
  51 + return nil, xerr.NewErrMsgErr("获取文章段落内容失败", err)
  52 + }
  53 + // 备份数据
  54 + newBackUp := article.MakeBackup(domain.UserSimple{
  55 + Id: userToken.UserId,
  56 + Name: userMe.User.NickName,
  57 + Avatar: userMe.User.Avatar,
  58 + CompanyId: userToken.CompanyId,
  59 + Company: userMe.CurrentCompany.Name,
  60 + }, sectionList)
  61 + newBackUp.Action = "恢复"
  62 +
43 article.Version = article.Version + 1 63 article.Version = article.Version + 1
44 article.Images = backup.Images 64 article.Images = backup.Images
45 article.Title = backup.Title 65 article.Title = backup.Title
@@ -55,12 +75,7 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl @@ -55,12 +75,7 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl
55 SortBy: item.SortBy, 75 SortBy: item.SortBy,
56 }) 76 })
57 }) 77 })
58 - //获取当前用户信息  
59 - userToken := contextdata.GetUserTokenFromCtx(l.ctx)  
60 - userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken})  
61 - if err != nil {  
62 - return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err)  
63 - } 78 +
64 err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { 79 err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error {
65 //保存文章 80 //保存文章
66 _, err = l.svcCtx.ArticleRepository.Update(ctx, c, article) 81 _, err = l.svcCtx.ArticleRepository.Update(ctx, c, article)
@@ -93,15 +108,7 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl @@ -93,15 +108,7 @@ func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticl
93 return xerr.NewErrMsgErr("保存文章内容失败", err) 108 return xerr.NewErrMsgErr("保存文章内容失败", err)
94 } 109 }
95 } 110 }
96 - //备份数据  
97 - newBackUp := article.MakeBackup(domain.UserSimple{  
98 - Id: userToken.UserId,  
99 - Name: userMe.User.NickName,  
100 - Avatar: userMe.User.Avatar,  
101 - CompanyId: userToken.CompanyId,  
102 - Company: userMe.CurrentCompany.Name,  
103 - }, articleSections)  
104 - newBackUp.Action = "恢复" 111 +
105 _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, newBackUp) 112 _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, newBackUp)
106 if err != nil { 113 if err != nil {
107 return xerr.NewErrMsgErr("恢复文章版本失败", err) 114 return xerr.NewErrMsgErr("恢复文章版本失败", err)
@@ -42,11 +42,30 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU @@ -42,11 +42,30 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU
42 //TargetUser 设定为分发给所有人,清空 WhoRead 42 //TargetUser 设定为分发给所有人,清空 WhoRead
43 req.WhoRead = make([]int64, 0) 43 req.WhoRead = make([]int64, 0)
44 } 44 }
45 - 45 + // 获取当前用户信息
  46 + userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken})
  47 + if err != nil {
  48 + return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err)
  49 + }
  50 + // 文章数据
46 article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, req.Id) 51 article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, req.Id)
47 if err != nil { 52 if err != nil {
48 return nil, xerr.NewErrMsgErr("帖子不存在", err) 53 return nil, xerr.NewErrMsgErr("帖子不存在", err)
49 } 54 }
  55 + _, sectionList, err := l.svcCtx.ArticleSectionRepository.Find(l.ctx, conn, map[string]interface{}{"articleId": article.Id})
  56 + if err != nil {
  57 + return nil, xerr.NewErrMsgErr("获取文章段落内容失败", err)
  58 + }
  59 + //备份数据
  60 + backup := article.MakeBackup(domain.UserSimple{
  61 + Id: userToken.UserId,
  62 + Name: userMe.User.NickName,
  63 + Avatar: userMe.User.Avatar,
  64 + CompanyId: userToken.CompanyId,
  65 + Company: userMe.CurrentCompany.Name,
  66 + }, sectionList)
  67 + backup.Action = "编辑"
  68 +
50 // 获取图片的尺寸大小 69 // 获取图片的尺寸大小
51 images := []domain.Image{} 70 images := []domain.Image{}
52 for _, val := range req.Images { 71 for _, val := range req.Images {
@@ -166,11 +185,7 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU @@ -166,11 +185,7 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU
166 } 185 }
167 article.Summary = req.Section[0].Content[0:stringIndex] 186 article.Summary = req.Section[0].Content[0:stringIndex]
168 } 187 }
169 - //获取当前用户信息  
170 - userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken})  
171 - if err != nil {  
172 - return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err)  
173 - } 188 +
174 err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { 189 err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error {
175 _, err = l.svcCtx.ArticleRepository.Update(l.ctx, c, article) 190 _, err = l.svcCtx.ArticleRepository.Update(l.ctx, c, article)
176 if err != nil { 191 if err != nil {
@@ -207,15 +222,6 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU @@ -207,15 +222,6 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU
207 return xerr.NewErrMsgErr("保存文章内容失败", err) 222 return xerr.NewErrMsgErr("保存文章内容失败", err)
208 } 223 }
209 } 224 }
210 - //备份数据  
211 - backup := article.MakeBackup(domain.UserSimple{  
212 - Id: userToken.UserId,  
213 - Name: userMe.User.NickName,  
214 - Avatar: userMe.User.Avatar,  
215 - CompanyId: userToken.CompanyId,  
216 - Company: userMe.CurrentCompany.Name,  
217 - }, articleSections)  
218 - backup.Action = "编辑"  
219 _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, backup) 225 _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, backup)
220 if err != nil { 226 if err != nil {
221 return xerr.NewErrMsgErr("保存文章内容失败", err) 227 return xerr.NewErrMsgErr("保存文章内容失败", err)
@@ -94,7 +94,11 @@ func (a ArticleShow) Named() string { @@ -94,7 +94,11 @@ func (a ArticleShow) Named() string {
94 } 94 }
95 95
96 // 设置文章的备份数据 96 // 设置文章的备份数据
97 -func (m *Article) MakeBackup(operator UserSimple, section []ArticleSection) *ArticleBackup { 97 +func (m *Article) MakeBackup(operator UserSimple, section []*ArticleSection) *ArticleBackup {
  98 + sectionBackup := make([]ArticleSection, len(section))
  99 + for i := range section {
  100 + sectionBackup[i] = *section[i]
  101 + }
98 b := ArticleBackup{ 102 b := ArticleBackup{
99 Id: 0, 103 Id: 0,
100 CompanyId: m.CompanyId, 104 CompanyId: m.CompanyId,
@@ -105,7 +109,7 @@ func (m *Article) MakeBackup(operator UserSimple, section []ArticleSection) *Art @@ -105,7 +109,7 @@ func (m *Article) MakeBackup(operator UserSimple, section []ArticleSection) *Art
105 Operator: operator, 109 Operator: operator,
106 ArticleId: m.Id, 110 ArticleId: m.Id,
107 Title: m.Title, 111 Title: m.Title,
108 - Section: section, 112 + Section: sectionBackup,
109 Images: m.Images, 113 Images: m.Images,
110 Action: "", 114 Action: "",
111 TargetUser: m.TargetUser, 115 TargetUser: m.TargetUser,