318075d686
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
60 lines
2.3 KiB
Go
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("Маршруты обращений зарегистрированы")
|
|
} |