Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3295dcf

Browse files
authored
Merge pull request studygolang#77 from 15ho/master
add sys_msg_for_subject
2 parents 4de9a22 + 7e2be78 commit 3295dcf

File tree

5 files changed

+63
-10
lines changed

5 files changed

+63
-10
lines changed

src/logic/message.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ func (self MessageLogic) FindSysMsgsByUid(ctx context.Context, uid int, paginato
196196
// 评论ID
197197
cidSet := set.New(set.NonThreadSafe)
198198
uidSet := set.New(set.NonThreadSafe)
199+
// subject id
200+
sidSet := set.New(set.NonThreadSafe)
199201

200202
ids := make([]int, 0, len(messages))
201203
for _, message := range messages {
@@ -234,6 +236,9 @@ func (self MessageLogic) FindSysMsgsByUid(ctx context.Context, uid int, paginato
234236
case model.TypeBook:
235237
bookIdSet.Add(objid)
236238
}
239+
case model.MsgtypeSubjectContribute:
240+
articleIdSet.Add(objid)
241+
sidSet.Add(int(ext["sid"].(float64)))
237242
}
238243
if val, ok := ext["cid"]; ok {
239244
cidSet.Add(int(val.(float64)))
@@ -253,6 +258,7 @@ func (self MessageLogic) FindSysMsgsByUid(ctx context.Context, uid int, paginato
253258
wikiMap := DefaultWiki.findByIds(set.IntSlice(wikiIdSet))
254259
projectMap := DefaultProject.findByIds(set.IntSlice(pidSet))
255260
bookMap := DefaultGoBook.findByIds(set.IntSlice(bookIdSet))
261+
subjectMap := DefaultSubject.findByIds(set.IntSlice(sidSet))
256262

257263
result := make([]map[string]interface{}, len(messages))
258264
for i, message := range messages {
@@ -368,6 +374,16 @@ func (self MessageLogic) FindSysMsgsByUid(ctx context.Context, uid int, paginato
368374
}
369375

370376
title += "时提到了你:"
377+
378+
case model.MsgtypeSubjectContribute:
379+
subject := subjectMap[int(ext["sid"].(float64))]
380+
article := articleMap[objid]
381+
objTitle = article.Title
382+
objUrl = "/articles/" + strconv.Itoa(article.Id)
383+
title += "收录了新文章"
384+
tmpMap["sprefix"] = "的专栏"
385+
tmpMap["surl"] = "/subject/" + strconv.Itoa(subject.Id)
386+
tmpMap["stitle"] = subject.Name
371387
}
372388
tmpMap["objtitle"] = objTitle
373389
tmpMap["objurl"] = objUrl

src/logic/subject.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,20 @@ func (self SubjectLogic) FindOne(ctx context.Context, sid int) *model.Subject {
7171
return subject
7272
}
7373

74+
func (self SubjectLogic) findByIds(ids []int) map[int]*model.Subject {
75+
if len(ids) == 0 {
76+
return nil
77+
}
78+
79+
subjects := make(map[int]*model.Subject)
80+
err := MasterDB.In("id", ids).Find(&subjects)
81+
if err != nil {
82+
return nil
83+
}
84+
85+
return subjects
86+
}
87+
7488
func (self SubjectLogic) FindArticles(ctx context.Context, sid int, paginator *Paginator, orderBy string) []*model.Article {
7589
objLog := GetLogger(ctx)
7690

@@ -138,6 +152,12 @@ func (self SubjectLogic) FindFollowers(ctx context.Context, sid int) []*model.Su
138152
return followers
139153
}
140154

155+
func (self SubjectLogic) findFollowersBySid(sid int) []*model.SubjectFollower {
156+
followers := make([]*model.SubjectFollower, 0)
157+
MasterDB.Where("sid=?", sid).Find(&followers)
158+
return followers
159+
}
160+
141161
// FindFollowerTotal 专栏关注的用户数
142162
func (self SubjectLogic) FindFollowerTotal(ctx context.Context, sid int) int64 {
143163
objLog := GetLogger(ctx)
@@ -241,11 +261,26 @@ func (self SubjectLogic) Contribute(ctx context.Context, me *model.Me, sid, arti
241261
return errors.New("投稿失败:" + err.Error())
242262
}
243263

244-
session.Commit()
264+
if err := session.Commit(); err == nil {
265+
// 成功,发送站内系统消息给关注者
266+
go self.sendMsgForFollower(ctx, subject, sid, articleId)
267+
}
245268

246269
return nil
247270
}
248271

272+
// sendMsgForFollower 专栏投稿发送消息给关注者
273+
func (self SubjectLogic) sendMsgForFollower(ctx context.Context, subject *model.Subject, sid, articleId int) {
274+
followers := self.findFollowersBySid(sid)
275+
for _, f := range followers {
276+
DefaultMessage.SendSystemMsgTo(ctx, f.Uid, model.MsgtypeSubjectContribute, map[string]interface{}{
277+
"uid": subject.Uid,
278+
"objid": articleId,
279+
"sid": sid,
280+
})
281+
}
282+
}
283+
249284
// RemoveContribute 删除投稿
250285
func (self SubjectLogic) RemoveContribute(ctx context.Context, sid, articleId int) error {
251286
objLog := GetLogger(ctx)

src/logic/uploader.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ func (this *UploaderLogic) uploadLocalFile(localFile, key string) (err error) {
8989

9090
var ret io.PutRet
9191
var extra = &io.PutExtra{
92-
// Params: params,
93-
// MimeType: mieType,
94-
// Crc32: crc32,
95-
// CheckCrc: CheckCrc,
92+
// Params: params,
93+
// MimeType: mieType,
94+
// Crc32: crc32,
95+
// CheckCrc: CheckCrc,
9696
}
9797

9898
// ret 变量用于存取返回的信息,详情见 io.PutRet
@@ -119,10 +119,10 @@ func (this *UploaderLogic) uploadMemoryFile(r gio.Reader, key string, size int)
119119

120120
var ret io.PutRet
121121
var extra = &io.PutExtra{
122-
// Params: params,
123-
// MimeType: mieType,
124-
// Crc32: crc32,
125-
// CheckCrc: CheckCrc,
122+
// Params: params,
123+
// MimeType: mieType,
124+
// Crc32: crc32,
125+
// CheckCrc: CheckCrc,
126126
}
127127

128128
// ret 变量用于存取返回的信息,详情见 io.PutRet

src/model/message.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const (
4545

4646
MsgtypeAtMe = 10 // 评论 @提到我
4747
MsgtypePublishAtMe = 11 // 发布时提到我
48+
49+
MsgtypeSubjectContribute = 12 //专栏投稿
4850
)
4951

5052
// 系统消息

template/messages/list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<li>
2020
<h3>
2121
<a href="/user/{{.user.Username}}" title="{{.user.Username}}"><img src="{{gravatar .user.Avatar .user.Email 48 $.is_https}}" width="48" height="48" alt="{{.user.Username}}"></a>
22-
<span class="user">{{if eq $.msgtype "outbox"}}你对 {{end}}<a href="/user/{{.user.Username}}" title="{{.user.Username}}">{{.user.Username}}</a> {{if eq $.msgtype "outbox"}}说:{{else}}{{.title}}{{end}}</span>
22+
<span class="user">{{if eq $.msgtype "outbox"}}你对 {{end}}<a href="/user/{{.user.Username}}" title="{{.user.Username}}">{{.user.Username}}</a> {{if eq $.msgtype "outbox"}}说:{{else}}{{if .stitle}}{{.sprefix}}<a href="{{.surl}}" title="{{.stitle}}">{{.stitle}}</a>{{end}}{{.title}}{{end}}</span>
2323
{{if .objtitle}}<a href="{{.objurl}}" title="{{.objtitle}}">{{.objtitle}}</a>{{end}}
2424
{{if eq .hasread "未读"}}
2525
{{if eq $.msgtype "outbox"}}

0 commit comments

Comments
 (0)