|
@@ -38,6 +38,7 @@ public class AuthServiceImpl implements AuthService {
|
|
|
|
|
|
/**
|
|
|
* 通过oa系统的信息登录到生产力平台,并同步用户信息
|
|
|
+ *
|
|
|
* @param oaToken oa系统token
|
|
|
* @return UserVO
|
|
|
*/
|
|
@@ -49,40 +50,46 @@ public class AuthServiceImpl implements AuthService {
|
|
|
String result = HttpRequest.post(oaApiUrl + "/auth/checkOaToken?token=" + oaToken)
|
|
|
.timeout(20000)//超时,毫秒
|
|
|
.execute().body();
|
|
|
+ if (ObjectUtil.isNull(result) || ObjectUtil.isEmpty(result)) {
|
|
|
+ throw new RuntimeException("登录失败!Token无效!");
|
|
|
+ }
|
|
|
JSONObject jsonObject = JSONUtil.parseObj(result);
|
|
|
OALoginDTO oaLoginDTO = jsonObject.toBean(OALoginDTO.class);
|
|
|
|
|
|
// 判断是否拿到了登录信息
|
|
|
- if (ObjectUtil.isNotNull(oaLoginDTO)){
|
|
|
+ if (ObjectUtil.isNotNull(oaLoginDTO)) {
|
|
|
|
|
|
// 判断生产力平台的该用户是否存在或最后更新信息的时间是否在oa系统之前
|
|
|
User user = userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getUserOaId, oaLoginDTO.getUserOaId()).eq(BaseEntity::getDeleteStatus, false));
|
|
|
if (ObjectUtil.isNull(user)) {
|
|
|
+ user = new User();
|
|
|
// 新增oa的user信息到生产力平台
|
|
|
setUserInfo(oaLoginDTO, user);
|
|
|
userMapper.insert(user);
|
|
|
UserPost userPost = new UserPost().setUserId(user.getId());
|
|
|
- setUserPostInfo(oaLoginDTO,userPost);
|
|
|
+ setUserPostInfo(oaLoginDTO, userPost);
|
|
|
userPostMapper.insert(userPost);
|
|
|
- }else if (user.getUpdateTime().before(oaLoginDTO.getLastUpdateTime())){
|
|
|
+ } else if (user.getUpdateTime().before(oaLoginDTO.getLastUpdateTime())) {
|
|
|
// 更新oa的user信息到生产力平台
|
|
|
setUserInfo(oaLoginDTO, user);
|
|
|
userMapper.updateById(user);
|
|
|
UserPost userPost = new UserPost().setUserId(user.getId());
|
|
|
- setUserPostInfo(oaLoginDTO,userPost);
|
|
|
+ setUserPostInfo(oaLoginDTO, userPost);
|
|
|
userPostMapper.update(userPost, new UpdateWrapper<UserPost>().eq("user_oa_id", oaLoginDTO.getUserOaId()).eq("delete_status", false));
|
|
|
}
|
|
|
UserVO userVO = userMapper.getUserInfoById(user.getId());
|
|
|
- if (ObjectUtil.isNotNull(userVO)){
|
|
|
+ if (ObjectUtil.isNotNull(userVO)) {
|
|
|
// 在生产力平台登录
|
|
|
StpUtil.login(userVO.getId(), new SaLoginModel()
|
|
|
.setDevice("PC") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型
|
|
|
.setIsLastingCookie(true) // 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在)
|
|
|
.setToken(oaToken) // 指定此次登录生成的Token(使用oa系统的token)
|
|
|
- .setExtra(userVO.getId().toString(), BeanUtil.toBean(userVO, LoginUserInfo.class)) // 设置额外登录信息
|
|
|
);
|
|
|
+ StpUtil.getSession().set(userVO.getId().toString(), BeanUtil.toBean(userVO, LoginUserInfo.class)); // 设置用户信息到会话缓存
|
|
|
+ userVO.setTokenName(StpUtil.getTokenName())
|
|
|
+ .setTokenValue(StpUtil.getTokenValue());
|
|
|
return userVO;
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new RuntimeException("登录失败!Token无效!");
|
|
|
}
|
|
|
}
|
|
@@ -95,7 +102,7 @@ public class AuthServiceImpl implements AuthService {
|
|
|
.setStaffNo(oaLoginDTO.getStaffNo());
|
|
|
}
|
|
|
|
|
|
- private void setUserPostInfo(OALoginDTO oaLoginDTO, UserPost userPost){
|
|
|
+ private void setUserPostInfo(OALoginDTO oaLoginDTO, UserPost userPost) {
|
|
|
String jsonDepartmentName = JSONUtil.toJsonStr(oaLoginDTO.getDepartmentNameList());
|
|
|
String jsonPostName = JSONUtil.toJsonStr(oaLoginDTO.getPostNameList());
|
|
|
userPost.setUserId(userPost.getUserId())
|