From a55d15b30d0e2a1bf40612b1b243d39f7d121ad9 Mon Sep 17 00:00:00 2001 From: Eli Yip Date: Tue, 3 Jun 2025 09:43:01 +0800 Subject: [PATCH] feat(legacy): implement set hand type api --- api/legacy/handlers.go | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/api/legacy/handlers.go b/api/legacy/handlers.go index eab0614..c68d9e0 100644 --- a/api/legacy/handlers.go +++ b/api/legacy/handlers.go @@ -1,6 +1,7 @@ package legacy import ( + "fmt" "net/http" "time" @@ -62,3 +63,55 @@ func (s *LegacyServer) handleHandConfigs(c *gin.Context) { Data: result, }) } + +// handleHandType 手型设置处理函数 +func (s *LegacyServer) handleHandType(c *gin.Context) { + var req HandTypeRequest + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, define.ApiResponse{ + Status: "error", + Error: "无效的手型设置请求:" + err.Error(), + }) + return + } + + // 验证接口 + if !s.mapper.IsValidInterface(req.Interface) { + c.JSON(http.StatusBadRequest, define.ApiResponse{ + Status: "error", + Error: fmt.Sprintf("无效的接口 %s,可用接口: %v", req.Interface, config.Config.AvailableInterfaces), + }) + return + } + + // 验证手型 ID + if req.HandType == "left" && req.HandId != uint32(define.HAND_TYPE_LEFT) { + req.HandId = uint32(define.HAND_TYPE_LEFT) + } else if req.HandType == "right" && req.HandId != uint32(define.HAND_TYPE_RIGHT) { + req.HandId = uint32(define.HAND_TYPE_RIGHT) + } + + // 设置手型配置 + if err := s.mapper.SetHandConfig(req.Interface, req.HandType, req.HandId); err != nil { + c.JSON(http.StatusInternalServerError, define.ApiResponse{ + Status: "error", + Error: "设置手型失败:" + err.Error(), + }) + return + } + + handTypeName := "右手" + if req.HandType == "left" { + handTypeName = "左手" + } + + c.JSON(http.StatusOK, define.ApiResponse{ + Status: "success", + Message: fmt.Sprintf("接口 %s 手型已设置为%s (0x%X)", req.Interface, handTypeName, req.HandId), + Data: map[string]any{ + "interface": req.Interface, + "handType": req.HandType, + "handId": req.HandId, + }, + }) +}