user_binding.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package gatesink
  2. import (
  3. "bet24.com/log"
  4. "bet24.com/public"
  5. "bet24.com/servers/common"
  6. "bet24.com/servers/fishhall/protocol"
  7. "bet24.com/servers/insecureframe/gate"
  8. item "bet24.com/servers/micros/item_inventory/proto"
  9. "bet24.com/servers/transaction"
  10. "encoding/json"
  11. "fmt"
  12. "strings"
  13. )
  14. func (this *user) getBindingInfo(msg string) {
  15. obj := transaction.NewTransBindingInfo()
  16. obj.In.UserID = this.getUserId()
  17. obj.DoAction()
  18. buf, _ := json.Marshal(obj.Out)
  19. this.WriteMsg(msg, string(buf))
  20. return
  21. }
  22. func (this *user) bindFacebook(msg, data string) {
  23. var req protocol.BindFacebook_req
  24. if err := json.Unmarshal([]byte(data), &req); err != nil {
  25. retData := fmt.Sprintf("%s unmarshal fail %v", msg, err)
  26. log.Release(retData)
  27. this.WriteMsg(msg, retData)
  28. return
  29. }
  30. obj := transaction.NewTransBindFacebook()
  31. // 删除头尾空格
  32. req.NickName = strings.TrimSpace(req.NickName)
  33. /*
  34. // 昵称长度:[4,30]
  35. nickNameRegexp := regexp.MustCompile(`^([A-Za-z0-9]+\s*){4,32}$`)
  36. // 昵称非法
  37. if NickNames := nickNameRegexp.FindAllString(req.NickName, -1); len(NickNames) <= 0 {
  38. log.Debug("bindFacebook NickName Illegality nickName=%s NickNames=%v", req.NickName, NickNames)
  39. obj.Out.RetCode = -1
  40. buf, err := json.Marshal(obj.Out)
  41. if err != nil {
  42. log.Release("bindFacebook Illegality marshal fail %v", err)
  43. this.WriteMsg(msg, fmt.Sprintf("bindFacebook Illegality marshal fail %v", err))
  44. return
  45. }
  46. this.WriteMsg(msg, string(buf))
  47. return
  48. }
  49. */
  50. u := gate.GetUserInfo(this.UserIndex)
  51. obj.In.UserID = u.GetUserId()
  52. obj.In.OpenID = req.OpenId
  53. obj.In.NickName = req.NickName
  54. obj.In.FaceUrl = req.FaceUrl
  55. obj.DoAction()
  56. if obj.Out.RetCode == 1 {
  57. u.SetUserNickName(req.NickName)
  58. u.SetUserFaceId(0)
  59. u.SetUserFaceUrl(req.FaceUrl)
  60. item.AddItems(u.GetUserId(), obj.Out.Items, "BindFacebook", common.LOGTYPE_BIND_FACEBOOK)
  61. }
  62. buf, _ := json.Marshal(obj.Out)
  63. // log.Debug(string(buf))
  64. this.WriteMsg(msg, string(buf))
  65. return
  66. }
  67. func (this *user) bindPhone(msg, data string) {
  68. var req protocol.BindPhone_req
  69. if err := json.Unmarshal([]byte(data), &req); err != nil {
  70. retData := fmt.Sprintf("%s unmarshal fail %v", msg, err)
  71. log.Release(retData)
  72. this.WriteMsg(msg, retData)
  73. return
  74. }
  75. // user_tel中有短信验证码生成及验证
  76. // 去掉空格
  77. req.PhoneNumber = strings.ReplaceAll(req.PhoneNumber, " ", "")
  78. obj := transaction.NewTransBindTel()
  79. obj.In.UserID = this.getUserId()
  80. obj.In.SMSCode = req.SmsCode
  81. // 校验手机号
  82. validTel, err := public.CheckTelValid(req.PhoneNumber)
  83. if err != nil {
  84. log.Debug("bindPhone tel valid err:%v", err)
  85. obj.Out.RetCode = -3
  86. buf, err := json.Marshal(obj.Out)
  87. if err != nil {
  88. log.Release("bindPhone tel valid json marshal fail %v", err)
  89. return
  90. }
  91. this.WriteMsg(msg, string(buf))
  92. return
  93. }
  94. obj.In.Tel = validTel
  95. // 校验短信验证码
  96. isSuccess, _, _ := this.checkCode(obj.In.Tel, obj.In.SMSCode, SMSCODE_TYPE_Bind)
  97. if !isSuccess {
  98. log.Debug("bindPhone smscode is failed")
  99. obj.Out.RetCode = -4
  100. buf, err := json.Marshal(obj.Out)
  101. if err != nil {
  102. log.Release("bindPhone smscode is invalid json marshal fail %v", err)
  103. return
  104. }
  105. this.WriteMsg(msg, string(buf))
  106. return
  107. }
  108. // 数据库绑定
  109. obj.DoAction()
  110. // 绑定成功,给奖励
  111. if obj.Out.RetCode == 1 {
  112. obj.Out.Items = append(obj.Out.Items, item.ItemPack{
  113. ItemId: 1,
  114. Count: 2000,
  115. })
  116. item.AddItems(this.getUserId(), obj.Out.Items, "BindTel", common.LOGTYPE_BIND_TEL)
  117. }
  118. buf, err := json.Marshal(obj.Out)
  119. if err != nil {
  120. log.Error("bindPhone UserID=%d obj.Out=%+v err=%v", this.getUserId(), obj.Out, err)
  121. }
  122. this.WriteMsg(msg, string(buf))
  123. return
  124. }