携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情
一、前言
之前我完善了所有的和用户、登录相关的地方, 接下来我要开始最简单的重复性代码开发工作了, 一些简单的不用动脑的我最喜欢的增删改查
二、增删改查详情
访客记录-列表查询
访客记录实际上是还未完善的,以为按照我的想法是搞个aop之类的去获取每一次请求的用户ip,然后访问代表访客+1, 使用redis记录一天或者8小时内,这个ip再次访问访客不增加,超过时间再次访问访客增加。
或者是直接简单粗暴的在首页接口搞一下,访问首页某个接口自动增加
所以目前暂时只做了列表功能,增加功能应该会放在后续开发,列表还是之前说的,为了统计访客所在地区,所以新增了两个字段,经纬度,后续还会对接百度或者高德的接口,来获取ip相对应的坐标
@PostMapping("list")
@ApiOperation("查看列表")
public ResultVo getList(PageVo page){
LambdaQueryWrapper<AccessIp> wrapper = new LambdaQueryWrapper<>();
// 可以根据来访时间查询
wrapper.between(page.getStartTime()!= null && page.getEndTime() != null,
AccessIp::getCreateTime, page.getStartTime(), page.getEndTime());
List<AccessIp> list = accessIpService.list(wrapper);
return new ResultVo(list);
}
归档表-列表、删除
归档对我来说只有列表和新增功能,删除和修改很没必要,上线出bug了就在下次更新的时候干掉就好了
@Resource
private IArchiveService archiveService;
@PostMapping("list")
@ApiOperation("查看列表")
public ResultVo getList(PageVo page){
List<Archive> list = archiveService.list();
return new ResultVo(list);
}
@PostMapping
@ApiOperation("新增")
public ResultVo insert(Archive archive){
archiveService.save(archive);
return new ResultVo();
}
文章分类增删改查
分类的增删改查主要注意点是分类名称不可重复
@PostMapping("list")
@ApiOperation("查看列表")
public ResultVo getList(){
List<CategoryListVo> list = categoryService.getList();
return new ResultVo(list);
}
@PostMapping
@ApiOperation("新增")
public ResultVo insert(Category category){
categoryService.nameIsOnly(category.getTypeName(), null);
Category catrgoryModel = Category.builder()
.typeName(category.getTypeName())
.createTime(LocalDateTime.now())
.status("0")
.parentId(category.getParentId()).build();
categoryService.save(catrgoryModel);
return new ResultVo();
}
@PutMapping
@ApiOperation("修改")
public ResultVo update(Category dto){
categoryService.nameIsOnly(dto.getTypeName(), dto.getBlid());
Category build = Category.builder()
.blid(dto.getBlid())
.typeName(dto.getTypeName())
.updateTime(LocalDateTime.now())
.build();
categoryService.updateById(build);
return new ResultVo();
}
@DeleteMapping
@ApiOperation("删除")
public ResultVo delete(Long id){
Category byId = categoryService.getById(id);
if (byId.getNum() > 0){
return new ResultVo().error("该分类下有文章, 不可删除");
}
return new ResultVo();
}
下面是在service层的:判断分类名称是否重复方法
@Override
public boolean nameIsOnly(String name,Long id) {
LambdaQueryWrapper<Category> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Category::getTypeName, name)
.ne(id != null,Category::getBlid, id);
Category one = this.getOne(wrapper);
// 判断该分类名称是否存在
if (one != null){
throw new BlogException(ErrorEnum.CATEGORY_EXIST_ERROR);
}
return true;
}
友链增删改查
因为友链不是很重要,而且懒得很,所以入参出参都没做判断
@PostMapping("list")
@ApiOperation("查看列表")
public ResultVo getList(PageVo dto){
Page<FriendLink> page = new Page<>(dto.getPage(),dto.getSize());
Page<FriendLink> list = friendLinkService.page(page);
return new ResultVo(list);
}
@PostMapping
@ApiOperation("新增")
public ResultVo insert(FriendLink friendLink){
friendLinkService.save(friendLink);
return new ResultVo();
}
@PutMapping
@ApiOperation("修改")
public ResultVo update(FriendLink friendLink){
friendLinkService.updateById(friendLink);
return new ResultVo();
}
@DeleteMapping
@ApiOperation("删除")
public ResultVo delete(Long id ){
friendLinkService.removeById(id);
return new ResultVo();
}
标签增删改查
标签和分类一样的,名称不可重复
@PostMapping("list")
@ApiOperation("查看列表")
public ResultVo getList(){
List<Label> list = labelService.list();
return new ResultVo(list);
}
@PostMapping
@ApiOperation("新增")
public ResultVo insert(Label label){
labelService.nameIsOnly(label.getTagName(), null);
label.setCreateTime(LocalDateTime.now());
labelService.save(label);
return new ResultVo();
}
@PutMapping
@ApiOperation("修改")
public ResultVo update(Label label){
labelService.nameIsOnly(label.getTagName(),label.getBlid());
label.setUpdateTime(LocalDateTime.now());
labelService.updateById(label);
return new ResultVo();
}
@DeleteMapping
@ApiOperation("删除")
public ResultVo delete(Long id){
Label byId = labelService.getById(id);
if (byId.getNum() > 0){
return new ResultVo().error("该标签下有文章, 不可删除");
}
labelService.removeById(id);
return new ResultVo();
}
判断名称是否重复Service层方法
@Override
public boolean nameIsOnly(String name, Long id) {
LambdaQueryWrapper<Label> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Label::getTagName, name)
.ne(id != null, Label::getBlid, id);
Label one = this.getOne(wrapper);
if(one != null){
throw new BlogException(ErrorEnum.LABEL_EXIST_ERROR);
}
return false;
}
删除Controller
删除ArticleInfoController,文章详情等功能具体实现在ArticleController 删除CityController,城市具体信息都是在数据库存储的
三、总结
这章大概是最爽的了吧,全是最基础的增删改查,有难度的一个没写,哈哈哈