生成表结构、
This commit is contained in:
59
internal/controller/wx/wx_v1_we_chat_login.go
Normal file
59
internal/controller/wx/wx_v1_we_chat_login.go
Normal file
@ -0,0 +1,59 @@
|
||||
package wx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"server/utility/ecode"
|
||||
"server/utility/wechat"
|
||||
|
||||
"os"
|
||||
"server/api/auth/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) WeChatLogin(ctx context.Context, req *v1.WeChatLoginReq) (res *v1.WeChatLoginRes, err error) {
|
||||
// 1、根据 uuid 构建redis 存入数据接口
|
||||
cache := struct {
|
||||
Token string `json:"token"`
|
||||
OpenID string `json:"openid"`
|
||||
}{
|
||||
Token: "",
|
||||
OpenID: "",
|
||||
}
|
||||
|
||||
marshal, err := json.Marshal(cache)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "反序列化数据出现异常")
|
||||
return nil, ecode.Fail.Sub("反序列化数据出现异常")
|
||||
}
|
||||
|
||||
// 2、存入 redis
|
||||
_, err = g.Redis().Do(ctx, "SETEX", fmt.Sprintf("login_status:%s", req.UUID), 300, marshal)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "写入 Redis 异常:%v", err)
|
||||
return nil, ecode.Fail.Sub("写入 Redis 登录状态失败")
|
||||
}
|
||||
|
||||
// 3、开始获取图片
|
||||
weChatClient := wechat.GetWeChatClient()
|
||||
ticket, err := weChatClient.GetTicket(req.UUID)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("微信登录获取 ticket 错误")
|
||||
}
|
||||
imagePath, err := weChatClient.GetQrCode(ticket, req.UUID+".jpg")
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("微信登录获取二维码错误")
|
||||
}
|
||||
imageData, err := os.ReadFile(imagePath)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("读取二维码图片失败")
|
||||
}
|
||||
defer os.Remove(imagePath)
|
||||
resp := g.RequestFromCtx(ctx).Response
|
||||
resp.Header().Set("Content-Type", "image/jpeg")
|
||||
resp.Write(imageData)
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user