柚见第十期(后端队伍接口详细设计)

创建队伍

用户可以 创建 一个队伍,设置队伍的人数、队伍名称(标题)、描述、超时时间 P0
队长、剩余的人数
聊天?
公开 或 private 或加密
信息流中不展示已过期的队伍

  1. 请求参数是否为空?
  2. 是否登录,未登录不允许创建
  3. 校验信息
  4. 队伍人数 > 1 且 <= 20
  5. 队伍标题 <= 20
  6. 描述 <= 512
  7. status 是否公开(int)不传默认为 0(公开)
  8. 如果 status 是加密状态,一定要有密码,且密码 <= 32
  9. 超时时间 > 当前时间
  10. 校验用户最多创建 5 个队伍
  11. 插入队伍信息到队伍表
  12. 插入用户队伍关系 => 关系表

这边我们会运用到队伍的状态,即公开0,私有1,加密2,所以我们提前写一个队伍状态枚举类

package com.calmthinker.youjian.common;  /**  
* 队伍状态枚举类  
*/  
public enum TeamStatusEnum {  
PUBLIC(0,"公开"),  
PRIVATE(1,"私有"),  
SECRET(2,"加密");  private int value;  
private String text;  public static TeamStatusEnum getEnumByValue(Integer value){  
if (value == null){  
return null;  
}  
TeamStatusEnum[] values = TeamStatusEnum.values();  
for (TeamStatusEnum teamStatusEnum: values){  
if (teamStatusEnum.getValue()==value){  
return teamStatusEnum;  
}  
}  
return null;  
}  TeamStatusEnum(int value, String text) {  
this.value = value;  
this.text = text;  
}  public int getValue() {  
return value;  
}  public void setValue(int value) {  
this.value = value;  
}  public String getText() {  
return text;  
}  public void setText(String text) {  
this.text = text;  
}  
}

业务层 — 添加事务

在这里插入图片描述

抛异常后,事务自动回滚
在这里插入图片描述

controller层

我们需要新建一个队伍添加请求封装类(便于前端知道该输入哪些参数)
新的请求封装类位于model包里的request包

在这里插入图片描述

接口文档测试

bug
文档的添加请求参数是封装的请求包装类
但是测试的时候又是Team

自己改一下,然后重启就解决了!

在这里插入图片描述

在这里插入图片描述

!在这里插入图片描述

bug

添加后数据库 加了8小时

在这里插入图片描述

debug 发现,和数据库没关系,传入的时候就已经加了八小时

在这里插入图片描述

解决: 修改传入的参数,获取绝对时间

这里过期时间的获取可从控制台输入一下代码来实现,单单的输入年月日会导致数据库里的时间增加8小时(应该是时区的问题)

在这里插入图片描述

查询队伍列表

新建 包装类

在这里插入图片描述

系统设计:

分页展示队伍列表,根据名称、简介等搜索队伍 P0,信息流中不展示已过期的队伍

  1. 从请求参数中取出队伍名称等查询条件,如果存在则作为查询条件
  2. 不展示已过期的队伍(根据过期时间筛选)
  3. 可以通过某个关键词同时对名称和描述查询
  4. 只有管理员才能查看加密还有非公开的房间
  5. todo **关联查询已加入队伍的用户信息(可能会很耗费性能,建议大家用自己写 SQL 的方式实现)
// 1. 自己写sql  
// 查询队伍与创建人的信息: 
select * from team left join user on team.userId = user.id (left join,表示左表数据必须存在,右表数据可有可无)  
// 查询队伍与已加入队伍成员信息: (userTeam表) 
select * from team join user_team on team.id = user_team.teamId  

这里暂时没实现 入队用户,只实现了关联插叙创建用户的信息

在这里插入图片描述

在这里插入图片描述

测试,查看拼接的sql

在这里插入图片描述

安装插件,查看完整的sql(控制台输出的是预编译的sql)

安装 mybatis-log

修改队伍信息

系统设计:

  1. 判断请求参数是否为空
  2. 查询队伍是否存在
  3. 只有管理员或者队伍的创建者可以修改
  4. todo : 如果用户传入的新值和老值一致,就不用 update 了(可自行实现,降低数据库使用次数)
  5. 如果队伍状态改为加密,必须要有密码,反之则清除密码字段
  6. 更新成功

新建请求包装类

在这里插入图片描述

用户加入队伍

