Files
tp/main_dc/yalarba/api_yal/internal/domain/appeal/router.go
T
valitovgaziz 318075d686 On branch main
modified:   internal/domain/appeal/dto.go
	new file:   internal/domain/appeal/handler.go
	modified:   internal/domain/appeal/router.go
	modified:   internal/domain/appeal/service.go
	modified:   internal/models/appeal.go
	modified:   internal/router/router.go
fix bag with no embeded the Base into appeal
2026-05-21 05:04:34 +05:00

60 lines
2.3 KiB
Go

package appeal
import (
"api_yal/internal/logger"
"api_yal/internal/middleware"
"api_yal/internal/repository"
"github.com/go-chi/chi/v5"
"gorm.io/gorm"
)
// RegisterRoutes регистрирует маршруты для работы с обращениями
func RegisterRoutes(r chi.Router, db *gorm.DB, jwtSecret string) {
l := logger.Get()
l.Debug("Регистрация маршрутов обращений")
// Создаем репозиторий и сервис
appealRepo := repository.NewAppealRepository(db)
appealService := NewAppealService(appealRepo)
appealHandler := NewHandler(appealService)
// Публичные маршруты (не требуют аутентификации)
r.Post("/appeals", appealHandler.CreateAppeal)
r.Get("/appeals/{id}", appealHandler.GetAppeal)
// Защищенные маршруты (требуют аутентификации)
r.Group(func(r chi.Router) {
r.Use(middleware.AuthMiddleware(jwtSecret))
// Личные обращения пользователя
r.Get("/appeals/me", appealHandler.GetMyAppeals)
// Обновление и удаление своих обращений
r.Put("/appeals/{id}", appealHandler.UpdateAppeal)
r.Delete("/appeals/{id}", appealHandler.DeleteAppeal)
})
// Административные маршруты (требуют прав администратора или модератора)
r.Group(func(r chi.Router) {
r.Use(middleware.AuthMiddleware(jwtSecret))
r.Use(middleware.AdminOnlyMiddleware) // Или создайте ModeratorOnlyMiddleware
// Полный список обращений (с фильтрацией)
r.Get("/appeals", appealHandler.ListAppeals)
// Управление статусами
r.Patch("/appeals/{id}/status", appealHandler.UpdateAppealStatus)
r.Post("/appeals/{id}/assign", appealHandler.AssignAppeal)
r.Post("/appeals/{id}/resolve", appealHandler.ResolveAppeal)
// История и статистика
r.Get("/appeals/{id}/history", appealHandler.GetAppealHistory)
r.Get("/appeals/statistics", appealHandler.GetAppealStatistics)
// Просмотр обращений конкретного пользователя
r.Get("/appeals/user/{userID}", appealHandler.GetAppealsByAuthor)
})
l.Info("Маршруты обращений зарегистрированы")
}