generated from pkg/go-template
feat: service-lark
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
c048909a9d
commit
d247aded23
|
@ -0,0 +1,31 @@
|
|||
package user
|
||||
|
||||
import (
|
||||
"git.icechen.cn/monorepo/backend/pkg/proto/zeus/lark"
|
||||
"git.icechen.cn/monorepo/backend/pkg/rpc"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
ctxLogger "github.com/luizsuper/ctxLoggers"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var ErrorUser = fiber.NewError(0, "错误")
|
||||
|
||||
func LoginHandle(c *fiber.Ctx) error {
|
||||
var p = struct {
|
||||
Code string `json:"code"`
|
||||
}{}
|
||||
err := c.BodyParser(&p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
response, err := lark.NewUserClient(rpc.GetServiceConn("lark")).Login(c.Context(), &lark.LoginRequest{
|
||||
Code: p.Code,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ctxLogger.FInfo(c, "response", zap.Any("resp", response))
|
||||
return c.JSON(response)
|
||||
}
|
|
@ -1,11 +1,60 @@
|
|||
package main
|
||||
|
||||
import "github.com/gofiber/fiber/v2"
|
||||
import (
|
||||
"encoding/json"
|
||||
"git.icechen.cn/monorepo/backend/app/zeus/api/lark/internal/user"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
ctxLogger "github.com/luizsuper/ctxLoggers"
|
||||
)
|
||||
|
||||
func main() {
|
||||
router := fiber.New()
|
||||
router.Get("/user", func(ctx *fiber.Ctx) error {
|
||||
return ctx.SendString("user")
|
||||
router := fiber.New(fiber.Config{
|
||||
AppName: "api-lark",
|
||||
ErrorHandler: middlewareError,
|
||||
})
|
||||
//router.Use(middlewareResp)
|
||||
|
||||
userRouter := router.Group("/user")
|
||||
userRouter.Post("/login", user.LoginHandle)
|
||||
|
||||
err := router.Listen(":8080")
|
||||
if err != nil {
|
||||
ctxLogger.Error(nil, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func middlewareResp(c *fiber.Ctx) error {
|
||||
err := c.Next()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp := Response{
|
||||
Code: 0,
|
||||
Message: "",
|
||||
Data: c.Response().Body(),
|
||||
}
|
||||
return c.JSON(resp)
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data json.RawMessage `json:"data"`
|
||||
}
|
||||
|
||||
func middlewareError(ctx *fiber.Ctx, err error) error {
|
||||
code := fiber.StatusInternalServerError
|
||||
msg := ""
|
||||
|
||||
if e, ok := err.(*fiber.Error); ok {
|
||||
code = e.Code
|
||||
msg = e.Message
|
||||
}
|
||||
|
||||
return ctx.Status(code).JSON(Response{
|
||||
Code: code,
|
||||
Message: msg,
|
||||
Data: nil,
|
||||
})
|
||||
router.Listen(":8080")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package lark
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/larksuite/oapi-sdk-go/core"
|
||||
im "github.com/larksuite/oapi-sdk-go/service/im/v1"
|
||||
)
|
||||
|
||||
func (l Lark) SendMessage(code string) error {
|
||||
coreCtx := core.WrapContext(context.Background())
|
||||
|
||||
reqCall := l.imService.Messages.Create(coreCtx, &im.MessageCreateReqBody{
|
||||
ReceiveId: "ou_a11d2bcc7d852afbcaf37e5b3ad01f7e",
|
||||
Content: `{"text":"<at user_id="ou_a11d2bcc7d852afbcaf37e5b3ad01f7e">Tom</at> test content"}`,
|
||||
MsgType: "text",
|
||||
})
|
||||
reqCall.SetReceiveIdType("user_id")
|
||||
_, err := reqCall.Do()
|
||||
return err
|
||||
}
|
|
@ -1,32 +1,28 @@
|
|||
package lark
|
||||
|
||||
import (
|
||||
"context"
|
||||
cfg "git.icechen.cn/monorepo/backend/app/zeus/service/lark/internal/config"
|
||||
"github.com/larksuite/oapi-sdk-go/core"
|
||||
"github.com/larksuite/oapi-sdk-go/core/config"
|
||||
authen "github.com/larksuite/oapi-sdk-go/service/authen/v1"
|
||||
im "github.com/larksuite/oapi-sdk-go/service/im/v1"
|
||||
)
|
||||
|
||||
type Lark struct {
|
||||
conf *config.Config
|
||||
conf *config.Config
|
||||
userService *authen.Service
|
||||
imService *im.Service
|
||||
}
|
||||
|
||||
var lark Lark
|
||||
|
||||
func Client() Lark {
|
||||
if lark.conf == nil {
|
||||
if lark.conf == nil || lark.userService == nil {
|
||||
appSettings := core.NewInternalAppSettings(
|
||||
core.SetAppCredentials(cfg.Config.LarkAppID, cfg.Config.LarkAppSecret))
|
||||
lark.conf = core.NewConfig(core.DomainFeiShu, appSettings, core.SetLoggerLevel(core.LoggerLevelError))
|
||||
lark.userService = authen.NewService(lark.conf)
|
||||
lark.imService = im.NewService(lark.conf)
|
||||
}
|
||||
return lark
|
||||
}
|
||||
|
||||
func (l Lark) Auth(code string) (*authen.UserAccessTokenInfo, error) {
|
||||
s := authen.NewService(l.conf)
|
||||
return s.Authens.AccessToken(core.WrapContext(context.Background()), &authen.AuthenAccessTokenReqBody{
|
||||
GrantType: "",
|
||||
Code: code,
|
||||
}).Do()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package lark
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/larksuite/oapi-sdk-go/core"
|
||||
authen "github.com/larksuite/oapi-sdk-go/service/authen/v1"
|
||||
)
|
||||
|
||||
func (l Lark) Auth(code string) (*authen.UserAccessTokenInfo, error) {
|
||||
return l.userService.Authens.AccessToken(core.WrapContext(context.Background()), &authen.AuthenAccessTokenReqBody{
|
||||
GrantType: "",
|
||||
Code: code,
|
||||
}).Do()
|
||||
}
|
Loading…
Reference in New Issue