短链接day3

短链接分组模块

新增短链接分组

在新增之前,需要判断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需要将登录路径排除。(实际需要在网关配置)

 @Override
    public 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。

相关推荐

  1. day3

    2024-07-10 13:30:07       28 阅读
  2. 的理解

    2024-07-10 13:30:07       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 13:30:07       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 13:30:07       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 13:30:07       90 阅读
  4. Python语言-面向对象

    2024-07-10 13:30:07       98 阅读

热门阅读

  1. [C++基础]C++ 10个常用案例

    2024-07-10 13:30:07       29 阅读
  2. android paddingStart paddingLeft 使用区别

    2024-07-10 13:30:07       29 阅读
  3. 【ARMv8/v9 GIC 系列 5.7 -- 中断路由与系统寄存器】

    2024-07-10 13:30:07       26 阅读
  4. python在人工智能领域中的应用

    2024-07-10 13:30:07       35 阅读
  5. 互联汽车的RF挑战和解决方案

    2024-07-10 13:30:07       25 阅读
  6. 如何在vue3中实现动态路由

    2024-07-10 13:30:07       30 阅读
  7. 使用RAGAs评估基于Milvus Cloud的RAG应用

    2024-07-10 13:30:07       31 阅读
  8. electron通信与持久化存储

    2024-07-10 13:30:07       27 阅读
  9. Electron Forge 打包更改打包后图片

    2024-07-10 13:30:07       24 阅读
  10. 【ES】--Elasticsearch的高亮模式

    2024-07-10 13:30:07       33 阅读
  11. JVM专题九:JVM分代知识点梳理

    2024-07-10 13:30:07       21 阅读
  12. 谈谈检测浏览器类型

    2024-07-10 13:30:07       22 阅读