短鏈接分組模塊
新增短鏈接分組
在新增之前,需要判斷gid是否是唯一的。
//檢查gid是否已存在,保證gid唯一public boolean hasGid(String gid){LambdaQueryWrapper<GroupDO> queryWrapper = Wrappers.lambdaQuery(GroupDO.class).eq(GroupDO::getGid, gid).eq(GroupDO::getUsername, UserContext.getUsername());GroupDO hasGroupFlag=baseMapper.selectOne(queryWrapper);return hasGroupFlag==null;}
設置用戶上下文
common/biz/user下和config下UserConfiguration
其中,@JSONField(name = "id")來設置userinfodto中的userid。
設置線程安全的TTL,實現跨線程的異步傳輸。
了解原理:ttl原理
@JSONField注解可以用在方法(method),屬性(field)以及方法中的參數(parameter)上。JSONField中的name屬性用來指定JSON串中key的名稱。
修改短鏈接分組
在修改功能實現時,會出現請求成功了,但是數據庫信息未更改,原因是token已經過期了,所以需要重新登錄。在用戶信息傳輸過濾器中filter需要將登錄路徑排除。(實際需要在網關配置)
@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;String requestURI=httpServletRequest.getRequestURI();if(!Objects.equals(requestURI,"/api/short-link/v1/user/login")){String username = httpServletRequest.getHeader("username");String token = httpServletRequest.getHeader("token");Object userInfoJsonStr = stringRedisTemplate.opsForHash().get("login_" + username, token);if(userInfoJsonStr!=null){UserInfoDTO userInfoDTO = JSON.parseObject(userInfoJsonStr.toString(), UserInfoDTO.class);UserContext.setUser(userInfoDTO);}}try {filterChain.doFilter(servletRequest, servletResponse);} finally {UserContext.removeUser();}}
刪除短鏈接分組
刪除一般用軟刪除,所以用update做。
設置delflag為1。