package third import ( "encoding/json" "errors" "eta_gn/eta_api/utils" "fmt" "io" "net/http" ) type SciUserBaseInfoResp struct { Code int `json:"code"` Msg string `json:"msg"` //Info DeptItemResp `json:"info"` } type UserInfoResp struct { SciUserBaseInfoResp Info UserBaseInfResp `json:"info"` } type UserBaseInfResp struct { Sub string `json:"sub"` EmailVerified bool `json:"email_verified"` UserName string `json:"user_name"` Sex string `json:"sex"` Phonenumber interface{} `json:"phonenumber"` DeptName string `json:"dept_name"` Remark string `json:"remark"` PreferredUsername string `json:"preferred_username"` GivenName string `json:"given_name"` PostName string `json:"post_name"` NickName string `json:"nick_name"` PostCode string `json:"post_code"` Name string `json:"name"` DeptId string `json:"dept_id"` FamilyName string `json:"family_name"` Email interface{} `json:"email"` Status string `json:"status"` Resource []MenuItemResp `json:"resource"` } type MenuItemResp struct { PATH *string `json:"PATH"` ButtonCode *string `json:"button_code"` MenuType string `json:"menu_type"` UserName string `json:"user_name"` Icon *string `json:"icon"` IsLevel int `json:"is_level"` VISIBLE string `json:"VISIBLE"` RoleName string `json:"role_name"` Component *string `json:"component"` RoleId int `json:"role_id"` LevelPath *string `json:"level_path"` NickName string `json:"nick_name"` MenuName string `json:"menu_name"` OrderNum int `json:"order_num"` Api *string `json:"api"` MenuId int `json:"menu_id"` ParentId int `json:"parent_id"` NameEn *string `json:"name_en"` } // GetUserInfo // @Description: 获取用户信息 // @author: Roc // @datetime 2025-06-09 17:01:43 // @param token string // @return resp *UserInfoResp // @return err error func GetUserInfo(token string) (resp *UserInfoResp, err error) { urlPath := `index/getuserinfo?token=` + token result, err := HttpUserGet(urlPath) if err != nil { return } // 解析响应结果 err = json.Unmarshal(result, &resp) if err != nil { return } return } type TopMenuResp struct { SciUserBaseInfoResp Info []TopMenuItemResp `json:"info"` } type TopMenuItemResp struct { Path string `json:"path" description:"跳转地址"` MenuName string `json:"menu_name"` OrderNum int `json:"order_num"` MenuId int `json:"menu_id"` IsFrame int `json:"is_frame" description:"1左边,0右边"` } type T struct { Code int `json:"code"` Msg string `json:"msg"` Info []struct { Path string `json:"path"` MenuName string `json:"menu_name"` OrderNum int `json:"order_num"` MenuId int `json:"menu_id"` IsFrame int `json:"is_frame"` } `json:"info"` } // GetTopMenuInfo // @Description: 获取用户信息 // @author: Roc // @datetime 2025-06-09 17:01:43 // @param token string // @return resp *UserInfoResp // @return err error func GetTopMenuInfo(token string) (resp *TopMenuResp, err error) { urlPath := `index/getRootMenu?token=` + token result, err := HttpUserGet(urlPath) if err != nil { return } // 解析响应结果 err = json.Unmarshal(result, &resp) if err != nil { return } return } // HttpUserGet // @Description: get请求 // @author: Roc // @datetime 2025-06-05 14:40:36 // @param urlPath string // @return []byte // @return error func HttpUserGet(urlPath string) ([]byte, error) { if utils.GnSciUserApiUrl == `` { return nil, errors.New("用户中心同步接口地址为空") } // 请求地址 getUrl := utils.GnSciUserApiUrl + urlPath client := &http.Client{} req, err := http.NewRequest("GET", getUrl, nil) if err != nil { return nil, err } resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() result, err := io.ReadAll(resp.Body) if err != nil { return nil, err } // 日志记录 utils.FileLog.Debug("用户中心平台:地址:" + getUrl + ";\n返回参数:" + string(result)) // 解析返回参数,判断是否是json if !json.Valid(result) { err = errors.New("返回参数不是json格式") } var respItem SciUserBaseInfoResp err = json.Unmarshal(result, &respItem) if err != nil { return nil, err } if respItem.Code != 0 { err = fmt.Errorf("HttpUserGet请求失败, Err: %d, ErrMsg: %s ", respItem.Code, respItem.Msg) return nil, err } return result, err }