add all base rest methods for lead target
This commit is contained in:
parent
b3f6ed0827
commit
c2c948cae3
2
go.mod
2
go.mod
@ -18,7 +18,7 @@ require (
|
||||
google.golang.org/grpc v1.64.0
|
||||
google.golang.org/protobuf v1.34.1
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610161253-75e1867c7b36
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610170852-3d0ee4560f62
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240421230341-0e086fcbb990
|
||||
)
|
||||
|
||||
|
4
go.sum
4
go.sum
@ -259,7 +259,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6 h1:oV+/HNX+JPoQ3/GUx08hio7d45WpY0AMGrFs7j70QlA=
|
||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610161253-75e1867c7b36 h1:4cVsuo0H7tKRXH2FG/vgPMNyWpvFDbM3KqG6zw8Trzc=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610161253-75e1867c7b36/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610170852-3d0ee4560f62 h1:jCrXJmApWkbdM4o7HKrIBnFpZ8fITsusQVSx1Aefvbk=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240610170852-3d0ee4560f62/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240421230341-0e086fcbb990 h1:jiO8GWO+3sCnDAV8/NAV8tQIUwae/I6/xiDilW7zf0o=
|
||||
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240421230341-0e086fcbb990/go.mod h1:zswBuTwmEsFHBVRu1nkG3/Fwylk5Vcm8OUm9iWxccSE=
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors"
|
||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core.git/brokers"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -45,6 +46,11 @@ type GetAccountsResp struct {
|
||||
Items []model.Account `json:"items"`
|
||||
}
|
||||
|
||||
type UpdateLeadTarget struct {
|
||||
ID int64 `json:"id"`
|
||||
Target string `json:"target"`
|
||||
}
|
||||
|
||||
// getCurrentAccount обработчик для получения текущего аккаунта
|
||||
func (s *Service) getCurrentAccount(ctx *fiber.Ctx) error {
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
@ -228,3 +234,88 @@ func (s *Service) ManualDone(ctx *fiber.Ctx) error {
|
||||
|
||||
return ctx.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
func (s *Service) PostLeadTarget(ctx *fiber.Ctx) error {
|
||||
var req struct {
|
||||
Type string `json:"type"`
|
||||
QuizID int32 `json:"quizID"`
|
||||
Target string `json:"target"`
|
||||
}
|
||||
if err := ctx.BodyParser(&req); err != nil {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data")
|
||||
}
|
||||
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
if !ok {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
if req.Type == "" || req.Target == "" {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Type and Target don't be nil")
|
||||
}
|
||||
|
||||
result, err := s.dal.AccountRepo.PostLeadTarget(ctx.Context(), model.LeadTarget{
|
||||
AccountID: accountID,
|
||||
Target: req.Target,
|
||||
Type: req.Type,
|
||||
QuizID: req.QuizID,
|
||||
})
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
return ctx.Status(fiber.StatusOK).JSON(result)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteLeadTarget(ctx *fiber.Ctx) error {
|
||||
leadIDStr := ctx.Params("id")
|
||||
leadID, err := strconv.ParseInt(leadIDStr, 10, 64)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid lead ID format")
|
||||
}
|
||||
|
||||
err = s.dal.AccountRepo.DeleteLeadTarget(ctx.Context(), leadID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
return ctx.SendStatus(fiber.StatusOK)
|
||||
}
|
||||
|
||||
func (s *Service) GetLeadTarget(ctx *fiber.Ctx) error {
|
||||
accountID, ok := middleware.GetAccountId(ctx)
|
||||
if !ok {
|
||||
return ctx.Status(fiber.StatusUnauthorized).SendString("account id is required")
|
||||
}
|
||||
|
||||
result, err := s.dal.AccountRepo.GetLeadTarget(ctx.Context(), accountID)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
return ctx.Status(fiber.StatusOK).JSON(result)
|
||||
}
|
||||
|
||||
func (s *Service) UpdateLeadTarget(ctx *fiber.Ctx) error {
|
||||
var req struct {
|
||||
ID int64 `json:"id"`
|
||||
Target string `json:"target"`
|
||||
}
|
||||
|
||||
if err := ctx.BodyParser(&req); err != nil {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data")
|
||||
}
|
||||
|
||||
if req.ID == 0 || req.Target == "" {
|
||||
return ctx.Status(fiber.StatusBadRequest).SendString("ID and Target don't be nil")
|
||||
}
|
||||
|
||||
result, err := s.dal.AccountRepo.UpdateLeadTarget(ctx.Context(), model.LeadTarget{
|
||||
ID: req.ID,
|
||||
Target: req.Target,
|
||||
})
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).SendString(err.Error())
|
||||
}
|
||||
|
||||
return ctx.Status(fiber.StatusOK).JSON(result)
|
||||
}
|
||||
|
@ -60,6 +60,10 @@ func (s *Service) Register(app *fiber.App) {
|
||||
app.Get("/privilege/:userId", s.getPrivilegeByUserID)
|
||||
app.Delete("/account/:userId", s.deleteAccountByUserID)
|
||||
app.Post("/account/manualdone", s.ManualDone)
|
||||
app.Post("/account/leadtarget", s.PostLeadTarget)
|
||||
app.Delete("/account/leadtarget/:id", s.DeleteLeadTarget)
|
||||
app.Get("/account/leadtarget/:id", s.GetLeadTarget)
|
||||
app.Put("/account/leadtarget", s.UpdateLeadTarget)
|
||||
|
||||
// result handlers
|
||||
app.Post("/results/getResults/:quizId", s.GetResultsByQuizID)
|
||||
|
Loading…
Reference in New Issue
Block a user