Roc 5 months ago
parent
commit
138d7fc9d8
7 changed files with 136 additions and 23 deletions
  1. 32 0
      controller/gn/auth.go
  2. 2 1
      controller/gn/user.go
  3. 10 0
      logic/gn/auth.go
  4. 22 22
      models/gn/user.go
  5. 6 0
      models/request/gn/auth.go
  6. 1 0
      routers/gn.go
  7. 63 0
      services/gn/auth.go

+ 32 - 0
controller/gn/auth.go

@@ -37,3 +37,35 @@ func (gc *GuoNengController) GetToken(c *gin.Context) {
 	}
 	}
 	resp.OkData("获取成功", result, c)
 	resp.OkData("获取成功", result, c)
 }
 }
+
+// GetUserInfo
+// @Description: 根据sci的token获取用户信息
+// @author: Roc
+// @receiver gc
+// @datetime 2024-10-30 10:11:51
+// @param c *gin.Context
+func (gc *GuoNengController) GetUserInfo(c *gin.Context) {
+	var req gnRequest.GetUserInfoReq
+	if e := c.Bind(&req); e != nil {
+		err, ok := e.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+e.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", err.Translate(global.Trans), c)
+		return
+	}
+	if req.Token == "" {
+		resp.FailMsg("请传入token", "请传入token", c)
+		return
+	}
+
+	// 根据token在卓创这边获取用户信息
+	result, err, errMsg := gn.GetUserInfoByToken(req.Token)
+	if err != nil {
+		fmt.Printf("获取失败, Err: %v, ErrMsg: %s", err, errMsg)
+		resp.FailData(errMsg, err.Error(), c)
+		return
+	}
+	resp.OkData("获取成功", result, c)
+}

+ 2 - 1
controller/gn/user.go

@@ -137,7 +137,8 @@ func (gc *GuoNengController) DeleteAccount(c *gin.Context) {
 		return
 		return
 	}
 	}
 
 
