短链接day3

短链接分组模块

新增短链接分组

在新增之前,需要判断gid是否是唯一的。

java 复制代码
    //检查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需要将登录路径排除。(实际需要在网关配置)

java 复制代码
 @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。

相关推荐
xiaoshuaishuai8几秒前
C# 定制化Markdown编辑器
开发语言·c#·编辑器
DogDaoDao1 分钟前
C++核心技术深度剖析:从底层原理到工程实践
开发语言·c++·面试·程序员·指针·虚函数
磊 子5 分钟前
C++移动语义和智能指针
java·开发语言·c++
JAVA面经实录9176 分钟前
Elasticsearch 完整版完整知识体系
java·elasticsearch·搜索引擎·es
不负岁月无痕8 分钟前
C++继承与多态知识点及其高频面试问题
开发语言·c++·面试
hikktn9 分钟前
ORA-01861 日期格式错误的根治方案:从 SQL 层到 Java 层的标准化治理
java·python·sql
June`11 分钟前
如何组织一个并行程序
开发语言·cuda
雪宫街道13 分钟前
SpringBoot 静态资源映射规则与定制
java·spring boot·后端·spring
宸津-代码粉碎机23 分钟前
Spring AI企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring
dtq042423 分钟前
C语言刷题函数1-判断素数(分支语句,函数两种方法)
c语言·开发语言·学习