add order id during create donat payment

This commit is contained in:
harold 2025-05-02 22:16:53 +05:00
parent 5b5ff68da2
commit f56937c9a3
7 changed files with 48 additions and 32 deletions

View File

@ -21,7 +21,7 @@ import (
// @Produce json // @Produce json
// @Param streamer-login path string true "Login стримера" // @Param streamer-login path string true "Login стримера"
// @Param request body model.CreateDonatBody true "Create donat body json" // @Param request body model.CreateDonatBody true "Create donat body json"
// @Success 200 {object} api.CreatePaymentResponse "Donat page updated successfully" // @Success 200 {object} model.CreateDonatResponse "Donat page updated successfully"
// @Failure 400 {object} echo.HTTPError "Bad request" // @Failure 400 {object} echo.HTTPError "Bad request"
// @Failure 401 {object} echo.HTTPError "Unauthorized or expired token" // @Failure 401 {object} echo.HTTPError "Unauthorized or expired token"
// @Failure 422 {object} echo.HTTPError "Validation error" // @Failure 422 {object} echo.HTTPError "Validation error"

View File

@ -459,7 +459,7 @@ const docTemplate = `{
"200": { "200": {
"description": "Donat page updated successfully", "description": "Donat page updated successfully",
"schema": { "schema": {
"$ref": "#/definitions/donat-widget_internal_model_api.CreatePaymentResponse" "$ref": "#/definitions/donat-widget_internal_model.CreateDonatResponse"
} }
}, },
"400": { "400": {
@ -1521,6 +1521,17 @@ const docTemplate = `{
} }
} }
}, },
"donat-widget_internal_model.CreateDonatResponse": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"payment_url": {
"type": "string"
}
}
},
"donat-widget_internal_model.CreateWidgetBody": { "donat-widget_internal_model.CreateWidgetBody": {
"type": "object", "type": "object",
"required": [ "required": [
@ -2249,14 +2260,6 @@ const docTemplate = `{
} }
} }
}, },
"donat-widget_internal_model_api.CreatePaymentResponse": {
"type": "object",
"properties": {
"payment_url": {
"type": "string"
}
}
},
"echo.HTTPError": { "echo.HTTPError": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -452,7 +452,7 @@
"200": { "200": {
"description": "Donat page updated successfully", "description": "Donat page updated successfully",
"schema": { "schema": {
"$ref": "#/definitions/donat-widget_internal_model_api.CreatePaymentResponse" "$ref": "#/definitions/donat-widget_internal_model.CreateDonatResponse"
} }
}, },
"400": { "400": {
@ -1514,6 +1514,17 @@
} }
} }
}, },
"donat-widget_internal_model.CreateDonatResponse": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"payment_url": {
"type": "string"
}
}
},
"donat-widget_internal_model.CreateWidgetBody": { "donat-widget_internal_model.CreateWidgetBody": {
"type": "object", "type": "object",
"required": [ "required": [
@ -2242,14 +2253,6 @@
} }
} }
}, },
"donat-widget_internal_model_api.CreatePaymentResponse": {
"type": "object",
"properties": {
"payment_url": {
"type": "string"
}
}
},
"echo.HTTPError": { "echo.HTTPError": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@ -20,6 +20,13 @@ definitions:
text: text:
type: string type: string
type: object type: object
donat-widget_internal_model.CreateDonatResponse:
properties:
order_id:
type: string
payment_url:
type: string
type: object
donat-widget_internal_model.CreateWidgetBody: donat-widget_internal_model.CreateWidgetBody:
properties: properties:
audio: audio:
@ -537,11 +544,6 @@ definitions:
$ref: '#/definitions/donat-widget_internal_model.GetWidgetDb' $ref: '#/definitions/donat-widget_internal_model.GetWidgetDb'
type: array type: array
type: object type: object
donat-widget_internal_model_api.CreatePaymentResponse:
properties:
payment_url:
type: string
type: object
echo.HTTPError: echo.HTTPError:
properties: properties:
message: {} message: {}
@ -743,7 +745,7 @@ paths:
"200": "200":
description: Donat page updated successfully description: Donat page updated successfully
schema: schema:
$ref: '#/definitions/donat-widget_internal_model_api.CreatePaymentResponse' $ref: '#/definitions/donat-widget_internal_model.CreateDonatResponse'
"400": "400":
description: Bad request description: Bad request
schema: schema:

View File

@ -72,7 +72,7 @@ type DonatService interface {
CheckToken(request echo.Context) (api.CheckTokenResponse, error) CheckToken(request echo.Context) (api.CheckTokenResponse, error)
CreateDonat(ctx context.Context, streamerLogin, text, donatUser string, targetID *int, amount int) (api.CreatePaymentResponse, error) CreateDonat(ctx context.Context, streamerLogin, text, donatUser string, targetID *int, amount int) (CreateDonatResponse, error)
GetDonatsByStreamerID(ctx context.Context, streamerID, page, limit int) ([]*Donat, error) GetDonatsByStreamerID(ctx context.Context, streamerID, page, limit int) ([]*Donat, error)
GetDonatByOrderID(ctx context.Context, orderID string) (*Donat, error) GetDonatByOrderID(ctx context.Context, orderID string) (*Donat, error)

View File

@ -375,3 +375,8 @@ type StreamerInfo struct {
type UpdateAvatarBody struct { type UpdateAvatarBody struct {
Avatar string `json:"avatar" validate:"required,uuid4"` Avatar string `json:"avatar" validate:"required,uuid4"`
} }
type CreateDonatResponse struct {
PaymentUrl string `json:"payment_url"`
OrderID uuid.UUID `json:"order_id"`
}

View File

@ -93,18 +93,18 @@ func (donatService *ServiceDonat) CreateDonat(
donatUser string, donatUser string,
targetID *int, targetID *int,
amount int, amount int,
) (api.CreatePaymentResponse, error) { ) (model.CreateDonatResponse, error) {
donatePage, err := donatService.donatRepo.GetDonatPageByLogin(ctx, streamerLogin) donatePage, err := donatService.donatRepo.GetDonatPageByLogin(ctx, streamerLogin)
if err != nil { if err != nil {
slog.Error("Failed to get donate page", "error", err.Error()) slog.Error("Failed to get donate page", "error", err.Error())
return api.CreatePaymentResponse{}, err return model.CreateDonatResponse{}, err
} }
widgets, err := donatService.widgetRepo.GetWidgetsByStreamerID(ctx, donatePage.StreamerID) widgets, err := donatService.widgetRepo.GetWidgetsByStreamerID(ctx, donatePage.StreamerID)
if err != nil { if err != nil {
slog.Error(err.Error()) slog.Error(err.Error())
return api.CreatePaymentResponse{}, err return model.CreateDonatResponse{}, err
} }
orderID := uuid.New() orderID := uuid.New()
@ -122,16 +122,19 @@ func (donatService *ServiceDonat) CreateDonat(
) )
if err != nil { if err != nil {
slog.Error(err.Error()) slog.Error(err.Error())
return api.CreatePaymentResponse{}, err return model.CreateDonatResponse{}, err
} }
createPaymentResponse, err := donatService.paymentClient.CreatePayment(donatePage.StreamerID, amount, orderID) createPaymentResponse, err := donatService.paymentClient.CreatePayment(donatePage.StreamerID, amount, orderID)
if err != nil { if err != nil {
slog.Error(err.Error()) slog.Error(err.Error())
return api.CreatePaymentResponse{}, err return model.CreateDonatResponse{}, err
} }
var createDonatResp model.CreateDonatResponse
createDonatResp.PaymentUrl = createPaymentResponse.PaymentUrl
createDonatResp.OrderID = orderID
return createPaymentResponse, err return createDonatResp, err
} }
func (donatService *ServiceDonat) GetDonatsByStreamerID( func (donatService *ServiceDonat) GetDonatsByStreamerID(