heartrate_server.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package http
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. "net/url"
  8. "strings"
  9. "video_course/errors"
  10. "video_course/global"
  11. "video_course/model"
  12. "video_course/utils"
  13. )
  14. type HeartRateServer struct {
  15. }
  16. //查询用户身体数据
  17. func (h HeartRateServer) VipUserQueryByUserMd5(userMd5 string) (rtnCode int, rtn *model.UserBodyInfo) {
  18. api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/GetUserBodyInfoByUserMd5"}, "/")
  19. resp, err := http.PostForm(api, url.Values{
  20. "userMd5": {userMd5},
  21. })
  22. if err != nil {
  23. panic(err)
  24. }
  25. defer resp.Body.Close()
  26. body, err := ioutil.ReadAll(resp.Body)
  27. if err != nil {
  28. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  29. panic(err)
  30. }
  31. var responseBase struct {
  32. Code int
  33. Memo string
  34. Rs map[string]interface{}
  35. }
  36. err = json.Unmarshal(body, &responseBase)
  37. if err != nil {
  38. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  39. panic(err)
  40. }
  41. rtnCode = responseBase.Code
  42. if rtnCode == 0 {
  43. rtn = &model.UserBodyInfo{
  44. UserName: utils.MapToString(responseBase.Rs, "Name"),
  45. Birthday: utils.MapToTime(responseBase.Rs, "Birthday"),
  46. Height: utils.MapToInt32(responseBase.Rs, "Height"),
  47. Weight: utils.MapToInt32(responseBase.Rs, "Weight"),
  48. Sex: utils.MapToInt32(responseBase.Rs, "Sex"),
  49. StaticHr: utils.MapToInt32(responseBase.Rs, "StaticHr"),
  50. UserMd5: utils.MapToString(responseBase.Rs, "UserMd5"),
  51. Head: utils.MapToString(responseBase.Rs, "Head"),
  52. }
  53. }
  54. return
  55. }
  56. //线上心率带更新
  57. func (h HeartRateServer) HrSensorsUpdate(userMd5 string, sn string) (hrId int, err error) {
  58. api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/HrSensorsUpdate"}, "/")
  59. resp, err := http.PostForm(api, url.Values{
  60. "userMd5": {userMd5},
  61. "sn": {sn},
  62. })
  63. if err != nil {
  64. panic(err)
  65. }
  66. defer resp.Body.Close()
  67. body, err := ioutil.ReadAll(resp.Body)
  68. if err != nil {
  69. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  70. panic(err)
  71. }
  72. var responseBase struct {
  73. Code int
  74. Memo string
  75. HrId int
  76. }
  77. err = json.Unmarshal(body, &responseBase)
  78. if err != nil {
  79. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  80. panic(err)
  81. }
  82. rtnCode := responseBase.Code
  83. hrId = responseBase.HrId
  84. if rtnCode != 0 {
  85. err = errors.ErrHrSensorsUpdate
  86. }
  87. return
  88. }
  89. //查询用户是否正在上课接口
  90. func (h HeartRateServer) GetDuInfoAndUserInfoByUserMd5(userMd5 string) (inClass int, duInfo *model.DuInfo, userInfo *model.UserBodyInfo, err error) {
  91. api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/GetDuInfoAndUserInfoByUserMd5"}, "/")
  92. resp, err := http.PostForm(api, url.Values{
  93. "userMd5": {userMd5},
  94. })
  95. if err != nil {
  96. panic(err)
  97. }
  98. defer resp.Body.Close()
  99. body, err := ioutil.ReadAll(resp.Body)
  100. if err != nil {
  101. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  102. panic(err)
  103. }
  104. var responseBase struct {
  105. Code int
  106. Memo string
  107. InClass int
  108. DuInfo map[string]interface{}
  109. UserInfo map[string]interface{}
  110. }
  111. err = json.Unmarshal(body, &responseBase)
  112. if err != nil {
  113. err = fmt.Errorf("response:[%s], err:\n%w", string(body), err)
  114. panic(err)
  115. }
  116. rtnCode := responseBase.Code
  117. if rtnCode == 0 {
  118. inClass = responseBase.InClass
  119. duInfo = &model.DuInfo{
  120. DpName: utils.MapToString(responseBase.DuInfo, "DpName"),
  121. DuId: utils.MapToInt32(responseBase.DuInfo, "DuId"),
  122. }
  123. userInfo = &model.UserBodyInfo{
  124. UserName: utils.MapToString(responseBase.UserInfo, "Name"),
  125. Birthday: utils.MapToTime(responseBase.UserInfo, "Birthday"),
  126. Height: utils.MapToInt32(responseBase.UserInfo, "Height"),
  127. Weight: utils.MapToInt32(responseBase.UserInfo, "Weight"),
  128. Sex: utils.MapToInt32(responseBase.UserInfo, "Sex"),
  129. StaticHr: utils.MapToInt32(responseBase.UserInfo, "StaticHr"),
  130. UserMd5: utils.MapToString(responseBase.UserInfo, "UserMd5"),
  131. Head: utils.MapToString(responseBase.UserInfo, "Head"),
  132. }
  133. } else {
  134. err = errors.ErrGetDuInfo
  135. }
  136. return
  137. }