package handler import ( "encoding/json" "io" "log" "net/http" "reflect" "fusenapi/utils/basic" "fusenapi/server/feishu-sync/internal/logic" "fusenapi/server/feishu-sync/internal/svc" "fusenapi/server/feishu-sync/internal/types" ) func WebhookHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { b, _ := io.ReadAll(r.Body) defer r.Body.Close() log.Println("收到body信息:", string(b)) var req types.WebhookReq userinfo, err := basic.RequestParse(w, r, svcCtx, &req) if err != nil { return } //验证连接 if req.Type == "url_verification" { challengeRsp := map[string]string{ "challenge": req.Challenge, } b, _ := json.Marshal(challengeRsp) w.Write(b) return } log.Println("收到头消息:", r.Header) // 创建一个业务逻辑层实例 l := logic.NewWebhookLogic(r.Context(), svcCtx) rl := reflect.ValueOf(l) basic.BeforeLogic(w, r, rl) resp := l.Webhook(&req, userinfo) if !basic.AfterLogic(w, r, rl, resp) { basic.NormalAfterLogic(w, r, resp) } } }