diff --git a/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java index 61386ac6c9..1eb86003bd 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java @@ -4,10 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dto.form.GovWxmpEnteOrgFormDTO; -import com.epmet.dto.form.GovWxmpFormDTO; -import com.epmet.dto.form.SendSmsCodeFormDTO; -import com.epmet.dto.form.StaffOrgsFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.StaffOrgsResultDTO; import com.epmet.dto.result.UserTokenResultDTO; import com.epmet.service.GovLoginService; @@ -98,5 +95,17 @@ public class GovLoginController { govLoginService.loginOut(tokenDto); return new Result(); } + + /** + * 更新缓存的角色列表 + * @param form + * @return + */ + @PostMapping("/updatecachedroles") + public Result updateCachedRoles(@RequestBody UpdateCachedRolesFormDTO form) { + ValidatorUtils.validateEntity(form); + govLoginService.updateCachedRoles(form.getStaffId(), form.getOrgId(), form.getRoleIds()); + return new Result(); + } } diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java new file mode 100644 index 0000000000..80559c4ec5 --- /dev/null +++ b/epmet-auth/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@Data +public class UpdateCachedRolesFormDTO { + + @NotBlank(message = "客户ID不能为空") + private String staffId; + + @NotBlank(message = "机关ID不能为空") + private String orgId; + + private List roleIds; + +} diff --git a/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java b/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java index 37b78533b5..a07565cf50 100644 --- a/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/GovLoginService.java @@ -61,4 +61,11 @@ public interface GovLoginService { * @Date 2020/4/21 22:08 **/ void loginOut(TokenDto tokenDto); + + /** + * 更新缓存中的角色列表 + * @param staffId + * @param roleIds + */ + void updateCachedRoles(String staffId, String orgId, List roleIds); } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java index 7e11ab328e..bbb71f448b 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java @@ -2,6 +2,7 @@ package com.epmet.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.epmet.common.token.constant.LoginConstant; +import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; @@ -290,6 +291,17 @@ public class GovLoginServiceImpl implements GovLoginService { cpUserDetailRedis.logout(tokenDto.getApp() , tokenDto.getClient() , tokenDto.getUserId()); } + @Override + public void updateCachedRoles(String staffId, String orgId, List roleIds) { + GovTokenDto userDetails = cpUserDetailRedis.get(AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, staffId, GovTokenDto.class); + if (userDetails == null) { + return; + } + List roles = queryGovStaffRoles(staffId, orgId); + userDetails.setRoleList(roles); + cpUserDetailRedis.set(userDetails, jwtTokenProperties.getExpire()); + } + //保存登录日志 private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) { StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO(); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java new file mode 100644 index 0000000000..80559c4ec5 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@Data +public class UpdateCachedRolesFormDTO { + + @NotBlank(message = "客户ID不能为空") + private String staffId; + + @NotBlank(message = "机关ID不能为空") + private String orgId; + + private List roleIds; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java index 30acef4ea8..1174f0fb34 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.result; +import com.epmet.commons.tools.security.dto.GovTokenDto; import lombok.Data; +import java.util.List; import java.util.Set; @Data @@ -25,7 +27,8 @@ public class LoginUserDetailsResultDTO { /** * 角色列表 */ - private Set roleIdList; + //private Set roleIdList; + private List roleList; /** * 部门id列表 diff --git a/epmet-user/epmet-user-server/pom.xml b/epmet-user/epmet-user-server/pom.xml index 9e8bad0f3e..0a6fd51f68 100644 --- a/epmet-user/epmet-user-server/pom.xml +++ b/epmet-user/epmet-user-server/pom.xml @@ -137,7 +137,7 @@ 6379 123456 - true + false 122.152.200.70:8848 fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/AuthFeignClient.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/AuthFeignClient.java new file mode 100644 index 0000000000..dd1ed9ec46 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/AuthFeignClient.java @@ -0,0 +1,23 @@ +package com.epmet.feign; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.UpdateCachedRolesFormDTO; +import com.epmet.feign.fallback.AuthFeignClientCallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = ServiceConstant.EPMET_AUTH_SERVER, fallback = AuthFeignClientCallback.class, url = "localhost:8081") +//@FeignClient(name = ServiceConstant.EPMET_AUTH_SERVER, fallback = AuthFeignClientCallback.class) +public interface AuthFeignClient { + + /** + * 更新缓存的角色列表 + * @param form + * @return + */ + @PostMapping("/auth/gov/updatecachedroles") + Result updateCachedRoles(@RequestBody UpdateCachedRolesFormDTO form); + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/AuthFeignClientCallback.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/AuthFeignClientCallback.java new file mode 100644 index 0000000000..af013a458b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/AuthFeignClientCallback.java @@ -0,0 +1,17 @@ +package com.epmet.feign.fallback; + +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.utils.ModuleUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.UpdateCachedRolesFormDTO; +import com.epmet.feign.AuthFeignClient; +import org.springframework.stereotype.Component; + +@Component +public class AuthFeignClientCallback implements AuthFeignClient { + + @Override + public Result updateCachedRoles(UpdateCachedRolesFormDTO form) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_AUTH_SERVER, "updateCachedRoles", form); + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java index be1796082c..48b2f5a45f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java @@ -24,8 +24,10 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.CpUserDetailRedis; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerStaffConstant; import com.epmet.constant.UserConstant; @@ -39,6 +41,7 @@ import com.epmet.entity.CustomerStaffEntity; import com.epmet.entity.GovStaffRoleEntity; import com.epmet.entity.StaffRoleEntity; import com.epmet.entity.UserEntity; +import com.epmet.feign.AuthFeignClient; import com.epmet.redis.CustomerStaffRedis; import com.epmet.service.CustomerStaffService; import com.epmet.service.GovStaffRoleService; @@ -52,10 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -78,6 +78,10 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl page(Map params) { @@ -328,6 +332,23 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl