package http import ( "encoding/json" "fmt" "io/ioutil" "net/http" "net/url" "strings" "video_course/errors" "video_course/global" "video_course/model" "video_course/utils" ) type HeartRateServer struct { } //查询用户身体数据 func (h HeartRateServer) VipUserQueryByUserMd5(userMd5 string) (rtnCode int, rtn *model.UserBodyInfo) { api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/GetUserBodyInfoByUserMd5"}, "/") resp, err := http.PostForm(api, url.Values{ "userMd5": {userMd5}, }) if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } var responseBase struct { Code int Memo string Rs map[string]interface{} } err = json.Unmarshal(body, &responseBase) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } rtnCode = responseBase.Code if rtnCode == 0 { rtn = &model.UserBodyInfo{ UserName: utils.MapToString(responseBase.Rs, "Name"), Birthday: utils.MapToTime(responseBase.Rs, "Birthday"), Height: utils.MapToInt32(responseBase.Rs, "Height"), Weight: utils.MapToInt32(responseBase.Rs, "Weight"), Sex: utils.MapToInt32(responseBase.Rs, "Sex"), StaticHr: utils.MapToInt32(responseBase.Rs, "StaticHr"), UserMd5: utils.MapToString(responseBase.Rs, "UserMd5"), Head: utils.MapToString(responseBase.Rs, "Head"), } } return } //线上心率带更新 func (h HeartRateServer) HrSensorsUpdate(userMd5 string, sn string) (hrId int, err error) { api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/HrSensorsUpdate"}, "/") resp, err := http.PostForm(api, url.Values{ "userMd5": {userMd5}, "sn": {sn}, }) if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } var responseBase struct { Code int Memo string HrId int } err = json.Unmarshal(body, &responseBase) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } rtnCode := responseBase.Code hrId = responseBase.HrId if rtnCode != 0 { err = errors.ErrHrSensorsUpdate } return } //查询用户是否正在上课接口 func (h HeartRateServer) GetDuInfoAndUserInfoByUserMd5(userMd5 string) (inClass int, duInfo *model.DuInfo, userInfo *model.UserBodyInfo, err error) { api := strings.Join([]string{global.Project.HeartrateUrl, "v1/OutService/GetDuInfoAndUserInfoByUserMd5"}, "/") resp, err := http.PostForm(api, url.Values{ "userMd5": {userMd5}, }) if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } var responseBase struct { Code int Memo string DuInfo map[string]interface{} UserInfo map[string]interface{} } err = json.Unmarshal(body, &responseBase) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } rtnCode := responseBase.Code if rtnCode == 0 { duInfo = &model.DuInfo{ DpName: utils.MapToString(responseBase.DuInfo, "DpName"), DuId: utils.MapToInt32(responseBase.DuInfo, "DuId"), } userInfo = &model.UserBodyInfo{ UserName: utils.MapToString(responseBase.UserInfo, "Name"), Birthday: utils.MapToTime(responseBase.UserInfo, "Birthday"), Height: utils.MapToInt32(responseBase.UserInfo, "Height"), Weight: utils.MapToInt32(responseBase.UserInfo, "Weight"), Sex: utils.MapToInt32(responseBase.UserInfo, "Sex"), StaticHr: utils.MapToInt32(responseBase.UserInfo, "StaticHr"), UserMd5: utils.MapToString(responseBase.UserInfo, "UserMd5"), Head: utils.MapToString(responseBase.UserInfo, "Head"), } } else { err = errors.ErrGetDuInfo } return }