generated from pkg/go-template
80 lines
1.4 KiB
Go
80 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"git.icechen.cn/monorepo/backend/app/brahma/api/murder/internal/model"
|
|
"git.icechen.cn/monorepo/backend/pkg/wx"
|
|
"math/rand"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var appMap = make(map[string]Applet)
|
|
|
|
func init() {
|
|
//a := new(AppletConfig)
|
|
//err := config.GetConfig(a)
|
|
//if err != nil {
|
|
// ctxLogger.Error(nil, err.Error())
|
|
// panic(err)
|
|
//}
|
|
//for _, v := range a.Apps {
|
|
// appMap[v.Type] = v
|
|
//}
|
|
}
|
|
|
|
type AppletConfig struct {
|
|
Apps []Applet `json:"applet"`
|
|
}
|
|
|
|
type Applet struct {
|
|
Type string `json:"type"`
|
|
Appid string `json:"appid"`
|
|
Secret string `json:"secret"`
|
|
}
|
|
|
|
func Login(ctx context.Context, code, appType string) error {
|
|
session, err := wx.Code2Session(appMap[appType].Appid, appMap[appType].Secret, code)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
i, err := model.GetUserInfo(ctx, appType, session.OpenId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if i == nil {
|
|
i = new(model.User)
|
|
i.Openid = session.OpenId
|
|
err = Register(ctx, i, true)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
err = generateToken(ctx, i)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func Register(ctx context.Context, user *model.User, isNew bool) error {
|
|
if isNew {
|
|
rand.Seed(time.Now().UnixNano())
|
|
intn := rand.Intn(2 ^ 1024)
|
|
itoa := strconv.Itoa(intn)
|
|
user.NickName = fmt.Sprintf("游客%v", itoa)
|
|
}
|
|
|
|
err := model.NewUser(ctx, user)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|