4.23.1: Исправлен сброс дневных баллов в 0:00
This commit is contained in:
@@ -3068,6 +3068,20 @@ func (a *App) getCurrentWeekScores(userID int) (map[int]float64, error) {
|
|||||||
// getTodayScores получает сумму score всех нод, созданных сегодня для конкретного пользователя
|
// getTodayScores получает сумму score всех нод, созданных сегодня для конкретного пользователя
|
||||||
// Возвращает map[project_id]today_score для сегодняшнего дня
|
// Возвращает map[project_id]today_score для сегодняшнего дня
|
||||||
func (a *App) getTodayScores(userID int) (map[int]float64, error) {
|
func (a *App) getTodayScores(userID int) (map[int]float64, error) {
|
||||||
|
// Получаем часовой пояс из переменной окружения (по умолчанию UTC)
|
||||||
|
timezoneStr := getEnv("TIMEZONE", "UTC")
|
||||||
|
loc, err := time.LoadLocation(timezoneStr)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err)
|
||||||
|
loc = time.UTC
|
||||||
|
timezoneStr = "UTC"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Вычисляем текущую дату в нужном часовом поясе
|
||||||
|
now := time.Now().In(loc)
|
||||||
|
todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
|
||||||
|
todayEnd := todayStart.Add(24 * time.Hour)
|
||||||
|
|
||||||
query := `
|
query := `
|
||||||
SELECT
|
SELECT
|
||||||
n.project_id,
|
n.project_id,
|
||||||
@@ -3078,11 +3092,12 @@ func (a *App) getTodayScores(userID int) (map[int]float64, error) {
|
|||||||
p.deleted = FALSE
|
p.deleted = FALSE
|
||||||
AND p.user_id = $1
|
AND p.user_id = $1
|
||||||
AND n.user_id = $1
|
AND n.user_id = $1
|
||||||
AND DATE(n.created_date) = CURRENT_DATE
|
AND n.created_date >= $2
|
||||||
|
AND n.created_date < $3
|
||||||
GROUP BY n.project_id
|
GROUP BY n.project_id
|
||||||
`
|
`
|
||||||
|
|
||||||
rows, err := a.DB.Query(query, userID)
|
rows, err := a.DB.Query(query, userID, todayStart, todayEnd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error querying today scores: %v", err)
|
log.Printf("Error querying today scores: %v", err)
|
||||||
return nil, fmt.Errorf("error querying today scores: %w", err)
|
return nil, fmt.Errorf("error querying today scores: %w", err)
|
||||||
@@ -3106,6 +3121,20 @@ func (a *App) getTodayScores(userID int) (map[int]float64, error) {
|
|||||||
// getTodayScoresAllUsers получает сумму score всех нод, созданных сегодня для всех пользователей
|
// getTodayScoresAllUsers получает сумму score всех нод, созданных сегодня для всех пользователей
|
||||||
// Возвращает map[project_id]today_score для сегодняшнего дня
|
// Возвращает map[project_id]today_score для сегодняшнего дня
|
||||||
func (a *App) getTodayScoresAllUsers() (map[int]float64, error) {
|
func (a *App) getTodayScoresAllUsers() (map[int]float64, error) {
|
||||||
|
// Получаем часовой пояс из переменной окружения (по умолчанию UTC)
|
||||||
|
timezoneStr := getEnv("TIMEZONE", "UTC")
|
||||||
|
loc, err := time.LoadLocation(timezoneStr)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Warning: Invalid timezone '%s': %v. Using UTC instead.", timezoneStr, err)
|
||||||
|
loc = time.UTC
|
||||||
|
timezoneStr = "UTC"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Вычисляем текущую дату в нужном часовом поясе
|
||||||
|
now := time.Now().In(loc)
|
||||||
|
todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
|
||||||
|
todayEnd := todayStart.Add(24 * time.Hour)
|
||||||
|
|
||||||
query := `
|
query := `
|
||||||
SELECT
|
SELECT
|
||||||
n.project_id,
|
n.project_id,
|
||||||
@@ -3114,11 +3143,12 @@ func (a *App) getTodayScoresAllUsers() (map[int]float64, error) {
|
|||||||
JOIN projects p ON n.project_id = p.id
|
JOIN projects p ON n.project_id = p.id
|
||||||
WHERE
|
WHERE
|
||||||
p.deleted = FALSE
|
p.deleted = FALSE
|
||||||
AND DATE(n.created_date) = CURRENT_DATE
|
AND n.created_date >= $1
|
||||||
|
AND n.created_date < $2
|
||||||
GROUP BY n.project_id
|
GROUP BY n.project_id
|
||||||
`
|
`
|
||||||
|
|
||||||
rows, err := a.DB.Query(query)
|
rows, err := a.DB.Query(query, todayStart, todayEnd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error querying today scores for all users: %v", err)
|
log.Printf("Error querying today scores for all users: %v", err)
|
||||||
return nil, fmt.Errorf("error querying today scores for all users: %w", err)
|
return nil, fmt.Errorf("error querying today scores for all users: %w", err)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "play-life-web",
|
"name": "play-life-web",
|
||||||
"version": "4.23.0",
|
"version": "4.23.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
Reference in New Issue
Block a user