qmbz.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package game
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. "ordonnance/common/auth"
  8. "ordonnance/common/db"
  9. "ordonnance/common/util"
  10. "ordonnance/logger"
  11. "ordonnance/server/dao"
  12. "ordonnance/server/model"
  13. "ordonnance/server/response"
  14. "strconv"
  15. "strings"
  16. "time"
  17. "github.com/gin-gonic/gin"
  18. )
  19. // 注册
  20. func Register(c *gin.Context) {
  21. username, _ := c.GetPostForm("username")
  22. password, _ := c.GetPostForm("password")
  23. if len(password) != 32 || len(username) < 3 {
  24. response.ReturnErrMsg(response.PASSWD_ERR, c)
  25. return
  26. }
  27. if _, err := dao.GetUserByName(username); err == nil {
  28. logger.Info("user exsit", err.Error())
  29. response.ReturnErrMsg(response.PLAYER_EXIST, c)
  30. return
  31. }
  32. user := model.User{
  33. Username: username,
  34. Nickname: username,
  35. Password: password,
  36. }
  37. if err := db.GDB.Create(&user).Error; err != nil {
  38. logger.Info("create err", err.Error())
  39. response.ReturnErrMsg(response.PLAYER_EXIST, c)
  40. return
  41. }
  42. curtime := int(time.Now().UnixNano() / 1000000)
  43. data := fmt.Sprintf("%d|%d|-1", user.UserId, curtime)
  44. msg := response.NewMessage(response.OK)
  45. msg.Token = auth.AesEncrypt(data)
  46. msg.Uid = user.UserId
  47. c.JSON(200, msg)
  48. }
  49. // 登入
  50. func Login(c *gin.Context) {
  51. username, _ := c.GetPostForm("username")
  52. password, _ := c.GetPostForm("password")
  53. if len(password) != 32 || len(username) < 3 {
  54. response.ReturnErrMsg(response.PASSWD_ERR, c)
  55. return
  56. }
  57. user, err := dao.GetUserByName(username)
  58. if err != nil {
  59. logger.Info("player null", err.Error())
  60. response.ReturnErrMsg(response.PLAYER_NOT_EXIST, c)
  61. return
  62. }
  63. curtime := int(time.Now().UnixNano() / 1000000)
  64. if user.Password != password {
  65. logger.Info("passwd err ", user.Password, password)
  66. response.ReturnErrMsg(response.PASSWD_ERR, c)
  67. return
  68. }
  69. data := strconv.Itoa(user.UserId) + "|" + strconv.Itoa(curtime) + "|-1"
  70. token := auth.AesEncrypt(data)
  71. msg := response.NewMessage(response.OK)
  72. msg.Token = token
  73. msg.Uid = user.UserId
  74. if v, err := dao.GetValidBulletin(); err == nil {
  75. msg.Data = v
  76. }
  77. c.JSON(200, msg)
  78. }
  79. // 获取服务器
  80. func ServerList(c *gin.Context) {
  81. token := c.PostForm("token")
  82. tokenData, err := util.ParseToken(token)
  83. if err != nil {
  84. logger.Info("errtoken err ", err.Error())
  85. response.ReturnErrMsg(response.ERR_PARM, c)
  86. return
  87. }
  88. version := c.DefaultPostForm("version", "A")
  89. userID := tokenData.UserId
  90. historyList, err := dao.GetIUserServerByUid(userID, version)
  91. if err != nil {
  92. logger.Info("historyList err", err.Error())
  93. historyList = []model.LUserServer{}
  94. }
  95. serverList, err := dao.GetAllServer(version)
  96. if err != nil {
  97. logger.Info("serverList err", err.Error())
  98. serverList = []model.TServer{}
  99. }
  100. retData := map[string]interface{}{
  101. "historyList": historyList,
  102. "serverList": serverList,
  103. }
  104. c.JSON(200, retData)
  105. }
  106. func RecordAction(c *gin.Context) {
  107. appId := c.PostForm("appId")
  108. appSecret := c.PostForm("appSecret")
  109. data := c.PostForm("data")
  110. body, _ := ioutil.ReadAll(c.Request.Body)
  111. // 验证参数
  112. logger.Info("log", appId, appSecret, data, string(body))
  113. c.JSON(http.StatusOK, response.NewMessage(response.OK))
  114. }
  115. func GetGate(c *gin.Context) {
  116. tokenData, err := util.ParseToken(c.PostForm("token"))
  117. if err != nil {
  118. logger.Info("errtoken err ", err.Error())
  119. response.ReturnErrMsg(response.ERR_PARM, c)
  120. return
  121. }
  122. version := c.DefaultPostForm("version", "B")
  123. version = strings.TrimSpace(version)
  124. serverID := c.PostForm("serverId")
  125. data := fmt.Sprintf("%v|%v|%v|%v", tokenData.UserId, time.Now().UnixNano()/1000000, 0, 2)
  126. token := auth.AesEncrypt(data)
  127. rowServer, _ := dao.GetServerInfo(serverID)
  128. retData := model.Server{
  129. Server: map[string]string{"0": rowServer.Name},
  130. Net: model.ServerNet{},
  131. GamePlatform: rowServer.GamePlatform,
  132. Path: model.ServerPath{},
  133. IsDebugVersions: 1 == rowServer.IsDebugVersions,
  134. Tpl: model.ServerTpl{},
  135. Opendns: []string{},
  136. Token: token,
  137. RealAuth: 2,
  138. }
  139. if err := json.Unmarshal([]byte(rowServer.Net), &retData.Net); err != nil {
  140. logger.Info("parse net", err.Error(), rowServer.Net)
  141. }
  142. json.Unmarshal([]byte(rowServer.Tpl), &retData.Tpl)
  143. json.Unmarshal([]byte(rowServer.Opendns), &retData.Opendns)
  144. msg := response.NewMessage(response.OK)
  145. // tmpData, _ := util.ParseToken(token)
  146. msg.Data = retData
  147. c.JSON(200, msg)
  148. }