diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java new file mode 100644 index 00000000..aac34a37 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/controller/HiworkLoginController.java @@ -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 login(@RequestBody JSONObject jsonObject){ + return hiworkService.login(jsonObject); + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java new file mode 100644 index 00000000..93ea75d0 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/entity/HiworkUserInfo.java @@ -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; + } +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java new file mode 100644 index 00000000..0448fc2c --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/hiwork/service/impl/HiworkService.java @@ -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 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); + } +} diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index ea16f516..d9c80a56 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -411,6 +411,9 @@ hiwork: url: https://iam-uat.sinotruk.com:7011/idp/oauth2/authorize?&state=123&client_id=SRMS&response_type=code&redirect_uri= fontUrl: http://localhost:3334{url}?projectId={projectId}&taskName={taskName}&taskId={taskId}&processInstanceId={processInstanceId}&nodeId={nodeId} fontAppUrl: http://localhost:3334/mobile{url}?projectId={projectId}&taskName={taskName}&taskId={taskId}&processInstanceId={processInstanceId}&nodeId={nodeId} + #hiwork单点登录 + appkey: dingshfclphtivrd0r7k + appsecret: dqhom_17n6BC8pmLeaf5wNp4aV_4XSt_aYn-dNBo8z__-79NjVvZhDJ_M2REdxRc # 汽车标准数字化平台ASMS asms: