chore: update backend
This commit is contained in:
@@ -24,7 +24,7 @@ func (d *Database) NotifyClient(username string, commandID int, notifType, messa
|
|||||||
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
||||||
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
||||||
|
|
||||||
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
|
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
|
||||||
if chatID, ok, err := d.GetClientTelegramChatID(username); err == nil && ok {
|
if chatID, ok, err := d.GetClientTelegramChatID(username); err == nil && ok {
|
||||||
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("🔔 <b>Notification</b>\n\n%s", message))
|
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("🔔 <b>Notification</b>\n\n%s", message))
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ func (d *Database) NotifyLivreur(username string, commandID int, notifType, mess
|
|||||||
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
||||||
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
||||||
|
|
||||||
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
|
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
|
||||||
if chatID, ok, err := d.GetUserTelegramChatID(username); err == nil && ok {
|
if chatID, ok, err := d.GetUserTelegramChatID(username); err == nil && ok {
|
||||||
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("🔔 <b>Notification</b>\n\n%s", message))
|
go services.TelegramBot.SendMessage(chatID, fmt.Sprintf("🔔 <b>Notification</b>\n\n%s", message))
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ func (d *Database) NotifyAllAdminCabine(commandID int, clientUsername, deliveryA
|
|||||||
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
||||||
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
||||||
|
|
||||||
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
|
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
|
||||||
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
|
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
|
||||||
capturedChatID := chatID
|
capturedChatID := chatID
|
||||||
capturedMsg := msg
|
capturedMsg := msg
|
||||||
@@ -126,7 +126,7 @@ func (d *Database) NotifyAllAdminCabineAlert(alertID int, livreurUsername, alert
|
|||||||
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
Redis.LPush(RedisCtx, notifKey, notifJSON)
|
||||||
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
Redis.Expire(RedisCtx, notifKey, 7*24*time.Hour)
|
||||||
|
|
||||||
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() {
|
if services.TelegramBot != nil && services.TelegramBot.IsConfigured() && services.TelegramBot.IsNotificationsEnabled() {
|
||||||
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
|
if chatID, ok, err := d.GetUserTelegramChatID(u.Username); err == nil && ok {
|
||||||
capturedChatID := chatID
|
capturedChatID := chatID
|
||||||
capturedBody := body
|
capturedBody := body
|
||||||
|
|||||||
@@ -142,6 +142,8 @@ func (d *Database) GetSettings() (models.AppSettings, error) {
|
|||||||
settings.TelegramBotToken = row.Value
|
settings.TelegramBotToken = row.Value
|
||||||
case "telegram_bot_username":
|
case "telegram_bot_username":
|
||||||
settings.TelegramBotUsername = row.Value
|
settings.TelegramBotUsername = row.Value
|
||||||
|
case "telegram_notifications_enabled":
|
||||||
|
settings.TelegramNotificationsEnabled = row.Value == "true"
|
||||||
case "delivery_mode":
|
case "delivery_mode":
|
||||||
var mode models.DeliveryModeConfig
|
var mode models.DeliveryModeConfig
|
||||||
if err := json.Unmarshal([]byte(row.Value), &mode); err == nil {
|
if err := json.Unmarshal([]byte(row.Value), &mode); err == nil {
|
||||||
@@ -223,6 +225,7 @@ func (d *Database) UpdateSettings(s models.AppSettings) error {
|
|||||||
{"postal_zones", string(zonesJSON)},
|
{"postal_zones", string(zonesJSON)},
|
||||||
{"telegram_bot_token", s.TelegramBotToken},
|
{"telegram_bot_token", s.TelegramBotToken},
|
||||||
{"telegram_bot_username", s.TelegramBotUsername},
|
{"telegram_bot_username", s.TelegramBotUsername},
|
||||||
|
{"telegram_notifications_enabled", boolStr(s.TelegramNotificationsEnabled)},
|
||||||
{"delivery_mode", string(deliveryModeJSON)},
|
{"delivery_mode", string(deliveryModeJSON)},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,9 +40,10 @@ func GetPublicSettings(c *gin.Context) {
|
|||||||
"referral_enabled": settings.ReferralEnabled,
|
"referral_enabled": settings.ReferralEnabled,
|
||||||
"referral_amount": settings.ReferralAmount,
|
"referral_amount": settings.ReferralAmount,
|
||||||
"delivery_schedule": settings.DeliverySchedule,
|
"delivery_schedule": settings.DeliverySchedule,
|
||||||
"crypto_payment_enabled": settings.CryptoPaymentEnabled,
|
"crypto_payment_enabled": settings.CryptoPaymentEnabled,
|
||||||
"crypto_only": settings.CryptoOnly,
|
"crypto_only": settings.CryptoOnly,
|
||||||
"nowpayments_currencies": settings.NowPaymentsCurrencies,
|
"nowpayments_currencies": settings.NowPaymentsCurrencies,
|
||||||
|
"telegram_notifications_enabled": settings.TelegramNotificationsEnabled,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +80,7 @@ func UpdateSettings(c *gin.Context) {
|
|||||||
// Recharger le service Telegram si le token/username a changé
|
// Recharger le service Telegram si le token/username a changé
|
||||||
if services.TelegramBot != nil {
|
if services.TelegramBot != nil {
|
||||||
services.TelegramBot.Reload(req.TelegramBotToken, req.TelegramBotUsername)
|
services.TelegramBot.Reload(req.TelegramBotToken, req.TelegramBotUsername)
|
||||||
|
services.TelegramBot.SetNotificationsEnabled(req.TelegramNotificationsEnabled)
|
||||||
if req.TelegramBotToken != "" {
|
if req.TelegramBotToken != "" {
|
||||||
log.Printf("✅ [SETTINGS] Service Telegram rechargé (username: %s)", req.TelegramBotUsername)
|
log.Printf("✅ [SETTINGS] Service Telegram rechargé (username: %s)", req.TelegramBotUsername)
|
||||||
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ func main() {
|
|||||||
|
|
||||||
if dbSettings, err := database.GetSettings(); err == nil {
|
if dbSettings, err := database.GetSettings(); err == nil {
|
||||||
telegramService.Reload(dbSettings.TelegramBotToken, dbSettings.TelegramBotUsername)
|
telegramService.Reload(dbSettings.TelegramBotToken, dbSettings.TelegramBotUsername)
|
||||||
|
telegramService.SetNotificationsEnabled(dbSettings.TelegramNotificationsEnabled)
|
||||||
if dbSettings.TelegramBotToken != "" {
|
if dbSettings.TelegramBotToken != "" {
|
||||||
log.Printf("✅ [TELEGRAM] Config chargée depuis la DB (username: %s)", dbSettings.TelegramBotUsername)
|
log.Printf("✅ [TELEGRAM] Config chargée depuis la DB (username: %s)", dbSettings.TelegramBotUsername)
|
||||||
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
if webhookURL := os.Getenv("TELEGRAM_WEBHOOK_URL"); webhookURL != "" {
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ type AppSettings struct {
|
|||||||
NowPaymentsCurrencies []string `json:"nowpayments_currencies"` // cryptos acceptées (ex: ["btc","eth","ltc"])
|
NowPaymentsCurrencies []string `json:"nowpayments_currencies"` // cryptos acceptées (ex: ["btc","eth","ltc"])
|
||||||
DeliverySchedule DeliverySchedule `json:"delivery_schedule"` // horaires de livraison par jour
|
DeliverySchedule DeliverySchedule `json:"delivery_schedule"` // horaires de livraison par jour
|
||||||
PostalZones []PostalZone `json:"postal_zones"` // zones de livraison avec minimum de commande
|
PostalZones []PostalZone `json:"postal_zones"` // zones de livraison avec minimum de commande
|
||||||
TelegramBotToken string `json:"telegram_bot_token"` // token du bot Telegram (BotFather)
|
TelegramBotToken string `json:"telegram_bot_token"` // token du bot Telegram (BotFather)
|
||||||
TelegramBotUsername string `json:"telegram_bot_username"` // username du bot (sans @)
|
TelegramBotUsername string `json:"telegram_bot_username"` // username du bot (sans @)
|
||||||
DeliveryMode DeliveryModeConfig `json:"delivery_mode"` // mode d'assignation des livreurs
|
TelegramNotificationsEnabled bool `json:"telegram_notifications_enabled"` // activer/désactiver les notifications Telegram
|
||||||
|
DeliveryMode DeliveryModeConfig `json:"delivery_mode"` // mode d'assignation des livreurs
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ import (
|
|||||||
var TelegramBot *TelegramService
|
var TelegramBot *TelegramService
|
||||||
|
|
||||||
type TelegramService struct {
|
type TelegramService struct {
|
||||||
botToken string
|
botToken string
|
||||||
webhookSecret string
|
webhookSecret string
|
||||||
BotUsername string
|
BotUsername string
|
||||||
|
notificationsEnabled bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTelegramService() *TelegramService {
|
func NewTelegramService() *TelegramService {
|
||||||
@@ -33,6 +34,14 @@ func (t *TelegramService) IsConfigured() bool {
|
|||||||
return t.botToken != ""
|
return t.botToken != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *TelegramService) IsNotificationsEnabled() bool {
|
||||||
|
return t.notificationsEnabled
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *TelegramService) SetNotificationsEnabled(enabled bool) {
|
||||||
|
t.notificationsEnabled = enabled
|
||||||
|
}
|
||||||
|
|
||||||
// Reload met à jour le token et le username (appelé après UpdateSettings)
|
// Reload met à jour le token et le username (appelé après UpdateSettings)
|
||||||
func (t *TelegramService) Reload(token, username string) {
|
func (t *TelegramService) Reload(token, username string) {
|
||||||
if token != "" {
|
if token != "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user