182 lines
6.3 KiB
Go
182 lines
6.3 KiB
Go
package sys
|
|
|
|
import (
|
|
"context"
|
|
"net/url"
|
|
"strings"
|
|
|
|
"hotgo/internal/library/cultivateadmin"
|
|
"hotgo/internal/model/input/sysin"
|
|
"hotgo/internal/service"
|
|
)
|
|
|
|
type sSysCultivateContent struct{}
|
|
|
|
func NewSysCultivateContent() *sSysCultivateContent { return &sSysCultivateContent{} }
|
|
func init() { service.RegisterSysCultivateContent(NewSysCultivateContent()) }
|
|
|
|
func (s *sSysCultivateContent) Dashboard(ctx context.Context, in *sysin.CultivateDashboardInp) (*sysin.CultivateDashboardModel, error) {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := new(sysin.CultivateDashboardModel)
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, "/dashboard", nil, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) List(ctx context.Context, in *sysin.CultivateContentListInp) (list []*sysin.CultivateContentListModel, totalCount int, err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
normalizeCultivatePage(&in.PageReq)
|
|
values := cultivatePageValues(in.Page, in.PerPage)
|
|
cultivateSetQuery(values, "object_type", in.ObjectType)
|
|
cultivateSetQuery(values, "author_id", in.AuthorId)
|
|
cultivateSetQuery(values, "status", in.Status)
|
|
cultivateSetQuery(values, "keyword", in.Keyword)
|
|
setTimeRange(values, in.CreatedAt)
|
|
var page cultivateadmin.Page[*sysin.CultivateContentListModel]
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, "/content-reviews", values, &page); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
if page.Items == nil {
|
|
page.Items = []*sysin.CultivateContentListModel{}
|
|
}
|
|
return page.Items, page.Total, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) View(ctx context.Context, in *sysin.CultivateContentViewInp) (*sysin.CultivateContentViewModel, error) {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := new(sysin.CultivateContentViewModel)
|
|
path := "/content-reviews/" + url.PathEscape(in.ObjectType) + "/" + url.PathEscape(in.Id)
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, path, nil, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) Review(ctx context.Context, in *sysin.CultivateContentReviewInp) error {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
path := "/content-reviews/" + url.PathEscape(in.ObjectType) + "/" + url.PathEscape(in.Id) + "/actions"
|
|
return cultivateadmin.DefaultClient(ctx).Post(ctx, scope, path, map[string]any{"action": in.Action, "reason": strings.TrimSpace(in.Reason)}, nil)
|
|
}
|
|
|
|
func (s *sSysCultivateContent) BatchReview(ctx context.Context, in *sysin.CultivateContentBatchReviewInp) (*sysin.CultivateContentBatchReviewModel, error) {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := new(sysin.CultivateContentBatchReviewModel)
|
|
err = cultivateadmin.DefaultClient(ctx).Post(ctx, scope, "/content-reviews/batch-actions", map[string]any{
|
|
"object_type": in.ObjectType, "ids": in.Ids, "action": in.Action, "reason": strings.TrimSpace(in.Reason),
|
|
}, result)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) ReportList(ctx context.Context, in *sysin.CultivateReportListInp) (list []*sysin.CultivateReportListModel, totalCount int, err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
normalizeCultivatePage(&in.PageReq)
|
|
values := cultivatePageValues(in.Page, in.PerPage)
|
|
cultivateSetQuery(values, "object_type", in.ObjectType)
|
|
cultivateSetQuery(values, "status", in.Status)
|
|
cultivateSetQuery(values, "reporter_id", in.ReporterId)
|
|
setTimeRange(values, in.CreatedAt)
|
|
var page cultivateadmin.Page[*sysin.CultivateReportListModel]
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, "/reports", values, &page); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
if page.Items == nil {
|
|
page.Items = []*sysin.CultivateReportListModel{}
|
|
}
|
|
return page.Items, page.Total, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) ReportView(ctx context.Context, in *sysin.CultivateReportViewInp) (*sysin.CultivateReportViewModel, error) {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := new(sysin.CultivateReportViewModel)
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, "/reports/"+url.PathEscape(in.Id), nil, result); err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *sSysCultivateContent) ReportHandle(ctx context.Context, in *sysin.CultivateReportHandleInp) error {
|
|
if err := in.Filter(ctx); err != nil {
|
|
return err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return cultivateadmin.DefaultClient(ctx).Post(ctx, scope, "/reports/"+url.PathEscape(in.Id)+"/actions", map[string]any{
|
|
"action": in.Action, "handle_result": in.HandleResult, "content_action": in.ContentAction,
|
|
"user_action": in.UserAction, "reason": in.Reason,
|
|
}, nil)
|
|
}
|
|
|
|
func (s *sSysCultivateContent) LogList(ctx context.Context, in *sysin.CultivateOperationLogListInp) (list []*sysin.CultivateOperationLogListModel, totalCount int, err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
scope, err := cultivateAdminScope(ctx)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
normalizeCultivatePage(&in.PageReq)
|
|
values := cultivatePageValues(in.Page, in.PerPage)
|
|
cultivateSetQuery(values, "operator_id", in.OperatorId)
|
|
cultivateSetQuery(values, "operation_type", in.OperationType)
|
|
cultivateSetQuery(values, "target_type", in.TargetType)
|
|
cultivateSetQuery(values, "target_id", in.TargetId)
|
|
cultivateSetQuery(values, "request_id", in.RequestId)
|
|
setTimeRange(values, in.CreatedAt)
|
|
var page cultivateadmin.Page[*sysin.CultivateOperationLogListModel]
|
|
if err = cultivateadmin.DefaultClient(ctx).Get(ctx, scope, "/operation-logs", values, &page); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
if page.Items == nil {
|
|
page.Items = []*sysin.CultivateOperationLogListModel{}
|
|
}
|
|
return page.Items, page.Total, nil
|
|
}
|