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/grpc v1.64.0
|
||||||
google.golang.org/protobuf v1.34.1
|
google.golang.org/protobuf v1.34.1
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6
|
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
|
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=
|
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 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/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-20240610170852-3d0ee4560f62 h1:jCrXJmApWkbdM4o7HKrIBnFpZ8fITsusQVSx1Aefvbk=
|
||||||
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/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 h1:jiO8GWO+3sCnDAV8/NAV8tQIUwae/I6/xiDilW7zf0o=
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240421230341-0e086fcbb990/go.mod h1:zswBuTwmEsFHBVRu1nkG3/Fwylk5Vcm8OUm9iWxccSE=
|
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/model"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors"
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core.git/brokers"
|
"penahub.gitlab.yandexcloud.net/backend/quiz/core.git/brokers"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -45,6 +46,11 @@ type GetAccountsResp struct {
|
|||||||
Items []model.Account `json:"items"`
|
Items []model.Account `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UpdateLeadTarget struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
Target string `json:"target"`
|
||||||
|
}
|
||||||
|
|
||||||
// getCurrentAccount обработчик для получения текущего аккаунта
|
// getCurrentAccount обработчик для получения текущего аккаунта
|
||||||
func (s *Service) getCurrentAccount(ctx *fiber.Ctx) error {
|
func (s *Service) getCurrentAccount(ctx *fiber.Ctx) error {
|
||||||
accountID, ok := middleware.GetAccountId(ctx)
|
accountID, ok := middleware.GetAccountId(ctx)
|
||||||
@ -228,3 +234,88 @@ func (s *Service) ManualDone(ctx *fiber.Ctx) error {
|
|||||||
|
|
||||||
return ctx.SendStatus(fiber.StatusOK)
|
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.Get("/privilege/:userId", s.getPrivilegeByUserID)
|
||||||
app.Delete("/account/:userId", s.deleteAccountByUserID)
|
app.Delete("/account/:userId", s.deleteAccountByUserID)
|
||||||
app.Post("/account/manualdone", s.ManualDone)
|
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
|
// result handlers
|
||||||
app.Post("/results/getResults/:quizId", s.GetResultsByQuizID)
|
app.Post("/results/getResults/:quizId", s.GetResultsByQuizID)
|
||||||
|
Loading…
Reference in New Issue
Block a user