From 6e2c25345a06e42714ca357b303048963028a5ec Mon Sep 17 00:00:00 2001 From: ayuRain Date: Tue, 25 Apr 2023 23:53:47 +0800 Subject: [PATCH] larkEvent(init): init larkEvent logic --- biz/client/larkbot/larkbot.go | 30 ++++++++++++++++++++++++++++++ biz/config/global.go | 11 +++++++++-- biz/config/init.go | 15 +++++++++++---- biz/handler/larkbot.go | 5 +++++ biz/service/init.go | 6 +++++- biz/service/larkbot/larkbot.go | 27 +++++++++++++++++++++++++++ conf/config.example | 2 +- go.mod | 3 +++ go.sum | 8 ++++++++ router.go | 1 + 10 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 biz/client/larkbot/larkbot.go create mode 100644 biz/service/larkbot/larkbot.go diff --git a/biz/client/larkbot/larkbot.go b/biz/client/larkbot/larkbot.go new file mode 100644 index 0000000..ccbf9ad --- /dev/null +++ b/biz/client/larkbot/larkbot.go @@ -0,0 +1,30 @@ +package larkbot + +import ( + "context" + "fmt" + larkcore "github.com/larksuite/oapi-sdk-go/v3/core" + "github.com/larksuite/oapi-sdk-go/v3/event/dispatcher" + larkim "github.com/larksuite/oapi-sdk-go/v3/service/im/v1" + "rainbot/biz/config" +) + +type LarkEvent interface { +} +type larkEventClient struct { + event *dispatcher.EventDispatcher +} + +func NewClient() LarkEvent { + return &larkEventClient{ + event: dispatcher.NewEventDispatcher(config.LarkBotConfig.Token, ""), + } +} +func (l *larkEventClient) SendMsg() { + +} +func callBackEvent(ctx context.Context, event *larkim.P2MessageReceiveV1) error { + fmt.Println(larkcore.Prettify(event)) + fmt.Println(event.RequestId()) + return nil +} diff --git a/biz/config/global.go b/biz/config/global.go index 4adaa0e..137ef84 100644 --- a/biz/config/global.go +++ b/biz/config/global.go @@ -1,9 +1,16 @@ package config -const defaultConfigName = "global" +const miniMaxConfigName = "minimax" +const larkbotConfigName = "larkbot" -type global struct { +type miniMax struct { GroupID string `json:"group_id" yaml:"group_id"` Secret string `json:"secret" yaml:"secret"` Host string `json:"host" yaml:"host"` } + +type larkBot struct { + AppID string `json:"app_id" yaml:"app_id"` + Secret string `json:"secret" yaml:"secret"` + Token string `json:"token" yaml:"token"` +} diff --git a/biz/config/init.go b/biz/config/init.go index 3b7d0e8..2573066 100644 --- a/biz/config/init.go +++ b/biz/config/init.go @@ -6,15 +6,22 @@ import ( "os" ) -var BaseConfig global +var MiniMaxConfig miniMax +var LarkBotConfig larkBot func InstallBaseConfig() { - dataBytes, err := os.ReadFile(fmt.Sprintf("./conf/%s.yaml", defaultConfigName)) + miniMaxBytes, err := os.ReadFile(fmt.Sprintf("./conf/%s.yaml", miniMaxConfigName)) if err != nil { panic(err) } - BaseConfig = global{} - err = yaml.Unmarshal(dataBytes, &BaseConfig) + larkBotBytes, err := os.ReadFile(fmt.Sprintf("./conf/%s.yaml", larkbotConfigName)) + MiniMaxConfig = miniMax{} + LarkBotConfig = larkBot{} + err = yaml.Unmarshal(miniMaxBytes, &MiniMaxConfig) + if err != nil { + panic(err) + } + err = yaml.Unmarshal(larkBotBytes, &LarkBotConfig) if err != nil { panic(err) } diff --git a/biz/handler/larkbot.go b/biz/handler/larkbot.go index 1cfe30a..b9a25c1 100644 --- a/biz/handler/larkbot.go +++ b/biz/handler/larkbot.go @@ -3,6 +3,7 @@ package handler import ( "context" "github.com/cloudwego/hertz/pkg/app" + lark_hertz "github.com/hertz-contrib/lark-hertz" "net/http" "rainbot/biz/model" ) @@ -15,3 +16,7 @@ func Verify(ctx context.Context, c *app.RequestContext) { } c.JSON(http.StatusOK, &model.VerifyResp{Challenge: req.Challenge}) } + +func ReceiveEvent(ctx context.Context, c *app.RequestContext) { + lark_hertz.NewEventHandlerFunc("") +} diff --git a/biz/service/init.go b/biz/service/init.go index 3d2eb1b..87a0e9e 100644 --- a/biz/service/init.go +++ b/biz/service/init.go @@ -3,18 +3,22 @@ package service import ( "rainbot/biz/config" "rainbot/biz/service/chat" + "rainbot/biz/service/larkbot" ) type Service interface { chat.MiniMaxGPTService + larkbot.LarkBotService } type serviceImpl struct { chat.MiniMaxGPTServiceImpl + larkbot.LarkBotServiceImpl } func (s *serviceImpl) Init() { - s.MiniMaxGPTServiceImpl.Init(config.BaseConfig.GroupID, config.BaseConfig.Secret, config.BaseConfig.Host) + s.MiniMaxGPTServiceImpl.Init(config.MiniMaxConfig.GroupID, config.MiniMaxConfig.Secret, config.MiniMaxConfig.Host) + s.LarkBotServiceImpl.Init(config.LarkBotConfig.AppID, config.LarkBotConfig.Secret) } func Build() Service { diff --git a/biz/service/larkbot/larkbot.go b/biz/service/larkbot/larkbot.go new file mode 100644 index 0000000..9674cd4 --- /dev/null +++ b/biz/service/larkbot/larkbot.go @@ -0,0 +1,27 @@ +package larkbot + +import ( + lark_hertz "github.com/hertz-contrib/lark-hertz" + lark "github.com/larksuite/oapi-sdk-go/v3" + "github.com/larksuite/oapi-sdk-go/v3/event/dispatcher" +) + +type LarkBotService interface { +} + +type LarkBotServiceImpl struct { + Cli *lark.Client +} + +func (l *LarkBotServiceImpl) Init(appID string, secret string) { + l.Cli = lark.NewClient(appID, secret) +} + +func (l *LarkBotServiceImpl) loop() { + handler := dispatcher.NewEventDispatcher("", "").OnP2MessageReceiveV1() + lark_hertz.NewEventHandlerFunc(handler) +} + +func (l *LarkBotServiceImpl) Revice() { + +} diff --git a/conf/config.example b/conf/config.example index 5a0f80d..9073351 100644 --- a/conf/config.example +++ b/conf/config.example @@ -1,4 +1,4 @@ -# you should new global.yaml for example +# you should new minimax.yaml for example # minimax config diff --git a/go.mod b/go.mod index 120903d..ed7de62 100755 --- a/go.mod +++ b/go.mod @@ -9,12 +9,15 @@ require ( github.com/bytedance/gopkg v0.0.0-20220413063733-65bf48ffb3a7 // indirect github.com/bytedance/sonic v1.8.1 // indirect github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/chyroc/lark v0.0.110 // indirect github.com/cloudwego/netpoll v0.3.1 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/golang/protobuf v1.5.0 // indirect github.com/henrylee2cn/ameda v1.4.10 // indirect github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 // indirect + github.com/hertz-contrib/lark-hertz v1.0.0 // indirect github.com/klauspost/cpuid/v2 v2.0.9 // indirect + github.com/larksuite/oapi-sdk-go/v3 v3.0.20 // indirect github.com/nyaruka/phonenumbers v1.0.55 // indirect github.com/tidwall/gjson v1.13.0 // indirect github.com/tidwall/match v1.1.1 // indirect diff --git a/go.sum b/go.sum index 925d429..dc7f233 100644 --- a/go.sum +++ b/go.sum @@ -10,6 +10,8 @@ github.com/bytedance/sonic v1.8.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZX github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chyroc/lark v0.0.110 h1:iZYOkL+KApif4tQb7fQZvzKFo1X7Yt+h/MdUAXAH/0s= +github.com/chyroc/lark v0.0.110/go.mod h1:pwj/p5/dHocDYkTPvHF9ig+O+xSkqfFC4T0cjcjMhUc= github.com/cloudwego/hertz v0.6.2 h1:8NM0yHbyv8B4dNYgICirk733S7monTNB+uR9as1It1Y= github.com/cloudwego/hertz v0.6.2/go.mod h1:2em2hGREvCBawsTQcQxyWBGVlCeo+N1pp2q0HkkbwR0= github.com/cloudwego/netpoll v0.3.1 h1:xByoORmCLIyKZ8gS+da06WDo3j+jvmhaqS2KeKejtBk= @@ -31,10 +33,14 @@ github.com/henrylee2cn/ameda v1.4.10 h1:JdvI2Ekq7tapdPsuhrc4CaFiqw6QXFvZIULWJgQy github.com/henrylee2cn/ameda v1.4.10/go.mod h1:liZulR8DgHxdK+MEwvZIylGnmcjzQ6N6f2PlWe7nEO4= github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8 h1:yE9ULgp02BhYIrO6sdV/FPe0xQM6fNHkVQW2IAymfM0= github.com/henrylee2cn/goutil v0.0.0-20210127050712-89660552f6f8/go.mod h1:Nhe/DM3671a5udlv2AdV2ni/MZzgfv2qrPL5nIi3EGQ= +github.com/hertz-contrib/lark-hertz v1.0.0 h1:dWzPvB4TozmEhJD2vxIsSEcIycSrHCVK2MhZiOvtKGc= +github.com/hertz-contrib/lark-hertz v1.0.0/go.mod h1:b6g6kT5vnrN0xEtRBv+LWk+I5+2pfN7zqkHyIPVfxIg= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/larksuite/oapi-sdk-go/v3 v3.0.20 h1:qwH7lEr2WNWgbxI/v2jGWujFmKMht2ZCw3bYS1fXkDE= +github.com/larksuite/oapi-sdk-go/v3 v3.0.20/go.mod h1:FKi8vBgtkBt/xNRQUwdWvoDmsPh7/wP75Sn5IBIBQLk= github.com/nyaruka/phonenumbers v1.0.55 h1:bj0nTO88Y68KeUQ/n3Lo2KgK7lM1hF7L9NFuwcCl3yg= github.com/nyaruka/phonenumbers v1.0.55/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -53,6 +59,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.13.0 h1:3TFY9yxOQShrvmjdM76K+jc66zJeT6D3/VFFYCGQf7M= github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= diff --git a/router.go b/router.go index c0dc711..cea6e20 100755 --- a/router.go +++ b/router.go @@ -12,5 +12,6 @@ func customizedRegister(r *server.Hertz) { r.GET("/ping", handler.Ping) r.POST("/send", handler.SendMsgToChat) r.POST("", handler.Verify) + r.POST("", handler.Ping) // your code ... }