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 LoalloutServer struct { } func (l LoalloutServer) CheckPhone(phone string) (userMd5 string) { api := strings.Join([]string{global.Project.LoalloutUrl, "v1/Auth/CheckPhone"}, "/") resp, err := http.PostForm(api, url.Values{ "phone": {phone}, }) 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 } err = json.Unmarshal(body, &responseBase) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } const ( success = 0 notRegister = 1012 ban = 1007 ) switch responseBase.Code { case success: { var responseAll struct { Code int Memo string Md5 string } err = json.Unmarshal(body, &responseAll) if err != nil { err = fmt.Errorf("response:[%s], err:\n%w", string(body), err) panic(err) } userMd5 = responseAll.Md5 } case notRegister: panic(errors.ErrUserNotExists) case ban: panic(errors.ErrUserBan) default: panic(errors.ErrHrSensorsTimeOut) } return } //查询用户身体数据 func (l LoalloutServer) VipUserQueryByUserMd5(serviceKey string, userMd5 string) (rtnCode int, rtn *model.UserBodyInfo) { api := strings.Join([]string{global.Project.LoalloutUrl, "v1/User/VipUserQueryByUserMd5"}, "/") resp, err := http.PostForm(api, url.Values{ "serviceKey": {serviceKey}, "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 Status int Info 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.Info, "UserName"), Birthday: utils.MapToTime(responseBase.Info, "Birthday"), Height: utils.MapToInt32(responseBase.Info, "Height"), Weight: utils.MapToInt32(responseBase.Info, "Weight"), Sex: utils.MapToInt32(responseBase.Info, "Sex"), StaticHr: utils.MapToInt32(responseBase.Info, "StaticHr"), UserMd5: utils.MapToString(responseBase.Info, "UserMd5"), Head: utils.MapToString(responseBase.Info, "Head"), } } return } //func MapToString(v interface{}, key string) (str string) { // f, ok := v.(map[string]interface{})[key].(string) // if !ok { // println(errors.ErrJsonToMap) // } // str = f // return //}