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 }