|
@@ -0,0 +1,136 @@
|
|
|
+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
|
|
|
+}
|
|
|
+
|
|
|
+// 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
|
|
|
+}
|