-	errMsg, e := gnLogic.DeleteAccount(req.UserId)
+	//errMsg, e := gnLogic.DeleteAccount(req.UserId)
+	errMsg, e := gnLogic.SuspendAccount(req.UserId)
 	if e != nil {
 	if e != nil {
 		resp.Gn4AResultData(resp.FAIL_CODE, errMsg, fmt.Sprintf("DeleteAccount: %v", e), c)
 		resp.Gn4AResultData(resp.FAIL_CODE, errMsg, fmt.Sprintf("DeleteAccount: %v", e), c)
 		return
 		return

+ 10 - 0
logic/gn/auth.go

@@ -66,3 +66,13 @@ func LoginEta(code string) (resp response.LoginResp, err error, errMsg string) {
 	err = eta.AddSysThirdSession(thirdSession)
 	err = eta.AddSysThirdSession(thirdSession)
 	return
 	return
 }
 }
+
+func GetUserInfoByToken(token string) (res *gn.UserBaseInfoResp, err error, errMsg string) {
+	// 获取用户信息
+	res, e := gn.GetUserInfoBySci(token)
+	if e != nil {
+		err = fmt.Errorf("获取用户基础信息失败, Err: %v,  Token: %s", e, token)
+		return
+	}
+	return
+}

+ 22 - 22
models/gn/user.go

@@ -71,26 +71,26 @@ const (
 
 
 // UserEntity 4A用户字段
 // UserEntity 4A用户字段
 type UserEntity struct {
 type UserEntity struct {
-	UserId         *string                 `json:"userId" description:"登录账号标识[必填], string:256"`
-	Password       *string                 `json:"password" description:"密码(预留,4A平台不提供), string:256"`
-	OrgCode        *string                 `json:"orgCode" description:"对应MDM组织机构-单位的编号(预留,4A平台不提供), string:8"`
-	OrgName        *string                 `json:"orgName" description:"对应员工直接所属的MDM组织机构-单位名称(预留,4A平台不提供), string:40"`
-	DepartmentNum  *string                 `json:"departmentNum" description:"对应MDM组织机构-部门的编号(预留,4A平台不提供), string:8"`
-	DepartmentName *string                 `json:"departmentName" description:"对应员工直接所属的MDM组织机构-部门名称(预留,4A平台不提供), string:40"`
-	FirstName      *string                 `json:"firstName" description:"身份证中的名[必填], string:150"`
-	LastName       *string                 `json:"lastName" description:"身份证中的姓[必填], string:150"`
-	Sex            *string                 `json:"sex" description:"员工性别(预留,4A平台不提供), string:10"`
-	UserType       *string                 `json:"userType" description:"用户类型, 枚举值(预留,4A平台不提供), string:256"`
-	Mail           *string                 `json:"mail" description:"员工邮箱(预留,4A平台不提供), string: 256"`
-	DisplayIndex   *int                    `json:"displayIndex" description:"排序(预留,4A平台不提供), int: 256"`
-	Mobile         *string                 `json:"mobile" description:"员工手机号, 可能存在多值(预留,4A平台不提供), string:50"`
-	Telephone      *string                 `json:"telephone" description:"员工办公室电话, 可能存在多值(预留,4A平台不提供), string:50"`
-	PID            *string                 `json:"PID" description:"身份证号(预留,4A平台不提供), string: 50"`
-	PassportId     *string                 `json:"passportID" description:"护照号(预留,4A平台不提供), string:50"`
-	UserStatus     *string                 `json:"userStatus" description:"账号状态[必填], 枚举值: Active-激活; Disabled-禁用, string:256"`
-	EmpNumber      *string                 `json:"empNumber" description:"员工在ERP系统中的唯一编号, 默认与账号标识一致(预留,4A平台不提供), string:256"`
-	Title          *string                 `json:"title" description:"员工主职位编号(预留,4A平台不提供), string:40"`
-	TitleName      *string                 `json:"titleName" description:"员工主职位名称(预留,4A平台不提供), string:256"`
-	IsByWork       *string                 `json:"isBywork" description:"是否兼职(预留,4A平台不提供), 枚举值: 全职-MDM推送的全职人员信息, string:10"`
-	Extensions     *map[string]interface{} `json:"extensions" description:"扩展字段, key-value"`
+	UserId         *string `json:"userId" description:"登录账号标识[必填], string:256"`
+	Password       *string `json:"password" description:"密码(预留,4A平台不提供), string:256"`
+	OrgCode        *string `json:"orgCode" description:"对应MDM组织机构-单位的编号(预留,4A平台不提供), string:8"`
+	OrgName        *string `json:"orgName" description:"对应员工直接所属的MDM组织机构-单位名称(预留,4A平台不提供), string:40"`
+	DepartmentNum  *string `json:"departmentNum" description:"对应MDM组织机构-部门的编号(预留,4A平台不提供), string:8"`
+	DepartmentName *string `json:"departmentName" description:"对应员工直接所属的MDM组织机构-部门名称(预留,4A平台不提供), string:40"`
+	FirstName      *string `json:"firstName" description:"身份证中的名[必填], string:150"`
+	LastName       *string `json:"lastName" description:"身份证中的姓[必填], string:150"`
+	Sex            *string `json:"sex" description:"员工性别(预留,4A平台不提供), string:10"`
+	UserType       *string `json:"userType" description:"用户类型, 枚举值(预留,4A平台不提供), string:256"`
+	Mail           *string `json:"mail" description:"员工邮箱(预留,4A平台不提供), string: 256"`
+	DisplayIndex   *int    `json:"displayIndex" description:"排序(预留,4A平台不提供), int: 256"`
+	Mobile         *string `json:"mobile" description:"员工手机号, 可能存在多值(预留,4A平台不提供), string:50"`
+	Telephone      *string `json:"telephone" description:"员工办公室电话, 可能存在多值(预留,4A平台不提供), string:50"`
+	PID            *string `json:"PID" description:"身份证号(预留,4A平台不提供), string: 50"`
+	PassportId     *string `json:"passportID" description:"护照号(预留,4A平台不提供), string:50"`
+	UserStatus     *string `json:"userStatus" description:"账号状态[必填], 枚举值: Active-激活; Disabled-禁用, string:256"`
+	EmpNumber      *string `json:"empNumber" description:"员工在ERP系统中的唯一编号, 默认与账号标识一致(预留,4A平台不提供), string:256"`
+	Title          *string `json:"title" description:"员工主职位编号(预留,4A平台不提供), string:40"`
+	TitleName      *string `json:"titleName" description:"员工主职位名称(预留,4A平台不提供), string:256"`
+	IsByWork       *string `json:"isBywork" description:"是否兼职(预留,4A平台不提供), 枚举值: 全职-MDM推送的全职人员信息, string:10"`
+	Extensions     *string `json:"extensions" description:"扩展字段, key-value"`
 }
 }

+ 6 - 0
models/request/gn/auth.go

@@ -4,3 +4,9 @@ package gn
 type GetTokenReq struct {
 type GetTokenReq struct {
 	Code string `json:"code" form:"code" description:"code编码"`
 	Code string `json:"code" form:"code" description:"code编码"`
 }
 }
+
+// GetUserInfoReq
+// @Description: 获取用户信息请求体
+type GetUserInfoReq struct {
+	Token string `json:"token" form:"token" description:"SCI的token"`
+}

+ 1 - 0
routers/gn.go

@@ -10,6 +10,7 @@ func InitGn(r *gin.RouterGroup) {
 	control := new(gn.GuoNengController)
 	control := new(gn.GuoNengController)
 	group := r.Group("gn/")
 	group := r.Group("gn/")
 	group.GET("auth/getToken", control.GetToken)
 	group.GET("auth/getToken", control.GetToken)
+	group.GET("auth/getUserInfo", control.GetUserInfo)
 	//group.GET("user/sync", control.SyncUser)
 	//group.GET("user/sync", control.SyncUser)
 
 
 	// 4A身份供应接口
 	// 4A身份供应接口

+ 63 - 0
services/gn/auth.go

@@ -180,3 +180,66 @@ func HttpPostAuth(postUrl string, params url.Values, contentTypes ...string) ([]
 	}
 	}
 	return result, err
 	return result, err
 }
 }
