Browse Source

修改:修改用户信息,增加同时更新缓存的操作

dev_shibei_match
wxz 5 years ago
parent
commit
35ec7ad89c
  1. 17
      epmet-auth/src/main/java/com/epmet/controller/GovLoginController.java
  2. 19
      epmet-auth/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java
  3. 7
      epmet-auth/src/main/java/com/epmet/service/GovLoginService.java
  4. 12
      epmet-auth/src/main/java/com/epmet/service/impl/GovLoginServiceImpl.java
  5. 19
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UpdateCachedRolesFormDTO.java
  6. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java
  7. 2
      epmet-user/epmet-user-server/pom.xml
  8. 23
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/AuthFeignClient.java
  9. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/AuthFeignClientCallback.java
  10. 29
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/CustomerStaffServiceImpl.java
  11. 25
      epmet-user/epmet-user-server/src/test/java/com/epmet/epmetuser/test/UserControllerTest.java

17
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.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.GovWxmpEnteOrgFormDTO; import com.epmet.dto.form.*;
import com.epmet.dto.form.GovWxmpFormDTO;
import com.epmet.dto.form.SendSmsCodeFormDTO;
import com.epmet.dto.form.StaffOrgsFormDTO;
import com.epmet.dto.result.StaffOrgsResultDTO; import com.epmet.dto.result.StaffOrgsResultDTO;
import com.epmet.dto.result.UserTokenResultDTO; import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.GovLoginService; import com.epmet.service.GovLoginService;
@ -98,5 +95,17 @@ public class GovLoginController {
govLoginService.loginOut(tokenDto); govLoginService.loginOut(tokenDto);
return new Result(); 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();
}
} }

19
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<String> roleIds;
}

7
epmet-auth/src/main/java/com/epmet/service/GovLoginService.java

@ -61,4 +61,11 @@ public interface GovLoginService {
* @Date 2020/4/21 22:08 * @Date 2020/4/21 22:08
**/ **/
void loginOut(TokenDto tokenDto); void loginOut(TokenDto tokenDto);
/**
* 更新缓存中的角色列表
* @param staffId
* @param roleIds
*/
void updateCachedRoles(String staffId, String orgId, List<String> roleIds);
} }

