hotgo/server/internal/controller/backend/common/site.go
2022-11-24 23:37:34 +08:00

102 lines
2.5 KiB
Go

// Package common
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2022 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
//
package common
import (
"context"
"github.com/gogf/gf/v2/crypto/gmd5"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/api/backend/common"
"hotgo/internal/consts"
"hotgo/internal/library/cache"
"hotgo/internal/library/captcha"
"hotgo/internal/library/jwt"
"hotgo/internal/model/input/adminin"
"hotgo/internal/service"
)
var Site = cSite{}
type cSite struct{}
// Ping ping
func (c *cSite) Ping(ctx context.Context, req *common.SitePingReq) (res *common.SitePingRes, err error) {
return
}
// Config 获取配置
func (c *cSite) Config(ctx context.Context, req *common.SiteConfigReq) (res *common.SiteConfigRes, err error) {
wsAddr, _ := g.Cfg().Get(ctx, "hotgo.wsAddr", "ws://127.0.0.1:8000/ws")
g.Log().Warningf(ctx, "wsAddr:%+v", wsAddr.String())
res = &common.SiteConfigRes{
Version: consts.VersionApp,
WsAddr: wsAddr.String(),
}
return
}
// Captcha 登录验证码
func (c *cSite) Captcha(ctx context.Context, req *common.LoginCaptchaReq) (res *common.LoginCaptchaRes, err error) {
// 获取生成的验证码图片
Cid, Base64 := captcha.GetVerifyImgString(ctx)
res = &common.LoginCaptchaRes{Cid: Cid, Base64: Base64}
return
}
// Login 提交登录
func (c *cSite) Login(ctx context.Context, req *common.LoginReq) (res *common.LoginRes, err error) {
//// 校验 验证码
//if !captcha.VerifyString(req.Cid, req.Code) {
// err = gerror.New("验证码错误")
// return
//}
//
var in adminin.MemberLoginInp
if err = gconv.Scan(req, &in); err != nil {
return nil, err
}
model, err := service.AdminMember().Login(ctx, in)
if err != nil {
return nil, err
}
if err = gconv.Scan(model, &res); err != nil {
return nil, err
}
return
}
// Logout 注销登录
func (c *cSite) Logout(ctx context.Context, req *common.LoginLogoutReq) (res *common.LoginLogoutRes, err error) {
var authorization = jwt.GetAuthorization(ghttp.RequestFromCtx(ctx))
// 获取jwtToken
jwtToken := consts.RedisJwtToken + gmd5.MustEncryptString(authorization)
if len(jwtToken) == 0 {
err = gerror.New("当前用户未登录!")
return res, err
}
// 删除登录token
ca := cache.New()
_, err = ca.Remove(ctx, jwtToken)
if err != nil {
return res, err
}
return
}