系统设计

其他人、未满、未过期,允许加入多个队伍,但是要有个上限 P0

  1. 用户最多加入 5 个队伍
  2. 只能加入未满、未过期,存在的队伍
  3. 不能加入自己的队伍,不能重复加入已加入的队伍(幂等性)
  4. 禁止加入私有的队伍
  5. 如果加入的队伍是加密的,必须密码匹配才可以
  6. 新增队伍 - 用户关联信息

新建请求包装类

在这里插入图片描述

用户退出队伍

系统设计

请求参数:队伍 id
业务流程:

  1. 校验请求参数
  2. 校验队伍是否存在
  3. 校验我是否已加入队伍
  4. 如果队伍
    • 只剩一人,队伍解散
    • 还有其他人
      如果是队长退出队伍,权限转移给第二早加入的用户 —— 先来后到(只用取 id 最小的 2 条数据,先加入的id小)
      非队长,自己退出队伍

新建请求包装类

在这里插入图片描述

队长解散队伍

系统设计

请求参数:队伍 id
业务流程:

  1. 校验请求参数
  2. 校验队伍是否存在
  3. 校验你是不是队伍的队长
  4. 移除所有加入队伍的关联信息user-team
  5. 删除队伍team

添加事务注解

注意这里涉及两张表的改动,且必须同步,加上事务,当抛出错误时,事务回滚

在这里插入图片描述

todo 分享队伍

业务流程:

  1. 生成分享链接(分享二维码)
  2. 用户访问链接,可以点击加入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DockerCompose的介绍、安装与常用命令

Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具&#xff0c;通过一个docker-compose.yml配置文件来管理多个容器服务及其依赖关系 一 安装DockerCompose 1、下载 网盘下载 wget https://github.com/docker/compose/releases/download/v2.18.0/docker-comp…

事业单位计算机专业知识 考试范围

《专业知识》考试范围 目录 一、计算机类 &#xff08;一&#xff09;计算机科学技术基础 1、计算机基础知识 2、多媒体技术 3、计算机信息安全技术 4、Internet知识 &#xff08;二&#xff09;计算机软件及使用 1、Windows2000/xp操作系统 2、文字处理软件Word20…

FX110网:在CP Markets申请出金四个多月了,没任何消息!

近期&#xff0c;本站收到一中国汇友投诉&#xff0c;称其CP Markets平台已数月无法出金&#xff0c;平台方也没有任何回应。在货币市场闯荡久了的“老鸟”就会知道&#xff0c;平台无故不给出金必定有妖&#xff0c;更何况还是长达数月&#xff01; 在CP Markets申请出金四个多…

Anaconda下载安装及配置pytorch环境

先解释一下Python、Anaconda、Pytorch是啥 Python是一种广泛使用的编程语言&#xff0c;在许多领域都有应用。它具有简洁的语法&#xff0c;易于学习&#xff0c;并且有大量的第三方库可以使用。 Anaconda是一个Python的包和环境管理软件&#xff0c;提供了许多用于数据科学&a…

如何像专家一样维护服务器硬件?

大家好&#xff01;今天&#xff0c;我们要一起来探索一个神秘的世界——服务器硬件。可能你会有点困惑&#xff0c;服务器硬件是什么&#xff1f;别急&#xff0c;让我一一为你解答。 1. 服务器硬件是什么&#xff1f; 想象一下&#xff0c;如果你的家里有一个巨大的衣柜&am…

Flink SQL示例

1. 简单订单统计 假设有以下两个订单流数据&#xff0c;数据字段分别为用户ID、购买的商品名称、商品数量。 数据流A&#xff1a; 1L,"尺子",3 1L,"铅笔",4 3L,"橡皮",2 数据流B&#xff1a; 2L,"手表",3 2L,"笔记本",3 4…

51、WEB攻防——通用漏洞验证码识别复用调用找回密码重定向状态值

文章目录 回显状态判断用户名重定向验证码回显显示验证码简单机制验证码复用验证码智能识别验证码接口调用安全修复建议 回显状态判断 request前端判断不安全&#xff08;前端接收验证的返回值来进行判断)&#xff0c;使用burp的Response to this request可以抓取返回包~ 这种…

【JS】APIs:事件流、事件委托、其他事件、页面尺寸、日期对象与节点操作

