user.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package action
  2. import (
  3. "math/rand"
  4. "bet24.com/log"
  5. "bet24.com/servers/dbengine/tables"
  6. _ "github.com/go-sql-driver/mysql"
  7. uuid "github.com/satori/go.uuid"
  8. )
  9. func Login(imei string, nickName string, faceUrl string, partnerId int, version string, ip string) *tables.User {
  10. // isExist?
  11. rows, err := CenterDB.Query(
  12. "select * from userinfo where Imei = ?", imei)
  13. if err != nil {
  14. log.Debug("action.Login failed to select user:%v", err)
  15. return nil
  16. }
  17. if !rows.Next() {
  18. return registerUser(imei, nickName, faceUrl, partnerId, version, ip)
  19. }
  20. var ret tables.User
  21. if err := rows.Scan(&ret.UserId,
  22. &ret.Imei,
  23. &ret.Password,
  24. &ret.NickName,
  25. &ret.FaceId,
  26. &ret.FaceUrl,
  27. &ret.ChangeIndex,
  28. &ret.VipLevel,
  29. &ret.VipPoint,
  30. &ret.PayAmount,
  31. &ret.Gold,
  32. &ret.Diamond,
  33. &ret.CannonId,
  34. &ret.BulletId,
  35. &ret.PartnerId,
  36. &ret.Version,
  37. ); err != nil {
  38. log.Debug("user.Login failed to scan %v", err)
  39. return nil
  40. }
  41. inertLoginLog(ret.UserId, partnerId, version, ip)
  42. return &ret
  43. }
  44. func registerUser(imei string, nickName string, faceUrl string, partnerId int, version string, ip string) *tables.User {
  45. for i := 0; i < 5; i++ {
  46. userId := genUserId()
  47. if userId == 0 {
  48. log.Debug("user.registerUser failed to genUserId")
  49. return nil
  50. }
  51. password, _ := uuid.NewV4()
  52. _, err := CenterDB.Exec(
  53. "INSERT INTO userinfo (UserId,Imei,Password,NickName,FaceUrl) VALUES (?,?,?,?,?)",
  54. userId, imei, password, nickName, faceUrl)
  55. if err != nil {
  56. log.Debug("user.registerUser %v", err)
  57. continue
  58. }
  59. break
  60. }
  61. return Login(imei, nickName, faceUrl, partnerId, version, ip)
  62. }
  63. func inertLoginLog(userId int, partnerId int, version string, ip string) {
  64. _, err := CenterDB.Exec(
  65. "INSERT INTO userlogin_log (UserId,PartnerId,Version,Ip,LoginTime) VALUES (?,?,?,?,?)",
  66. userId, partnerId, version, ip, getNow())
  67. if err != nil {
  68. log.Debug("%v", err)
  69. return
  70. }
  71. }
  72. func genUserId() int {
  73. userId := rand.Intn(90000) + 10000
  74. rows, err := CenterDB.Query(
  75. "select * from userinfo where UserId = ?", userId)
  76. if err != nil {
  77. log.Debug("user.Login failed to select user:%V", err)
  78. return 0
  79. }
  80. if !rows.Next() {
  81. return userId
  82. }
  83. return genUserId()
  84. }