account.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package models
  2. import (
  3. "context"
  4. mhayaTime "github.com/mhaya/extend/time"
  5. "github.com/mhaya/game/game_cluster/internal/code"
  6. "github.com/mhaya/game/game_cluster/internal/constant"
  7. "github.com/mhaya/game/game_cluster/internal/guid"
  8. "github.com/mhaya/game/game_cluster/internal/mdb"
  9. "github.com/mhaya/game/game_cluster/internal/param"
  10. "go.mongodb.org/mongo-driver/bson"
  11. )
  12. type Account struct {
  13. UserName string `json:"username" bson:"userName"`
  14. OpenId string `json:"-" bson:"openId"`
  15. JoinIp string `json:"joinip" bson:"JoinIp"`
  16. JoinTime int64 `json:"jointime" bson:"JoinTime"`
  17. }
  18. func AccountRegisterOrLogin(req *param.LoginReq) (*Account, int32) {
  19. var account Account
  20. findFilter := bson.M{"openId": req.OpenID}
  21. mdb.MDB.Collection(constant.CNameAccount).FindOne(context.Background(), findFilter).Decode(&account)
  22. if account.OpenId != "" {
  23. return &account, code.OK
  24. }
  25. devAccountTable := &Account{
  26. UserName: guid.Next(),
  27. OpenId: req.OpenID,
  28. JoinIp: req.IP,
  29. JoinTime: mhayaTime.Now().Unix(),
  30. }
  31. _, err := mdb.MDB.Collection(constant.CNameAccount).InsertOne(context.Background(), devAccountTable)
  32. if err != nil {
  33. return nil, code.LoginError
  34. }
  35. return devAccountTable, code.OK
  36. }