1 事件流 捕获阶段&#xff1a;从父到子 冒泡阶段&#xff1a;从子到父 1.1 事件捕获 <body> <div class"fa"><div class"son"></div> </div> <script>const fadocument.querySelector(.fa);const sondocument.qu…

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉库&#xff0c;最初由威尔斯理工学院的Gary Bradski于199…

强烈安利!FastReport 商业图形库,炫酷可视化报告开发首选~

FastReport Business Graphics .NET&#xff0c;是一款基于fastreport报表开发控件的商业图形库&#xff0c;借助 FastReport 商业图形库&#xff0c;您可以可视化不同的分层数据&#xff0c;构建业务图表以进行进一步分析和决策。利用数据呈现领域专家针对 .NET 7、.NET Core、…

NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

By Toradex秦海 1). 简介 NXP i.MX8 系列处理器均为异构多核架构 SoC&#xff0c;除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心&#xff0c;还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心&#xff0c;本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-…

Node.Js编码注意事项

Node.js 中不能使用 BOM 和 DOM 的 API&#xff0c;可以使用 console 和定时器 APINode.js 中的顶级对象为 global&#xff0c;也可以用 globalThis 访问顶级对象 浏览器端js的组成 Node.js中的JavaScript组成 相比较之下发现只有console与定时器是两个API所共有的&#xff…

HarmonyOS系统开发基础环境搭建

目录 一 鸿蒙介绍&#xff1a; 1.1 HarmonyOS系统 1.2 HarmonyOS软件编程语言 二 HarmonyOS编程环境搭建 1.1 官网下载地址 1.2搭建开发流程 1.3 创建安装目录 1.4 下载DevEco Studio​编辑 1.5 下载后点击安装 1.6 自动添加桌面快捷和bin路径 ​编辑1.7 安装好运行 …

二,几何相交---4,BO算法---(1)接近性和可分离性

提了三个观点 1&#xff0c;如果一条直线&#xff08;比如竖直&#xff09;可以分开两个线段&#xff0c;则这两个线段不相交 2&#xff0c;只需要观察与隔离线相交的几个线段 3&#xff0c;从左向右扫描线只需要观察每个线段的两个端点和一些可能的相交点。

HarmonyOS (一)ArkTS起源及UI框架

目录 1 引言 2 框架 3 ArkUI 4 特点 5 总结 1 引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;扩展了声明式UI、…

后悔没有早点看到这份产品说明书模板

产品说明书是连接产品与消费者的桥梁&#xff0c;它对产品具有多重好处。一份设计精良、内容准确的产品说明书有助于消费者全面了解产品&#xff0c;确保用户正确使用产品&#xff1b;减少消费者因误操作导致的故障&#xff0c;降低企业的售后服务成本&#xff1b;增强消费者对…

Rust: 开源线性代数库 nalgebra

在 Rust 中使用 nalgebra 库来处理线性代数问题相对简单。以下是一个基本的示例&#xff0c;展示了如何安装 nalgebra 库、导入它&#xff0c;并使用它来进行一些基础的线性代数运算。 步骤 1: 安装 nalgebra 首先&#xff0c;你需要在你的 Rust 项目中添加 nalgebra 作为依赖…

一文带你深度了解FreeRTOS的任务切换之PendSV异常

RTOS系统的核心是任务管理&#xff0c;而任务管理的核心是任务切换&#xff0c;任务切换决定了任务的执行顺序&#xff0c;任务切换效率的高低也决定了一款系统的性能&#xff0c;尤其是对于实时操作系统。而对于想深入了解 FreeRTOS系统运行过程的同学其任务切换是必须掌握的知…

Ubuntu给AndroidStudio软件添加桌面快捷方式图标

一、进入桌面目录 cd ~/Desktop 二、创建.desktop文件 touch androidStudio.desktop 三、Vim编辑.desktop文件 [Desktop Entry] NameAndroidStudio TypeApplication Exec/home/ubuntu/opt/android-studio/bin/studio.sh Icon/home/ubuntu/opt/android-studio/bin/studio.p…

精通Python函数,深入了解*args和**kwargs

大家好&#xff0c;如果能在Python中创建适应不同场景的函数&#xff0c;而无需每次都重写它们&#xff0c;会使得操作简洁方便&#xff0c;这就是*args和**kwargs的魔力所在。就像为函数准备了一个神奇的袋子&#xff0c;可以装下任意多的参数——使代码更整洁、更灵活。 为了…