in internal/service/report/report_service.go [128:203]
func (rs *ReportService) GetUnreviewedReportPostPage(ctx context.Context, req *schema.GetUnreviewedReportPostPageReq) (
pageModel *pager.PageModel, err error) {
if !req.IsAdmin {
return pager.NewPageModel(0, make([]*schema.GetReportListPageResp, 0)), nil
}
lang := handler.GetLangByCtx(ctx)
reports, total, err := rs.reportRepo.GetReportListPage(ctx, &schema.GetReportListPageDTO{
Page: req.Page,
PageSize: 1,
Status: entity.ReportStatusPending,
})
if err != nil {
return
}
resp := make([]*schema.GetReportListPageResp, 0)
for _, report := range reports {
info, err := rs.objectInfoService.GetUnreviewedRevisionInfo(ctx, report.ObjectID)
if err != nil {
log.Errorf("GetUnreviewedRevisionInfo failed, err: %v", err)
continue
}
r := &schema.GetReportListPageResp{
FlagID: report.ID,
CreatedAt: info.CreatedAt,
ObjectID: info.ObjectID,
ObjectType: info.ObjectType,
QuestionID: info.QuestionID,
AnswerID: info.AnswerID,
CommentID: info.CommentID,
Title: info.Title,
UrlTitle: htmltext.UrlTitle(info.Title),
OriginalText: info.Content,
ParsedText: info.Html,
AnswerCount: info.AnswerCount,
AnswerAccepted: info.AnswerAccepted,
Tags: info.Tags,
SubmitAt: report.CreatedAt.Unix(),
ObjectStatus: info.Status,
ObjectShowStatus: info.ShowStatus,
ReasonContent: report.Content,
}
// get user info
userInfo, exists, e := rs.commonUser.GetUserBasicInfoByID(ctx, info.ObjectCreatorUserID)
if e != nil {
log.Errorf("user not found by id: %s, err: %v", info.ObjectCreatorUserID, e)
}
if exists {
_ = copier.Copy(&r.AuthorUserInfo, userInfo)
}
// get submitter info
submitter, exists, e := rs.commonUser.GetUserBasicInfoByID(ctx, report.ReportedUserID)
if e != nil {
log.Errorf("user not found by id: %s, err: %v", info.ObjectCreatorUserID, e)
}
if exists {
_ = copier.Copy(&r.SubmitterUser, submitter)
}
if report.ReportType > 0 {
r.Reason = &schema.ReasonItem{ReasonType: report.ReportType}
cf, err := rs.configService.GetConfigByID(ctx, report.ReportType)
if err != nil {
log.Error(err)
} else {
_ = json.Unmarshal([]byte(cf.Value), r.Reason)
r.Reason.Translate(cf.Key, lang)
}
}
resp = append(resp, r)
}
return pager.NewPageModel(total, resp), nil
}