modified: main_dc/yalarba/api_yal/internal/models/rating.go
set comment into cod
This commit is contained in:
@@ -1,57 +1,78 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import ()
|
// PlatformType определяет тип платформы, на которой используется рейтинг
|
||||||
|
|
||||||
// Типы платформ
|
|
||||||
type PlatformType string
|
type PlatformType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
PlatformEntrepreneur PlatformType = "entrepreneur" // Платформа для предпринимателей
|
// PlatformEntrepreneur - платформа для предпринимателей
|
||||||
PlatformTourist PlatformType = "tourist" // Платформа для туристов
|
PlatformEntrepreneur PlatformType = "entrepreneur"
|
||||||
|
// PlatformTourist - платформа для туристов
|
||||||
|
PlatformTourist PlatformType = "tourist"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Rating представляет агрегированную информацию о рейтинге объекта
|
||||||
|
// Содержит среднюю оценку, общее количество голосов и детализацию по баллам
|
||||||
type Rating struct {
|
type Rating struct {
|
||||||
|
// Base содержит общие поля для всех моделей:
|
||||||
/*ID, CreatedAt, UpdatedAt, DeletedAt (Update's history)*/
|
// ID, CreatedAt, UpdatedAt, DeletedAt (история обновлений)
|
||||||
Base Base `gorm:"embedded"`
|
Base Base `gorm:"embedded"`
|
||||||
|
|
||||||
// owner account ID
|
// OwnerID - идентификатор владельца рейтинга (аккаунта)
|
||||||
OwnerID uint `json:"owner_id"`
|
OwnerID uint `json:"owner_id"`
|
||||||
Owner Account `gorm:"foreignKey:OwnerID;references:ID" json:"owner"`
|
// Owner - владелец рейтинга, связанный по OwnerID
|
||||||
|
Owner Account `gorm:"foreignKey:OwnerID;references:ID" json:"owner"`
|
||||||
|
|
||||||
// object ID
|
// ObjectID - идентификатор объекта, к которому относится рейтинг
|
||||||
ObjectID uint `json:"object_id"`
|
ObjectID uint `json:"object_id"`
|
||||||
Object Object `gorm:"foreignKey:ObjectID;references:ID" json:"object"`
|
// Object - объект рейтинга, связанный по ObjectID
|
||||||
|
Object Object `gorm:"foreignKey:ObjectID;references:ID" json:"object"`
|
||||||
Platform PlatformType `json:"platform"` // К какой платформе относится
|
|
||||||
AverageScore float64 `json:"average_score"` // Средняя оценка
|
|
||||||
TotalVotes int `json:"total_votes"` // Общее количество голосов
|
|
||||||
VoteBreakdown VoteBreakdown `json:"vote_breakdown"` // Детализация оценок
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// VoteBreakdown - детализация по баллам
|
|
||||||
type VoteBreakdown struct {
|
|
||||||
Base Base `gorm:"embedded"`
|
|
||||||
|
|
||||||
RatingID uint `json:"rating_id"`
|
|
||||||
Rating Rating `gorm:"foreignKey:RatingID;references:ID" json:"rating"`
|
|
||||||
|
|
||||||
Score1 int `json:"score_1"` // Количество оценок 1
|
|
||||||
Score2 int `json:"score_2"` // Количество оценок 2
|
|
||||||
Score3 int `json:"score_3"` // Количество оценок 3
|
|
||||||
Score4 int `json:"score_4"` // Количество оценок 4
|
|
||||||
Score5 int `json:"score_5"` // Количество оценок 5
|
|
||||||
}
|
|
||||||
|
|
||||||
// RatingVote - отдельный голос в рейтинге
|
|
||||||
type RatingVote struct {
|
|
||||||
|
|
||||||
/*ID, CreatedAt, UpdatedAt, DeletedAt (Update's history)*/
|
|
||||||
Base Base `gorm:"embedded"`
|
|
||||||
|
|
||||||
|
// Platform - платформа, к которой относится рейтинг (entrepreneur/tourist)
|
||||||
Platform PlatformType `json:"platform"`
|
Platform PlatformType `json:"platform"`
|
||||||
TargetID uint `json:"target_id"`
|
// AverageScore - средняя оценка объекта (от 1 до 5)
|
||||||
VoterID uint `json:"voter_id"` // ID голосующего (предприниматель/турист)
|
AverageScore float64 `json:"average_score"`
|
||||||
Score int `json:"score"` // Оценка от 1 до 5
|
// TotalVotes - общее количество проголосовавших пользователей
|
||||||
|
TotalVotes int `json:"total_votes"`
|
||||||
|
// VoteBreakdown - детализированная информация о распределении оценок
|
||||||
|
VoteBreakdown VoteBreakdown `json:"vote_breakdown"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VoteBreakdown содержит детализацию количества оценок по каждому баллу
|
||||||
|
// Используется для отображения распределения голосов от 1 до 5
|
||||||
|
type VoteBreakdown struct {
|
||||||
|
// Base содержит общие поля для всех моделей
|
||||||
|
Base Base `gorm:"embedded"`
|
||||||
|
|
||||||
|
// RatingID - идентификатор рейтинга, к которому относится детализация
|
||||||
|
RatingID uint `json:"rating_id"`
|
||||||
|
// Rating - рейтинг, связанный по RatingID
|
||||||
|
Rating Rating `gorm:"foreignKey:RatingID;references:ID" json:"rating"`
|
||||||
|
|
||||||
|
// Score1 - количество оценок "1"
|
||||||
|
Score1 int `json:"score_1"`
|
||||||
|
// Score2 - количество оценок "2"
|
||||||
|
Score2 int `json:"score_2"`
|
||||||
|
// Score3 - количество оценок "3"
|
||||||
|
Score3 int `json:"score_3"`
|
||||||
|
// Score4 - количество оценок "4"
|
||||||
|
Score4 int `json:"score_4"`
|
||||||
|
// Score5 - количество оценок "5"
|
||||||
|
Score5 int `json:"score_5"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// RatingVote представляет отдельный голос пользователя в рейтинге
|
||||||
|
// Хранит информацию о том, кто, когда и какую оценку поставил
|
||||||
|
type RatingVote struct {
|
||||||
|
// Base содержит общие поля для всех моделей:
|
||||||
|
// ID, CreatedAt, UpdatedAt, DeletedAt (история обновлений)
|
||||||
|
Base Base `gorm:"embedded"`
|
||||||
|
|
||||||
|
// Platform - платформа, на которой был сделан голос
|
||||||
|
Platform PlatformType `json:"platform"`
|
||||||
|
// TargetID - идентификатор объекта, которому поставлена оценка
|
||||||
|
TargetID uint `json:"target_id"`
|
||||||
|
// VoterID - идентификатор пользователя, поставившего оценку
|
||||||
|
VoterID uint `json:"voter_id"`
|
||||||
|
// Score - поставленная оценка (допустимые значения: от 1 до 5)
|
||||||
|
Score int `json:"score"`
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user