func()

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
}