From a5eba18449f6871931ff2ad8897287f42149a8a6 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 18 May 2023 17:20:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E5=85=A8=E9=87=8F=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/schedule/SyncIAMScheduleJob.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 adc-da-sys/src/main/java/com/adc/da/sync/service/schedule/SyncIAMScheduleJob.java diff --git a/adc-da-sys/src/main/java/com/adc/da/sync/service/schedule/SyncIAMScheduleJob.java b/adc-da-sys/src/main/java/com/adc/da/sync/service/schedule/SyncIAMScheduleJob.java new file mode 100644 index 0000000..74668ca --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sync/service/schedule/SyncIAMScheduleJob.java @@ -0,0 +1,61 @@ +package com.adc.da.sync.service.schedule; + +import com.adc.da.sync.service.SyncIAMTimer; +import com.adc.da.sys.vo.iam.CmpOrgResult; +import com.adc.da.sys.vo.iam.CmpUserResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author: CaiHaohan + * @Date: 2023/5/17 16:54 + * @Description: + */ +@Component +@EnableScheduling +@Slf4j +public class SyncIAMScheduleJob { + + @Resource + private SyncIAMTimer syncIAMTimer; + + /** + * 同步部门 + */ + @Scheduled(cron = "0 0 4 ? * ?") + public void syncOrgData() { + int pageIndex = 1; + int pageSize = 1000; + + CmpOrgResult cmpOrgResult = this.syncIAMTimer.syncOrgIncrData(pageIndex, pageSize); + if (cmpOrgResult != null) { + int totalPages = cmpOrgResult.getData().getPages(); + for (int i = pageIndex + 1; i <= totalPages; i++) { + this.syncIAMTimer.syncOrgIncrData(i, pageSize); + } + } + } + + /** + * 同步用户 + */ + @Scheduled(cron = "0 0 5 ? * ?") + public void syncUserData() { + int pageIndex = 1; + int pageSize = 1000; + + CmpUserResult cmpUserResult = this.syncIAMTimer.syncUserIncrData(pageIndex, pageSize, null); + if (cmpUserResult != null) { + int totalPages = cmpUserResult.getData().getPages(); + for (int i = pageIndex + 1; i <= totalPages; i++) { + this.syncIAMTimer.syncUserIncrData(i, pageSize, null); + } + } + } + + +} From 3387850f8b20c5f8cff3c5b43b3ba2033e480c15 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 18 May 2023 17:35:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069485?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用该报告申请了下载权限,流程结束后,操作栏里有下载按钮了,但点击预览,页面没有下载按钮。 --- .../com/adc/da/report/service/impl/IReportServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 4affcd8..2bb5ce8 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -716,9 +716,11 @@ public class IReportServiceImpl extends ServiceImpl } else { reportDetailVo.setDownPower(0); //查看申请权限表的权限 + List powerList = new ArrayList<>(); + powerList.add(PREVIEW_DOWNLOAD); + powerList.add(DOWNLOAD); LambdaQueryWrapper powerApplyLambdaQueryWrapper = new LambdaQueryWrapper<>(); - powerApplyLambdaQueryWrapper.eq(PowerApply::getPower, 3); - powerApplyLambdaQueryWrapper.eq(PowerApply::getPower, 2); + powerApplyLambdaQueryWrapper.in(PowerApply::getPower, powerList); List list = iPowerApplyService.list(powerApplyLambdaQueryWrapper); if (CollectionUtils.isNotEmpty(list)) { list.forEach(powerApply -> { From e20407f8f07670ab14b0a839bfe4582a4bfa2b42 Mon Sep 17 00:00:00 2001 From: "xuetao.li" Date: Thu, 18 May 2023 18:14:51 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5=E7=BC=BA=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Level LevelName EmployeeTypeId --- .../src/main/java/com/adc/da/sync/service/SyncIAMTimer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncIAMTimer.java b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncIAMTimer.java index f2810da..50b7623 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncIAMTimer.java +++ b/adc-da-sys/src/main/java/com/adc/da/sync/service/SyncIAMTimer.java @@ -221,7 +221,9 @@ public class SyncIAMTimer { userEO.setUsname(userVoIAM.getCnName()); userEO.setStatus(userVoIAM.getStatus()); userEO.setLevelId(userVoIAM.getLevelID()); - userEO.setLevelId(userVoIAM.getLevelName()); + userEO.setLevelName(userVoIAM.getLevelName()); + userEO.setEmployeeTypeId(userVoIAM.getEmployeeTypeID()); + userEO.setZj(userVoIAM.getZJ()); // 转换org的关联数据 From 7f91a293467e1cc89c17d23a422df4771ec39963 Mon Sep 17 00:00:00 2001 From: "xuetao.li" Date: Thu, 18 May 2023 18:16:17 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:SSO=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/login/rest/LoginRestController.java | 6 ++--- .../adc/da/sys/service/UserEOServiceImpl.java | 22 +++++++++---------- .../sys/service/iservice/IUserEoService.java | 2 +- ...SsoResponse.java => SsoTokenResponse.java} | 12 +++++++++- .../com/adc/da/sys/vo/iam/SsoUserInfo.java | 11 ++++++---- 5 files changed, 33 insertions(+), 20 deletions(-) rename adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/{SsoResponse.java => SsoTokenResponse.java} (74%) diff --git a/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java b/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java index f599cf8..a10fd10 100644 --- a/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java +++ b/adc-da-login/src/main/java/com/adc/da/login/rest/LoginRestController.java @@ -507,13 +507,13 @@ public class LoginRestController { @GetMapping("/ssoLogin") @ResponseBody @ApiOperation(value = "SSO,根据Code返回用户信息") - public ResponseMessage ssoLogin(String code, HttpServletRequest request){ + public ResponseMessage ssoLogin(String code, String redirectUrl, HttpServletRequest request){ if (StrUtil.isBlank(code)) { return Result.error("无法单点登录,code为空"); } - String username = userService.ssoLogin(code); + String account = userService.ssoLogin(code, redirectUrl); - UsernamePasswordToken token = new UsernamePasswordToken(username); + UsernamePasswordToken token = new UsernamePasswordToken(account); return login(request, token); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java index e6ad481..4785eb5 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/UserEOServiceImpl.java @@ -14,7 +14,7 @@ import com.adc.da.sys.service.iservice.IUserEoService; import com.adc.da.sys.util.EncryptUtil; import com.adc.da.sys.vo.UserImportVO; import com.adc.da.sys.vo.UserVO; -import com.adc.da.sys.vo.iam.SsoResponse; +import com.adc.da.sys.vo.iam.SsoTokenResponse; import com.adc.da.sys.vo.iam.SsoUserInfoResponse; import com.adc.da.util.exception.AdcDaBaseException; import com.adc.da.util.utils.CollectionUtils; @@ -444,13 +444,13 @@ public class UserEOServiceImpl implements IUserEoService { * @param code code * @return Url */ - private String getTokenByCodeUrl(String code) { + private String getTokenByCodeUrl(String code, String redirectUrl) { return ssoUrl + SsoConstants.GET_TOKEN_PATH + SsoConstants.GRANT_TYPE + SsoConstants.AUTHORIZATION_CODE + "&" + SsoConstants.CLIENT_ID + ssoClientId + "&" + SsoConstants.CLIENT_SECRET + ssoClientSecret + "&" + SsoConstants.CODE + code + "&" - + SsoConstants.REDIRECT_URI + "XXX"; + + SsoConstants.REDIRECT_URI + redirectUrl; } /** @@ -464,16 +464,16 @@ public class UserEOServiceImpl implements IUserEoService { } @Override - public String ssoLogin(String code) { + public String ssoLogin(String code, String redirectUrl) { log.info("SSO登录: Code为【{}】", code); //向SSO服务器发送code获取用户token - String getTokenByCodeUrl = this.getTokenByCodeUrl(code); + String getTokenByCodeUrl = this.getTokenByCodeUrl(code, redirectUrl); String tokenResponse = HttpRequest.post(getTokenByCodeUrl).execute().body(); - SsoResponse tokenResponseObject = JSONUtil.toBean(tokenResponse, SsoResponse.class); + SsoTokenResponse ssoTokenResponseObject = JSONUtil.toBean(tokenResponse, SsoTokenResponse.class); //获取返回值中的token - String accessToken = tokenResponseObject.getAccess_token(); + String accessToken = ssoTokenResponseObject.getAccess_token(); log.info("SSO登录: accessToken为【{}】", accessToken); //向SSO服务器发送token获取用户数据 if (StrUtil.isBlank(accessToken)) { @@ -487,15 +487,15 @@ public class UserEOServiceImpl implements IUserEoService { SsoUserInfoResponse userInfoResponseObject = JSONUtil.toBean(userInfoResponse, SsoUserInfoResponse.class); //获取返回值中的用户id - String userId = userInfoResponseObject.getId(); - log.info("SSO登录: userId为【{}】", userId); + String userAccount = userInfoResponseObject.getId(); + log.info("SSO登录: 用户登录账号为【{}】", userAccount); //根据用户id取出用户名 - UserEO user = getUserById(userId); + UserEO user = dao.getUserEOByAccountNotDeleted(userAccount); if (user == null) { log.info("根据用户id取出用户失败"); throw new AdcDaBaseException("根据用户id取出用户失败"); } - return user.getUsname(); + return user.getAccount(); } void checkExcel(List list) { diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java index 70004ea..030fcf4 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/iservice/IUserEoService.java @@ -77,5 +77,5 @@ public interface IUserEoService { * @param code * @return */ - String ssoLogin(String code); + String ssoLogin(String code, String redirectUrl); } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java similarity index 74% rename from adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java rename to adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java index cd566b7..5b34bcf 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoResponse.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoTokenResponse.java @@ -12,13 +12,23 @@ import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor -public class SsoResponse { +public class SsoTokenResponse { /** * 返回的token 必须 */ private String access_token; + /** + * token类型 + */ + private String token_type; + + /** + * 过气时间 + */ + private Long expires_in; + /** * 刷新token(在应用配置里,打开【token刷新】的开关,即可返回该参数) 非必须 */ diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java index ea75078..f91c048 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/vo/iam/SsoUserInfo.java @@ -1,6 +1,5 @@ package com.adc.da.sys.vo.iam; -import cn.hutool.system.UserInfo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -15,11 +14,15 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class SsoUserInfo { - private String account_no; + private String ad_account; - private String token_expired; + private String user_name; - private String token_gtime; + private String work_no; + + private Long token_gtime; + + private String user_uid; private UserDetailInfo user_detail_info; }