diff --git a/src/main/java/com/whdc/zhdbaqapi/config/SaTokenConfigure.java b/src/main/java/com/whdc/zhdbaqapi/config/SaTokenConfigure.java index 6857a57..6a8d066 100644 --- a/src/main/java/com/whdc/zhdbaqapi/config/SaTokenConfigure.java +++ b/src/main/java/com/whdc/zhdbaqapi/config/SaTokenConfigure.java @@ -24,6 +24,6 @@ public class SaTokenConfigure implements WebMvcConfigurer { .excludePathPatterns("/v3/api-docs**") .excludePathPatterns("/v1/sysuser/doLogin") .excludePathPatterns("/v1/auth/getToken") - ; + .excludePathPatterns("/v1/sysuser/registerByToken"); } } \ No newline at end of file diff --git a/src/main/java/com/whdc/zhdbaqapi/controller/SysUserController.java b/src/main/java/com/whdc/zhdbaqapi/controller/SysUserController.java index 6d1608d..65258ea 100644 --- a/src/main/java/com/whdc/zhdbaqapi/controller/SysUserController.java +++ b/src/main/java/com/whdc/zhdbaqapi/controller/SysUserController.java @@ -1,14 +1,16 @@ package com.whdc.zhdbaqapi.controller; +import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.whdc.zhdbaqapi.model.dto.FindSysUserDto; -import com.whdc.zhdbaqapi.model.dto.IdDto; -import com.whdc.zhdbaqapi.model.dto.LoginDto; +import com.whdc.zhdbaqapi.model.dto.*; +import com.whdc.zhdbaqapi.model.entity.ForeignUserInfo; import com.whdc.zhdbaqapi.model.entity.SysUser; import com.whdc.zhdbaqapi.model.vo.AuthToken; import com.whdc.zhdbaqapi.model.vo.LoginVo; import com.whdc.zhdbaqapi.service.ISysUserService; +import com.whdc.zhdbaqapi.utils.HttpUtil; import com.whdc.zhdbaqapi.utils.ResultJson; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -87,4 +89,43 @@ public class SysUserController { StpUtil.kickout(idDto.getId()); return ResultJson.ok("将用户[" + idDto.getId() + "]踢下线"); } + + @ApiOperation(value = "token注册") + @PostMapping("registerByToken") + public ResultJson registerByToken(@RequestBody @Validated ForeignTokenDto dto) throws InvocationTargetException, IllegalAccessException { + String jstr = HttpUtil.get("http://220.203.2.194:20042/sys/loginByToken?token=" + dto.getToken()); + System.out.println("======================="); + System.out.println(dto.getToken()); + System.out.println(jstr); + ForeignResp resp = JSON.parseObject(jstr, ForeignResp.class); + if (resp.getCode() != 200) { + return ResultJson.error("登录失败"); + } + ForeignUserInfo userInfo = resp.getResult().getUserInfo(); + SysUser bean = new SysUser(); + bean.setName(userInfo.getRealname()); + bean.setType(9527); + bean.setLoginName(userInfo.getUsername()); + bean.setPassword(null); + bean.setForeignId(userInfo.getId()); + SysUser byForeignId = iSysUserService.getByForeignId(userInfo.getId()); + if (byForeignId == null) { + iSysUserService.save(bean); + } + + LoginDto obj = new LoginDto(); + obj.setLoginName(bean.getLoginName()); + obj.setPassword(null); + LoginVo loginVo = iSysUserService.login(obj); + + if (loginVo == null || loginVo.getId() == null) { + return ResultJson.error("登录失败"); + } else { + StpUtil.login(loginVo.getId()); // 使用 user id 登录 + // 获取 Token 相关参数 + loginVo.setTokenInfo(new AuthToken(StpUtil.getTokenInfo())); + loginVo.setRoleList(StpUtil.getRoleList()); + return ResultJson.ok(loginVo); + } + } } diff --git a/src/main/java/com/whdc/zhdbaqapi/mapper/SysUserMapper.java b/src/main/java/com/whdc/zhdbaqapi/mapper/SysUserMapper.java index e2e0bea..3335f92 100644 --- a/src/main/java/com/whdc/zhdbaqapi/mapper/SysUserMapper.java +++ b/src/main/java/com/whdc/zhdbaqapi/mapper/SysUserMapper.java @@ -28,4 +28,6 @@ public interface SysUserMapper extends BaseMapper { * @return */ IPage page(@Param("page") IPage page, @Param("obj") FindSysUserDto findDto); + + SysUser findByForeignId(String foreignId); } diff --git a/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResp.java b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResp.java new file mode 100644 index 0000000..b78409d --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResp.java @@ -0,0 +1,16 @@ +package com.whdc.zhdbaqapi.model.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) // chain = true 实现链式调用 +public class ForeignResp { + boolean success; + String message; + String extMessage; + int code; + @JsonProperty(value = "result") + ForeignResult result; +} diff --git a/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResult.java b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResult.java new file mode 100644 index 0000000..7087cba --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignResult.java @@ -0,0 +1,14 @@ +package com.whdc.zhdbaqapi.model.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.whdc.zhdbaqapi.model.entity.ForeignUserInfo; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) // chain = true 实现链式调用 +public class ForeignResult { + int multi_depart; + @JsonProperty(value = "userInfo") + ForeignUserInfo userInfo; +} diff --git a/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignTokenDto.java b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignTokenDto.java new file mode 100644 index 0000000..d694506 --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/model/dto/ForeignTokenDto.java @@ -0,0 +1,15 @@ +package com.whdc.zhdbaqapi.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ForeignTokenDto { + @ApiParam(value = "token", example = "") + @ApiModelProperty(value = "token", dataType = "java.lang.String") + @NotBlank(message = "token") + private String token; +} diff --git a/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignOrg.java b/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignOrg.java new file mode 100644 index 0000000..af4cf48 --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignOrg.java @@ -0,0 +1,35 @@ +package com.whdc.zhdbaqapi.model.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) // chain = true 实现链式调用 +public class ForeignOrg { + String id; + String parentId; + String departName; + String departNameEn; + String departNameAbbr; + String departOrder; + String description; + String orgCategory; + String orgType; + String orgCode; + String departmentContactUsername; + String ownerOrgCode; + String mobile; + String fax; + String address; + String departNameFn; + String addvcd; + String municipalUnit; + String memo; + String status; + String delFlag; + String qywxIdentifier; + String createBy; + String createTime; + String updateBy; + String updateTime; +} diff --git a/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignUserInfo.java b/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignUserInfo.java new file mode 100644 index 0000000..5c908d6 --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/model/entity/ForeignUserInfo.java @@ -0,0 +1,44 @@ +package com.whdc.zhdbaqapi.model.entity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) // chain = true 实现链式调用 +public class ForeignUserInfo { + String id; + String username; + String realname; + String avatar; + String birthday; + int sex; + String email; + String phone; + String orgCode; + String orgCodeTxt; + int orgIsExternal; + int status; + int delFlag; + String workNo; + String post; + String telephone; + String createBy; + String createTime; + String updateBy; + String updateTime; + int activitiSync; + int userIdentity; + String departIds; + String relTenantIds; + String clientId; + @JsonProperty(value = "currentOrg") + ForeignOrg currentOrg; + @JsonProperty(value = "currentOwnOrg") + ForeignOrg currentOwnOrg; + String roleCodes; + boolean originalPassword; + boolean simplePassword; + int numberOfErrors; + String addvcd; +} diff --git a/src/main/java/com/whdc/zhdbaqapi/model/entity/SysUser.java b/src/main/java/com/whdc/zhdbaqapi/model/entity/SysUser.java index 98624f4..64a4672 100644 --- a/src/main/java/com/whdc/zhdbaqapi/model/entity/SysUser.java +++ b/src/main/java/com/whdc/zhdbaqapi/model/entity/SysUser.java @@ -46,4 +46,9 @@ public class SysUser { @ApiModelProperty(value = "姓名", dataType = "java.lang.String") @TableField("NAME") private String name; + + @ApiParam(value = "外部id", example = "") + @ApiModelProperty(value = "外部id", dataType = "java.lang.String") + @TableField("FOREIGN_ID") + private String foreignId; } diff --git a/src/main/java/com/whdc/zhdbaqapi/service/ISysUserService.java b/src/main/java/com/whdc/zhdbaqapi/service/ISysUserService.java index cd3bc47..696a81b 100644 --- a/src/main/java/com/whdc/zhdbaqapi/service/ISysUserService.java +++ b/src/main/java/com/whdc/zhdbaqapi/service/ISysUserService.java @@ -36,4 +36,6 @@ public interface ISysUserService extends IService { * @return */ Boolean changePwd(ChangePwdDto obj); + + SysUser getByForeignId(String foreignId); } diff --git a/src/main/java/com/whdc/zhdbaqapi/service/impl/SysUserServiceImpl.java b/src/main/java/com/whdc/zhdbaqapi/service/impl/SysUserServiceImpl.java index 8da572c..31a41ed 100644 --- a/src/main/java/com/whdc/zhdbaqapi/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/whdc/zhdbaqapi/service/impl/SysUserServiceImpl.java @@ -95,4 +95,8 @@ public class SysUserServiceImpl extends ServiceImpl impl public Boolean changePwd(ChangePwdDto obj) { return null; } + + public SysUser getByForeignId(String foreignId) { + return baseMapper.findByForeignId(foreignId); + } } diff --git a/src/main/java/com/whdc/zhdbaqapi/utils/HttpUtil.java b/src/main/java/com/whdc/zhdbaqapi/utils/HttpUtil.java new file mode 100644 index 0000000..3420526 --- /dev/null +++ b/src/main/java/com/whdc/zhdbaqapi/utils/HttpUtil.java @@ -0,0 +1,60 @@ +package com.whdc.zhdbaqapi.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; + +public class HttpUtil { + public static String get(String _url) { + InputStream is = null; + BufferedReader br = null; + HttpURLConnection conn = null; + String jstr = null; + try { + URL url = new URL(_url); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + conn.connect(); + if (conn.getResponseCode() == 200) { + is = conn.getInputStream(); + if (is != null) { + br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + StringBuffer sb = new StringBuffer(); + String tmp = ""; + while ((tmp = br.readLine()) != null) { + sb.append(tmp); + } + jstr = sb.toString(); + return jstr; + } + } + } catch (Exception ignore) { + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException ignore) { + } + } + if (is != null) { + try { + is.close(); + } catch (IOException ignore) { + } + } + if (conn != null) { + try { + conn.disconnect(); + } catch (Exception ignore) { + } + } + } + return null; + } +} diff --git a/src/main/resources/mapper/SysUserMapper.xml b/src/main/resources/mapper/SysUserMapper.xml index ab5aa07..f85561e 100644 --- a/src/main/resources/mapper/SysUserMapper.xml +++ b/src/main/resources/mapper/SysUserMapper.xml @@ -13,4 +13,8 @@ +