This commit is contained in:
mm 2024-10-30 00:21:57 +05:00
parent dd6f2e2d14
commit 25afdcd2e6
12 changed files with 37 additions and 32 deletions

View File

@ -63,7 +63,8 @@ func GetDonat(donatService model.DonatService) echo.HandlerFunc {
return request.JSON(http.StatusInternalServerError, err.Error()) return request.JSON(http.StatusInternalServerError, err.Error())
} }
return request.JSON(http.StatusNotFound, donats) slog.Info("get donat successfully")
return request.JSON(200, donats)
} }
} }

View File

@ -13,7 +13,7 @@ func CreateTarget(targetService model.TargetService, authClient model.AuthClient
Amount model.DonatAmount `json:"amount"` Amount model.DonatAmount `json:"amount"`
Text string `json:"text"` Text string `json:"text"`
} }
type Response struct { type CreateTargetResponse struct {
TargetID model.TargetID `json:"targetID"` TargetID model.TargetID `json:"targetID"`
} }
return func(request echo.Context) error { return func(request echo.Context) error {
@ -39,7 +39,7 @@ func CreateTarget(targetService model.TargetService, authClient model.AuthClient
slog.Error(err.Error()) slog.Error(err.Error())
return request.JSON(http.StatusInternalServerError, err.Error()) return request.JSON(http.StatusInternalServerError, err.Error())
} }
return request.JSON(http.StatusOK, Response{TargetID: targetID}) return request.JSON(http.StatusOK, CreateTargetResponse{TargetID: targetID})
} }
} }

View File

@ -10,18 +10,18 @@ import (
) )
func CreateWidget(widgetService model.WidgetService, authClient model.AuthClient) echo.HandlerFunc { func CreateWidget(widgetService model.WidgetService, authClient model.AuthClient) echo.HandlerFunc {
type Body struct { type CreateWidgetBody struct {
TemplateID model.TemplateID `json:"templateID"` TemplateID model.TemplateID `json:"templateID"`
MinAmount model.DonatAmount `json:"minAmount"` MinAmount model.DonatAmount `json:"minAmount"`
Duration model.Duration `json:"duration"` Duration model.Duration `json:"duration"`
} }
type Response struct { type CreateWidgetResponse struct {
WidgetID model.WidgetID `json:"widgetID"` WidgetID model.WidgetID `json:"widgetID"`
} }
return func(request echo.Context) error { return func(request echo.Context) error {
ctx := context.Background() ctx := context.Background()
var body Body var body CreateWidgetBody
if err := request.Bind(&body); err != nil { if err := request.Bind(&body); err != nil {
slog.Error(err.Error()) slog.Error(err.Error())
return request.JSON(http.StatusInternalServerError, err.Error()) return request.JSON(http.StatusInternalServerError, err.Error())
@ -49,7 +49,7 @@ func CreateWidget(widgetService model.WidgetService, authClient model.AuthClient
return request.JSON(http.StatusInternalServerError, err.Error()) return request.JSON(http.StatusInternalServerError, err.Error())
} }
response := Response{ response := CreateWidgetResponse{
WidgetID: widgetID, WidgetID: widgetID,
} }

View File

@ -60,7 +60,7 @@ func IncludeDonatHandlers(
) { ) {
server.POST(PREFIX+"/donat/create", CreateDonat(donatService)) server.POST(PREFIX+"/donat/create", CreateDonat(donatService))
server.GET(PREFIX+"/donat/:streamerID", GetDonat(donatService)) server.GET(PREFIX+"/donat/get/:streamerID", GetDonat(donatService))
server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService)) server.POST(PREFIX+"/donat/view/:donatID", MarkDonatView(donatService))
server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService)) server.POST(PREFIX+"/donat/paid", MarkDonatPaid(donatService))

View File

@ -13,7 +13,7 @@ storage:
master: "http://92.63.193.151:9333" master: "http://92.63.193.151:9333"
paymentService: paymentService:
host: "92.118.114.148" host: "donat-payment"
port: "8003" port: "8003"
authService: authService:

View File

@ -42,7 +42,7 @@ type DonatService interface {
} }
type DonatRepo interface { type DonatRepo interface {
CreateDonat(ctx context.Context, widgetID WidgetID, orderID OrderID, targetID TargetID, amount DonatAmount, text string, donatUser string) error CreateDonat(ctx context.Context, streamerID StreamerID, widgetID WidgetID, orderID OrderID, targetID TargetID, amount DonatAmount, text string, donatUser string) error
GetDonatByStreamerID(ctx context.Context, streamerID StreamerID) ([]*Donat, error) GetDonatByStreamerID(ctx context.Context, streamerID StreamerID) ([]*Donat, error)
GetDonatByOrderID(ctx context.Context, orderID OrderID) (*Donat, error) GetDonatByOrderID(ctx context.Context, orderID OrderID) (*Donat, error)

View File

@ -23,10 +23,11 @@ type Widget struct {
} }
type Donat struct { type Donat struct {
ID DonatID `db:"id"` ID DonatID `db:"id"`
WidgetID WidgetID `db:"widget_id"` StreamerID StreamerID `db:"streamer_id"`
OrderID OrderID `db:"order_id"` WidgetID WidgetID `db:"widget_id"`
TargetID TargetID `db:"target_id"` OrderID OrderID `db:"order_id"`
TargetID TargetID `db:"target_id"`
Text string `db:"text"` Text string `db:"text"`
DonatUser string `db:"donat_user"` DonatUser string `db:"donat_user"`

View File

@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS widgets (
CREATE TABLE IF NOT EXISTS donats ( CREATE TABLE IF NOT EXISTS donats (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
streamer_id INTEGER NOT NULL,
widget_id INTEGER NOT NULL, widget_id INTEGER NOT NULL,
order_id TEXT NOT NULL, order_id TEXT NOT NULL,
target_id INTEGER NOT NULL, target_id INTEGER NOT NULL,

View File

@ -43,8 +43,8 @@ func GetMediaUrl(mediaType model.MediaType) string {
} }
var CreateDonat = ` var CreateDonat = `
INSERT INTO donats (widget_id, text, amount, donat_user, order_id, target_id) INSERT INTO donats (streamer_id, widget_id, text, amount, donat_user, order_id, target_id)
VALUES (@widget_id, @text, @amount, @donat_user, @order_id, @target_id) VALUES (@streamer_id, @widget_id, @text, @amount, @donat_user, @order_id, @target_id)
RETURNING id; RETURNING id;
` `
var MarkDonatView = ` var MarkDonatView = `

View File

@ -41,12 +41,10 @@ func GetTemplate1(
`, backgroundUrl) `, backgroundUrl)
script := fmt.Sprintf(` script := fmt.Sprintf(`
function delay(ms) { let baseUrl = 'http://localhost:8002/api'
return new Promise(resolve => setTimeout(resolve, ms));
}
async def getDonatInfo(streamerID) { async function getDonatInfo(streamerID) {
let response = await fetch(baseUrl + '/donat/get/' + streamerID); let response = await fetch(baseUrl + '/widget/donat/get/' + streamerID);
let donat = await response.json(); let donat = await response.json();
} }
@ -56,8 +54,6 @@ async function getWidgetInfo(widgetID) {
return widget return widget
} }
function addImage(imageUrl) { function addImage(imageUrl) {
img = document.createElement('img'); img = document.createElement('img');
img.src = imageUrl + '?t=' + new Date().getTime(); img.src = imageUrl + '?t=' + new Date().getTime();
@ -78,6 +74,10 @@ function addAudio(audioUrl) {
contentDiv.appendChild(audio); contentDiv.appendChild(audio);
} }
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function endDonat(donatID) { async function endDonat(donatID) {
if (audio) { if (audio) {
audio.pause(); audio.pause();
@ -93,12 +93,10 @@ let audio;
const contentDiv = document.getElementById('content'); const contentDiv = document.getElementById('content');
async function widgetView() { async function widgetView() {
let baseUrl = 'http://147.45.237.174:8002/api'
let streamerID = '%v' let streamerID = '%v'
while (true) { while (true) {
let donat = await getDonatInfo(streamerID); let donat = await getDonatInfo(streamerID);
if (!donat) { if (!donat) {
await delay(5 * 1000); await delay(5 * 1000);
continue continue
@ -108,6 +106,8 @@ async function widgetView() {
widgetID = donat.widgwtID widgetID = donat.widgwtID
let widget = await getWidgetInfo(widgetID) let widget = await getWidgetInfo(widgetID)
console.log(donat);
console.log(widget);
addImage(widget.imageUrl) addImage(widget.imageUrl)
addAudio(widget.audioUrl) addAudio(widget.audioUrl)

View File

@ -22,6 +22,7 @@ type RepoDonat struct {
func (repoDonat *RepoDonat) CreateDonat( func (repoDonat *RepoDonat) CreateDonat(
ctx context.Context, ctx context.Context,
streamerID model.StreamerID,
widgetID model.WidgetID, widgetID model.WidgetID,
orderID model.OrderID, orderID model.OrderID,
targetID model.TargetID, targetID model.TargetID,
@ -30,12 +31,13 @@ func (repoDonat *RepoDonat) CreateDonat(
donatUser string, donatUser string,
) error { ) error {
args := pgx.NamedArgs{ args := pgx.NamedArgs{
"widget_id": widgetID, "streamer_id": streamerID,
"order_id": orderID, "widget_id": widgetID,
"target_id": targetID, "order_id": orderID,
"text": text, "target_id": targetID,
"amount": amount, "text": text,
"donat_user": donatUser, "amount": amount,
"donat_user": donatUser,
} }
_, err := repoDonat.db.Insert(ctx, sql.CreateDonat, args) _, err := repoDonat.db.Insert(ctx, sql.CreateDonat, args)
if err != nil { if err != nil {

View File

@ -48,7 +48,7 @@ func (donatService *ServiceDonat) CreateDonat(
} }
err = donatService.donatRepo.CreateDonat( err = donatService.donatRepo.CreateDonat(
ctx, widgetID, orderID, targetID, amount, text, donatUser, ctx, streamerID, widgetID, orderID, targetID, amount, text, donatUser,
) )
if err != nil { if err != nil {
slog.Error(err.Error()) slog.Error(err.Error())