个人博客(7、简单的增删改查)

122 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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,城市具体信息都是在数据库存储的

image.png

三、总结

这章大概是最爽的了吧,全是最基础的增删改查,有难度的一个没写,哈哈哈