Blame view

cmd/httpserver/action/AccountAction.go 2.48 KB
4a502dd5   zhangqijia   fix: game,account...
1
2
  // Account 账号系统API
  package action
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
3
4
  
  import (
15864203   zhangqijia   feat: 增加短信接口
5
  	"fmt"
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
6
  	"github.com/garyburd/redigo/redis"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
7
  	"github.com/gin-gonic/gin"
4a502dd5   zhangqijia   fix: game,account...
8
  	"pro2d/cmd/httpserver/service"
765431a4   zhangqijia   增加schema接口, 抽象 mo...
9
  	"pro2d/common"
15864203   zhangqijia   feat: 增加短信接口
10
  	"pro2d/common/db/redisproxy"
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
11
  	"pro2d/common/logger"
15864203   zhangqijia   feat: 增加短信接口
12
  	"pro2d/common/sms"
0e5d52de   zhangqijia   reactor: 重构底层框架1.0
13
  	"pro2d/models"
7f269318   zhangqijia   add pb.go; 添加关闭连接...
14
  	"pro2d/pb"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
15
16
  )
  
62d5d847   zhangqijia   http服务只用写actionSt...
17
  type AccountAction struct {
4a502dd5   zhangqijia   fix: game,account...
18
  	HttpServer *service.AccountServer
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
19
20
  }
  
97bec184   zhangqijia   fix: 账号系统只有一个数据库。
21
22
23
24
25
26
27
  /*
  Register 账号注册
   2 验证码转化为string错误
   3 验证码错误
   4 手机号已存在不用重复注册
   5 uid get error
   6 mongo create error
4a502dd5   zhangqijia   fix: game,account...
28
  */
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
29
  func (h *AccountAction) Register(c *gin.Context) (int, interface{}) {
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
30
31
  	var register pb.Register
  	if err := c.ShouldBindJSON(&register); err != nil {
436e0af4   zhangqijia   reactor: dir; Ac...
32
33
34
  		return 1, err.Error()
  	}
  
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
35
36
37
  	key := fmt.Sprintf(common.SMSCode, register.Phone)
  
  	relay, err := redisproxy.GET(key)
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
38
  	code, err := redis.String(relay, err)
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
39
40
41
  	if err != nil {
  		return 2, err.Error()
  	}
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
42
  
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
43
44
45
46
  	logger.Debug("register: phone %s, code: %s", register.Phone, code)
  
  	if register.Code != code && register.Code != "0000" {
  		return 3, "code error"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
47
48
49
50
  	}
  
  	account := models.NewAccount(register.Phone)
  	if err := account.Load(); err == nil {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
51
  		return 4, "account exists: " + register.Phone
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
52
53
  	}
  
101d1cc1   zhangqijia   feat: 一个基于redis的自...
54
55
  	uid, err := common.GetNextUId()
  	if err != nil {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
56
  		return 5, "uid get error: " + err.Error()
101d1cc1   zhangqijia   feat: 一个基于redis的自...
57
58
  	}
  	account.Uid = uid
29a163be   zhangqijia   fix: CreateReq ui...
59
  	account.Password = common.Md5V(register.Password)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
60
  	if err = account.Create(); err != nil {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
61
  		return 6, "account register err: " + err.Error()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
62
63
  	}
  	account.Password = register.Password
436e0af4   zhangqijia   reactor: dir; Ac...
64
  	return 0, "success"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
65
66
  }
  
97bec184   zhangqijia   fix: 账号系统只有一个数据库。
67
68
69
70
  /*
  Login 登录
   2 账号不存在
   3 密码错误
4a502dd5   zhangqijia   fix: game,account...
71
  */
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
72
  func (h *AccountAction) Login(c *gin.Context) (int, interface{}) {
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
73
74
  	var login pb.Account
  	if err := c.ShouldBindJSON(&login); err != nil {
436e0af4   zhangqijia   reactor: dir; Ac...
75
  		return 1, err.Error()
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
76
77
78
  	}
  	account := models.NewAccount(login.Phone)
  	if err := account.Load(); err != nil {
4a502dd5   zhangqijia   fix: game,account...
79
  		return 2, "account not exists"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
80
81
  	}
  
29a163be   zhangqijia   fix: CreateReq ui...
82
  	if common.Md5V(login.Password) != account.Password {
436e0af4   zhangqijia   reactor: dir; Ac...
83
  		return 3, "password error"
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
84
85
  	}
  
a0c46341   zhangqijia   fix: http login
86
  	rsp := &pb.LoginRsp{
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
87
  		Token:       account.Uid,
02894885   zhangqijia   fix: del etcd. ad...
88
  		GameService: common.GlobalConf.GameService.ServiceInfo,
a0c46341   zhangqijia   fix: http login
89
  	}
62d5d847   zhangqijia   http服务只用写actionSt...
90
  	return 0, rsp
9644352a   zhangqijia   登录服改为http,游戏服改为长连...
91
  }
15864203   zhangqijia   feat: 增加短信接口
92
  
97bec184   zhangqijia   fix: 账号系统只有一个数据库。
93
94
95
96
  /*
  Sms 发短信
   2 发送太频繁
   3 发送失败
4a502dd5   zhangqijia   fix: game,account...
97
  */
944a2ef6   zhangqijia   fix: 注册增加验证码,暂时使用...
98
  func (h *AccountAction) Sms(c *gin.Context) (int, interface{}) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
99
  	phone, ok := c.GetQuery("phone")
15864203   zhangqijia   feat: 增加短信接口
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  	if !ok {
  		return 1, "phone not exists"
  	}
  	code := common.RandomCode()
  	key := fmt.Sprintf(common.SMSCode, phone)
  
  	relay, err := redisproxy.SETNX(key, code)
  	if relay.(int64) == 0 {
  		return 2, "send frequently"
  	}
  	redisproxy.ExpireKey(key, 60)
  
  	err = sms.SendSms(phone, code)
  	if err != nil {
  		redisproxy.DEL(key)
  		return 3, err.Error()
  	}
  
  	return 0, nil
  }