当前位置: 首页 > news >正文

从零到一构建短链接系统(八)

1.git上传远程仓库(现在才想起来)

git init

git add .

git commit -m "first commit"

git remote add origin OLiyscxm/shortlink

git push -u origin "master"

2.开发全局异常拦截器之后就可以简化UserController

拦截器可以替代为空判断

3.common目录下创建目录serialize,再创建类

public class PhoneDesensitizationSerializer extends JsonSerializer<String> {@Overridepublic void serialize(String phone, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)throws IOException {String phoneDesensitization = DesensitizedUtil.mobilePhone(phone);jsonGenerator.writeString(phoneDesensitization);}
}

4.UserRespDTO添加json序列化注释

5.resp目录下定义一个UserActualRespDTO类,这个类就不要json序列化注释了,再修改UserController,这时就可以选择是否查看真实用户手机号了

@RestController
@RequiredArgsConstructor
public class UserController {private final UserService userService;/*** * 根据用户名查询用户信息* */@GetMapping("/api/shortlink/v1/user/{username}")public Result<UserRespDTO> getUserByUsername(@PathVariable("username") String username) {return Results.success(userService.getUserByUsername(username));}@GetMapping("/api/shortlink/v1/actual/user/{username}")public Result<UserActualRespDTO> getActualUserByUsername(@PathVariable("username") String username) {return Results.success(BeanUtil.toBean(userService.getUserByUsername(username), UserActualRespDTO.class));}
}

6.新增查询用户名是否存在功能

UserService中添加

/**
* 查询用户名是否存在
* @param username 用户名
* @return 存在返回True,不存在返回False
*/Boolean hasUsername(String username);

UserServiceImpl中添加

@Override
public Boolean hasUsername(String username) {LambdaQueryWrapper<UserDO> queryWrapper = Wrappers.lambdaQuery(UserDO.class).eq(UserDO::getUsername, username);UserDO userDO = baseMapper.selectOne(queryWrapper);return userDO==null;
}

UserController中添加

/**
*查询用户名是否存在
*/@GetMapping("/api/shortlink/v1/user/has-username")
public Result<Boolean> hasUsername(@RequestParam("username") String username){return Results.success(userService.hasUsername(username));
}

7.data一栏OLi存在,返回false

相关文章:

  • 通过jsDelivr实现Github的图床CDN加速
  • Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)
  • Visual Studio 2022下配置 OpenMP 多线程编程环境与运行
  • java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
  • 计算机网络相关
  • 实战打靶集锦-027-SoSimple1
  • 【Redis】Redis常见原理和数据结构
  • AI开源概览及工具使用
  • PHP全新美化广告横幅在线制作源码
  • Qt-QDialog非模态置于窗口之上且操作主窗口不隐藏dialog的方法
  • npm run dev命令的执行顺序和原理
  • 【WEEK4】 【DAY1】整合SSM框架之基本环境搭建—第二部分【中文版】
  • 如何实现跨标签页通讯
  • Windows10无盘母盘制作-以云更新为例
  • Request failed with status code 504,Gateway time out
  • hexo+github搭建个人博客
  • 【5+】跨webview多页面 触发事件(二)
  • Docker入门(二) - Dockerfile
  • java8-模拟hadoop
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • node-glob通配符
  • python 装饰器(一)
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • underscore源码剖析之整体架构
  • Vim Clutch | 面向脚踏板编程……
  • 关于 Cirru Editor 存储格式
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 排序(1):冒泡排序
  • 排序算法之--选择排序
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前嗅ForeSpider教程:创建模板
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 由插件封装引出的一丢丢思考
  • 正则表达式小结
  • Semaphore
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​马来语翻译中文去哪比较好?
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #pragma once
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (过滤器)Filter和(监听器)listener
  • (四)图像的%2线性拉伸
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Linq学习笔记
  • ../depcomp: line 571: exec: g++: not found