package main import ( "github.com/gin-gonic/gin" "pro2d/conf" "pro2d/models" "pro2d/pb" "pro2d/utils" ) type AccountAction struct { HttpServer *AccountServer } func (h *AccountAction) Register(c *gin.Context) (int, interface{}){ var register pb.Register if err := c.ShouldBindJSON(®ister); err != nil { return -1, err.Error() } account := models.NewAccount(register.Phone) if err := account.Load(); err == nil { return -2 , "account exists: " + register.Phone } account.Uid = conf.SnowFlack.NextValStr() account.Password = utils.Md5V(register.Password) if err := account.Create(); err != nil{ return -3, "account register err: " + err.Error() } account.Password = register.Password return 0, account.Account } func (h *AccountAction) Login(c *gin.Context) (int,interface{}) { var login pb.Account if err := c.ShouldBindJSON(&login); err != nil { return -1, err.Error() } account := models.NewAccount(login.Phone) if err := account.Load(); err != nil { return -2, err.Error() } if utils.Md5V(login.Password) != account.Password { return -3, "password error" } var gs []*pb.ServiceInfo for k, v := range h.HttpServer.EtcdClient.GetByPrefix(conf.GlobalConf.GameConf.Name) { gs = append(gs, &pb.ServiceInfo{ Id: k, Name: conf.GlobalConf.GameConf.Name, Address: v, }) } rsp := &pb.LoginRsp{ Uid: account.Uid, GameService: gs, } return 0, rsp }