package admin import ( "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/model/dto" iotCardService "github.com/break/junhong_cmp_fiber/internal/service/iot_card" "github.com/break/junhong_cmp_fiber/pkg/constants" "github.com/break/junhong_cmp_fiber/pkg/errors" "github.com/break/junhong_cmp_fiber/pkg/middleware" "github.com/break/junhong_cmp_fiber/pkg/response" ) type IotCardHandler struct { service *iotCardService.Service } func NewIotCardHandler(service *iotCardService.Service) *IotCardHandler { return &IotCardHandler{service: service} } func (h *IotCardHandler) ListStandalone(c *fiber.Ctx) error { var req dto.ListStandaloneIotCardRequest if err := c.QueryParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } result, err := h.service.ListStandalone(c.UserContext(), &req) if err != nil { return err } return response.SuccessWithPagination(c, result.List, result.Total, result.Page, result.PageSize) } func (h *IotCardHandler) AllocateCards(c *fiber.Ctx) error { var req dto.AllocateStandaloneCardsRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } ctx := c.UserContext() operatorID := middleware.GetUserIDFromContext(ctx) userType := middleware.GetUserTypeFromContext(ctx) var operatorShopID *uint if userType == constants.UserTypeAgent { shopID := middleware.GetShopIDFromContext(ctx) if shopID > 0 { operatorShopID = &shopID } } result, err := h.service.AllocateCards(ctx, &req, operatorID, operatorShopID) if err != nil { return err } return response.Success(c, result) } func (h *IotCardHandler) RecallCards(c *fiber.Ctx) error { var req dto.RecallStandaloneCardsRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } ctx := c.UserContext() operatorID := middleware.GetUserIDFromContext(ctx) userType := middleware.GetUserTypeFromContext(ctx) var operatorShopID *uint if userType == constants.UserTypeAgent { shopID := middleware.GetShopIDFromContext(ctx) if shopID > 0 { operatorShopID = &shopID } } result, err := h.service.RecallCards(ctx, &req, operatorID, operatorShopID) if err != nil { return err } return response.Success(c, result) }