补齐问答采纳/重开、投票匿名与有票禁编、悬赏过期退回、抽奖回帖开奖,并接入积分账本与发帖附件可见性。 Co-authored-by: Cursor <cursoragent@cursor.com>
73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package handler
|
||
|
||
import (
|
||
"github.com/freefire/jiang13-bbs/config"
|
||
"github.com/freefire/jiang13-bbs/model"
|
||
"github.com/freefire/jiang13-bbs/realtime"
|
||
"github.com/freefire/jiang13-bbs/service"
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
// Handlers 聚合所有服务引用
|
||
type Handlers struct {
|
||
Cfg *config.Config
|
||
Hub *realtime.Hub
|
||
Auth *service.AuthService
|
||
Board *service.BoardService
|
||
Post *service.PostService
|
||
Comment *service.CommentService
|
||
Like *service.LikeService
|
||
Notification *service.NotificationService
|
||
OverviewSvc *service.OverviewService
|
||
Checkin *service.CheckinService
|
||
Announcement *service.AnnouncementService
|
||
Upload *service.UploadService
|
||
PostFile *service.PostFileService
|
||
Points *service.PointsService
|
||
Setting *service.SettingService
|
||
AdminUser *service.AdminUserService
|
||
Moderation *service.ModerationService
|
||
Chat *service.ChatService
|
||
}
|
||
|
||
// broadcastFeedChanged 帖子流有公开发布内容时全员广播(三期)
|
||
func (h *Handlers) broadcastFeedChanged(kind string, postID, boardID, actorID uint) {
|
||
if h.Hub == nil {
|
||
return
|
||
}
|
||
h.Hub.BroadcastAll(realtime.Envelope{
|
||
Type: realtime.EventFeedChanged,
|
||
Data: gin.H{
|
||
"kind": kind,
|
||
"post_id": postID,
|
||
"board_id": boardID,
|
||
"actor_id": actorID,
|
||
},
|
||
})
|
||
}
|
||
|
||
// notifyPendingReview 待审内容通知该板可审者(WS 红点由 Notification.OnNotifyNew 统一推送)
|
||
func (h *Handlers) notifyPendingReview(boardID, actorID, postID, commentID uint, preview string) {
|
||
ids, err := h.Auth.ListBoardModeratorIDs(boardID)
|
||
if err != nil || len(ids) == 0 {
|
||
return
|
||
}
|
||
for _, uid := range ids {
|
||
if uid == actorID {
|
||
continue
|
||
}
|
||
h.Notification.Create(uid, actorID, model.NotificationTypePendingReview, postID, commentID, preview)
|
||
}
|
||
h.broadcastModerationChanged()
|
||
}
|
||
|
||
// broadcastModerationChanged 通知管理团队待审队列有变化(角标由客户端按权限再拉一次)
|
||
func (h *Handlers) broadcastModerationChanged() {
|
||
if h.Hub == nil {
|
||
return
|
||
}
|
||
h.Hub.BroadcastRoom(realtime.RoomStaff, realtime.Envelope{
|
||
Type: realtime.EventModerationChanged,
|
||
})
|
||
}
|