Part02 ☀️

YangeIT大约 16 分钟JDKIdeaMavenMySQLSpringBootMybatisPlusHtml

Part02 ☀️

课程内容

  • 接口文档设计
  • 服务端(Devbox)项目创建
  • 服务端(Trae)-接口开发部门管理
  • 服务端(Trae)-接口开发员工管理
  • 服务端(Trae)-接口开发文件上传
  • 服务端(Trae)-接口开发登录认证
  • 接口测试

完成后端编写

1. 接口文档设计

接口文档设计

接口设计流程💡

接口设计流程
接口设计流程

将准备好的数据库表,页面原型截图,还有接口文档的模板,发送给Deepseek,Deepseek会根据这些信息,设计出接口文档

代码操作

注意:wenxiaobaideepseek不能多个附件,需要跳转到官方的deepseek image

官方的Deepseek: image

部门管理原型图open in new window👈

接口文档模板open in new window👈

提示词:👇

请严格根据提供的部门管理的页面原型和需求说明,以及提供的接口文档的模板,参照提供的部门表dept的表结构,基于Restfu风格,帮我设计部门管理模块涉及到的接口文档。
dept部门表的表结构如下:

CREATE TABLE dept (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '部门ID',
    name VARCHAR(10) NOT NULL UNIQUE COMMENT '部门名称',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';

输出结果不要使用markdown格式

image
image

正在生成接口文档: 👇 image

最终生成的接口文档,没有使用markdown格式,而是使用html格式,将生成完成的接口信息进行保存。建议用方式2,直观

方式1:存储在本地文件:api.md中

保存到本地的截图
保存到本地的截图

方式2;保存到飞书上的截图保存到飞书上的截图

接下来,需要结合页面原型图,对接口文档中每个接口进行检查和完善,确保没问题有关细节,要认真听讲啊!!

yf接口文档—部门列表open in new window 👈 点击看看

总结

课堂作业

  1. 参考上述的接口文档设计,设计员工和部门管理模块涉及到的接口文档。🎤
  2. 接口文档中,需要包含哪些信息?🎤
  3. 接口文档开发需要慢工出细活,需要反复修改,才能达到最终的效果,请同学们认真对待。🎤 为了方便同学们,我已经帮大家设计好了接口文档,请同学们参考,并认真完成员工管理的接口文档设计。👇

2. 服务端(Devbox)项目创建

提示

这个操作已经在part01讲过了,如果不记得,翻到part01看下2.3的实操

项目名:zxyf-management

服务端开发:image

image
image

总结

课堂作业

  1. 参考笔记,创建一个属于自己项目的后端环境🎤

3. 服务端(Trae)-接口开发部门管理

部门管理

完成部门管理的5个接口

代码操作

  1. 点击按钮使用trae打开项目
image
image

中途一路信任和安装

2. 点开builder界面开始操作

image
image

3. 书写开发部门管理的提示词:

请根据提供的部门表的表结构和接口文档,基于SpringBoot+Mybatis+PageHelper技术帮我完成部门管理功能的接口开发 (使用JDK1.8之后新语法)1. 要操作的表是 dept 部门表, 表结构如下: 
CREATE TABLE dept (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '部门ID',
    name VARCHAR(10) NOT NULL UNIQUE COMMENT '部门名称',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';

2. 要操作的数据库的主机地址: zxyfdb-mysql.ns-mel8wzuo.svc, 端口号: 3306, 用户名: root , 密码: grqhhcrg, 数据库名: zxyfdb
3. 部门管理中一共有5个接口, 具体的接口信息如下: 
    3.1 部门列表查询
            请求路径:/depts
            请求方式:GET
            请求参数: 无
            响应数据: 
                    {
                      "code": 1,
                      "msg": "success",
                      "data": [
                        {
                          "id": 1,
                          "name": "学工部",
                          "createTime": "2022-09-01T23:06:29",
                          "updateTime": "2022-09-01T23:06:29"
                        },
                        {
                          "id": 2,
                          "name": "教研部",
                          "createTime": "2022-09-01T23:06:29",
                          "updateTime": "2022-09-01T23:06:29"
                        }
                      ]
                    }
            备注: 响应效果中 code 代表是否操作成功, 1: 成功, 0: 失败; msg: 提示信息; data: 返回的数据

    3.2 删除部门
    请求路径:/depts/{id}
    请求方式:DELETE
    请求参数:id ,为路径参数
    请求样例:/depts/1, /depts/2
    响应数据格式:
            {
                "code":1,
                "msg":"success",
                "data":null
            }

    3.3 添加部门
        请求路径:/depts
        请求方式:POST
        请求样例:{"name": "教研部"}
        响应数据格式:
                {
                    "code":1,
                    "msg":"success",
                    "data":null
                }

    3.4 根据ID查询
        请求路径:/depts/{id}
        请求方式:GET
        请求参数:id ,为路径参数
        请求样例:/depts/1, /depts/2
        响应数据格式:
                {
                    "code": 1,
                    "msg": "success",
                    "data": {
                    "id": 1,
                    "name": "学工部",
                    "createTime": "2022-09-01T23:06:29",
                    "updateTime": "2022-09-01T23:06:29"
                    }
                }

    3.5 修改部门
        请求路径:/depts
        请求方式:PUT
        请求样例:
                {
                    "id": 1,
                    "name": "教研部"
                }
        响应数据格式:
                {
                    "code":1,
                    "msg":"success",
                    "data":null
                }
   

4. 提交到推理模型中开发代码image

5. ai将做以下工作: 1. 导入pom依赖 2. 创建实体类 3. 创建mapper接口 4. 创建mapper.xml 5. 创建service接口 6. 创建service实现类 7. 创建controller 8. 创建测试类 9. 创建启动类 10. 创建配置文件 11. 创建数据库表

image
image
  1. 提问:执行启动 image
image
image

自动下载依赖

7. 启动成功,准备测试

image
image

8. 对话:增加knife4j框架进行测试,

image
image
API文档首页
API文档首页
测试查询所有部门
测试查询所有部门

其他接口都可以进行测试

总结

课堂作业

  1. 参考上述步骤完成部门管理,也可以完成其他模块的开发,关键是提示词哦🎤

4. 服务端(Trae)-接口开发员工管理

前言

完成员工管理的6个接口

代码操作

  1. 准备提示词:

提示词:

请提供的表结构、接口文档 以及页面原型和需求说明,基于 SpringBoot+Mybatis+PageHelper 帮我完成员工管理的功能接口开发(使用JDK1.8之后的新语法)。

1. 要操作的是员工表emp 以及员工的工作经历表 emp_expr,具体的表结构如下:
CREATE TABLE emp (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '员工ID',
    username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名(2-20位)',
    password VARCHAR(64) DEFAULT '123456' COMMENT '登录密码',
    name VARCHAR(10) NOT NULL COMMENT '姓名(2-10位)',
    gender TINYINT COMMENT '性别, 1: 男, 2: 女',
    phone CHAR(11) NOT NULL UNIQUE COMMENT '手机号(11位)',
    position TINYINT COMMENT '职位, 1: 班主任, 2: 讲师, 3: 学工主管, 4: 教研主管, 5: 咨询师',
    salary INT COMMENT '薪资(整数存储)',
    image VARCHAR(255) COMMENT '头像路径',
    hire_date DATE COMMENT '入职日期',
    dept_id INT COMMENT '所属部门ID',
    create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后操作时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';


CREATE TABLE emp_expr (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '经历ID',
    emp_id INT COMMENT '关联员工的ID',
    company VARCHAR(50) COMMENT '公司名称',
    position VARCHAR(50) COMMENT '担任职位',
    start_date DATE COMMENT '开始日期',
    end_date DATE COMMENT '结束日期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工工作经历表';


2. 员工管理中一共包含6个接口,具体的接口信息如下:
     2.1 员工列表查询
         请求路径:/emps
         请求方式:GET
         请求参数:
             name: 姓名,可选
             gender: 性别,可选
             begin: 入职日期的开始时间,可选
             end: 入职日期的结束时间,可选
             page: 页码,默认1
             pageSize: 每页展示记录数,默认10
         请求样例:
             /emps?page=1&pageSize=10
             /emps?name=&page=1&pageSize=10
             /emps?gender=1&page=1&pageSize=10
             /emps?name=&gender=1&page=1&pageSize=10
             /emps?name=&gender=1&begin=2007-09-01&end=2022-09-01&page=1&pageSize=10
         响应数据格式:
             {
               "code": 1,
               "msg": "success",
               "data": {
                 "total": 2,
                 "rows": [
                    {
                     "id": 1,
                     "username": "jinyong",
                     "name": "金庸",
                     "gender": 1,
                     "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
                     "position": 2,
                     "salary": 8000,
                     "hireDate": "2015-01-01",
                     "deptId": 2,
                     "deptName": "教研部",
                     "createTime": "2022-09-01T23:06:30",
                     "updateTime": "2022-09-02T00:29:04"
                   },
                   {
                     "id": 2,
                     "username": "zhangwuji",
                     "name": "张无忌",
                     "gender": 1,
                     "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
                     "position": 2,
                     "salary": 6000,
                     "hireDate": "2015-01-01",
                     "deptId": 2,
                     "deptName": "教研部",
                     "createTime": "2022-09-01T23:06:30",
                     "updateTime": "2022-09-02T00:29:04"
                   }
                 ]
               }
             }

    2.2 删除员工
        请求路径:/emps
        请求方式:DELETE
        请求参数:ids ,为路径参数
        请求样例:/emps?ids=1,2,3
        响应数据格式:
            {
                "code":1,
                "msg":"success",
                "data":null
            }

    2.3 添加员工
        请求路径:/emps
        请求方式:POST
        请求样例:
            {
                "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-03-07-37-38222.jpg",
                "username": "linpingzhi",
                "name": "林平之",
                "gender": 1,
                "position": 1,
                "hireDate": "2022-09-18",
                "deptId": 1,
                "phone": "18809091234",
                "salary": 8000,
                "exprList": [
                    {
                        "company": "百度科技股份有限公司",
                        "position": "java开发",
                        "startDate": "2012-07-01",
                        "endDate": "2019-03-03"
                    },
                    {
                        "company": "阿里巴巴科技股份有限公司",
                        "position": "架构师",
                        "startDate": "2019-03-15",
                        "endDate": "2023-03-01"
                    }
                ]
            }
        响应数据格式:
            {
                "code":1,
                "msg":"success",
                "data":null
            }

    2.4 根据ID查询
        请求路径:/emps/{id}
        请求方式:GET
        请求参数:id ,为路径参数
        请求样例:/emps/1, /emps/2
        响应数据格式:
            {
                "code": 1,
                "msg": "success",
                "data": {
                "id": 2,
                "username": "zhangwuji",
                "name": "张无忌",
                "gender": 1,
                "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
                "position": 2,
                "salary": 8000,
                "hireDate": "2015-01-01",
                "deptId": 2,
                "createTime": "2022-09-01T23:06:30",
                "updateTime": "2022-09-02T00:29:04",
                "exprList": [
                    {
                    "id": 1,
                    "startDate": "2012-07-01",
                    "endDate": "2019-03-03"
                    "company": "百度科技股份有限公司"
                    "position": "java开发",
                    "empId": 2
                    },
                    {
                    "id": 2,
                    "startDate": "2019-3-15",
                    "endDate": "2023-03-01"
                    "company": "阿里巴巴科技股份有限公司"
                    "position": "架构师",
                    "empId": 2
                    }
                ]
                }
            }

    2.5 修改员工
        请求路径:/emps
        请求方式:PUT
        请求样例:
            {
                "id": 2,
                "username": "zhangwuji",
                "password": "123456",
                "name": "张无忌",
                "gender": 1,
                "image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
                "position": 2,
                "salary": 8000,
                "hireDate": "2015-01-01",
                "deptId": 2,
                "createTime": "2022-09-01T23:06:30",
                "updateTime": "2022-09-02T00:29:04",
                "exprList": [
                    {
                    "id": 1,
                    "startDate": "2012-07-01",
                    "endDate": "2015-06-20"
                    "company": "中软国际股份有限公司"
                    "position": "java开发",
                    "empId": 2
                    },
                    {
                    "id": 2,
                    "startDate": "2015-07-01",
                    "endDate": "2019-03-03"
                    "company": "百度科技股份有限公司"
                    "position": "java开发",
                    "empId": 2
                    },
                    {
                    "id": 3,
                    "startDate": "2019-3-15",
                    "endDate": "2023-03-01"
                    "company": "阿里巴巴科技股份有限公司"
                    "position": "架构师",
                    "empId": 2
                    }
                ]
                }
        响应数据格式:
            {
                "code":1,
                "msg":"success",
                "data":null
            }

    2.6 查询全部员工
        请求路径:/emps/list
        请求方式:GET
        请求参数:无
        响应数据格式:
            {
                "code": 1,
                "msg": "success",
                "data": [
                {
                    "id": 21,
                    "username": "zcc",
                    "password": "123456",
                    "name": "周星驰",
                    "gender": 1,
                    "image": "https://web-65.oss-cn-beijing.aliyuncs.com/99c143e9-0241-41f3-bc55-dd5e4e0824f4.jpg",
                    "position": 1,
                    "salary": 8000,
                    "hireDate": "2023-04-23",
                    "deptId": 2,
                    "createTime": "2023-05-26T17:25:01",
                    "updateTime": "2023-06-04T19:25:15"
                },
                {
                    "id": 6,
                    "username": "xiaozhao",
                    "password": "123456",
                    "name": "小昭",
                    "gender": 2,
                    "image": "https://web-65.oss-cn-beijing.aliyuncs.com/da94dc38-f165-480c-b8b7-0b3f4bcd1602.jpg",
                    "position": 3,
                    "salary": 8000,
                    "hireDate": "2013-09-05",
                    "deptId": 1,
                    "createTime": "2023-04-07T11:16:00",
                    "updateTime": "2023-04-14T08:22:41"
                }
                ]
            }

2. 输入到Cursor中,等待ai编程工具生成代码

image
image

3. 提问:启动项目image

4. 访问公网地址/doc.html 进入接口文档页面,查看和测试接口功能是否正常

注意:如果接口文档页面没有正常显示,就直接提问:请优化接口文档

image
image

至此员工模块就开发完了!!!

总结

课堂作业

  1. 参考上述接口文档,完成员工表的增删改查功能接口开发。🎤

5. 服务端(Trae)-接口开发文件上传

文件上传

完成员工头像上传的接口开发,员工头像要操作的表结构就是员工表 emp 。

image
image
员工图像上传
选填 。点击上传图片,上传本地图片。再次点击,修改图片。
2.4.1 图片限制
  图片大小不超过2M ,仅能上传PNG JPG JPEG类型图片,建议上传200*200或300*300尺寸的图片
2.4.2 异常提示
   图片过大,上传失败
   格式错误,上传失败

代码操作

1. 准备云存储,用来存放员工头像image

image
image

2.记录云存储的Access Key、Secret Key、Internal、External、存储桶名共计5个字段image

总结

课堂作业

  1. 参考上述接口文档,完成员工头像上传的接口开发。🎤

6. 服务端(Trae)-接口开发登录认证

前言

完成员工登录认证

image
image

代码操作

提示词如下:

请根据提供的接口文档,帮我完成员工登录的功能接口开发,员工登录要操作的表结构就是员工表 emp 。​
1. 登录接口的基本信息如下:​
    1.1 请求路径: /login​
    1.2 请求方式: POST​
    1.3 接口描述: 该接口用于员工登录智学云帆-教学管理系统,登录完毕后,系统下发JWT令牌。 ​
    1.4 请求参数样例:​
        {​
            "username": "songjiang",​
            "password": "123456"​
        }​
    1.5 响应数据样例:​
        1.5.1 登录成功​
           {​
            "code": 1,​
            "msg": "success",​
            "data": {​
                "id": 2,​
                "username": "songjiang",​
                "name": "宋江",​
                "token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwidXNlcm5hbWUiOiJzb25namlhbmciLCJleHAiOjE2OTg3MDE3NjJ9.w06EkRXTep6SrvMns3w5RKe79nxauDe7fdMhBLK-MKY"​
            }​
        }​
    ​
         1.5.2 登录失败​
           {​
            "code": 0,​
            "msg": "用户名或密码错误",​
            "data": null​
           }​
      1.6 备注说明: 用户登录成功后,系统会自动下发JWT令牌,然后在后续的每次请求中,都需要在请求头header中携带到服务端,请求头的名称为 token ,值为 登录时下发的JWT令牌。 如果检测到用户未登录,则直接响应 401 状态码 。​
​
请根据上述登录接口的信息,帮我实现登录接口功能的开发。
image
image
  1. 如果报错了,直接选中错误信息,添加到输入栏,然后修复 image

  2. 完成后,运行项目,访问公网地址/doc.html 进入接口文档页面,查看和测试接口功能是否正常 image

image
image

没有登录,直接返回401,被拦截了,需要再header中添加token,才可以访问 image

添加token步骤 👇 image

总结

课堂作业

  1. 根据上述接口文档,完成员工登录认证的接口开发。🎤

https://www.axure.com.cn/resourceopen in new window 原型案例图