4 changed files with 134 additions and 0 deletions
@ -0,0 +1,39 @@ |
|||||
|
package com.epmet.dto.form; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotBlank; |
||||
|
import java.util.List; |
||||
|
|
||||
|
@Data |
||||
|
public class StaffPermCacheFormDTO { |
||||
|
|
||||
|
/** |
||||
|
* 更新权限缓存分组 |
||||
|
*/ |
||||
|
public interface UpdatePermissionCache {} |
||||
|
|
||||
|
/** |
||||
|
* 工作人员 id |
||||
|
*/ |
||||
|
@NotBlank(message = "工作人员ID不能为空", groups = {UpdatePermissionCache.class}) |
||||
|
private String staffId; |
||||
|
|
||||
|
/** |
||||
|
* 登录头信息app |
||||
|
*/ |
||||
|
@NotBlank(message = "登录头信息app不能为空", groups = {UpdatePermissionCache.class}) |
||||
|
private String app; |
||||
|
|
||||
|
/** |
||||
|
* 登录头信息client |
||||
|
*/ |
||||
|
@NotBlank(message = "登录头信息client不能为空", groups = {UpdatePermissionCache.class}) |
||||
|
private String client; |
||||
|
|
||||
|
/** |
||||
|
* 权限列表 |
||||
|
*/ |
||||
|
private List<String> permissions; |
||||
|
|
||||
|
} |
@ -0,0 +1,43 @@ |
|||||
|
package com.epmet.controller; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.commons.tools.validator.ValidatorUtils; |
||||
|
import com.epmet.dto.form.StaffPermCacheFormDTO; |
||||
|
import com.epmet.service.AccessService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 权限相关Api |
||||
|
* @Author wxz |
||||
|
* @Description |
||||
|
* @Date 2020/4/23 17:54 |
||||
|
**/ |
||||
|
@RestController |
||||
|
@RequestMapping("access") |
||||
|
public class AccessController { |
||||
|
|
||||
|
@Autowired |
||||
|
private AccessService accessService; |
||||
|
|
||||
|
/** |
||||
|
* 更新工作人员权限缓存 |
||||
|
* @param staffPermCacheFormDTO |
||||
|
* @return |
||||
|
*/ |
||||
|
@PostMapping("updatepermissioncache") |
||||
|
public Result updatePermissionCache(@RequestBody StaffPermCacheFormDTO staffPermCacheFormDTO) { |
||||
|
ValidatorUtils.validateEntity(staffPermCacheFormDTO, StaffPermCacheFormDTO.UpdatePermissionCache.class); |
||||
|
String staffId = staffPermCacheFormDTO.getStaffId(); |
||||
|
String app = staffPermCacheFormDTO.getApp(); |
||||
|
String client = staffPermCacheFormDTO.getClient(); |
||||
|
List<String> permissions = staffPermCacheFormDTO.getPermissions(); |
||||
|
accessService.updatePermissionCache(staffId, app, client, permissions); |
||||
|
return new Result(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
package com.epmet.service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface AccessService { |
||||
|
/** |
||||
|
* 更新权限缓存 |
||||
|
* @param staffId |
||||
|
* @param permissions |
||||
|
*/ |
||||
|
void updatePermissionCache(String staffId, String app, String client, List<String> permissions); |
||||
|
} |
@ -0,0 +1,40 @@ |
|||||
|
package com.epmet.service.impl; |
||||
|
|
||||
|
import com.epmet.commons.tools.security.dto.GovTokenDto; |
||||
|
import com.epmet.commons.tools.utils.CpUserDetailRedis; |
||||
|
import com.epmet.service.AccessService; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class AccessServiceImpl implements AccessService { |
||||
|
|
||||
|
private static Logger logger = LoggerFactory.getLogger(AccessServiceImpl.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private CpUserDetailRedis cpUserDetailRedis; |
||||
|
|
||||
|
/** |
||||
|
* 更新权限缓存 |
||||
|
* @param staffId |
||||
|
* @param permissions |
||||
|
*/ |
||||
|
@Override |
||||
|
public void updatePermissionCache(String staffId, String app, String client, List<String> permissions) { |
||||
|
GovTokenDto govTokenDto = cpUserDetailRedis.get(app, client, staffId, GovTokenDto.class); |
||||
|
if (govTokenDto == null) { |
||||
|
logger.warn("更新[{}]用户缓存:Redis中不存在该用户TokenDto缓存信息", staffId); |
||||
|
return ; |
||||
|
} |
||||
|
govTokenDto.setPermissions(permissions); |
||||
|
|
||||
|
// 将新的TokenDto更新到redis中
|
||||
|
long expire = cpUserDetailRedis.getExpire(app, client, staffId); |
||||
|
cpUserDetailRedis.set(govTokenDto, expire); |
||||
|
logger.warn("更新[{}]用户缓存成功。", staffId); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue