add hiwork单点登录

This commit is contained in:
lijiarao
2024-03-01 14:32:49 +08:00
parent 2c3448acb6
commit 0159eb2b48
4 changed files with 148 additions and 0 deletions
@@ -0,0 +1,31 @@
package com.jero.modules.docking.hiwork.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.hiwork.service.impl.HiworkService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author liJiaRao
* @date 2024-03-01 14:01
*/
@RestController
@RequestMapping("/hiwork")
@Slf4j
public class HiworkLoginController {
@Resource
private HiworkService hiworkService;
@ApiOperation("hiwork单点登录")
@PostMapping("/login")
public Result<JSONObject> login(@RequestBody JSONObject jsonObject){
return hiworkService.login(jsonObject);
}
}
@@ -0,0 +1,72 @@
package com.jero.modules.docking.hiwork.entity;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author liJiaRao
* @date 2024-03-01 14:26
*/
@NoArgsConstructor
@Data
public class HiworkUserInfo {
/**
* errcode
*/
@JSONField(name = "errcode")
private Integer errcode;
/**
* result
*/
@JSONField(name = "result")
private ResultDTO result;
/**
* errmsg
*/
@JSONField(name = "errmsg")
private String errmsg;
/**
* ResultDTO
*/
@NoArgsConstructor
@Data
public static class ResultDTO {
/**
* associatedUnionid
*/
@JSONField(name = "associated_unionid")
private String associatedUnionid;
/**
* unionid
*/
@JSONField(name = "unionid")
private String unionid;
/**
* deviceId
*/
@JSONField(name = "device_id")
private String deviceId;
/**
* sysLevel
*/
@JSONField(name = "sys_level")
private Integer sysLevel;
/**
* name
*/
@JSONField(name = "name")
private String name;
/**
* sys
*/
@JSONField(name = "sys")
private Boolean sys;
/**
* userid
*/
@JSONField(name = "userid")
private String userid;
}
}
@@ -0,0 +1,42 @@
package com.jero.modules.docking.hiwork.service.impl;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.hiwork.entity.HiworkUserInfo;
import com.jero.modules.system.service.ILoginService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @author liJiaRao
* @date 2024-03-01 14:02
*/
@Service
public class HiworkService {
@Resource
private ILoginService loginService;
@Value("${hiwork.appkey}")
private String appkey;
@Value("${hiwork.appsecret}")
private String appsecret;
public Result<JSONObject> login(JSONObject jsonObject) {
//根据appkey和appsecret获取accessToken
String body = HttpRequest.get("https://oapi.dingtalk.com/gettoken?appkey=" + appkey + "&appsecret=" + appsecret)
.execute().body();
JSONObject responseJson = JSONObject.parseObject(body);
String accessToken = responseJson.getString("access_token");
//根据accessToken和前端传过来的jsonObject获得用户信息
String body1 = HttpRequest.post("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo?access_token=" + accessToken)
//jsonObject中有code
.body(jsonObject.toJSONString())
.execute().body();
HiworkUserInfo hiworkUserInfo = JSONObject.parseObject(body1, HiworkUserInfo.class);
String userid = hiworkUserInfo.getResult().getUserid();
return loginService.loginByUserName(userid);
}
}