12
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 cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.epmet.common.token.constant.LoginConstant; 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.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ExceptionUtils;
@ -290,6 +291,17 @@ public class GovLoginServiceImpl implements GovLoginService {
cpUserDetailRedis.logout(tokenDto.getApp() , tokenDto.getClient() , tokenDto.getUserId()); cpUserDetailRedis.logout(tokenDto.getApp() , tokenDto.getClient() , tokenDto.getUserId());
} }
@Override
public void updateCachedRoles(String staffId, String orgId, List<String> roleIds) {
GovTokenDto userDetails = cpUserDetailRedis.get(AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, staffId, GovTokenDto.class);
if (userDetails == null) {
return;
}
List<GovTokenDto.Role> roles = queryGovStaffRoles(staffId, orgId);
userDetails.setRoleList(roles);
cpUserDetailRedis.set(userDetails, jwtTokenProperties.getExpire());
}
//保存登录日志 //保存登录日志
private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) { private Result saveStaffLoginRecord(GovWxmpEnteOrgFormDTO formDTO, String staffId, String openId) {
StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO(); StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO();

19
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<String> roleIds;
}

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LoginUserDetailsResultDTO.java

@ -1,7 +1,9 @@
package com.epmet.dto.result; package com.epmet.dto.result;
import com.epmet.commons.tools.security.dto.GovTokenDto;
import lombok.Data; import lombok.Data;
import java.util.List;
import java.util.Set; import java.util.Set;
@Data @Data
@ -25,7 +27,8 @@ public class LoginUserDetailsResultDTO {
/** /**
* 角色列表 * 角色列表
*/ */
private Set<String> roleIdList; //private Set<String> roleIdList;
private List<GovTokenDto.Role> roleList;
/** /**
* 部门id列表 * 部门id列表

2
epmet-user/epmet-user-server/pom.xml

@ -137,7 +137,7 @@
<spring.redis.port>6379</spring.redis.port> <spring.redis.port>6379</spring.redis.port>
<spring.redis.password>123456</spring.redis.password> <spring.redis.password>123456</spring.redis.password>
<!-- nacos --> <!-- nacos -->
<nacos.register-enabled>true</nacos.register-enabled> <nacos.register-enabled>false</nacos.register-enabled>
<nacos.server-addr>122.152.200.70:8848</nacos.server-addr> <nacos.server-addr>122.152.200.70:8848</nacos.server-addr>
<nacos.discovery.namespace>fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b</nacos.discovery.namespace> <nacos.discovery.namespace>fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b</nacos.discovery.namespace>
<nacos.config.namespace></nacos.config.namespace> <nacos.config.namespace></nacos.config.namespace>

23
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);
}

17
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);
}
}

29
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.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; 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.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerStaffConstant; import com.epmet.constant.CustomerStaffConstant;
import com.epmet.constant.UserConstant; import com.epmet.constant.UserConstant;
@ -39,6 +41,7 @@ import com.epmet.entity.CustomerStaffEntity;
import com.epmet.entity.GovStaffRoleEntity; import com.epmet.entity.GovStaffRoleEntity;
import com.epmet.entity.StaffRoleEntity; import com.epmet.entity.StaffRoleEntity;
import com.epmet.entity.UserEntity; import com.epmet.entity.UserEntity;
import com.epmet.feign.AuthFeignClient;
import com.epmet.redis.CustomerStaffRedis; import com.epmet.redis.CustomerStaffRedis;
import com.epmet.service.CustomerStaffService; import com.epmet.service.CustomerStaffService;
import com.epmet.service.GovStaffRoleService; import com.epmet.service.GovStaffRoleService;
@ -52,10 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -78,6 +78,10 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
private StaffRoleService staffRoleService; private StaffRoleService staffRoleService;
@Autowired @Autowired
private StaffRoleDao staffRoleDao; private StaffRoleDao staffRoleDao;
@Autowired
private CpUserDetailRedis cpUserDetailRedis;
@Autowired
private AuthFeignClient authFeignClient;
@Override @Override
public PageData<CustomerStaffDTO> page(Map<String, Object> params) { public PageData<CustomerStaffDTO> page(Map<String, Object> params) {
@ -328,6 +332,23 @@ public class CustomerStaffServiceImpl extends BaseServiceImpl<CustomerStaffDao,
staffRoleEntity.setOrgId(fromDTO.getAgencyId()); staffRoleEntity.setOrgId(fromDTO.getAgencyId());
staffRoleService.insert(staffRoleEntity); staffRoleService.insert(staffRoleEntity);
}); });
// redis缓存角色修改
UpdateCachedRolesFormDTO updateRolesForm = new UpdateCachedRolesFormDTO();
updateRolesForm.setOrgId(fromDTO.getAgencyId());
updateRolesForm.setStaffId(fromDTO.getStaffId());
updateRolesForm.setRoleIds(fromDTO.getRoles());
try {
Result result = authFeignClient.updateCachedRoles(updateRolesForm);
if (!result.success()) {
logger.error("修改用户信息:修改用户已缓存的角色列表失败:{}", result.getInternalMsg());
}
logger.info("修改用户信息:修改用户已缓存的角色列表成功");
} catch (Exception e) {
e.printStackTrace();
logger.error("修改用户信息:修改用户已缓存的角色列表异常:{}", ExceptionUtils.getErrorStackTrace(e));;
}
return new Result(); return new Result();
} }

25
epmet-user/epmet-user-server/src/test/java/com/epmet/epmetuser/test/UserControllerTest.java

@ -0,0 +1,25 @@
package com.epmet.epmetuser.test;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class UserControllerTest {
@Autowired
private UserService userService;
@Test
public void getLoginUserDetails() {
LoginUserDetailsResultDTO loginUserDetails = userService.getLoginUserDetails(AppClientConstant.APP_GOV, AppClientConstant.CLIENT_WXMP, "4aaab913d9f11d90a2cb4dd21b075259");
System.out.println(loginUserDetails);
}
}
Loading…
Cancel
Save