+
+// GetUserInfo
+// @Description: 获取用户信息
+// @author: Roc
+// @datetime 2024-01-23 15:49:38
+// @param token string
+// @return resp *UserBaseInfoResp
+// @return err error
+func GetUserInfoBySci(token string) (resp *UserBaseInfoResp, err error) {
+	token = strings.TrimSpace(token)
+	if token == "" {
+		err = fmt.Errorf("Token不可为空,Token: %s", token)
+		return
+	}
+
+	urlPath := fmt.Sprintf(`%s?token=%s`, `getuserinfo`, token)
+	result, err := HttpGetAuth(urlPath)
+	if err != nil {
+		return
+	}
+	//  解析响应结果
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Error != "" {
+		err = fmt.Errorf("UserInfo请求失败, Err: %s, ErrMsg: %s ", resp.Error, resp.ErrorDescription)
+		return
+	}
+	return
+}
+
+func HttpGetAuth(urlPath string) ([]byte, error) {
+	if global.CONFIG.Gn.AuthUserApiUrl == `` {
+		return nil, errors.New("授权平台同步接口地址为空")
+	}
+	// 请求地址
+	getUrl := global.CONFIG.Gn.AuthUserApiUrl + 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
+	}
+
+	// 日志记录
+	global.FILE_LOG.Debug("授权平台:地址:" + getUrl + ";\n返回参数:" + string(result))
+
+	//  解析返回参数,判断是否是json
+	if !json.Valid(result) {
+		err = errors.New("返回参数不是json格式")
+	}
+
+	return result, err
+}