package tenant import ( "quyun/v2/app/http/tenant/dto" "quyun/v2/app/requests" "quyun/v2/app/services" "quyun/v2/database/models" "github.com/gofiber/fiber/v3" log "github.com/sirupsen/logrus" ) // ledgerAdmin provides tenant-admin ledger audit endpoints. // // @provider type ledgerAdmin struct{} // adminLedgers // // @Summary 余额流水列表(租户管理/审计) // @Tags Tenant // @Accept json // @Produce json // @Param tenantCode path string true "Tenant Code" // @Param filter query dto.AdminLedgerListFilter true "Filter" // @Success 200 {object} requests.Pager{items=dto.AdminLedgerItem} // // @Router /t/:tenantCode/v1/admin/ledgers [get] // @Bind tenant local key(tenant) // @Bind tenantUser local key(tenant_user) // @Bind filter query func (*ledgerAdmin) adminLedgers( ctx fiber.Ctx, tenant *models.Tenant, tenantUser *models.TenantUser, filter *dto.AdminLedgerListFilter, ) (*requests.Pager, error) { if err := requireTenantAdmin(tenantUser); err != nil { return nil, err } if filter == nil { filter = &dto.AdminLedgerListFilter{} } log.WithFields(log.Fields{ "tenant_id": tenant.ID, "user_id": tenantUser.UserID, "operator_user_id": filter.OperatorUserID, "target_user_id": filter.UserID, "type": filter.Type, "order_id": filter.OrderID, "biz_ref_type": filter.BizRefType, "biz_ref_id": filter.BizRefID, }).Info("tenant.admin.ledgers.list") return services.Ledger.AdminLedgerPage(ctx.Context(), tenant.ID, filter) }