add fix for settings voice in donat
This commit is contained in:
parent
61737b124f
commit
9e2822e70e
@ -687,7 +687,7 @@ func InitNewStreamer(donatService model.DonatService) echo.HandlerFunc {
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param streamer-id path string true "Login стримера"
|
||||
// @Success 200 {object} model.PlayingDonat "Donat data"
|
||||
// @Success 200 {object} model.PlayingDonatResponse "Donat data"
|
||||
// @Failure 400 {object} echo.HTTPError "Bad request"
|
||||
// @Failure 401 {object} echo.HTTPError "Unauthorized or expired token"
|
||||
// @Failure 422 {object} echo.HTTPError "Validation error"
|
||||
|
@ -782,7 +782,7 @@ const docTemplate = `{
|
||||
"200": {
|
||||
"description": "Donat data",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/donat-widget_internal_model.PlayingDonat"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.PlayingDonatResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
@ -2039,7 +2039,7 @@ const docTemplate = `{
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.PlayingDonat": {
|
||||
"donat-widget_internal_model.PlayingDonatResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
@ -2055,11 +2055,33 @@ const docTemplate = `{
|
||||
"image_link": {
|
||||
"type": "string"
|
||||
},
|
||||
"languages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/donat-widget_internal_model.Language"
|
||||
}
|
||||
},
|
||||
"min_price": {
|
||||
"type": "integer"
|
||||
},
|
||||
"order_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"scenery": {
|
||||
"type": "string"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"voice_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"voice_sound_percent": {
|
||||
"type": "integer"
|
||||
},
|
||||
"voice_speed": {
|
||||
"description": "Добавляем новые поля для настроек голоса",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -775,7 +775,7 @@
|
||||
"200": {
|
||||
"description": "Donat data",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/donat-widget_internal_model.PlayingDonat"
|
||||
"$ref": "#/definitions/donat-widget_internal_model.PlayingDonatResponse"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
@ -2032,7 +2032,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"donat-widget_internal_model.PlayingDonat": {
|
||||
"donat-widget_internal_model.PlayingDonatResponse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
@ -2048,11 +2048,33 @@
|
||||
"image_link": {
|
||||
"type": "string"
|
||||
},
|
||||
"languages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/donat-widget_internal_model.Language"
|
||||
}
|
||||
},
|
||||
"min_price": {
|
||||
"type": "integer"
|
||||
},
|
||||
"order_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"scenery": {
|
||||
"type": "string"
|
||||
},
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"voice_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"voice_sound_percent": {
|
||||
"type": "integer"
|
||||
},
|
||||
"voice_speed": {
|
||||
"description": "Добавляем новые поля для настроек голоса",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -395,7 +395,7 @@ definitions:
|
||||
example: online
|
||||
type: string
|
||||
type: object
|
||||
donat-widget_internal_model.PlayingDonat:
|
||||
donat-widget_internal_model.PlayingDonatResponse:
|
||||
properties:
|
||||
amount:
|
||||
type: integer
|
||||
@ -406,10 +406,25 @@ definitions:
|
||||
type: integer
|
||||
image_link:
|
||||
type: string
|
||||
languages:
|
||||
items:
|
||||
$ref: '#/definitions/donat-widget_internal_model.Language'
|
||||
type: array
|
||||
min_price:
|
||||
type: integer
|
||||
order_id:
|
||||
type: string
|
||||
scenery:
|
||||
type: string
|
||||
text:
|
||||
type: string
|
||||
voice_enabled:
|
||||
type: boolean
|
||||
voice_sound_percent:
|
||||
type: integer
|
||||
voice_speed:
|
||||
description: Добавляем новые поля для настроек голоса
|
||||
type: string
|
||||
type: object
|
||||
donat-widget_internal_model.UpdateFilterSettings:
|
||||
properties:
|
||||
@ -1026,7 +1041,7 @@ paths:
|
||||
"200":
|
||||
description: Donat data
|
||||
schema:
|
||||
$ref: '#/definitions/donat-widget_internal_model.PlayingDonat'
|
||||
$ref: '#/definitions/donat-widget_internal_model.PlayingDonatResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
|
@ -104,7 +104,7 @@ type DonatService interface {
|
||||
GetDonatModeration(ctx context.Context, streamerID int) (DonationModeration, error)
|
||||
ModerateDonation(ctx context.Context, donatID, streamerID int, updateModel ModerationDonat) error
|
||||
|
||||
GetPlayingDonat(ctx context.Context, streamerID int) (PlayingDonat, error)
|
||||
GetPlayingDonat(ctx context.Context, streamerID int) (PlayingDonatResponse, error)
|
||||
UpdateStreamerLogin(ctx context.Context, streamerLogin string, streamerID int) error
|
||||
UpdateAvatarStreamer(token, avatarId string) error
|
||||
}
|
||||
|
@ -335,6 +335,22 @@ type PlayingDonat struct {
|
||||
OrderID string `json:"order_id"`
|
||||
}
|
||||
|
||||
type PlayingDonatResponse struct {
|
||||
Duration int `json:"duration" example:"30"`
|
||||
Image *string `json:"image_link"`
|
||||
Audio *string `json:"audio_link"`
|
||||
Text string `json:"text"`
|
||||
Amount int `json:"amount"`
|
||||
OrderID string `json:"order_id"`
|
||||
// Добавляем новые поля для настроек голоса
|
||||
VoiceSpeed string `json:"voice_speed,omitempty"`
|
||||
Scenery string `json:"scenery,omitempty"`
|
||||
VoiceSoundPercent int `json:"voice_sound_percent,omitempty"`
|
||||
MinPrice int `json:"min_price,omitempty"`
|
||||
Languages []Language `json:"languages,omitempty"`
|
||||
VoiceEnabled bool `json:"voice_enabled"`
|
||||
}
|
||||
|
||||
type UpdateLoginBody struct {
|
||||
AccountID int `json:"account_id"`
|
||||
Login string `json:"login"`
|
||||
|
@ -709,50 +709,70 @@ func replaceFilteredWords(text string, words []string) string {
|
||||
func (donatService *ServiceDonat) GetPlayingDonat(
|
||||
ctx context.Context,
|
||||
streamerID int,
|
||||
) (model.PlayingDonat, error) {
|
||||
) (model.PlayingDonatResponse, error) {
|
||||
playingDonat, err := donatService.donatRepo.GetPlayingDonat(ctx, streamerID)
|
||||
if err != nil {
|
||||
slog.Error("Failed to get playing donat", "error", err)
|
||||
return model.PlayingDonat{}, err
|
||||
return model.PlayingDonatResponse{}, err
|
||||
}
|
||||
|
||||
response := model.PlayingDonatResponse{
|
||||
Duration: playingDonat.Duration,
|
||||
Image: playingDonat.Image,
|
||||
Audio: playingDonat.Audio,
|
||||
Text: playingDonat.Text,
|
||||
Amount: playingDonat.Amount,
|
||||
OrderID: playingDonat.OrderID,
|
||||
}
|
||||
|
||||
filteredSettings, err := donatService.GetFiltersSettings(ctx, streamerID)
|
||||
if err != nil {
|
||||
slog.Error("Failed to get filtered words", "error", err)
|
||||
return model.PlayingDonat{}, err
|
||||
return model.PlayingDonatResponse{}, err
|
||||
}
|
||||
|
||||
voiceSettings, err := donatService.donatRepo.GetVoiceSettingsByStreamerID(ctx, streamerID)
|
||||
if err != nil {
|
||||
slog.Error("Failed to get voice settings", "error", err)
|
||||
return model.PlayingDonatResponse{}, err
|
||||
}
|
||||
|
||||
if len(filteredSettings.FilteredWords) > 0 {
|
||||
playingDonat.Text = donatService.replaceFilteredWords(playingDonat.Text, filteredSettings.FilteredWords)
|
||||
response.Text = donatService.replaceFilteredWords(response.Text, filteredSettings.FilteredWords)
|
||||
}
|
||||
|
||||
if !filteredSettings.EnableLinks {
|
||||
playingDonat.Text = donatService.replaceLinks(playingDonat.Text)
|
||||
response.Text = donatService.replaceLinks(response.Text)
|
||||
}
|
||||
|
||||
if playingDonat.OrderID == "" {
|
||||
return playingDonat, nil
|
||||
}
|
||||
response.VoiceSpeed = voiceSettings.VoiceSpeed
|
||||
response.Scenery = voiceSettings.Scenery
|
||||
response.VoiceSoundPercent = voiceSettings.VoiceSoundPercent
|
||||
response.MinPrice = voiceSettings.MinPrice
|
||||
response.Languages = voiceSettings.Languages
|
||||
response.VoiceEnabled = voiceSettings.Enable
|
||||
|
||||
if playingDonat.Image != nil {
|
||||
imageUuid, err := uuid.Parse(*playingDonat.Image)
|
||||
if response.OrderID != "" {
|
||||
if response.Image != nil {
|
||||
imageUuid, err := uuid.Parse(*response.Image)
|
||||
if err != nil {
|
||||
return model.PlayingDonat{}, err
|
||||
return model.PlayingDonatResponse{}, err
|
||||
}
|
||||
fileUrl := donatService.storage.DownloadLink(imageUuid)
|
||||
playingDonat.Image = &fileUrl
|
||||
response.Image = &fileUrl
|
||||
}
|
||||
|
||||
if playingDonat.Audio != nil {
|
||||
audioUuid, err := uuid.Parse(*playingDonat.Audio)
|
||||
if response.Audio != nil {
|
||||
audioUuid, err := uuid.Parse(*response.Audio)
|
||||
if err != nil {
|
||||
return model.PlayingDonat{}, err
|
||||
return model.PlayingDonatResponse{}, err
|
||||
}
|
||||
fileUrl := donatService.storage.DownloadLink(audioUuid)
|
||||
playingDonat.Audio = &fileUrl
|
||||
response.Audio = &fileUrl
|
||||
}
|
||||
}
|
||||
|
||||
return playingDonat, nil
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (donatService *ServiceDonat) UpdateStreamerLogin(
|
||||
|
Loading…
x
Reference in New Issue
Block a user