浪花 - 组队功能后端开发

一、基础增删改查功能

  1. 添加队伍
java 复制代码
    @PostMapping("/add")
    public BaseResponse<Boolean> addTeam(@RequestBody Team team) {
        if (team == null) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        boolean result = teamService.save(team);
        if (!result) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR, "添加失败");
        }
        return ResultUtils.success(result);
    }
  1. 删除队伍
java 复制代码
    @PostMapping("/delete")
    public BaseResponse<Boolean> deleteTeamById(long id) {
        if (id <= 0) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        boolean result = teamService.removeById(id);
        if (!result) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR, "删除失败");
        }
        return ResultUtils.success(result);
    }
  1. 修改 / 更新队伍信息
java 复制代码
    @PostMapping("/update")
    public BaseResponse<Boolean> updateTeam(@RequestBody Team team) {
        if (team == null) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        boolean result = teamService.updateById(team);
        if (!result) {
            throw new BusinessException(ErrorCode.SYSTEM_ERROR, "更新失败");
        }
        return ResultUtils.success(result);
    }
  1. 查找队伍
java 复制代码
    @GetMapping("/get")
    public BaseResponse<Team> getTeamById(long teamId) {
        if (teamId <= 0) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        Team team = teamService.getById(teamId);
        if (team == null) {
            throw new BusinessException(ErrorCode.NULL_ERROR);
        }
        return ResultUtils.success(team);
    }

二、列表查询

  1. 封装请求包装类
java 复制代码
package com.example.usercenter.model.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.usercenter.common.PageRequest;
import lombok.Data;


/**
 * @author 乐小鑫
 * @version 1.0
 * @Date 2024-01-22-20:14
 */
@Data
public class TeamQuery extends PageRequest {
    private static final long serialVersionUID = -8434935321943948180L;

    /**
     * id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 队伍名称
     */
    private String name;

    /**
     * 最大人数
     */
    private Integer maxNum;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 0 - 公开,1 - 私有,2 - 加密
     */
    private Integer status;
}
  1. 创建查询构造器

  2. 执行列表查询

java 复制代码
    @GetMapping("/list")
    public BaseResponse<List<Team>> listTeams(TeamQuery teamQuery) {
        if (teamQuery == null) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        Team team = new Team();
        BeanUtils.copyProperties(teamQuery, team);
        QueryWrapper<Team> queryWrapper = new QueryWrapper<>();
        List<Team> teamList = teamService.list(queryWrapper);
        return ResultUtils.success(teamList);
    }

三、分页查询

  1. 通用分页查询请求参数
java 复制代码
package com.example.usercenter.common;

import lombok.Data;

import java.io.Serializable;

/**
 * 通用分页查询参数
 * @author 乐小鑫
 * @version 1.0
 * @Date 2024-01-22-20:16
 */
@Data
public class PageRequest implements Serializable {

    private static final long serialVersionUID = 1395844225639844641L;

    /**
     * 页面大小
     */
    private int pageSize = 10;

    /**
     * 当前页数
     */
    private int pageNum = 1;

}
  1. 创建查询构造器

  2. 执行分页查询

java 复制代码
    @GetMapping("/list/page")
    public BaseResponse<Page<Team>> listTeamsByPage(TeamQuery teamQuery) {
        if (teamQuery == null) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR);
        }
        Page<Team> page = new Page<>(teamQuery.getPageNum(),teamQuery.getPageSize());
        QueryWrapper<Team> queryWrapper = new QueryWrapper<>();
        Page<Team> resultPage = teamService.page(page, queryWrapper);
        return ResultUtils.success(resultPage);
    }

四、请求参数包装类和包装类

  1. 为什么需要请求参数包装类?
  • 请求参数名称 / 类型和实体类型不一致
  • 有一些参数用不到,如果要生成接口文档,会增加理解成本
  • 多个实体类映射到一个对象的场景
  1. 为什么需要(响应数据)包装类?
  • 有些数据需要隐藏,不能返回给前端(封装 VO 类)
  • 有些字段某些方法不关心
相关推荐
江城开朗的豌豆几秒前
Vue路由玩法大揭秘:三种路由模式你Pick谁?
前端·javascript·vue.js
江城开朗的豌豆1 分钟前
Vue路由守卫全攻略:给页面访问装上'安检门'
前端·javascript·vue.js
RainbowSea1 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
掘金-我是哪吒2 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
RainbowSea5 分钟前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
小磊哥er8 分钟前
【前端工程化】前端组件模版构建那些事
前端
前端 贾公子8 分钟前
monorepo + Turborepo --- 开发应用程序
java·前端·javascript
江城开朗的豌豆13 分钟前
Vue路由传参避坑指南:params和query的那些猫腻
前端·javascript·vue.js
十里青山21 分钟前
超好用的vue图片预览插件更新啦,hevue-img-preview 7.0.0版本正式发布,支持vue2/vue3/移动/pc,增加缩略图、下载、自定义样式等
前端·javascript·vue.js
lichenyang45330 分钟前
css模块化以及rem布局
前端·javascript·css